在CentOS系统中,防火墙(Firewall)是保障服务器安全的重要组件,它能够控制进出网络的数据流量,防止未授权访问,CentOS 7及更高版本默认使用firewalld作为防火墙管理工具,而CentOS 6则使用iptables,本文将详细介绍如何在CentOS系统中打开和管理防火墙,包括基本操作、常用配置及注意事项。

检查防火墙状态
在开启防火墙之前,首先需要确认当前防火墙的运行状态,对于CentOS 7及以上系统,可以使用以下命令:
systemctl status firewalld
如果防火墙未运行,命令会显示“inactive”;如果已运行,则显示“active”,对于CentOS 6系统,可以使用:
service iptables status
了解防火墙状态后,可以根据实际需求决定是否开启或调整配置。
开启防火墙
CentOS 7及以上系统
使用firewalld管理防火墙时,开启服务并设置为开机自启的命令如下:
systemctl start firewalld # 开启防火墙 systemctl enable firewalld # 设置开机自启
执行后,防火墙会立即生效,并在每次系统启动时自动运行。
CentOS 6系统
对于iptables,操作方式略有不同:
service iptables start # 开启防火墙 chkconfig iptables on # 设置开机自启
注意:CentOS 6的iptables默认可能没有配置规则,建议根据需求添加允许的端口或服务。

添加防火墙规则
开启防火墙后,可能需要开放特定端口或服务以允许合法访问。
开放端口(firewalld)
使用以下命令开放单个端口,例如开放80端口:
firewall-cmd --permanent --add-port=80/tcp firewall-cmd --reload
参数说明:
--permanent:表示规则永久生效,需重载防火墙;--reload:重载防火墙配置,使新规则立即生效。
开放服务(firewalld)
firewalld预置了一些常见服务(如http、ssh),可直接开放:
firewall-cmd --permanent --add-service=http firewall-cmd --reload
CentOS 6的iptables规则
在CentOS 6中,编辑/etc/sysconfig/iptables文件,添加规则后重启服务:
-A INPUT -p tcp --dport 80 -j ACCEPT service iptables restart
查看与管理防火墙规则
查看已开放的端口
firewall-cmd --list-ports
查看已开放的服务
firewall-cmd --list-services
删除规则
若需删除已添加的端口规则:
firewall-cmd --permanent --remove-port=80/tcp firewall-cmd --reload
防火墙高级配置
设置默认区域
firewalld默认使用public区域,可根据需求更改:

firewall-cmd --set-default-zone=trusted
限制特定IP访问
仅允许192.168.1.100访问80端口:
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="80" accept' firewall-cmd --reload
常见问题与解决
-
防火墙开启后无法访问服务
检查是否开放了对应端口或服务,并确认防火墙规则已正确加载。 -
CentOS 6重启iptables后规则丢失
确保规则已保存到/etc/sysconfig/iptables文件中,或使用service iptables save命令。
FAQs
Q1: 如何临时关闭防火墙而不影响开机自启?
A1: 对于firewalld,使用systemctl stop firewalld临时关闭;对于iptables,使用service iptables stop,临时关闭不会修改开机自启设置。
Q2: 防火墙规则配置错误如何恢复?
A2: 若firewalld规则错误,可执行firewall-cmd --reload重载配置;若问题未解决,可使用firewall-cmd --reset-to-defaults恢复默认规则,对于iptables,直接编辑/etc/sysconfig/iptables文件并重启服务。