mysql安全基線設置

1、禁用local-infile選項 | 訪問控制

禁用local_infile選項會下降攻擊者經過SQL注入漏洞器讀取敏感文件的能力mysql

編輯Mysql配置文件/etc/my.cnf,在[mysqld] 段落中配置local-infile參數爲0,並重啓mysql服務: ``` local-infile=0 ```

2、刪除'test'數據庫 | 服務配置

測試數據庫可供全部用戶訪問,並可用於消耗系統資源。刪除測試數據庫將減小mysql服務器的攻擊面。sql

登錄數據庫執行如下SQL語句刪除test數據庫: ``` DROP DATABASE test; flush privileges; ```

3、確保沒有用戶配置了通配符主機名 | 身份鑑別

避免在主機名中只使用通配符,有助於限定能夠鏈接數據庫的客戶端,不然服務就開放到了公網數據庫

執行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; ```

 

4、禁用symbolic-links選項 | 服務配置

禁用符號連接以防止各類安全風險安全

編輯Mysql配置文件/etc/my.cnf,在[mysqld] 段落中配置`symbolic-links=0`,5.6及以上版本應該配置爲`skip_symbolic_links=yes`,並重啓mysql服務。

 

5、修改默認3306端口 | 服務配置

避免使用熟知的端口,下降被初級掃描的風險服務器

編輯/etc/my.cnf文件,[mysqld] 段落中配置新的端口參數,並重啓mysql服務: ``` port=3506 ```

 

6、爲Mysql服務使用專用的最低特權賬戶 | 訪問控制

使用最低權限賬戶運行服務可減少MySQL天生漏洞的影響。受限賬戶將沒法訪問與MySQL無關的資源,例如操做系統配置。測試

使用非root和非sudo權限用戶啓動Mysql服務

 

7、禁止使用--skip-grant-tables選項啓動Mysql服務 | 訪問控制

使用此選項,會致使全部客戶端都對全部數據庫具備不受限制的訪問權限。spa

編輯Mysql配置文件/etc/my.cnf,刪除skip-grant-tables參數,並重啓mysql服務

 

8、確保配置了log-error選項 | 安全審計

啓用錯誤日誌能夠提升檢測針對mysql和其餘關鍵消息的惡意嘗試的能力,例如,若是錯誤日誌未啓用,則鏈接錯誤可能會被忽略。操作系統

編輯Mysql配置文件/etc/my.cnf,在[mysqld_safe] 段落中配置log-error參數,<log_path>表明存放日誌文件路徑,如:/var/log/mysqld.log,並重啓mysql服務: ``` log-error=<log_path> ```

9、確保log-raw選項沒有配置爲ON | 安全審計

當log-raw記錄啓用時,有權訪問日誌文件的人可能會看到純文本密碼。日誌

編輯Mysql配置文件/etc/my.cnf,刪除log-raw參數,並重啓mysql服務

10、確保MYSQL_PWD環境變量未設置 | 身份鑑別

mysql_pwd環境變量的使用意味着mysql憑證的明文存儲,極大增長mysql憑據泄露風險。code

刪除系統環境變量中Mysql密碼(MYSQL_PWD)配置

11、匿名登錄檢查 | 身份鑑別

檢查Mysql服務是否容許匿名登錄

登錄Mysql數據庫,執行如下命令刪除匿名賬戶: ``` delete from user where user=''; flush privileges; ```
相關文章
相關標籤/搜索