防火墙Firewalld深入剖析

举报
tea_year 发表于 2025/08/29 17:37:45 2025/08/29
【摘要】 Firewalld是什么FireWalld属于动态防火墙,是CentOS7系统中用于对netfilter内核模块用户空间管理工具。FireWalld仅仅替代了iptables service部分,其底层还是使用iptables做为防火墙规则管理入口。firewall-cmd命令是firewalld动态防火墙管理器服务的命令行终端,firewalld常用参数记不住也没关系,可以使用firewal...

Firewalld是什么

FireWalld属于动态防火墙,是CentOS7系统中用于对netfilter内核模块用户空间管理工具。FireWalld仅仅替代了iptables service部分,其底层还是使用iptables做为防火墙规则管理入口。

firewall-cmd命令是firewalld动态防火墙管理器服务的命令行终端,firewalld常用参数记不住也没关系,可以使用firewalld帮助命令查看即firewall-cmd --help

防火墙就是firewall-cmd 参数(即下图所示的参数)=值

防火墙就是firewall-cmd --permanent  参数(即下图所示的参数)=值


FireWalldzone概念及作用

区域(zone)rewalld预先准备好的防火墙策略集合,即可策略模板,用于可以根据不同的应用场景进行切换。

例如:你有一台笔记本电脑,每天都要在公司办公室、咖啡厅和家使用。 我们来对场所进行安全性由高到低排序: 家、公司办公室、咖啡厅。

我们希望为这台笔记本电脑指定如下防火墙策略规则: 在家中允许访问所有服务; 在公司办公室内仅允许访问文件 共享服务; 在咖啡厅仅允许上网浏览。 在以往,我们需要频繁地手动设置防火墙策略规则,而现在只需要预设好区域集合, 随时都可以自动切换了,从而极大地提升了防火墙策略的应用效率。


FireWalld中zone分类

FireWalld不同区域之间的差异主要是每个区域对待数据包的默认行为不同 Firewalld默认共9zone ,分别为:

. 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才能让刚写的防火墙策略立即生效。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。