一、禁用local-infile選項 | 訪問控制
禁用local_infile選項會降低攻擊者通過SQL注入漏洞器讀取敏感文件的能力
編輯Mysql配置文件/etc/my.cnf,在[mysqld] 段落中配置local-infile參數為0,並重啟mysql服務: ``` local-infile=0 ```
二、刪除'test'數據庫 | 服務配置
測試數據庫可供所有用戶訪問,並可用於消耗系統資源。刪除測試數據庫將減少mysql服務器的攻擊面。
登陸數據庫執行以下SQL語句刪除test數據庫: ``` DROP DATABASE test; flush privileges; ```
三、確保沒有用戶配置了通配符主機名 | 身份鑒別
避免在主機名中只使用通配符,有助於限定可以連接數據庫的客戶端,否則服務就開放到了公網
執行SQL更新語句,為每個用戶指定允許連接的host范圍。 1. 登錄數據庫,執行`use mysql;` ; 2. 執行語句`select user,Host from user where Host='%';`查看HOST為通配符的用戶; 3. 刪除用戶或者修改用戶host字段,刪除語句:`DROP USER 'user_name'@'%';` 。更新語句:`update user set host = <new_host> where host = '%';`。 4. 執行SQL語句: ``` OPTIMIZE TABLE user; flush privileges; ```
四、禁用symbolic-links選項 | 服務配置
禁用符號鏈接以防止各種安全風險
編輯Mysql配置文件/etc/my.cnf,在[mysqld] 段落中配置`symbolic-links=0`,5.6及以上版本應該配置為`skip_symbolic_links=yes`,並重啟mysql服務。
五、修改默認3306端口 | 服務配置
避免使用熟知的端口,降低被初級掃描的風險
編輯/etc/my.cnf文件,[mysqld] 段落中配置新的端口參數,並重啟mysql服務: ``` port=3506 ```
六、為Mysql服務使用專用的最低特權帳戶 | 訪問控制
使用最低權限帳戶運行服務可減小MySQL天生漏洞的影響。受限帳戶將無法訪問與MySQL無關的資源,例如操作系統配置。
使用非root和非sudo權限用戶啟動Mysql服務
七、禁止使用--skip-grant-tables選項啟動Mysql服務 | 訪問控制
使用此選項,會導致所有客戶端都對所有數據庫具有不受限制的訪問權限。
編輯Mysql配置文件/etc/my.cnf,刪除skip-grant-tables參數,並重啟mysql服務
八、確保配置了log-error選項 | 安全審計
啟用錯誤日志可以提高檢測針對mysql和其他關鍵消息的惡意嘗試的能力,例如,如果錯誤日志未啟用,則連接錯誤可能會被忽略。
編輯Mysql配置文件/etc/my.cnf,在[mysqld_safe] 段落中配置log-error參數,<log_path>代表存放日志文件路徑,如:/var/log/mysqld.log,並重啟mysql服務: ``` log-error=<log_path> ```
九、確保log-raw選項沒有配置為ON | 安全審計
當log-raw記錄啟用時,有權訪問日志文件的人可能會看到純文本密碼。
編輯Mysql配置文件/etc/my.cnf,刪除log-raw參數,並重啟mysql服務
十、確保MYSQL_PWD環境變量未設置 | 身份鑒別
mysql_pwd環境變量的使用意味着mysql憑證的明文存儲,極大增加mysql憑據泄露風險。
刪除系統環境變量中Mysql密碼(MYSQL_PWD)配置
十一、匿名登陸檢查 | 身份鑒別
檢查Mysql服務是否允許匿名登陸
登陸Mysql數據庫,執行以下命令刪除匿名帳戶: ``` delete from user where user=''; flush privileges; ```
作者:涼生墨客 本文版權歸作者所有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
https://www.cnblogs.com/heruiguo/p/12103405.html