自 CentOS 之后,firewall 替换了 iptables 成为了系统默认的防火墙程序。新玩意,新面貌,搜罗一些常用的指令,方便使用。

概念

  • 区域概念

    • 运行时区域
      运行时模式下对区域进行的修改不是永久有效的。重新加载或者重启后修改将失效。
    • 永久区域
      永久选项不直接影响运行时的状态。这些选项仅在重载或者重启服务时可用。为了使用运行时和永久设置,需要分别设置两者。 选项 –permanent 需要是永久设置的第一个参数
    • 直接选项
      直接选项主要用于使服务和应用程序能够增加规则。 规则不会被保存,在重新加载或者重启之后必须再次提交。传递的参数 与 iptables, ip6tables 以及 ebtables 一致。
      选项–direct需要是直接选项的第一个参数。

命令

  • 获取 firewalld 状态
firewall-cmd --state
  • 在不改变状态的条件下重新加载防火墙:
firewall-cmd --reload

如果你使用–complete-reload,状态信息将会丢失。这个选项应当仅用于处理防火墙问题时,例如,状态信息和防火墙规则都正常,但是不能建立任何连接的情况。

  • 获取支持的区域列表
firewall-cmd --get-zones
  • 获取所有支持的服务
firewall-cmd --get-services
  • 获取所有支持的ICMP类型
firewall-cmd --get-icmptypes
  • 列出全部启用的区域的特性
firewall-cmd --list-all-zones
  • 输出区域 全部启用的特性
firewall-cmd [--zone=<zone>] --list-all

如省略区域将显示默认区域的信息

  • 获取默认区域的网络设置
firewall-cmd --get-default-zone
  • 设置默认区域
firewall-cmd --set-default-zone=<zone>

流入默认区域中配置的接口的新访问请求将被置入新的默认区域。当前活动的连接将不受影响。

  • 获取活动的区域
firewall-cmd --get-active-zones
  • 列举区域中启用的服务
firewall-cmd [ --zone=<zone> ] --list-services
  • 启用应急模式阻断所有网络连接,以防出现紧急状况
firewall-cmd --panic-on
  • 禁用应急模式
firewall-cmd --panic-off
  • 查询应急模式
firewall-cmd --query-panic
  • 启用区域中的一种服务
firewall-cmd [--zone=<zone>] --add-service=<service> [--timeout=<seconds>]

如果未指定区域,将使用默认区域。如果设定了超时时间,服务将只启用特定秒数。如果服务已经活跃,将不会有任何警告信息。

  • 禁用区域中的某种服务
firewall-cmd [--zone=<zone>] --remove-service=<service>
  • 查询区域中是否启用了特定服务
firewall-cmd [--zone=<zone>] --query-service=<service>
  • 启用区域端口和协议组合
firewall-cmd [--zone=<zone>] --add-port=<port>[-<port>]/<protocol> [--timeout=<seconds>]

端口可以是一个单独的端口 或者是一个端口范围 - 。协议可以是 tcp 或 udp。

  • 禁用端口和协议组合
firewall-cmd [--zone=<zone>] --remove-port=<port>[-<port>]/<protocol>
  • 查询区域中是否启用了端口和协议组合
firewall-cmd [--zone=<zone>] --query-port=<port>[-<port>]/<protocol>
  • 列出区域的富语言规则
firewall-cmd --list-rich-rules
  • 添加富语言规则
firewall-cmd --add-rich-rule=<rule>
  • 删除富语言规则
firewall-cmd --remove-rich-rule=<rule>
  • 返回富语言规则是否添加到区域
firewall-cmd --query-rich-rule=<rule>

参考

  1. firewalld
  2. Rich Language Documentation
  3. Fedora Project Wiki - Firewalld
  4. FirewalldRichLanguage