當前位置:
首頁 > 最新 > 淺談Linux系統MySQL安全配置

淺談Linux系統MySQL安全配置

0x00 MySQL應用介紹

MySQL是一個關係型資料庫管理系統,由瑞典MySQLAB公司開發,目前屬於Oracle旗下產品。MySQL 最流行的關係型資料庫管理系統,在WEB應用方面MySQL是最好的RDBMS(Relational Database Management System,關係資料庫管理系統)應用軟體之一。

0x01 為什麼要做安全配置

MySQL資料庫安全不僅僅是及時安裝補丁進行升級就能保證資料庫的安全。如果一個最新版本的MySQL存在空密碼或匿名賬號,無需密碼就能夠登錄,會更加容易被攻擊。因此做好MySQL的安全配置同樣十分的重要。

0x02 如何進行安全配置

1.禁止mysql以管理員賬號許可權運行

MySQL應該使用非管理員賬號運行,以普通帳戶安全運行mysqld

加固方法:在MySQL my.cnf配置文件中應配置user=mysql

2.配置日誌功能

MySQL應該配置日誌功能,其中包含錯誤日誌、二進位日誌、置慢查詢日誌、通用查詢日誌、更新日誌。

加固方法:編輯my.cnf文件,設置log_error=/home/mysql.err、log_bin =mysql-bin、slow_query_log= 1、general_log =1、log_slave_updates=1

3.不存在匿名賬戶

資料庫用戶應不存在匿名賬戶,匿名帳戶是具有空用戶名的用戶。 匿名帳戶沒有密碼,所以任何人都可以使用它們連接到MySQL伺服器。

加固方法:使用查詢語句,查找資料庫中的匿名用戶,為每個匿名用戶分配一個名字,或刪除此用戶。

4.不存在空密碼

資料庫中所有用戶應都配置密碼,空密碼允許用戶在不使用密碼的情況下登錄。

加固方法:使用以下語句為用戶設置一個密碼(示例):

5.配置合適的密碼複雜度

資料庫用戶密碼複雜性包括密碼特徵,如長度,大小寫,長度和字符集。

加固方法:添加以下配置到全局配置

plugin-load=validate_password.so

validate-password=FORCE_PLUS_PERMANENT

validate_password_length=14

validate_password_mixed_case_count=1

validate_password_number_count=1

validate_password_special_char_count=1

validate_password_policy=MEDIUM

並更改密碼與用戶名相同的用戶密碼

6.刪除測試安裝的test

默認的MySQL安裝包含一個名為test的未使用資料庫。建議刪除test資料庫。

加固方法:執行以下SQL語句刪除test資料庫:

7.禁止MySQL對本地文件存取

應禁止MySQL對本地文件存取,local_infile參數決定MySQL客戶端計算機上的文件是否可以通過LOAD DATA INFILE或SELECT載入或查詢。

加固方法:在資料庫my.cnf文件中應配置local-infile=0

8.MySQL用戶禁用互動式登錄

創建時,MySQL用戶可以交互訪問操作系統,這意味著MySQL用戶可以像任何其他用戶那樣登錄主機。應禁用MySQL用戶互動式登錄

加固方法:執行以下命令:

9.安裝最新的安全補丁

MySQL應安裝最新補丁進行升級,以防止漏洞被攻擊者利用。

加固方法:升級MySQL到最新版

10."mysqld"啟動沒有配置"--skip-grant-tables"

MySQL配置文件中skip-grant-tables選項會導致MySQL在不使用許可權系統的情況下啟動。

加固方法:MySQL配置文件中skip-grant-tables應設置為:FALSE,並且啟動參數不包含--skip-grant-tables

11.用戶密碼過期時間小於等於90天

資料庫提供了配置配置資料庫密碼的過期時間,用戶密碼過期時間應設置小於等於90天。

加固方法:配置MySQL RDBMS:

全局策略:SET GLOBAL default_password_lifetime=90

並配置:default_password_lifetime=90

12.資料庫位於非系統分區

通常情況下,主機操作系統應該包含不同的文件系統分區以用於不同的目的。一組文件系統通常稱為"系統分區",通常用於主機系統/應用程序操作。另一組文件系統被稱為"非系統分區",一般用於存儲數據。MySQL資料庫的datadir掛載點應不為:root("/"),"/var" 和 "/usr"。

加固方法:

1) 為MySQL數據選擇一個非系統分區的新位置

2) 執行如下命令停止mysqld:servicemysql stop

3) 執行如下命令複製數據:cp-rp

在MySQL配置文件中將datadir設置為新位置

執行如下命令啟動mysqld:servicemysql start

13.只有管理用戶具有完整的資料庫訪問許可權

MySQL資料庫中mysql.user和mysql.db表列出了可以授予(或拒絕)給MySQL用戶的各種許可權。一些關注的特權包括:Select_priv,Insert_priv,Update_priv,Delete_priv,Drop_priv等等。通常,這些特權不應該對每個MySQL用戶都可用,而且通常只保留給管理員使用。

加固方法:列舉審計程序結果統計的非管理員用戶,對於每個非管理用戶,使用REVOKE語句來適當刪除許可權。

14.禁用MySQL命令歷史記錄

在Linux/UNIX系統中,MySQL客戶端將互動式執行的語句記錄到歷史文件中。默認情況下,該文件在用戶的主目錄中被命名為.mysql_history。在MySQL客戶端應用程序中運行的大多數互動式命令都被保存到歷史文件中。應該禁用MySQL命令歷史記錄。

加固方法:

1) 刪除.mysql_history(如果存在)。

2) 使用方法防止再次創建:

將MYSQL_HISTFILE環境變數設置為/dev/null。需要放在shell啟動腳本中。

創建軟鏈接。> ln -s /dev/null $HOME/.mysql_history

15.所有遠程用戶的"ssl_type"應設置為"ANY", "X509", "SPECIFIED"

所有網路流量在不受信任的網路上傳輸時必須使用SSL/TLS。對於通過網路進入系統的用戶,每個必須強制使用SSL/TLS。

加固方法:使用GRANT語句配置使用SSL:

0x03 總結

對MySQL進行安全配置可以有效的防範一些常見安全問題,按照基線標準做好安全配置能夠減少安全事件的發生。國內常見的基線標準有中國信息安全等級保護、工信部基線配置要求,美國CIS基線也有詳細的MySQL基線標準,不同的企業也可以根據自身企業業務制定符合自己企業的安全基線標準。

0x04 參考鏈接

國家信息安全等級保護制度要求

CIS_Oracle_MySQL_Community_Server_5.7_Benchmark_v1.0.0

YDT 2700-2014 電信網和互聯網安全防護基線配置要求及檢測要求 資料庫

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 青藤實驗室 的精彩文章:

TAG:青藤實驗室 |