Mysql預設設定的危險性分析第1/2頁
來源:互聯網
上載者:User
預設安裝的mysql服務不安全因素涉及的內容有:
一.mysql預設的授權表
二.缺乏日誌能力
三.my.ini檔案泄露口令
四.服務預設被綁定全部的網路介面上
五.預設安裝路徑下的mysql目錄許可權
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
一.mysql預設的授權表
由於mysql對身分識別驗證是基於mysql這個資料庫的,也叫授權表。所有的使用權限設定都在這裡了。
我們只討論最為重要的一個表 user表。它控制的是接受或拒絕串連。
先看一下
select host,user,password,Delete_priv from user;
+-----------+------+------------------+-------------+
| host | user | password | Delete_priv |
+-----------+------+------------------+-------------+
| localhost | root | 67457e226a1a15bd | Y |
| % | root | | Y |
| localhost | | | Y |
| % | | | N |
+-----------+------+------------------+-------------+
現在新的版本,安裝完畢都會出現一個快速設定視窗,用於設定口令。
以上,就是user表裡的內容(略了點)看看有什麼問題?
我們知道mysql的驗證方式是比較特殊的,它基於兩個2個資訊來進行的
1.從那裡串連
2.使用者名稱
第一條沒什麼問題,當然口令必須是安全的。
第二條從任何主機,以使用者root,不需要口令都可以串連,許可權為所有的許可權。(注:這裡的許可權是全域許可權)
第三條從本地主機,任何使用者名稱(註:user為空白,不表示不需要使用者名稱),不需要口令,都可以串連,所有的許可權
第四條從任何主機,任何使用者名稱,不需要口令,都可以串連,無任何許可權。
可以看出,2\3\4都是不安全的,如何攻擊這裡就不說了,請參看資料文庫。
如果你mysql只允許本地串連,刪除host的%和user中的nul(表示空)
delete from user where host='% ';
delete from host where user=' ';
最後的user表,看起來因該是這個樣子
+-----------+------+------------------+-------------+
| host | user | password | Delete_priv |
+-----------+------+------------------+-------------+
| localhost | root | 67457e226a1a15bd | Y |
+-----------+------+------------------+-------------+
最後需要重新整理授權表,使其立刻生效
flush privileges;
如果你的mysql需要被遠程使用,需要為%段中的root帳號,加上一個安全的密碼
update user set password=password(‘youpass‘) where host=‘%‘;
其中youpass,就是口令
mysql> select host,user,password,Delete_priv from user;
+-----------+------+------------------+-------------+
| host | user | password | Delete_priv |
+-----------+------+------------------+-------------+
| localhost | root | 67457e226a1a15bd | Y |
| % | root | 77c590fa148bc9fb | Y |
+-----------+------+------------------+-------------+