CentOS環境下SQLAdmin安全設置指南
sudo yum update -y
更新CentOS操作系統及已安裝的SQLAdmin、數據庫(如MySQL/MariaDB)等軟件包,及時修復已知安全漏洞。systemctl disable ftp telnet
等命令關閉FTP、Telnet等不安全服務,減少潛在攻擊面;通過systemctl list-unit-files --state=enabled
檢查并禁用無用服務。adm
、lp
、sync
):sudo userdel adm
;sudo passwd -l username
(僅保留root等必需超級用戶);/etc/login.defs
,強制密碼長度≥10位、包含大小寫字母+數字+特殊字符(如PASS_MIN_LEN 10
、PASS_REQUIRE_MIXED_CASE yes
);sudo awk -F: '($2 == "") {print $1}' /etc/shadow
,并為這些賬戶設置強密碼。sudo adduser sqladmin
創建專用管理賬戶,避免直接使用root賬戶;設置強密碼:sudo passwd sqladmin
。mysql -u root -p
),僅為sqladmin用戶分配其工作所需的最低權限(如僅管理特定數據庫mydb
):CREATE USER 'sqladmin'@'localhost' IDENTIFIED BY 'StrongPassword123!';
GRANT SELECT, INSERT, UPDATE, DELETE ON mydb.* TO 'sqladmin'@'localhost';
FLUSH PRIVILEGES;
ALL PRIVILEGES
或GRANT OPTION
(除非絕對必要),避免權限濫用。localhost
(僅本地訪問),若需遠程訪問,需添加對應IP限制(如'sqladmin'@'192.168.1.100'
)并配置防火墻允許該IP訪問數據庫端口(默認3306)。firewalld
開放數據庫端口(3306),并限制訪問源IP:sudo firewall-cmd --permanent --zone=public --add-port=3306/tcp
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="3306" protocol="tcp" accept'
sudo firewall-cmd --reload
若使用iptables
,可添加類似規則:sudo iptables -A INPUT -p tcp -s 192.168.1.100 --dport 3306 -j ACCEPT
。openssl
);/etc/my.cnf
)中添加:[mysqld]
ssl-ca=/path/to/ca.pem
ssl-cert=/path/to/server-cert.pem
ssl-key=/path/to/server-key.pem
GRANT ... REQUIRE SSL;
。/etc/my.cnf
)中啟用通用查詢日志和慢查詢日志:[mysqld]
general_log = 1
general_log_file = /var/log/mysql/general.log
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2
重啟數據庫使配置生效:sudo systemctl restart mysqld
。auditd
服務,記錄sqladmin用戶的操作(如登錄、數據庫修改):sudo yum install audit -y
sudo systemctl start auditd
sudo systemctl enable auditd
添加審計規則(監控sqladmin用戶的命令執行):sudo auditctl -a always,exit -F arch=b64 -S execve -F euid=sqladmin -k sqladmin_commands
查看審計日志:ausearch -k sqladmin_commands
。/etc/my.cnf
)包含敏感信息(如數據庫密碼),需限制訪問權限:sudo chown root:sqladmin /etc/my.cnf
sudo chmod 640 /etc/my.cnf
/etc/ssh/sshd_config
),設置PermitRootLogin no
,禁止root用戶通過SSH遠程登錄;使用普通用戶登錄后再切換至root(su -
)。mysqldump
定期備份數據庫(如每日備份),并將備份文件存儲至安全位置(如異地服務器):mysqldump -u sqladmin -p mydb > /backup/mydb_$(date +%F).sql
定期測試備份恢復流程,確保數據可恢復。