CentOS 7 Firewalld 操作集合

在 CentOS 7 系统中,Firewalld 是一个功能强大的防火墙管理工具,它提供了动态管理防火墙规则的能力,相比传统的 iptables 更加灵活和易于使用。本文将详细介绍 Firewalld 的各种操作,帮助你更好地管理服务器的网络安全。

目录#

Firewalld 基本概念#

Firewalld 使用“区域(Zone)”的概念来定义不同的网络环境,每个区域有预定义的规则。例如,public区域通常用于公共网络,规则较为严格;trusted区域则允许所有流量通过。它还支持动态更新规则,无需重启服务即可生效。

Firewalld 服务管理#

启动 Firewalld#

systemctl start firewalld

停止 Firewalld#

systemctl stop firewalld

重启 Firewalld#

systemctl restart firewalld

查看 Firewalld 状态#

systemctl status firewalld

设置 Firewalld 开机自启#

systemctl enable firewalld

取消 Firewalld 开机自启#

systemctl disable firewalld

区域(Zone)管理#

查看当前默认区域#

firewall-cmd --get-default-zone

设置默认区域(以public为例)#

firewall-cmd --set-default-zone=public

查看所有区域#

firewall-cmd --get-zones

查看指定区域(如public)的配置#

firewall-cmd --zone=public --list-all

将网络接口添加到指定区域(假设接口为eth0,添加到public区域)#

firewall-cmd --zone=public --add-interface=eth0

从区域中移除网络接口#

firewall-cmd --zone=public --remove-interface=eth0

端口和服务操作#

允许端口(以允许 TCP 80 端口为例,运行时生效)#

firewall-cmd --zone=public --add-port=80/tcp

允许端口(永久生效)#

firewall-cmd --zone=public --add-port=80/tcp --permanent

移除允许的端口(运行时)#

firewall-cmd --zone=public --remove-port=80/tcp

移除允许的端口(永久)#

firewall-cmd --zone=public --remove-port=80/tcp --permanent

允许预定义服务(如http服务,运行时)#

firewall-cmd --zone=public --add-service=http

允许预定义服务(永久)#

firewall-cmd --zone=public --add-service=http --permanent

查看允许的服务(运行时)#

firewall-cmd --zone=public --list-services

查看允许的服务(永久配置,需重新加载)#

firewall-cmd --zone=public --list-services --permanent
firewall-cmd --reload

富规则(Rich Rules)#

富规则提供了更复杂的规则定义。例如,允许特定 IP 段(192.168.1.0/24)访问 TCP 80 端口:

运行时添加富规则#

firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="80" accept'

永久添加富规则#

firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="80" accept' --permanent

查看富规则#

firewall-cmd --zone=public --list-rich-rules

移除富规则(假设规则索引为 0)#

firewall-cmd --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="80" accept'

运行时配置与永久配置#

Firewalld 的配置分为运行时(当前会话有效)和永久(重启后仍有效)。对于永久配置,在添加规则后需要执行firewall-cmd --reload使配置生效。例如,前面提到的--permanent选项的操作,都需要执行reload

常见实践与最佳实践#

  • 最小权限原则:只开放必要的端口和服务,避免过度开放带来的安全风险。
  • 定期审计:定期检查防火墙规则,删除不再需要的规则。
  • 测试规则:在生产环境应用新规则前,先在测试环境进行充分测试。

参考资料#

通过以上对 CentOS 7 Firewalld 的操作介绍,希望能帮助你更好地管理服务器的网络安全,合理配置防火墙规则以保障系统的稳定和安全运行。