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规则的其他命令行参数
删除rich规则
#firewall-cmd --zone=public --remove-rich-rule=" rule family="ipv6" source address="::/0" port port="22" protocol="tcp" reject "
同样永久生效添加–permanent