本文目录导读:
在Linux系统中,防火墙是保护系统安全的重要组件,Firewalld是Red Hat系列发行版中默认的防火墙管理工具,提供了动态管理防火墙规则的功能,本文将详细介绍Firewalld的高级配置,帮助您更好地保护系统安全。
Firewalld简介
Firewalld是一个动态防火墙管理工具,用于管理Linux系统上的iptables规则,它提供了基于 zones 的防火墙配置方式,可以根据不同的网络环境将系统划分为不同的安全区域,并针对每个区域配置不同的防火墙规则,Firewalld还支持实时变化的服务和连接,可以根据网络状态动态调整防火墙规则。
Firewalld的高级配置
1、定义Zones
Zones是Firewalld的核心概念,用于将系统划分为不同的安全区域,每个Zone定义了一组安全规则和网络接口,在定义Zone时,需要考虑网络环境、安全要求等因素,常见的Zone有:public、home、work、dmz、external等。
要定义Zone,可以编辑/etc/firewalld/zones/目录下的zone文件,例如编辑/etc/firewalld/zones/public.xml文件:
<zone> <short>Public Zone</short> <description>Used for general internet traffic.</description> <interface>eth0</interface> <source-address>192.168.1.0/24</source-address> <service>ssh</service> <service>https</service> <masquerade>no</masquerade> </zone>
在上面的例子中,我们定义了一个名为public的Zone,指定了网络接口为eth0,允许来自192.168.1.0/24网段的SSH和HTTPS流量通过,其他流量默认被拒绝。
2、配置默认Zone
默认Zone是指系统启动时默认使用的Zone,要配置默认Zone,可以编辑/etc/firewalld/firewalld.conf文件,设置DefaultZone属性:
DefaultZone=public
3、添加自定义服务或端口
除了系统预定义的服务外,您还可以添加自定义的服务或端口到Zones中,要添加自定义服务或端口,可以编辑/etc/firewalld/services/目录下的服务文件,例如编辑/etc/firewalld/services/mycustomservice.xml文件:
<service> <short>My Custom Service</short> <description>A custom service for my application.</description> <port protocol="tcp" port="8080"/> </service>
在上面的例子中,我们定义了一个名为mycustomservice的自定义服务,指定了TCP协议下8080端口的流量可以通过,要将自定义服务添加到Zone中,可以在Zone配置文件中引用该服务:
<service>mycustomservice</service>
4、配置自定义规则
除了使用Zones进行防火墙配置外,您还可以编写自定义的iptables规则,要配置自定义规则,可以编辑/etc/firewalld/user.xml文件:
<rules>
<rule family="ipv4">
<source address="192.168.1.10"/>
<accept/>
</rule>
</rules>
在上面的例子中,我们编写了一个自定义规则,允许来自192.168.1.10地址的流量通过,要将自定义规则应用到当前会话中,可以使用如下命令:
firewall-cmd --reload --permanent --add-rule=/etc/firewalld/user.xml 10 accept ipv4 source address=192.168.1.10 accept firewall-cmd --reload --permanent --add-rule=/etc/firewalld/user.xml 20 accept ipv4 accept all other traffic

