Ubuntu系統下MariaDB安全設置實戰指南
首先確保Ubuntu系統及軟件包為最新版本,避免已知漏洞:
sudo apt update && sudo apt upgrade -y
安裝MariaDB服務器(默認源為Ubuntu官方倉庫,版本較舊時可添加MariaDB官方源):
sudo apt install mariadb-server -y
使用mysql_secure_installation
腳本完成核心安全設置,該腳本會引導完成以下關鍵操作:
DELETE FROM mysql.user WHERE User=''
,防止未認證訪問;UPDATE mysql.user SET Host='localhost' WHERE User='root'
,僅允許本地登錄;DROP DATABASE IF EXISTS test
,避免未授權測試;FLUSH PRIVILEGES
,使更改立即生效。Y
確認:sudo mysql_secure_installation
編輯MariaDB主配置文件/etc/mysql/mariadb.conf.d/50-server.cnf
,調整以下參數提升安全性:
bind-address = 127.0.0.1
保留(默認僅本地訪問),若需遠程訪問需謹慎修改為0.0.0.0
(后續需配合防火墻限制IP);local-infile = 0
,防止惡意用戶通過LOAD DATA LOCAL INFILE
讀取服務器文件;max_connections
(如max_connections = 500
),避免資源耗盡。sudo systemctl restart mariadb
app_user
僅能從localhost
訪問mydatabase
:CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'StrongPassword123!';
GRANT SELECT, INSERT, UPDATE ON mydatabase.* TO 'app_user'@'localhost';
FLUSH PRIVILEGES;
REVOKE
命令撤銷不必要的權限(如GRANT ALL PRIVILEGES
授予的過度權限)。192.168.1.100
),而非%
(所有IP):CREATE USER 'remote_user'@'192.168.1.100' IDENTIFIED BY 'RemotePass456!';
GRANT SELECT, INSERT ON mydatabase.* TO 'remote_user'@'192.168.1.100';
FLUSH PRIVILEGES;
配置SSL加密可防止數據在傳輸過程中被竊取或篡改:
sudo mkdir -p /etc/mysql/ssl
sudo openssl genrsa 2048 > /etc/mysql/ssl/server-key.pem
sudo openssl req -new -x509 -nodes -days 365 -key /etc/mysql/ssl/server-key.pem -out /etc/mysql/ssl/server-cert.pem
sudo openssl req -new -nodes -days 365 -key /etc/mysql/ssl/server-key.pem -out /etc/mysql/ssl/client-key.pem
sudo openssl x509 -req -in /etc/mysql/ssl/client-key.pem -days 365 -CA /etc/mysql/ssl/server-cert.pem -CAkey /etc/mysql/ssl/server-key.pem -set_serial 01 -out /etc/mysql/ssl/client-cert.pem
50-server.cnf
,添加以下內容:[mysqld]
ssl-ca=/etc/mysql/ssl/server-cert.pem
ssl-cert=/etc/mysql/ssl/server-cert.pem
ssl-key=/etc/mysql/ssl/server-key.pem
require_secure_transport=ON # 強制所有連接使用SSL
STATUS;
命令查看SSL狀態(網絡登錄時需指定證書路徑):mysql -u root -p --protocol=tcp --ssl-ca=/etc/mysql/ssl/server-cert.pem
SHOW STATUS LIKE 'Ssl_cipher'; # 應顯示加密套件(如AES256-SHA)
使用ufw
(Ubuntu默認防火墻)限制訪問,僅允許必要端口(如SSH的22端口、MariaDB的3306端口):
sudo apt install ufw -y
sudo ufw enable
192.168.1.100
):sudo ufw allow ssh
sudo ufw allow from 192.168.1.100 to any port 3306
sudo ufw default deny incoming # 默認拒絕所有入站連接
sudo ufw default allow outgoing # 允許所有出站連接
sudo ufw status verbose
啟用審計日志可追蹤數據庫操作,便于事后溯源:
50-server.cnf
中添加審計插件配置:[mysqld]
plugin_load_add = server_audit
server_audit_logging = ON
server_audit_output_type = FILE
server_audit_file_path = /var/log/mysql/server_audit.log
server_audit_file_rotate_size = 1G # 單個日志文件最大1G
server_audit_file_rotations = 10 # 保留10個日志文件
sudo systemctl restart mariadb
sudo
權限):sudo tail -f /var/log/mysql/server_audit.log
sudo apt update && sudo apt upgrade mariadb-server
,安裝安全補??;mariabackup
(MariaDB官方工具)進行物理備份,確保數據可恢復:sudo apt install mariadb-backup -y
sudo mariabackup --backup --target-dir=/var/backups/mariadb/$(date +%F) --user=root --password='YourRootPassword'
/var/log/mysql/error.log
(錯誤日志)和/var/log/syslog
(系統日志),發現異常(如暴力破解嘗試)及時處理。通過以上步驟,可全面加固Ubuntu系統上MariaDB的安全性,覆蓋從基礎配置到高級防護的多個層面。需根據實際業務需求調整參數(如遠程訪問范圍、SSL證書類型),并保持定期維護以應對新的安全威脅。