配置iptables以提升MySQL的安全性主要包括限制不必要的網絡訪問、啟用防火墻規則以及限制特定IP地址的訪問。以下是一些關鍵步驟和規則示例:
首先,禁用MySQL監聽的IPv6地址和所有非必需的服務端口,以減少潛在的攻擊面。
# 禁用IPv6
echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6
echo 2 > /proc/sys/net/ipv6/conf/default/disable_ipv6
echo 1 > /proc/sys/net/ipv6/conf/lo/disable_ipv6
# 禁用非必需的服務端口
iptables -A INPUT -p tcp --dport 3306 -j REJECT --reject-with icmp-host-prohibited
iptables -A INPUT -p tcp --dport 1521 -j REJECT --reject-with icmp-host-prohibited
iptables -A INPUT -p tcp --dport 1433 -j REJECT --reject-with icmp-host-prohibited
啟用防火墻規則以允許特定的IP地址訪問MySQL端口。
# 允許特定IP地址訪問MySQL端口
iptables -A INPUT -p tcp -s 你的允許IP地址 --dport 3306 -j ACCEPT
如果系統上啟用了SELinux,需要配置相應的策略以允許MySQL通過防火墻。
# 檢查SELinux狀態
sestatus
# 配置SELinux策略
semanage port -a -t mysql_port_t -p tcp 3306
為了確保系統重啟后規則仍然有效,需要保存和持久化iptables規則。
# 保存iptables規則
iptables-save > /etc/iptables/rules.v4
# 設置iptables規則在系統啟動時自動加載
iptables-restore < /etc/iptables/rules.v4
在MySQL配置文件(通常是/etc/my.cnf
或/etc/mysql/my.cnf
)中,配置一些安全選項以增強安全性。
[mysqld]
# 限制root用戶遠程訪問
bind-address = 127.0.0.1
# 啟用密碼策略
password_policy = strong
# 限制登錄失敗次數
max_connect_errors = 5
# 禁用遠程root登錄
skip-grant-tables
應用所有配置更改后,重啟MySQL服務以使更改生效。
systemctl restart mysqld
通過以上步驟,你可以顯著提升MySQL的安全性,限制不必要的網絡訪問,并啟用防火墻規則以保護MySQL數據庫。