一、Firewalld概述
Firewalld
支持网络区域所定义的网络链接以及接口安全等级的动态防火墙管理工具
支持IPv4、IPv6防火墙设置以及以太网桥
支持服务或应用程序直接添加防火墙规则接口
拥有两种配置模式
- 运行时配置
- 永久配置
二、Firewalld和iptables的关系
netfilter
- 位于Linux内核中的包过滤功能体系
- 称为Linux防火墙的“内核态”
Firewalld/iptables
- CentOS7默认的管理防火墙规则的工具(Firewalld)
- 称为Linux防火墙的“用户态’
Firewalld | iptabes | |
配置文件 | /etc/firewalld/ /usr/lib/firewalld/ | /etc/sysconfig/iptables |
对规则的修改 | 不需要全部刷新策略,不丢失现行链接 | 需要全部刷新策略,丢失现行链接 |
防火墙类型 | 动态防火墙 | 静态防火墙 |
firewalld防火墙预定义了9个区域:
- 1trusted(信任区域):允许所有的传入流量。
- public(公共区域):允许与ssh或dhcpv6-client预定义服务匹配的传入流量,其余均拒绝。是新添加网络接口的默认区域。
- external(外部区域):允许与 ssh 预定义服务匹配的传入流量,其余均拒绝。 默认将通过此区域转发的IPv4传出流量将进行地址伪装,可用于为路由器启用了伪装功能的外部网络。
- home(家庭区域):允许与ssh、mdns、samba-client或dhcpv6-client预定义服务匹配的传入流量,其余均拒绝。
- internal(内部区域):默认值时与home区域相同。
- work(工作区域):允许与 ssh、dhcpv6-client 预定义服务匹配的传入流量,其余均拒绝。
- dmz(隔离区域也称为非军事区域):允许与 ssh 预定义服务匹配的传入流量,其余均拒绝。
- block(限制区域):拒绝所有传入流量。
- drop(丢弃区域):丢弃所有传入流量,并且不产生包含 ICMP的错误响应。
三、Firewalld网络区域
区域介绍
- 区域如同进入主机的安全门,每个区域都具有不同限制程度的规则
- 可以使用一个或多个区域,但是任何一个活跃区域至少需要关联源地址或接口
- 默认情况下,public区域是默认区域,包含所有接口(网卡)
Firewalld数据处理流程
检查数据来源的源地址
- 若源地址关联到特定的区域,则执行该区域所指定的规则
- 若源地址未关联到特定的区域,则使用传入网络接口的区域并执行该区域所指定的规则
- 若网络接口未关联到特定的区域,则使用默认区域并执行该区域所指定的规则
四、Firewalld防火墙的配置方法
命令行工具
查
firewall-cmd --get-default-zone 查看当前默认区域
--get-active-zones 查看当前已激活的区域
--get-zones 查看所有可用的区域
--list-all-zones 查看所有区域的规则
--list-all --zone=区域名 查看指定区域的规则
--list-services --zone=区域名 查看指定区域允许访问的服务列表
--list-ports --zone=区域名 查看指定区域允许访问的端口列表
--get-zone-of-interface=网卡名 查看与网卡绑定的区域
--get-icmptypes 查看所有icmp类型
增
firewall-cmd --add-interface=网卡名 --zone=区域名 给指定区域添加绑定的网卡
--add-source=源地址 --zone=区域名 给指定区域添加源地址
--add-service=服务名 --zone=区域名 给指定区域添加允许访问的服务
--add-service={服务名1,服务名2,...} --zone=区域名 给指定区域添加允许访问的服务列表
--add-port=端口/协议 --zone=区域名 给指定区域添加允许访问的端口
--add-port=端口1-端口2/协议 --zone=区域名 给指定区域添加允许访问的连续的端口列表
--add-port={端口1,端口2,...}/协议 --zone=区域名 给指定区域添加允许访问的不连续的端口
--add-icmp-block=icmp类型 --zone=区域名 给指定区域添加拒绝访问的icmp类型
删
firewall-cmd --remove-service=服务名 --zone=区域名
--remove-port=端口/协议 --zone=区域名
--remove-icmp-block=icmp类型 --zone=区域名
--remove-interface=网卡名 --zone=区域名 从指定区域里删除绑定的网卡
--remove-source=源地址 --zone=区域名 从指定区域里删除绑定的源地址
改
firewall-cmd --set-default-zone 修改当前默认区域
--change-interface=网卡名 --zone=区域名 修改/添加网卡 绑定给指定区域
--change-source=源地址 --zone=区域名 修改/添加源地址 绑定给指定区域
运行时配置
- 实时生效,并持续至Firewalld重新启动或重新加载配置
- 不中断现有连接
- 不能修改服务配置
永久配置
- 不立即生效,除非Firewalld重新启动或重新加载配置
- 中断现有连接
- 可以修改服务配置