在CentOS系統中,設置有效的防火墻規則主要通過使用FirewallD工具來實現。以下是設置CentOS防火墻規則的基本步驟:
如果你的CentOS系統還沒有安裝FirewallD,可以使用以下命令進行安裝:
sudo yum install firewalld
安裝完成后,啟動firewalld服務并設置為開機自啟:
sudo systemctl start firewalld
sudo systemctl enable firewalld
你可以使用以下命令查看當前的防火墻狀態和活動區域:
sudo firewall-cmd --state
sudo firewall-cmd --get-active-zones
你可以添加各種類型的防火墻規則,例如允許或拒絕特定的端口、服務或IP地址。
允許特定端口:例如,允許TCP端口80和443:
sudo firewall-cmd --permanent --zone=public --add-port=80/tcp
sudo firewall-cmd --permanent --zone=public --add-port=443/tcp
允許特定服務:例如,允許HTTP和HTTPS服務:
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
允許特定IP地址:例如,允許來自特定IP地址的流量:
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" accept'
添加或修改規則后,需要重新加載防火墻配置以使更改生效:
sudo firewall-cmd --reload
你可以查看當前的防火墻規則:
sudo firewall-cmd --list-all
如果你需要刪除某個規則,可以使用以下命令:
刪除特定端口:
sudo firewall-cmd --permanent --zone=public --remove-port=80/tcp
刪除特定服務:
sudo firewall-cmd --permanent --zone=public --remove-service=http
刪除特定IP地址規則:
sudo firewall-cmd --permanent --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.1.100" accept'
如果你不再需要firewalld服務,可以停止并禁用它:
sudo systemctl stop firewalld
sudo systemctl disable firewalld
區域管理:查看所有區域:
sudo firewall-cmd --get-zones
設置默認區域(推薦使用dmz或work):
sudo firewall-cmd --set-default-zone=dmz
IP地址限制:僅允許特定IP訪問SSH(替換為你的IP):
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" service name="ssh" accept'
速率限制(防止DDoS):
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="0.0.0.0/0" service name="http" limit value="20/m" accept'
網絡地址轉換(NAT):
端口轉發:將外部8080端口轉發到內部80端口:
sudo firewall-cmd --permanent --add-forward-port=port=8080:proto=tcp:toport=80
IP偽裝(用于網關服務器):
sudo firewall-cmd --permanent --add-masquerade
重載防火墻配置:
sudo firewall-cmd --reload
測試規則是否生效:
測試端口是否開放(從另一臺機器):
telnet your_server_ip 22
或使用:
nc -zv your_server_ip 80