| 導購 | 订阅 | 在线投稿
分享
 
 
 

MySQL如何對抗解密高手

來源:互聯網  2008-05-18 21:58:23  評論

當你連接一個MySQL服務器時,你通常應該使用一個口令。口令不以明文在連接上傳輸。

所有其它信息作爲能被任何人讀懂的文本被傳輸。如果你擔心這個,你可使用壓縮協議(MySQL3.22和以上版本)使事情變得更難。甚至爲了使一切更安全,你應該安裝SSH。用它,你能在一個MySQL服務器與一個MySQL客戶之間得到一個加密的TCP/IP連接。

爲了使一個MySQL系統安全,強烈要求你考慮下列建議:

對所有MySQL用戶使用口令。記住,如果other_user沒有口令,任何人能簡單地用mysql -u other_user db_name作爲任何其它的人登錄。對客戶機/服務器應用程序,客戶可以指定任何用戶名是常見的做法。在你運行它以前,你可以通過編輯 mysql_install_db腳本改變所有用戶的口令,或僅僅MySQL root的口令,象這樣:

shell> mysql -u root mysql

mysql> UPDATE user SET Password=PASSWORD('new_password')

WHERE user='root';

mysql> FLUSH PRIVILEGES;

不要作爲Unix的root用戶運行MySQL守護進程。mysqld能以任何用戶運行,你也可以創造一個新的Unix用戶mysql使一切更安全。如果你作爲其它Unix用戶運行mysqld,你不需要改變在user表中的root用戶名,因爲MySQL用戶名與Unix 用戶名沒關系。你可以作爲其它Unix用戶編輯mysql.server啓動腳本mysqld。通常這用su命令完成。對于更多的細節,見18.8 怎樣作爲一個一般用戶運行MySQL。

如果你把一個Unix root用戶口令放在mysql.server腳本中,確保這個腳本只能對root是可讀的。

檢查那個運行mysqld的Unix用戶是唯一的在數據庫目錄下有讀/寫權限的用戶。

不要把process權限給所有用戶。mysqladmin processlist的輸出顯示出當前執行的查詢正文,如果另外的用戶發出一個UPDATE user SET password=PASSWORD('not_secure')查詢,被允許執行那個命令的任何用戶可能看得到。mysqld爲有process權限的用戶保留一個額外的連接, 以便一個MySQL root用戶能登錄並檢查,即使所有的正常連接在使用。

不要把file權限給所有的用戶。

有這權限的任何用戶能在擁有mysqld守護進程權限的文件系統那裏寫一個文件!爲了使這更安全一些,用SELECT ... INTO OUTFILE生成的所有文件對每個人是可讀的,並且你不能覆蓋已經存在的文件。

file權限也可以被用來讀取任何作爲運行服務器的Unix用戶可存取的文件。這可能被濫用,例如,通過使用LOAD DATA裝載「/etc/passwd」進一個數據庫表,然後它能用SELECT被讀入。

如果你不信任你的DNS,你應該在授權表中使用IP數字而不是主機名。原則上講,--secure選項對mysqld應該使主機名更安全。在任何情況下,你應該非常小心地使用包含通配符的主機名。

(完)

  當你連接一個MySQL服務器時,你通常應該使用一個口令。口令不以明文在連接上傳輸。   所有其它信息作爲能被任何人讀懂的文本被傳輸。如果你擔心這個,你可使用壓縮協議(MySQL3.22和以上版本)使事情變得更難。甚至爲了使一切更安全,你應該安裝SSH。用它,你能在一個MySQL服務器與一個MySQL客戶之間得到一個加密的TCP/IP連接。   爲了使一個MySQL系統安全,強烈要求你考慮下列建議:   對所有MySQL用戶使用口令。記住,如果other_user沒有口令,任何人能簡單地用mysql -u other_user db_name作爲任何其它的人登錄。對客戶機/服務器應用程序,客戶可以指定任何用戶名是常見的做法。在你運行它以前,你可以通過編輯 mysql_install_db腳本改變所有用戶的口令,或僅僅MySQL root的口令,象這樣:   shell> mysql -u root mysql   mysql> UPDATE user SET Password=PASSWORD('new_password')   WHERE user='root';   mysql> FLUSH PRIVILEGES;   不要作爲Unix的root用戶運行MySQL守護進程。mysqld能以任何用戶運行,你也可以創造一個新的Unix用戶mysql使一切更安全。如果你作爲其它Unix用戶運行mysqld,你不需要改變在user表中的root用戶名,因爲MySQL用戶名與Unix 用戶名沒關系。你可以作爲其它Unix用戶編輯mysql.server啓動腳本mysqld。通常這用su命令完成。對于更多的細節,見18.8 怎樣作爲一個一般用戶運行MySQL。   如果你把一個Unix root用戶口令放在mysql.server腳本中,確保這個腳本只能對root是可讀的。   檢查那個運行mysqld的Unix用戶是唯一的在數據庫目錄下有讀/寫權限的用戶。   不要把process權限給所有用戶。mysqladmin processlist的輸出顯示出當前執行的查詢正文,如果另外的用戶發出一個UPDATE user SET password=PASSWORD('not_secure')查詢,被允許執行那個命令的任何用戶可能看得到。mysqld爲有process權限的用戶保留一個額外的連接, 以便一個MySQL root用戶能登錄並檢查,即使所有的正常連接在使用。   不要把file權限給所有的用戶。   有這權限的任何用戶能在擁有mysqld守護進程權限的文件系統那裏寫一個文件!爲了使這更安全一些,用SELECT ... INTO OUTFILE生成的所有文件對每個人是可讀的,並且你不能覆蓋已經存在的文件。   file權限也可以被用來讀取任何作爲運行服務器的Unix用戶可存取的文件。這可能被濫用,例如,通過使用LOAD DATA裝載「/etc/passwd」進一個數據庫表,然後它能用SELECT被讀入。   如果你不信任你的DNS,你應該在授權表中使用IP數字而不是主機名。原則上講,--secure選項對mysqld應該使主機名更安全。在任何情況下,你應該非常小心地使用包含通配符的主機名。   (完)
󰈣󰈤
王朝萬家燈火計劃
期待原創作者加盟
 
 
 
>>返回首頁<<
 
 
 
 
 熱帖排行
 
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有