在CentOS系统中配置防火墙是确保系统安全的关键步骤之一,防火墙可以控制进出系统的网络流量,保护系统免受未经授权的访问和各种网络攻击,CentOS 7及更高版本中默认使用firewalld作为防火墙服务,而更早的版本如CentOS 6则使用iptables,下面将详细介绍如何在CentOS中配置和管理防火墙。
一、防火墙基础操作
1、查询防火墙状态:
CentOS 7及以上:systemctl status firewalld
或firewallcmd state
CentOS 6:service iptables status
2、开启防火墙:
CentOS 7及以上:systemctl start firewalld
或firewallcmd reload
CentOS 6:service iptables start
3、关闭防火墙:
CentOS 7及以上:systemctl stop firewalld
CentOS 6:service iptables stop
4、重启防火墙:
CentOS 7及以上:systemctl restart firewalld
CentOS 6:service iptables restart
5、永久关闭防火墙(CentOS 7及以上):systemctl disable firewalld
6、永久关闭后重新开启防火墙(CentOS 7及以上):systemctl enable firewalld
然后启动防火墙。
二、防火墙端口配置
在开启防火墙后,某些服务可能会因为相关端口未打开而无法访问,此时需要配置防火墙规则以允许特定端口的流量通过。
1、查看已开启端口:
firewallcmd listports
或netstat ntlp
2、查看防火墙规则:firewallcmd listall
3、查看允许的协议:firewallcmd listprotocols
4、开启、关闭、查询端口:
查询端口是否开放:firewallcmd queryport=80/tcp
永久增加/开启端口:firewallcmd permanent addport=80/tcp
然后重启防火墙或重新加载规则:firewallcmd reload
删除端口:firewallcmd permanent removeport=80/tcp
然后重启防火墙或重新加载规则。
三、防火墙IP指向限制配置
除了基于端口的配置外,还可以根据IP地址进行更精细的控制。
1、允许指定IP访问所有流量:
firewallcmd permanent addrichrule="rule family="ipv4" source address="192.168.1.100" accept"
然后重启防火墙或重新加载规则。
2、允许指定IP访问指定端口:
firewallcmd permanent addrichrule="rule family="ipv4" source address="10.168.186.25" port protocol="tcp" port="22" accept"
3、允许指定IP访问指定协议:
阻止ICMP包:firewallcmd permanent addrichrule="rule protocol value="icmp" drop"
允许特定地址通过ICMP:firewallcmd permanent addrichrule="rule family="ipv4" source address="120.12.23.136" protocol value="icmp" accept"
4、允许指定IP访问指定服务:
允许特定地址访问SSH服务:firewallcmd permanent addrichrule="rule family="ipv4" source address="10.168.186.25" service name="ssh" accept"
5、移除服务:从允许通过防火墙的列表里移除SSH服务:firewallcmd permanent removerichrule="rule family="ipv4" source address="10.168.186.25" service name="ssh" drop"
四、获取所有支持的服务
可以通过以下命令查看firewalld支持的所有服务:
firewallcmd getservices
五、自定义复杂规则
对于更复杂的需求,可以自定义规则,允许特定IP段访问本机的80808090端口:
firewallcmd permanent addrichrule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="80808090" accept'
注意,自定义规则时要小心避免与已有规则冲突。
通过上述步骤,您可以在CentOS系统中有效地配置和管理防火墙,以保护系统免受未经授权的访问和网络攻击,记得在每次修改防火墙规则后,都要重启防火墙或重新加载规则以确保更改生效,定期审查和更新防火墙规则也是保持系统安全的重要措施之一。
七、FAQs
Q1: 如何更改CentOS 7中的默认防火墙区域?
A1: 要更改默认的防火墙区域,可以使用以下命令:
firewallcmd setdefaultzone=<区域名>
将默认区域设置为public:
sudo firewallcmd setdefaultzone=public
然后重启防火墙或重新加载规则以使更改生效。
Q2: 如果我想临时允许某个IP访问我的服务器上的特定端口,应该如何操作?
A2: 要临时允许某个IP访问服务器上的特定端口,可以使用以下命令添加临时规则:
firewallcmd addrichrule="rule family="ipv4" source address="<源IP>" port protocol="tcp" port="<目标端口>" accept"
允许IP为192.168.1.100的主机访问本机的80端口:
sudo firewallcmd addrichrule="rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="80" accept"
这种更改是临时的,重启防火墙后会失效,如果需要永久生效,请使用permanent
选项并重启防火墙或重新加载规则。