Linux防火墙firewalld的rich规则配置

Linux2022-04-12
Linux防火墙firewalld的rich规则配置-下一朵云

除了简单的端口、协议的开放、禁止等,在某些情况下,我们可能需要创建更复杂的规则,而不仅仅是允许区域中的某些端口或服务。例如,我们可能想要创建一条规则来阻止来自特定机器的某种类型的流量。这就是rich规则的意义所在。规则基本上由两部分组成:在第一部分中,我们指定要应用规则必须满足的条件,在第二部分中,指定要执行的操作:accept、drop或reject

实验示例:

目前一台内网服务器提供Web服务,通过端口映射的方式映射80端口到公网,22端口、3306端口等不映射仅内网维护使用。

仅ipv4的情况下,上述操作是安全的,当开启ipv6后,服务器就会暴露在公网中,所有端口都会暴露出去,所以我们要通过rich规则禁止外网访问重要端口如:22、3306等

1.禁止ipv6访问22端口

#firewall-cmd --zone=public --add-rich-rule=" rule family="ipv6" source address="::/0" port port="22" protocol="tcp" reject "

*上述命令重启firewall后会失效,永久生效如下

#firewall-cmd --zone=public --add-rich-rule=" rule family="ipv6" source address="::/0" port port="22" protocol="tcp" reject " --permanent
#firewalld-cmd --reload

2.开放内网ipv4访问3306端口

#firewall-cmd --zone=public --add-rich-rule="  rule family="ipv4" source address="192.168.0.0/24" port port="3306" protocol="tcp" accept "

*上述命令重启firewall后会失效,永久生效如下

#firewall-cmd --zone=public --add-rich-rule="  rule family="ipv4" source address="192.168.0.0/24" port port="3306" protocol="tcp" accept " --permanent
#firewalld-cmd --reload

rich规则详解

  • –add-rich-rule选项,将该规则描述为其参数。规则以rule关键字开头。
  • family:我们指定该规则仅应用于IPv4数据包:如果未提供此关键字,则该规则将同时应用于IPv4和IPv6。
  • source address:我们提供数据包必须具有的源地址,才能使用源地址触发规则。
  • service:我们指定了规则的服务类型
  • port:我们指定了端口
  • reject/drop/accept,我们提供了数据包与规则匹配时要执行的操作

rich规则的其他命令行参数

Linux防火墙firewalld的rich规则配置-下一朵云

删除rich规则

#firewall-cmd --zone=public --remove-rich-rule=" rule family="ipv6" source address="::/0" port port="22" protocol="tcp" reject "

同样永久生效添加–permanent