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:目标,可以理解为默认行为,有四个可选值:
default
、ACCEPT
、%%REJECT%%
、DROP
,如果不设置默认为defaultACCEPT
:通过这个包。%%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 |
参考链接: