firewalld防火墙
firewalld防火墙
叁月 .firewalld防火墙的详细讲解(实用率99%)
1.防火墙概述
Firewalld是一种提供了支持网络/防火墙区域(zone)定义网络链接以及接口安全等级的动态防火墙管理工具,它自身并不具备防火墙的功能,而是和iptables一样需要通过内核的netfilter来实现.
他们的作用是维护规则,而真正使用规则干活的是内核netfilter,firewalld和iptables的结构以及使用方法会有点不一样.
从逻辑上可分为:主机防火墙和网络防火墙 从物理上可分为:硬件防火墙和软件防火墙
firewalld和iptables就属于主机层面的防火墙
主机防火墙主要通过netfilter和TCP Wrappers两个机制来管理的.
Netfilter:数据包过滤机制TCP Wrappers:程序管理机制
关于数据包过滤机制(Netfilter)两个软件:firewalld与iptables
注意:在RHEL7系列中,默认使用firewalld作为防火墙.在7系列之前使用的是iptables作为默认防火墙.
2.Firewalld原理架构
2.1 Firewalld区域管理
通过将网络划分成不同的区域,制定出不同区域之间的访问控制策略来控制不同程序区域间传送的数据流.
【例如】互联网是不可信任的区域,而内部网络是高度信任的区域.网络安全模型可以在安装, 初次启动和首次建立网络连接时选择初始化.该模型描述了主机所连接的整个网络环境的可信级别,并定义了新连接的处理方式.
2.2 Firewalld域
| 网络区名称 | 默认配置 |
|---|---|
| trusted | 可接受所有的网络连接 |
| home | 用于家庭网络 |
| internal | 用于内部网络,仅接受ssh,mdns,gp-client,samba-client,dhcpv6-client连接 |
| work | 用于工作区,仅接受sshjpp-client,dhcpv6-client服务连接 |
| public | 用于工作区, 仅接受ssh,ipp-client,dhcpv6-client服务连接,在公共区域内使用,仅接受ssh或dhcpv6-client服务连接,是firewalld的默认区域 |
| dmz | 仅接受ssh服务的连接 |
【温馨提示】firewalld的默认区域是 public
2.3 Firewalld配置文件
firewalld默认提供了九个zone配置文件:block.xml/dmz.xml/drop.xml/external.xml/home.xml/internal.xml/public.xml/trusted.xml/work.xml,都保存在 /usr/lib/firewalld/zones/目录下.
3.Firewalld 和 Iptables 的异同
3.1 相同点
firewalld与 iptables 都是 linux 中防火墙的管理程序,但其实其角色主要为对于防火墙策略的管理,真正的防火墙执行者是位于内核中的 netfilter.
3.3 不同点
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说明:在 /usr/lib/firewalld/services/ 目录中,还保存了另外一类配置文件,每个文件对应一项具体的网络服务,如 ssh 服务等.这个目录下的服务配置默认是放通的,不受firewalld-cmd 规则控制,除非把这个目录下的服务配置文件删掉,就恢复了默认了(默认拒绝),当然也可以添加一些服务配置文件.
4.Firewalld常用操作
firewall-config(需要有图形化界面的才能使用), firewall-cmd是命令行工具,实际生产环境主要使用firewall-cmd来操作
4.1 Firewalld规则的两种状态
运行时(runtime):修改规则马上生效,但是临时生效,默认是运行时状态
持久配置(permanent):修改后需要重载才会生效,有–permanent参数
firewall-cmd --permanent [RULE] |
4.2 Firewalld常见选项
可以通过 man firewall-cmd或者 firewall-cmd –help查看帮助,firewalld的选项很多,下面列出一些比较常用的
firewall-cmd --help |
4.3 常用的增删改查操作(重点)
(1)查看规则
查看当前区域的配置信息详解
[root@localhost ]# firewall-cmd --list-all |
常用的查看信息
查询默认区域配置信息 |
(2)添加规则
1.开放特定端口
开放3306端口 |
2.放通某个服务
放通nfs服务的所有端口 |
3.放通某个网段访问
firewall-cmd --add-source=10.10.10.0/24 --zone=public |
(3)删除规则
删除开放的3306端口 |
5.Firewalld防火墙富规则(重点)
富规则是为了更细粒度的管控,在生产环境用的比较多,重点掌握
5.1 富规则常用的选项
firewall-cmd |
5.2 富规则语法
规则的几乎每个单一元素都能够以option=value形式来采用附加参数
rule |
格式:
rule [family="ipv4|ipv6"] |
5.3 常用的富规则配置(重点)
(1)对特定IP访问特定端口
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="10.10.10.110/32" port port="1521" protocol="tcp" accept" |
(2)批量加端口,允许某个网段访问多个端口
firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=10.10.10.0/24 port port=8080-8090 protocol=tcp accept' |
(3)开通某个IP访问某个服务
firewall-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 service name=nfs source address="10.10.10.101/32" accept' |
(4)拒绝某个IP访问所有端口
firewall-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 source address=10.10.10.110/32 reject' |
(5)允许某个IP访问所有端口
firewall-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 source address=10.10.10.110/32 reject' |

