配置iptables以提升MySQL的安全性主要包括限制不必要的網(wǎng)絡(luò)訪問(wèn)、啟用防火墻規(guī)則以及限制特定IP地址的訪問(wèn)。以下是一些關(guān)鍵步驟和規(guī)則示例:
首先,禁用MySQL監(jiān)聽的IPv6地址和所有非必需的服務(wù)端口,以減少潛在的攻擊面。
# 禁用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
# 禁用非必需的服務(wù)端口
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
啟用防火墻規(guī)則以允許特定的IP地址訪問(wèn)MySQL端口。
# 允許特定IP地址訪問(wèn)MySQL端口
iptables -A INPUT -p tcp -s 你的允許IP地址 --dport 3306 -j ACCEPT
如果系統(tǒng)上啟用了SELinux,需要配置相應(yīng)的策略以允許MySQL通過(guò)防火墻。
# 檢查SELinux狀態(tài)
sestatus
# 配置SELinux策略
semanage port -a -t mysql_port_t -p tcp 3306
為了確保系統(tǒng)重啟后規(guī)則仍然有效,需要保存和持久化iptables規(guī)則。
# 保存iptables規(guī)則
iptables-save > /etc/iptables/rules.v4
# 設(shè)置iptables規(guī)則在系統(tǒng)啟動(dòng)時(shí)自動(dòng)加載
iptables-restore < /etc/iptables/rules.v4
在MySQL配置文件(通常是/etc/my.cnf
或/etc/mysql/my.cnf
)中,配置一些安全選項(xiàng)以增強(qiáng)安全性。
[mysqld]
# 限制root用戶遠(yuǎn)程訪問(wèn)
bind-address = 127.0.0.1
# 啟用密碼策略
password_policy = strong
# 限制登錄失敗次數(shù)
max_connect_errors = 5
# 禁用遠(yuǎn)程root登錄
skip-grant-tables
應(yīng)用所有配置更改后,重啟MySQL服務(wù)以使更改生效。
systemctl restart mysqld
通過(guò)以上步驟,你可以顯著提升MySQL的安全性,限制不必要的網(wǎng)絡(luò)訪問(wèn),并啟用防火墻規(guī)則以保護(hù)MySQL數(shù)據(jù)庫(kù)。