Firewalld 提供了一个动态管理的防火墙,支持定义网络连接或接口的信任级别的网络/防火墙区域。它支持 IPv4、IPv6 防火墙设置、以太网网桥和 IP 集。运行时和永久配置选项是分开的。它还为服务或应用程序提供了一个接口,用于直接添加防火墙规则。
使用 firewalld 的好处
可以在运行时环境中立即进行更改。无需重新启动服务或守护程序。
借助 firewalld D-Bus 接口,服务、应用程序和用户可以轻松调整防火墙设置。该接口完整,用于防火墙配置工具 firewall-cmd、firewall-config 和 firewall-applet。
运行时和永久配置的分离使得在运行时进行疏散和测试成为可能。运行时配置仅在下次服务重新加载和重新启动或系统重新启动之前有效。然后将再次加载永久配置。在运行时环境中,可以将运行时用于仅在有限时间内处于活动状态的设置。如果运行时配置已用于评估,并且它是完整的并且可以工作,则可以将此配置保存到永久环境中。
firewalld的特点:
完整的 D-Bus API
IPv4、IPv6、网桥和 ipset 支持
IPv4 和 IPv6 NAT 支持
防火墙区域
预定义的区域、服务和 icmptype 列表
简单服务、端口、协议、源端口、伪装、端口转发、icmp 过滤器、丰富的规则、接口和源地址处理区域
包含端口、协议、源端口的简单服务定义、伪装、端口转发、ICMP过滤器、丰富的规则、区域中的接口和源地址处理
使用端口、协议、源端口、模块(netfilter 帮助程序)和目标地址处理的简单服务定义
丰富的语言,可在区域中实现更灵活、更复杂的规则
区域中的定时防火墙规则
拒绝数据包的简单日志
直接接口
锁定:将可能修改防火墙的应用程序列入白名单
自动加载 Linux 内核模块
与 Puppet 集成
用于联机和脱机配置的命令行客户端
使用 gtk3 的图形化配置工具
使用 Qt5 的小程序
主要适用操作系统:
CentOS7、CentOS7.5、CentOS8、CentOS9、CentOS Stream、Ubuntu等Linux系统中的firewalld防火墙。
一、如何启用、停用防火墙
启用firewalld:systemctl start firewalld 或 service firewalld start
停用firewalld:systemctl stop firewalld 或 service firewalld stop
开机启动或禁用:systemctl enable/disable firewalld
二、firewalld配置命令firewall-cmd
帮助:firewall-cmd --help
状态:firewall-cmd --state
版本:firewall-cmd --version
重新载入:firewall-cmd --reload (注意内存中的配置将丢失)
查看当前的ZONE:
$ firewall-cmd --get-active-zones
查看网卡所在的ZONE:
$ firewall-cmd --get-zone-of-interface=em1
详细请参考:
https://firewalld.org/documentation/utilities/firewall-cmd.html
三、添加、删除、查询端口开放
开放端口:firewall-cmd --zone=public --add-port=443/tcp --permanent
注意--permanent表示保存到配置文件,不仅仅是内存中,否则只存在内存中,--reload后会丢失。
删除端口:firewall-cmd --zone=public --remove-port=443/tcp --permanent
查询端口:firewall-cmd --zone=public --query-port=443/tcp
常用:
firewall-cmd --zone=public --add-port=22/tcp --permanent
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=3306/tcp --permanent
四、富规则(richrule)
richrule可以用来定义一条复杂的规则,其在zone配置文件中的节点定义如下:
fireall-cmd --zone=public --add-rich-rule="[RULE]",其中rule规则定义如下:
rule [source] [destination] service|port|protocol|icmp-block|icmp-type|masquerade|forward-port|source-port [log|nflog] [audit] [accept|reject|drop|mark]
RichRule官方网址:
https://firewalld.org/documentation/man-pages/firewalld.richlanguage.html
举例:
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="254.0.0.0/8" port port="22" protocol="tcp" drop"
该规则表示,禁止254.0.0.0/8网段的全部IP地址,连接到22端口。
firewall-cmd --list-rich-rules 列出全部已经添加的RichRule
firewall-cmd --remove-rich-rule="RULE" 删除richrule,注意RULE要和添加时一致,通过--list-rich-rules查看。
五、把内存配置永久保存
firewall-cmd --runtime-to-permanent