一.Firewalld概述
- firewalld防火墙是Centos7系统默认的防火墙管理工具,取代了之前的iptables防火墙,也是工作在网络层,属于包过滤防火墙
- firewalld和iptables都是用来管理防火墙的工具(属于用户态)来定义防火墙的各种规则功能,内部结构都指向netfilter网络过滤子系统(属于内核态)来实现包过滤防火墙功能
- firewalld提供了支持网络区域所定义的网络连接以及接口安全等级的动态防火墙管理工具。 它支持IPv4、IPv6防火墙设置以及以太网桥(在某些高级服务可能会用到,比如云计算), 并且拥有两种配置模式:运行时配置与永久配置
二.Firewalld和iptables的关系
1.firewalld和iptables的联系
netfilter
- 位于Linux内核中的包过滤功能体系
- 称为Linux防火墙的“内核态”
Firewalld/iptables
- CentOS7默认的管理防火墙规则的工具(Firewalld)
- 称为Linux防火墙的“用户态”
2.firewalld和iptables的区别
**firewalld **iptables配置文件
/etc/firewalld/
(优先加载,保存用户自定义的配置)
/usr/lib/firewalld/
(默认的初始配置)
/etc/sysconfig/iptables
对规则的修改不需要全部刷新策略,不中断现有连接 立即生效,可能中断现有连接
防火墙类型
动态防火墙
(在不同区域设置不同规则,可通过更换区域来更改防护策略)
静态防火墙
(所有规则都是配置在表的链里,只能通过修改规则来更改防护策略)
三.Firewalld区域
1.概念
- firewalld防火墙为了简化管理,将所有网络流量分为多个区域(zone)
- 然后根据数据包的源IP地址或传入的网络接口等条件将流量传入相应区域
- 每个区域都定义了自己打开或者关闭的端口和服务列表
2.九个区域
trusted(信任区域)允许所有的传入流量public(公共区域)****允许与ssh或dhcpv6-client预定义服务匹配的传入流量,其余均拒绝。是新添加网络接口的默认区域external(外部区域)允许与ssh预定义服务匹配的传入流量其余均拒绝home(家庭区域)允许与ssh、mdns、samba-client或dhcpv6-client预定义服务匹配的传入流量,其他均拒绝internal(内部区域)默认值与home区域相同work(工作区域)允许与ssh、dhcpv6-client预定义服务匹配的传入流量,其他均拒绝dmz(隔离区域也称非军事区域)允许与ssh预定义服务匹配的传入流量,其他均拒绝block(限制区域)拒绝所有传入流量drop(丢弃区域)****丢弃所有传入流量,并且不产生包含icmp的错误响应
3.区域介绍
- 最终一个区域的安全程度是取决于管理员在此区域中设置的规则
- 区域如同进入主机的安全门,每个区域都具有不同限制程度的规则,只会允许符合规则的流量传入
- 可以根据网络规模,使用一个或多个区域,但是任何一个 活跃区域 至少需要关联 源地址或接口
- 默认情况下,public区域是默认区域,包含所有接口(网卡)
4.Firewalld数据处理流程
- 要激活某个区域,需要先将区域与 源地址或网卡接口 关联绑定(一个区域可以关联绑定多个源地址或网卡接口,一个源地址或网卡接口只能关联绑定一个区域)
- 先检查传入数据包的源地址
- 若源地址与特定区域绑定,则直接使用该区域的规则过滤处理数据包
- 若源地址与任何一个区域没有绑定,则使用与入站网卡绑定的特定区域的规则过滤处理数据包
- 若也没有特定区域绑定网卡接口,则使用默认区域的规则过滤处理数据包
四.Firewalld-cmd命令行操作
1.查看
查看当前默认区域
firewall-cmd --get-default-zone
查看当前已激活的区域
firewall-cmd --get-active-zones
查看所有可用的区域
firewall-cmd --get-zones
查看指定区域的规则
firewall-cmd --list-all --zone=区域名
查看指定区域允许访问的服务列表
firewall-cmd --list-services --zone=区域名
查看指定区域允许访问的端口列表
firewall-cmd --list-ports --zone=区域名
查看与网卡绑定的区域
firewall-cmd --get-zone-of-interface=网卡名
查看所有icmp类型
firewall-cmd --get-icmptypes
2.增加
给指定区域添加绑定的网卡
firewall-cmd --add-interface=网卡名 --zone=区域名
给指定区域添加源地址
firewall-cmd --add-source=源地址 --zone=区域名
给指定区域添加允许访问的服务
firewall-cmd --add-service=服务名 --zone=区域名
给指定区域添加允许访问的服务列表
firewall-cmd --add-service={服务名1,服务名2,...} --zone=区域名
给指定区域添加允许访问的端口
firewall-cmd --add-port=端口/协议 --zone=区域名
给指定区域添加允许访问的连续的端口列表
firewall-cmd --add-port=端口1-端口2/协议 --zone=区域名
给指定区域添加允许访问的不连续的端口
firewall-cmd --add-port={端口1,端口2,...}/协议 --zone=区域名
给指定区域添加拒绝访问的icmp类型
firewall-cmd --add-icmp-block=icmp类型 --zone=区域名
3.删除
根据服务名删除
firewall-cmd --remove-service=服务名 --zone=区域名
** 根据端口/协议删除**
firewall-cmd --remove-port=端口/协议 --zone=区域名
根据icmp类型删除
firewall-cmd --remove-icmp-block=icmp类型 --zone=区域名
从指定区域里删除绑定的网卡
firewall-cmd --remove-interface=网卡名 --zone=区域名
从指定区域里删除绑定的源地址
firewall-cmd --remove-source=源地址 --zone=区域名
4.修改
修改当前默认区域
firewall-cmd --set-default-zone
修改/添加网卡 绑定给指定区域
firewall-cmd --change-interface=网卡名 --zone=区域名
修改/添加源地址 绑定给指定区域
firewall-cmd --change-source=源地址 --zone=区域名
五.Firewalld防火墙的配置方法
1.运行时配置
- 实时生效,并持续至Firewalld重新启动或重新加载配置
- 不中断现有连接
- 不能修改服务配置
firewall-cmd ....
firewall-cmd --runtime-to-permanent 将之前的运行时配置都转换成永久配置
2.永久配置
- 不立即生效,除非Firewalld重新启动或重新加载配置
- 中断现有连接
- 可以修改服务配置
firewall-cmd .... --permanent
firewall-cmd --reload 或 systemctl restart firewalld
六.编写/etc/firewalld/中的配置文件
Firewalld会优先使用/etc/firewalld/中的配置,如果不存在配置文件,则使用/usr/lib/firewalld/中的配置
- /etc/firewalld/:用户自定义配置文件,需要时可通过从/usr/lib/firewalld/ 中拷贝
- /usr/lib/firewalld/ :默认配置文件,不建议修改,若恢复至默认配置,可直接删除/etc/firewalld/ 中的配置
补充:DNAT和SNAT也可以通过firewall-cmd设置
1.设置SNAT
firewall-cmd --zone=public --direct --passthrough ipv4 -t nat -A POSTROUTING -s
192.168.80.0/24 -j SNAT --to-source 12.0.0.1
2.设置DNAT
firewall-cmd --zone=public --direct --passthrough ipv4 -t nat -A PREROUTING -d 12.0.0.1 -p
tcp --dport 80 -j DNAT --to-destination 192.168.80.11
版权归原作者 哆啦IT梦 所有, 如有侵权,请联系我们删除。