12 條用於 Linux 的 MySQL/MariaDB 安全最佳實務,mariadb最佳實務
MySQL 是世界上最流行的開來源資料庫系統,MariaDB(一個 MySQL 分支)是世界上增長最快的開來源資料庫系統。在安裝 MySQL 伺服器之後,在預設配置下是不安全的,確保資料庫安全通常是通用資料庫管理的基本任務之一。
這將有助於增強和提升整個 Linux 伺服器的安全性,因為攻擊者總是掃描系統任意部分的漏洞,而資料庫在過去是重點目的地區域。一個常見的例子是對 MySQL 資料庫的 root 密碼的強制破解。
在本指南中,我們將會講解對開發人員有協助的 MySQL/MariaDB 的 Linux 最佳安全實踐。
1. 安全地安裝 MySQL
這是安裝 MySQL 伺服器後第一個建議的步驟,用於保護資料庫伺服器。這個指令碼可以協助您提高 MySQL 伺服器的安全性:
如果您在安裝期間沒有設定 root 帳戶的密碼,馬上設定它
通過刪除可從本地主機外部存取的 root 帳戶來禁用遠程 root 使用者登入
刪除匿名使用者帳戶和測試資料庫,預設情況下,所有使用者、甚至匿名使用者都可以訪問這些帳戶和測試資料庫
# mysql_secure_installation
在運行上述命令之後,設定 root 密碼並通過輸入 [Yes/Y] 和按下 [Enter] 鍵來回答一系列問題。
安全安裝 MySQL 情況介面
2. 將資料庫伺服器綁定到 Loopback 地址
此配置將限制來自遠程機器的訪問,它告訴 MySQL 伺服器只接受來自本地主機的串連。你可以在主設定檔中進行設定。
# vi /etc/my.cnf [RHEL/CentOS]
# vi /etc/mysql/my.conf [Debian/Ubuntu]
OR
# vi /etc/mysql/mysql.conf.d/mysqld.cnf [Debian/Ubuntu]
在 [mysqld]
部分中添加下面這一行
bind-address = 127.0.0.1
3. 禁用 MySQL 的 LOCAL INFILE
作為安全性增強一部分,您需要禁用 local_infile,使用下面的指令以防止在 [mysqld]
部分從 MySQL 中訪問底層檔案系統。
local-infile=0
4. 修改 MySQL 的預設連接埠
設定連接埠變數用於監聽 TCP/IP 串連的 MySQL 連接埠號碼。預設連接埠號碼是 3306,但是您可以在 *[mysqld] *中修改它。
Port=5000
5、啟用 MySQL 日誌
日誌是瞭解服務運行過程中發生了什麼的最好的方法之一,在受到任何攻擊的時候都可以很容易的從日誌裡看到任何入侵相關的行為。可以通過將下邊的變數添加到設定檔[mysqld]部分來開啟mysql日誌功能。
log=/var/log/mysql.log
6、設定合適的 MySQL 檔案的存取權限
確保你已經為所有的 mysql 服務檔案和資料路徑設定了合適的存取權限。檔案 /etc/my.conf 只能由 root 使用者修改,這樣就可以阻止其他使用者修改資料庫服務的配置。
# chmod 644 /etc/my.cnf
7、刪除 MySQL shell 曆史
你在 MySQL shell 中執行的所有的命令都會被 mysql 用戶端儲存到一個曆史檔案:~/.mysql_history。這樣是很危險的,因為對於你建立過的任何使用者賬戶,所有的在 shell 輸入過的使用者名稱和密碼都會記錄到曆史檔案裡面。
# cat /dev/null > ~/.mysql_history
8. 不要在命令列中運行 MySQL 命令
正如你所知道的,你在終端上輸入的所有命令都會被儲存在一個曆史檔案中,具體取決於你正在使用的shell(例如 bash 的 shell 曆史檔案放在 ~/.bash_history)。攻擊者訪問這個曆史檔案可以很容易地看到記錄在那裡的任何密碼。
非常不建議在命令列裡面輸入密碼,如下:
# mysql -u root -ppassword_
使用密碼串連 MySQL
當你查看命令列曆史檔案的最後的部分時,可以看到之前輸入過的密碼。
# history
查看命令列輸入曆史
推薦串連 MySQL 的方式是
# mysql -u root -p
Enter password:
9. 定義特定應用的資料庫使用者
對於每一個在伺服器上啟動並執行應用,只設定一個與該應用相關的資料庫使用者。例如你有一個 wordpress 網站,如下建立一個 wordpress 的資料庫使用者:
# mysql -u root -p
MariaDB [(none)]> CREATE DATABASE osclass_db;
MariaDB [(none)]> CREATE USER 'osclassdmin'@'localhost' IDENTIFIED BY 'osclass@dmin%!2';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON osclass_db.* TO 'osclassdmin'@'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> exit
並且要記住對於不再使用的資料庫使用者要刪掉。
10. 使用額外的安全外掛程式和庫
MySQL 包含許多安全外掛程式:驗證用戶端串連到 MySQL 伺服器的請求、密碼校正和敏感資訊的安全儲存等,這些都在免費版本中提供。
在這裡可查看更多:https://dev.mysql.com/doc/refman/5.7/en/security-plugins.html
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;
12. 定期更新 MySQL Server 包
強烈建議定期從官方倉庫更新 mysql/mariadb 包來擷取最新的安全更新和錯誤改進。通常情況下作業系統中預設的包是過時的。
# yum update
# apt update
在對 mysql/mariadb server 進行任何修改之後,要重啟服務。
# systemctl restart mariadb #RHEL/CentOS
# systemctl restart mysql #Debian/Ubuntu
分享到此結束,歡迎大家在文章下面評論,並且和我們分享文章中沒有提到的安全提示。
英文原文: Web Design Trends To Watch Out For In 2018原文地址: https://www.tecmint.com/mysql-mariadb-security-best-practices-for-linux/參與翻譯: soaring, 涼涼_譯文地址: https://www.oschina.net/translate/mysql-mariadb-security-best-practices-for-linux
推薦閱讀
2018 年值得關注的 Web 設計趨勢
RocketMQ 源碼分析 - Message 順序發送與消費
那些沒說出口的研發之痛,做與不做微服務的幾大理由
小遊戲「跳一跳」技術手段高分秘籍實現
Spring乾貨匯總(含Spring Boot與Spring Cloud)
IntelliJ IDEA外掛程式系列:五大裝逼神器
我最常用的Intellij IDEA快速鍵
最好用的 IntelliJ 外掛程式 Top 10
長按指紋
一鍵關注
點擊 “閱讀原文” 看看本號其他精彩內容