firewall防火墙没有了(Firewalld的zone你真的了解吗)
firewall防火墙没有了(Firewalld的zone你真的了解吗)[root@freeops ~]# firewall-cmd --new-zone=test --permanent success [root@freeops ~]# firewall-cmd --new-zone-from-file=/etc/firewalld/zones/public.xml --name=test --permanent success 删除区域firewall-cmd工具支持用户自定义zone的同时也支持用户删除系统已存在的区域,删除区域时需要使用--delete-zone参数。删除区域,具体如下所示:例1:查看网络接口默认区域信息 [root@freeops ~]# firewall-cmd --get-default-zone public 例2:查看指定网络接口绑定的区域信息 [root@freeops ~]# firewall-cmd --get-z
前言在基于Fedora18和RHEL7及以上的Linux发行版系统中,firewalld服务已经成功取代iptables,成为默认防火墙操作工具。在firewalld中,引入了一个全新概念-区域(zone)。我们可以将区域理解为可以直接使用防火墙默认存在的策略集合(模板),生产者可以根据生产环境的需求选择合适的策略集合。本文将基于CentOS7.x系统聊聊firewalld中zone选项的那些事。
zone配置文件zone是firewalld全新引用的一种默认策略集合, 默认区域的配置文件将会存储在/usr/lib/firewalld/zones中。同时系统中维护着另外一个目录用于存放有效使用的区域配置文件,即/etc/firewalld/zones。在firewalld中,/etc/firewalld/zones具有较高优先级,firewalld在使用规则时,首先查询/etc/firewalld/zones,若不存在则继续查询/usr/lib/firewalld/zones。firewalld在使用zone配置文件时会从/usr/lib/firewalld/zones中复制相应配置文件到/etc/firewalld/zones内。zone配置文件存储对比:
[root@freeops ~]# ls -al /usr/lib/firewalld/zones/ # 配置文件默认存储位置
total 36
-rw-r--r--. 1 root root 299 Aug 5 2017 block.xml
-rw-r--r--. 1 root root 293 Aug 5 2017 dmz.xml
-rw-r--r--. 1 root root 291 Aug 5 2017 drop.xml
-rw-r--r--. 1 root root 304 Aug 5 2017 external.xml
-rw-r--r--. 1 root root 369 Aug 5 2017 home.xml
-rw-r--r--. 1 root root 384 Aug 5 2017 internal.xml
-rw-r--r--. 1 root root 315 Aug 5 2017 public.xml
-rw-r--r--. 1 root root 162 Aug 5 2017 trusted.xml
-rw-r--r--. 1 root root 311 Aug 5 2017 work.xml
[root@freeops ~]#
[root@freeops ~]# ls -al /etc/firewalld/zones/ # 配置文件存储位置
total 8
-rw-r--r--. 1 root root 617 Jul 22 16:46 public.xml
[root@freeops ~]#
zone默认区域
firewalld中默认存在9类区域,不同的区域具有不同的内置策略。关于firewalld的默认区域,内置策略分析如下:
区域默认策略对比
zone参数详解firewalld可以通过firewall-cmd工具实现对zone的管理工作。firewall-cmd中zone提供了丰富的命令参数,通过zone的不同参数调整zone配置文件后实现zone的基础功能。命令行中使用firewall-cmd工具可以查询zone功能选项相关参数。Firewalld服务的zone相关参数解析如下:
Zone Options
--get-default-zone # 打印网卡接口的默认区域
Print default zone for connections and interfaces
--set-default-zone=<zone> # 设置网卡接口的默认区域
Set default zone
--get-active-zones Print currently active zones # 打印当前存活的区域
--get-zones Print predefined zones [P] # 打印预定义区域
--get-zone-of-interface=<interface> # 打印网络接口绑定的区域名称
Print name of the zone the interface is bound to [P]
--get-zone-of-source=<source>[/<mask>]|<MAC>|ipset:<ipset> # 打印源所绑定的区域名称
Print name of the zone the source is bound to [P]
--list-all-zones List everything added for or enabled in all zones [P] # 列举区域中已添加的内容
--new-zone=<zone> Add a new zone [P only] # 添加区域
--new-zone-from-file=<filename> [--name=<zone>] # 从文件中添加具有可选名称的区域
Add a new zone from file with optional name [P only]
--delete-zone=<zone> Delete an existing zone [P only] # 删除已存在的区域
--load-zone-defaults=<zone> # 加载区域默认配置
Load zone default settings [P only] [Z]
--zone=<zone> Use this zone to set or query options else default zone # 使用区域设置或查询
--get-target Get the zone target [P only] [Z] # 查询区域所对应动作
--set-target=<target> # 设置区域所对应动作
Set the zone target [P only] [Z]
--info-zone=<zone> Print information about a zone # 打印区域信息
--path-zone=<zone> Print file path of a zone [P only] # 打印区域配置文件路径
查询系统区域信息
firewalld预定义了9类区域,在系统中可以使用firewall-cmd工具的--get-zones可以查看当前系统内已存在的zone信息。查看当前系统zone信息。具体如下所示:
[root@freeops ~]# firewall-cmd --get-zones
block dmz drop external home internal public trusted work # 系统所有可以使用的区域
默认区域管理
firewalld定义的区域需要和网卡接口绑定才能正式使用,在CentOS中网络接口默认的区域均为public。firewall-cmd工具提供查询网络接口的查询、修改等功能。使用firewall-cmd工具管理网络接口默认区域,具体如下所示:
例1:查看网络接口默认区域信息
[root@freeops ~]# firewall-cmd --get-default-zone
public
例2:查看指定网络接口绑定的区域信息
[root@freeops ~]# firewall-cmd --get-zone-of-interface=ens33 # 查询ens33网络接口的绑定的区域
public
[root@freeops ~]# firewall-cmd --get-zone-of-interface=ens36 # 查询ens36网络接口的绑定的区域
public
例3:修改当前接口的默认区域信息
[root@freeops ~]# firewall-cmd --set-default-zone=trusted
success
[root@freeops ~]# firewall-cmd --get-default-zone
trusted
例4:为指定网络接口绑定区域
[root@freeops ~]# firewall-cmd --zone=public --add-interface=ens33 --permanent
success
例5:为指定网络接口修改区域
[root@freeops ~]# firewall-cmd --zone=trusted --change-interface=ens36 --permanent
success
例6:为指定网络接口删除区域
[root@freeops ~]# firewall-cmd --zone=public --remove-interface=ens33 --permanent
success
添加区域
firewalld预定义了9类区域,已可以满足基础需求,但firewall-cmd工具仍支持用户自定义zone。在系统中可以使用firewall-cmd工具的--new-zone或--new-zone-from-file参数可以自定义区域,添加区域的命令执行成功后将会在/etc/firewalld/zones中生成。添加区域,具体如下所示:
[root@freeops ~]# firewall-cmd --new-zone=test --permanent
success
[root@freeops ~]# firewall-cmd --new-zone-from-file=/etc/firewalld/zones/public.xml --name=test --permanent
success
删除区域
firewall-cmd工具支持用户自定义zone的同时也支持用户删除系统已存在的区域,删除区域时需要使用--delete-zone参数。删除区域,具体如下所示:
[root@freeops ~]# firewall-cmd --delete-zone=test --permanent
success
区域查询
firewall-cmd工具提供区域查询相关功能,用户可以根据需求选择不同的参数查询区域信息,常用的参数有--info-zone、--list-all-zones等。firewall-cmd查询区域信息,具体如下所示:
例1:查询区域配置文件路径
[root@freeops ~]# firewall-cmd --path-zone=public --permanent
/etc/firewalld/zones/public.xml
例2: 查询指定区域配置信息
[root@freeops ~]# firewall-cmd --info-zone=public
public (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources:
services: ssh dhcpv6-client
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
rule source ipset="blockIP" log prefix="blockIP" level="info" drop
总结
我们可以将区域理解为可以直接使用防火墙默认存在的策略集合(模板),生产者可以根据生产环境的需求选择合适的策略集合。通过本文将基本了解CentOS7.x系统firewalld中zone选项的那些事。