1.先直接上命令

firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address=1.2.3.4 service name=smtp reject' 

注释:

  • –zone:可选项,省略则为默认的zone,可用 ” firewall-cmd –get-default-zone”命令查看默认的zone;
  • –add-rich-rule:用单引号标记的规则集,参数接下;
  • rule:特定关键字,指明这是一条规则;
  • family:限制规则中的 source 中的IP类型为 IPv4或IPv6;
  • source:用 address 指定源IP,可用单一地址或掩码形式的IP段;还可用 port 指定单端口或端口范围;
  • service:用 name 指定对此规则生效的服务名,可用 ” firewall-cmd –get-services ” 命令获取所有可用服务列表;
  • accept | reject | drop | mark:此规则要操作的行为,只能是此4种操作之一。

2.删除指定的规则

把方面命令中的 –add-rich-rule 换成 –remove-rich-rule 即可。

3.其它相关命令

  • 列出所有富语言规则列表
firewall-cmd --list-rich-rules
  • 列出当前防火墙所有规则,也包含富语言规则
firewall-cmd --list-all

4.是否设定为重启后生效?

在上述设置后,会自动注入防火墙“运行配置”中生效,但重启系统或防火墙后,此规则会消失,因为重启系统或重启防火墙,会自动重新加载保存的“启动配置”生成“运行配置”。

因此,要使设置的规则能保存到“启动配置”文件中,需要在上面命令行的最后加入 –permanent 参数。如:

firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address=1.2.3.4 service name=smtp reject'  --permanent

但必须注意的是:

  • 使用 –permanent 参数后,是直接写入“启动配置”文件,因此相应的删除语句也同样需要加入此参数。
  • 使用 –permanent 参数后,仅写入“启动配置”文件,并不会改变“运行配置”,因此需要运行 firewall-cmd –reload 命令重新加载才能立即生效。

发表回复