CentOS中firewalld的Zone是什么

Zone是什么?

Zone是firewalld引入的一种安全级别,定义不同的规则,以不同的方式处理数据包。

Zone的种类

CentOS自带的zone有以下几种:

  • drop: 丢弃所有进入的包,而不给出任何响应
  • block: 拒绝所有外部发起的连接,允许内部发起的连接
  • public: 允许指定的进入连接
  • external: 同上,对伪装的进入连接,一般用于路由转发
  • dmz: 允许受限制的进入连接
  • work: 允许受信任的计算机被限制的进入连接,类似 workgroup
  • home: 同上,类似 homegroup
  • internal: 同上,范围针对所有互联网用户
  • trusted: 信任所有连接

来自Firewalld的更详细的解释:

  • 丢弃(drop) 任何接收的网络数据包都被丢弃,没有任何回复。仅能有发送出去的网络连接。
  • 限制(block) 任何接收的网络连接都被 IPv4 的 icmp-host-prohibited 信息和 IPv6 的 icmp6-adm-prohibited 信息所拒绝。
  • 公共(public) 在公共区域内使用,不能相信网络内的其他计算机不会对您的计算机造成危害,只能接收经过选取的连接。
  • 外部(external) 特别是为路由器启用了伪装功能的外部网。您不能信任来自网络的其他计算,不能相信它们不会对您的计算机造成危害,只能接收经过选择的连接。
  • 非军事区(dmz) 用于您的非军事区内的电脑,此区域内可公开访问,可以有限地进入您的内部网络,仅仅接收经过选择的连接。
  • 工作(work) 用于工作区。您可以基本相信网络内的其他电脑不会危害您的电脑。仅仅接收经过选择的连接。
  • 家庭(home) 用于家庭网络。您可以基本信任网络内的其他计算机不会危害您的计算机。仅仅接收经过选择的连接。
  • 内部(internal) 用于内部网络。您可以基本上信任网络内的其他计算机不会威胁您的计算机。仅仅接受经过选择的连接。
  • 信任(trusted) 可接受所有的网络连接。

有时,当CentOS中安装了docker后,zone中会多出一个docker,可以认为是一种自定义的zone。

Zone的字段

zone通过字段来表达过滤规则和处理动作。

firewalld将按照过滤规则字段的优先级,唯一确定使用哪个zone,然后按照该zone指定的动作处理。

因此,每个zone可以修改字段值,更加详细的描述zone的过滤规则和处理动作。

zone的字段的过滤规则:
  • service:表示服务,根据服务确定过滤规则
  • port:端口,使用port可以不通过service而直接对端口进行设置
  • interface:表示网卡,根据进入的网卡确定过滤规则
  • source:源地址,可以是ip地址也可以是ip地址段
zone的字段的处理动作:
  • target:目标,可以理解为默认行为,有四个可选值:defaultACCEPT%%REJECT%%DROP,如果不设置默认为default
    • ACCEPT:通过这个包。
    • %%REJECT%%:拒绝这个包,并返回一个拒绝的回复。
    • DROP:丢弃这个包,不回复任何信息。
    • default:不做任何事情。该区域不再管它,把它踢到“楼上”
  • icmp-block:icmp报文阻塞,可以按照icmp类型进行设置
  • masquerade:ip地址伪装,也就是按照源网卡地址进行NAT转发
  • forward-port:端口转发
  • rule: 自定义规则
zone的过滤规则的优先级
  • source(先按照源地址确定zone)
  • interface(如果无法根据source确定zone,则再按interface确定zone)
  • firewalld.conf(如果上述两种方式都无法确定zone,则最后根据默认设定确定zone)
查看当前起作用的zone
1
sudo firewall-cmd --get-active-zones

参考链接: