在CentOS 7中,新引入了firewalld服务(防火墙),取代了CentOS 6之前的iptables服务(防火墙)。
firewall还引入了防火墙的“zone”概念,即事先准备好的若干套防火墙策略模板,一般默认使用公共(public)区域。
首先,将所有网络流量分为多个区域(zone),然后,根据数据包的源IP地址或传入的网络接口等条件将流量传入相应区域,
同时,每个区域都定义了自己打开或者关闭的端口和服务列表。
所有区域(zone)如下,一般默认使用公共区域(public),由 firewalld 提供的区域按照从不信任到信任的顺序排序。
[root@centos7 ~]# firewall-cmd --get-zones
block dmz drop external home internal public trusted work
1、丢弃(drop):如果使用丢弃区域,任何进入的数据包将被丢弃。这个类似与我们之前使用 iptables -j drop。使用丢弃规则意味着将不存在响应。
2、阻塞(block):阻塞区域会拒绝进入的网络连接,返回 icmp-host-prohibited,只有服务器已经建立的连接会被通过即只允许由该系统初始化的网络连接。
3、公共(public):只接受那些被选中的连接,默认只允许 ssh 和 dhcpv6-client。这个 zone 是缺省 zone。
4、外部(external):这个区域相当于路由器的启用伪装(masquerading)选项。只有指定的连接会被接受,即 ssh,而其它的连接将被丢弃或者不被接受。
5、隔离(dmz):如果想要只允许给部分服务能被外部访问,可以在 dmz 区域中定义。它也拥有只通过被选中连接的特性,即 ssh。
6、工作(work):在这个区域,我们只能定义内部网络。比如私有网络通信才被允许,只允许 ssh,ipp-client 和 dhcpv6-client。
7、家庭(home):这个区域专门用于家庭环境。它同样只允许被选中的连接,即 ssh,ipp-client,mdns,samba-client 和 dhcpv6-client。
8、内部(internal):这个区域和工作区域(work)类似,只有通过被选中的连接,和 home 区域一样。
9、信任(trusted):信任区域允许所有网络通信通过。记住:因为 trusted 是最被信任的,即使没有设置任何的服务,那么也是被允许的,因为 trusted 是允许所有连接的。
firewalld数据处理流程
firewalld对于进入系统的数据包,会根据数据包的源IP地址或传入的网络接口等条件,将数据流量转入相应区域的防火墙规则。对于进入系统的数据包,首先检查的就是其源地址。
firewalld检查数据包的源地址的规则
1.若源地址关联到特定的区域(即源地址或接口绑定的区域有冲突),则执行该区域所制定的规则。
2.若源地址未关联到特定的区域(即源地址或接口绑定的区域没有冲突),则使用传入网络接口的区域并执行该区域所制定的规则。
3.若网络接口也未关联到特定的区域(即源地址或接口都没有绑定特定的某个区域),则使用默认区域并执行该区域所制定的规则。
过滤规则
source:根据源地址过滤
interface:根据网卡过滤
service:根据服务名过滤
port:根据端口过滤
icmp-block:icmp 报文过滤,按照 icmp 类型配置
masquerade:ip 地址伪装
forward-port:端口转发
rule:自定义规则
其中,过滤规则的优先级遵循如下顺序
source
interface
firewalld.conf