CentOS防火墻最佳實踐
CentOS 7及以上版本默認使用firewalld(動態防火墻管理工具),相比傳統iptables更易管理(支持動態更新規則、區域劃分等功能)。若未安裝,可通過sudo yum install firewalld
安裝;安裝后啟動服務并設置開機自啟:sudo systemctl start firewalld
、sudo systemctl enable firewalld
。
僅開放業務必需的端口,減少攻擊面。例如:
firewall-cmd --permanent --remove-port=端口號/協議
移除。firewalld通過區域(如public、internal、dmz)定義不同網絡環境的訪問規則:
firewall-cmd --get-zones
查看可用區域,firewall-cmd --set-default-zone=public
設置默認區域。對于復雜需求(如特定IP訪問、時間段限制),可使用rich rules:
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.100' port protocol='tcp' port='22' accept"
;firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="0.0.0.0/0" port port="80" protocol="tcp" time start="08:00" end="18:00" accept'
;firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='10.0.0.0/8' reject"
。firewall-cmd --reload
使規則生效。將防火墻默認策略設置為拒絕所有流量,僅允許明確放行的流量,提升安全性:
firewall-cmd --set-default-zone=drop
將默認區域設為drop(拒絕所有入站、轉發流量,允許所有出站流量);開啟防火墻日志,便于審計異常行為:
firewall-cmd --set-log-denied=xml
記錄被拒絕的流量);/var/log/firewalld
(或通過journalctl -u firewalld
查看實時日志);grep
、awk
提取異常IP、端口),及時發現暴力破解、掃描等攻擊。firewall-cmd --list-all
查看當前規則),移除不再使用的端口或服務(如舊業務對應的端口);sudo yum update firewalld
),修補安全漏洞。SSH是遠程管理的關鍵服務,需通過防火墻配合強化安全:
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='管理員IP' port protocol='tcp' port='22' accept"
;sudo vim /etc/ssh/sshd_config
修改PermitRootLogin no
),使用密鑰認證(PubkeyAuthentication yes
)。修改防火墻規則前,備份當前配置(sudo cp -r /etc/firewalld /etc/firewalld.bak
);
若配置錯誤導致無法訪問,可通過備份恢復(sudo cp -r /etc/firewalld.bak/* /etc/firewalld/
),或使用firewall-cmd --reload
重新加載默認規則。