一、防火墙概述
是一种提供了支持网络/防火墙区域(zone)定义网络链接以及接口安全等级的动态防火墙管理工具,它自身并不具备防火墙的功能,而是和一样需要通过内核的来实现,也就是说firewalld和 iptables一样,他们的作用都是用于维护规则,而真正使用规则干活的是内核的netfilter,只不过firewalld和iptables的结构以及使用方法不一样罢了。
从逻辑上可分为:主机防火墙和网络防火墙
从物理上可分为:硬件防火墙和软件防火墙
防火墙主要通过与两个机制来管理的。
:数据包过滤机制
:程序管理机制
关于数据包过滤机制()有两个软件:与
在看本篇firewalld文章之前,最好先了解一下iptables,可以看我之前的博文:
【温馨提示】在RHEL7系列中,默认使用firewalld作为防火墙。在RHEL7版本已经默认没有iptables服务了,当然iptables 命令还是可以用的。
二、Firewalld原理架构
1)Firewalld区域管理
通过将网络划分成不同的区域,制定出不同区域之间的访问控制策略来控制不同程序区域间传送的数据流。
【例如】互联网是不可信任的区域,而内部网络是高度信任的区域。网络安全模型可以在安装,
初次启动和首次建立网络连接时选择初始化。该模型描述了主机所连接的整个网络环境的可信级别,并定义了新连接的处理方式。
2)Firewalld域
【温馨提示】firewalld的默认区域是
3) Firewalld配置文件
firewalld默认提供了九个zone配置文件:、、、、 、、、、,都保存在目录下。
三 、Firewalld 和 Iptables 的异同
1)相同点
与 都是 linux 中防火墙的管理程序,但其实其角色主要为对于防火墙策略的管理,真正的防火墙执行者是位于内核中的。
2)不同点
iptables 仅能通过命令行进行配置;而 firewalld 提供了图形接口,类似windows防火墙的操作方式;
iptables 每一个单独更改意味着清除所有旧的规则,并从 /etc/sysconfig/iptables 中读取所有新的规;则;而 firewalld 在有规则变动后,可以仅仅运行规则中的不同之处,即在 firewalld 运行时间内,改变设置时可以不丢失现行链接;
iptables 的配置文件在 /etc/sysconfig/iptables 中;而 firewalld 的配置文件在 /usr/lib/firewalld/ 和 /etc/firewalld/ 中的各种 XML 文件中;
iptables 没有守护进程,并不能算是真正意义上的服务;而 firewalld 有守护进程;
iptables 通过控制端口来控制服务,而 firewalld 则是通过控制协议来控制端口;
【firewalld】默认是拒绝;而【iptables】默认是允许。
【温馨提示】
service说明: 在 目录中,还保存了另外一类配置文件,每个文件对应一项具体的网络服务,如 ssh 服务等。这个目录下的服务配置默认是放通的,不受firewalld-cmd 规则控制,除非把这个目录下的服务配置文件删掉,就恢复了默认了(默认拒绝),当然也可以添加一些服务配置文件。
验证默认拒绝规则
用另外一台机器telnet端口 telnet 192.168.182.149 8888
四、Firewalld实战操作
只有firewalld服务启动了,才能使用相关工具: firewall-config(图形界面), firewall-cmd,这里主要介绍命令行方式的。
1)Firewalld有规则两种状态
运行时():修改规则马上生效,但是临时生效
持久配置(): 修改后需要重载才会生效
【温馨提示】一旦使用了会将配置写入到对应的文件中,配置完成后一定要reload,否则只能待防火墙重启后这些配置才能生效。
2)Firewalld配置文件
以下options是可以组合使用的,具体见或者,里面有详细的说明,此处只列出一些常用的option。
3)增删改查操作
1、【查】看一个区域的配置信息
常用的查看命令
2、【增】加规则
1、语法格式(端口):
【示例】
2、语法格式(源IP):
【示例】
3、【删】除规则
1、语法格式(端口):
【示例】
2、语法格式(源IP):
【示例】
4、【改】正规则
1、修改当前的默认区为work
五、直接规则
【温馨提示】除非将直接规则显式插入到由 fircwa1ld管理的区域, 否则将首先解析直接规则, 然后才会解析任何fircwalld规则,即直接规则优先于firewalld规则。直接规则主要用于使服务和应用程序能够增加规则。传递的参数 与 iptables, ip6tables 以及 ebtables 一致。
1)增加规则
添加直接【链/规则】格式:
【温馨提示】priority值越小,优先级越高
【示例】
【温馨提示】这里就是iptables里面的处理动作();当然也可以接自定义的动作,例如上例所示。
2)删除规则
添加删除【链/规则】格式:
【示例】
六、Firewalld防火墙富规则
富规则一般为了精确控制,用得比较多,所以这里将重点讲解
1)富规则常用的options
2)富规则language语法
规则的几乎每个单一元素都能够以option=value形式来采用附加参数,参考firewalld.richlanguage
格式:
3)一些常用配置规则
1、规则排序
一旦向某个区域(一般是指防火墙)中添加了多个规则, 规则的排序便会在很大程度上影响防火墙的行为。对于所有区域, 区域内规则的基本排序是相同的。
为该区域设置的任何端口转发和伪装规则。
为该区域设置的任何记录规则。
为该区域设置的任何允许规则。
为该区域设置的任何拒绝规则。
2、测试和调试
3、使用富规则进行日志记录
使用富规则记录到syslog的基本语法为:
4、批量加端口
用于记录到审计子系统的基本语法为:
【温馨提示】速率限制的配置方式与syslog记录相同。
使用富规则进行记录的某些示例:
5、示例
针对ssh 链接记录至日志中,每分钟3次
用于调试,规则在300秒后失效,防止规则设定错误导致网络连接断开
添加富规则,只允许172.25.0.10/32访问,并且记录日志,日志级别为notice,日志前缀为"NEW HTTP ",限制每秒最多3个并发 ,要求持久化生效
七、firewalld的NAT和端口转发
1)网络地址转换(NAT)
2)伪装(伪装只能和ipv4一起用,ipv6不行)
伪装是一种形式的网络地址转换(NAT)
3)配置伪装
要使用常规的firewall-cmd命令为区域配置伪装,使用下列语法:
这将伪装满足以下条件的任何包从该区域的源(接口及子网)中定义的客户端发送到防火墙且未寻址到防火墙自身的包,即该区域源的数据包的目标IP不是防火墙自身的IP,都将映射成防火墙的IP。
要在更大程度上控制要进行伪装的客户端,还可以使用富规则。
4)端口转发
使用常规fircwall-cmd命令配置端口转发,可以使用firewalld提供的端口转发语法:
toport=和toaddr 两部分均可选,但需要至少指定这两者之一 。
要在更大程度上控制端口转发规则,可以将以下语法与富规则配合使用来实现端口转发,这也是我们推荐使用的方式
以下示例使用富规则将来自work区域中192.168.182.0/24且传入到端口80/TCP的流星转发到防火墙计算机自身上面的和端口8080/TCP:
其实这里是指传统的目标地址映射,实现外网访问内网资源
八、firewalld自定义区域和服务
1) 自定义的区域
参照文件,在下面新建你需要的区域名以.xml结尾,内容格式参照,等文件即可。
2)自定义服务
自定义服务可以让防火墙配置更为简便,能够直接使用服务名来进行策略配置
参照,在下面新建你需要的服务名以.xml结尾,内容格式参照,文件中的内容即可。
九、Firewalld应急命令(一键断网)
领取专属 10元无门槛券
私享最新 技术干货