12 條用於 Linux 的 MySQL/MariaDB 安全最佳實踐

MySQL 是世界上最流行的開源資料庫系統,MariaDB(一個 MySQL 分支)是世界上增長最快的開源資料庫系統。在安裝 MySQL 伺服器之後,在默認配置下是不安全的,確保資料庫安全通常是通用資料庫管理的基本任務之一。

這將有助於增強和提升整個 Linux 伺服器的安全性,因為攻擊者總是掃描系統任意部分的漏洞,而資料庫在過去是重點目標區域。一個常見的例子是對 MySQL 資料庫的 root 密碼的強制破解。

在本指南中,我們將會講解對開發者有幫助的 MySQL/MariaDB 的 Linux 最佳安全實踐。

1. 安全地安裝 MySQL

這是安裝 MySQL 伺服器後第一個建議的步驟,用於保護資料庫伺服器。這個腳本可以幫助您提高 MySQL 伺服器的安全性:

  • 如果您在安裝期間沒有設置 root 帳戶的密碼,馬上設置它
  • 通過刪除可從本地主機外部訪問的 root 帳戶來禁用遠程 root 用戶登錄
  • 刪除匿名用戶帳戶和測試資料庫,默認情況下,所有用戶、甚至匿名用戶都可以訪問這些帳戶和測試資料庫

# mysql_secure_installationn

在運行上述命令之後,設置 root 密碼並通過輸入 [Yes/Y] 和按下 [Enter] 鍵來回答一系列問題。

img

安全安裝 MySQL 情況界面

2. 將資料庫伺服器綁定到 Loopback 地址

此配置將限制來自遠程機器的訪問,它告訴 MySQL 伺服器只接受來自本地主機的連接。你可以在主配置文件中進行設置。

# vi /etc/my.cnft [RHEL/CentOS]tn# vi /etc/mysql/my.conf [Debian/Ubuntu] nORn# vi /etc/mysql/mysql.conf.d/mysqld.cnf [Debian/Ubuntu]n

[mysqld] 部分中添加下面這一行

bind-address = 127.0.0.1n

3. 禁用 MySQL 的 LOCAL INFILE

作為安全性增強的一部分,您需要禁用 local_infile,使用下面的指令以防止在 [mysqld]部分從 MySQL 中訪問底層文件系統。

local-infile=0n

4. 修改 MySQL 的默認埠

設置埠變數用於監聽 TCP/IP 連接的 MySQL 埠號。默認埠號是 3306,但是您可以在 [mysqld] 中修改它。

Port=5000n

5、啟用 MySQL 日誌

日誌是了解服務運行過程中發生了什麼的最好的方法之一,在受到任何攻擊的時候都可以很容易的從日誌里看到任何入侵相關的行為。可以通過將下邊的變數添加到配置文件[mysqld]部分來開啟mysql日誌功能。

log=/var/log/mysql.logn

6、設置合適的 MySQL 文件的訪問許可權

確保你已經為所有的 mysql 服務文件和數據路徑設置了合適的訪問許可權。文件 /etc/my.conf 只能由 root 用戶修改,這樣就可以阻止其他用戶修改資料庫服務的配置。

# chmod 644 /etc/my.cnfn

7、刪除 MySQL shell 歷史

你在 MySQL shell 中執行的所有的命令都會被 mysql 客戶端保存到一個歷史文件:~/.mysql_history。這樣是很危險的,因為對於你創建過的任何用戶賬戶,所有的在 shell 輸入過的用戶名和密碼都會記錄到歷史文件裡面。

# cat /dev/null > ~/.mysql_historyn

8. 不要在命令行中運行 MySQL 命令

正如你所知道的,你在終端上輸入的所有命令都會被存儲在一個歷史文件中,具體取決於你正在使用的shell(例如 bash 的 shell 歷史文件放在 ~/.bash_history)。攻擊者訪問這個歷史文件可以很容易地看到記錄在那裡的任何密碼。

非常不建議在命令行裡面輸入密碼,如下:

# mysql -u root -ppassword_n

img 使用密碼連接 MySQL

當你查看命令行歷史文件的最後的部分時,可以看到之前輸入過的密碼。

# historyn

img 查看命令行輸入歷史

推薦連接 MySQL 的方式是

# mysql -u root -pnEnter password:n

9. 定義特定應用的資料庫用戶

對於每一個在伺服器上運行的應用,只設置一個與該應用相關的資料庫用戶。例如你有一個 wordpress 網站,如下創建一個 wordpress 的資料庫用戶:

# mysql -u root -pnMariaDB [(none)]> CREATE DATABASE osclass_db;nMariaDB [(none)]> CREATE USER osclassdmin@localhost IDENTIFIED BY osclass@dmin%!2;nMariaDB [(none)]> GRANT ALL PRIVILEGES ON osclass_db.* TO osclassdmin@localhost;nMariaDB [(none)]> FLUSH PRIVILEGES;nMariaDB [(none)]> exitn

並且要記住對於不再使用的資料庫用戶要刪掉。

10. 使用額外的安全插件和庫

MySQL 包含許多安全插件:驗證客戶端連接到 MySQL 伺服器的請求、密碼校驗和敏感信息的安全存儲等,這些都在免費版本中提供。

在這裡可查看更多:dev.mysql.com/doc/refma

11. 定期修改 MySQL 密碼

定期修改密碼是一個常見的信息/應用/系統安全建議。多久修改一次密碼由你內部的安全策略決定。定期修改密碼可以阻止長期跟蹤你的「窺探者」,獲取你的密碼,登錄你的 MySQL 伺服器。

MariaDB [(none)]> USE mysql;MariaDB [(none)]> UPDATE user SET password=PASSWORD(YourPasswordHere) WHERE User=root AND Host = localhost;MariaDB [(none)]> FLUSH PRIVILEGES;n

12. 定期更新 MySQL Server 包

強烈建議定期從官方倉庫更新 mysql/mariadb 包來獲取最新的安全更新和錯誤改進。通常情況下操作系統中默認的包是過時的。

# yum updaten# apt updaten

在對 mysql/mariadb server 進行任何修改之後,要重啟服務。

# systemctl restart mariadbtt#RHEL/CentOSn# systemctl restart mysqltt#Debian/Ubuntun

分享到此結束,歡迎大家在文章下面評論,並且和我們分享文章中沒有提到的安全提示。

英文原文: Web Design Trends To Watch Out For In 2018

原文地址: tecmint.com/mysql-maria

參與翻譯: soaring, 涼涼_

譯文地址: oschina.net/translate/m

本文作者:soaring, 涼涼_

原文鏈接:oschina.net/translate/m

版權歸作者所有,轉載請註明出處

推薦閱讀:

MySQL |Self Join
MySQL成勒索新目標 數據服務基線安全問題迫在眉睫
提高MySQL性能的7個技巧
MySQL |IN 操作符(13)

TAG:Linux | MySQL | MariaDB |