防火墙Firewalld深入剖析
Firewalld是什么
FireWalld属于动态防火墙,是CentOS7系统中用于对netfilter内核模块用户空间管理工具。FireWalld仅仅替代了iptables service部分,其底层还是使用iptables做为防火墙规则管理入口。
firewall-cmd命令是firewalld动态防火墙管理器服务的命令行终端,firewalld常用参数记不住也没关系,可以使用firewalld帮助命令查看即firewall-cmd --help
防火墙就是firewall-cmd 参数(即下图所示的参数)=值
或
防火墙就是firewall-cmd --permanent 参数(即下图所示的参数)=值
FireWalld中zone概念及作用
区域(zone)是firewalld预先准备好的防火墙策略集合,即可策略模板,用于可以根据不同的应用场景进行切换。
例如:你有一台笔记本电脑,每天都要在公司办公室、咖啡厅和家使用。 我们来对场所进行安全性由高到低排序: 家、公司办公室、咖啡厅。
我们希望为这台笔记本电脑指定如下防火墙策略规则: 在家中允许访问所有服务; 在公司办公室内仅允许访问文件 共享服务; 在咖啡厅仅允许上网浏览。 在以往,我们需要频繁地手动设置防火墙策略规则,而现在只需要预设好区域集合, 随时都可以自动切换了,从而极大地提升了防火墙策略的应用效率。
FireWalld中zone分类
FireWalld不同区域之间的差异主要是每个区域对待数据包的默认行为不同 Firewalld默认共9个zone ,分别为:
. block (拒绝)
. dmz (非军事化) . drop (丢弃)
. external (外部) . home (家庭) . internal (内部)
. public(公开) Firewalld默认区域 .
trusted (信任)
. work (工作区)
FireWalld文件
Firewalld文件分为两大类:
/usr/lib/firewalld/services:firewalld服务默认在此目录下定义了70多种服务,可以直接使用。
/usr/lib/firewalld/zones:区域配置文件
/etc/firewalld/zones:默认区域配置文件,配置文件中指定了编写完成的规则
firewalld文件作用:人性化管理规则;通过服务组织端口分组更加高效,如果一个服务使用若干网络端口,则服务的 配置文件就相当于提供了到这些端口的规则管理的批量操作快捷方式。
Firewalld语法
命令语法:
1 firewall-cmd [--zone=zone] 动作 [--permanent] |
如果不指定--zone选项,则为当前所在的默认区域, --permanent选项为是否将改动写入到区域配置文件中
Firewall的状态
[root@localhost ~]# firewall-cmd --state running #查看状态 [root@localhost ~]# firewall-cmd --reload success #重新加载防火墙 ,中断用户连接 ,临时配置清除掉 ,加载配置文件中的永久配置 [root@localhost ~]# firewall-cmd --complete-reload success #重新加载防火墙 ,不中断用户的连接( 防火墙出严重故障时使用 ) [root@localhost ~]# firewall-cmd --panic-on #紧急模式 ,强制关闭所有网络连接 #开启,服务 [root@localhost ~]# firewall-cmd --panic-off
FireWalld中动作
动作中查看操作
[root@localhost ~]# firewall-cmd xxx --get-icmptypes --get-zones #列举的zones --get-default-zone --get-active-zones --get-services --list-services ##查看支持的所有ICMP类型 ##查看所有区域 ##查看当前的默认区域 ##查看当前正在使用的区域 ##查看当前区域支持的服务 ##查看当前区域开放的服务列表 --list-services --zone=home ##查看指定域开放的服务列表 --list-all ##查看默认区域内的所有配置 ,类似与iptables -L -n --list-all-zones ##查看所有区域所有配置 --list-ports #临时 --list-interface firewall-cmd --list-ports --permanent firewall-cmd --list-services --permanent
更改区域操作
[root@localhost ~]# firewall-cmd xxx 2 --set-default-zone=work ##更改默认的区域
新建规则
新建--add
[root@localhost ~]# firewall-cmd xxx --add-interface=eth0 ##将网络接口添加到默认的区域内 --add-port=12222/tcp --permanent ##添加端口到区域开放列表中 --add-port=5000-10000/tcp --permanent ##将端口范围添加到开放列表中 ; --add-service=ftp --permanent ##添加服务到区域开放列表中(注意服务的名称需要与此区域支持的服务列表 中的名称一致) --add-source=192.168.1.1 ##添加源地址的流量到指定区域 --add-masquerade ##开启SNAT(源地址转换)
删除规则
删除--remove
[root@localhost ~]# firewall-cmd xxx --remove-service=http ##在home区域内将http服务删除在开放列表中删除 --remove-interface=eth0 ##将网络接口在默认的区域内删除 --remove-source=192.168.1.1 ##删除源地址的流量到指定区域
改变规则
改变change
[root@localhost ~]# firewall-cmd xxx --change-interface=eth1 ##改变指定的接口到其他区域
查询规则
查询query
[root@localhost ~]# firewall-cmd xxx 2 --query-masquerade ##查询SNAT的状态 --query-interface=eth0 ##确定该网卡接口是否存在于此区域 yes #no
总结
firewalld服务对防火墙策略的配置默认是当前生效模式(RunTime),配置信息会随着计算机重启而失效,如想让配置策略一直存在就要使用永久生效模式(Permanent),在防火墙策略中加入--permanent参数就可以代表针对于永久生效模式的命令了。但即使添加了这个参数,也需要重启后才能生效,如果想不重启又立即生效需要在防火墙策略中添加--reload参数,覆盖当前的,不过要注意,是在写完防火墙规则后,在后面追加firewalld-cmd --reload才能让刚写的防火墙策略立即生效。
- 点赞
- 收藏
- 关注作者
评论(0)