在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