Firewalld 防火墙
一、防火墙基本概述
在CentOS7系统中集成了多款防火墙管理工具,默认启用的是firewalld(动态防火墙管理器)防火墙管理工具,Firewalld支持CLI(命令行)以及GUI(图形)的两种管理方式。
对于接触Linux较早的人员对Iptables比较熟悉,但由于Iptables的规则比较的麻烦,并且对网络有一定要求,所以学习成本较高。但firewalld的学习对网络并没有那么高的要求,相对iptables来说要简单不少,所以建议刚接触CentOS7系统的人员直接学习Firewalld。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-06WCiG38-1623252887291)(img/image-20201216222150114.png)]
需要注意的是:如果开启防火墙工具,并且没有配置任何允许的规则,那么从外部访问防火墙设备默认会被阻止,但是如果直接从防火墙内部往外部流出的流量默认会被允许。
firewalld 只能做和IP/Port相关的限制,web相关的限制无法实现。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QN6mjCz3-1623252887297)(img/image-20201216222313290.png)]
二、防火墙区域管理
那么相较于传统的Iptables防火墙,firewalld支持动态更新,并加入了区域zone的概念
简单来说,区域就是firewalld预先准备了几套防火墙策略集合(策略模板),用户可以根据不同的场景选择不同的策略模板,从而实现防火墙策略之间的快速切换
# Firewalld中的区域与接口。
一个网卡仅能绑定一个区域 如:eth0 ————>A区域
但一个区域可以绑定多个网卡 如:A区域---->eth0 ,eth1 ,eth2
还可以根据来源的地址设定不同的规则。比如:所有人能访问80端口,但只有公司的IP才允许访问22端口。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FFXsCx37-1623252887304)(img/image-20201216222456047.png)]
区域选项 | 默认规则策略 |
---|---|
trusted | 允许所有的数据包流入流出 |
home | 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、mdns、ipp-client、amba-client与dhcpv6-client服务相关,则允许流量 |
internal | 等同于home区域 |
work | 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、ipp-client、dhcpv6-client服务相关,则允许流量 |
public | 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、dhcpv6-client服务相关,则允许流量 |
external | 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量 |
dmz | 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量 |
block | 拒绝流入的流量,除非与流出的流量相关 |
drop | 拒绝流入的流量,除非与流出的流量相关 |
#必须记住的三个区域,其他的可以不记
trusted 白名单
public 默认区域
drop 黑名单
三、防火墙基本指令参数
参数 | 作用 |
---|---|
zone区域相关指令 | |
–get-default-zone | 获取默认的区域名称 |
–set-default-zone=<区域名称> | 设置默认的区域,使其永久生效 |
–get-active-zones | 显示当前正在使用的区域与网卡名称 |
–get-zones | 显示总共可用的区域 |
–new-zone= | 新增区域 |
services服务相关命令 | |
–get-services | 列出服务列表中所有可管理的服务 |
–add-service= | 设置默认区域允许该填加服务的流量 |
–remove-service= | 设置默认区域不允许该删除服务的流量 |
Port端口相关指令 | |
–add-port=<端口号/协议> | 设置默认区域允许该填加端口的流量 |
–remove-port=<端口号/协议> | 置默认区域不允许该删除端口的流量 |
Interface网站相关指令 | |
–add-interface=<网卡名称> | 将源自该网卡的所有流量都导向某个指定区域 |
–change-interface=<网卡名称> | 将某个网卡与区域进行关联 |
source相关指令 | |
–add-source=<IP/子网掩码> | 一般配置在默认区域的富规则中或者黑白名单中 |
–remove-source=<IP/子网掩码> | |
其他相关指令 | |
–list-all | 显示当前区域的网卡配置参数、资源、端口以及服务等信息 |
–reload | 让“永久生效”的配置规则立即生效,并覆盖当前的配置规则 |
区域相关命令
--get-default-zone获取默认的区域名称
--set-default-zone=<区域名称>设置默认的区域,使其永久生效
--get-active-zones显示当前正在使用的区域与网卡名称
--get-zones显示总共可用的区域
--new-zone=新增区域
# 查看默认区域
[root@web01 ~]# firewall-cmd --get-default-zone
public
# 查看所有区域
[root@web01 ~]# firewall-cmd --get-zones
block dmz drop external home internal public trusted work
# 查看默认区域与网卡名称
[root@web01 ~]# firewall-cmd --get-active-zones
# 设置默认区域
[root@web01 ~]# firewall-cmd --set-default-zone=trusted
[root@web01 ~]# firewall-cmd --get-default-zone
trusted
# 添加新的区域
[root@web01 ~]# cd /usr/lib/firewalld/zones/
[root@web01 zones]# cp public.xml newzone.xml
[root@web01 zones]# firewall-cmd --reload
[root@web01 zones]# firewall-cmd --get-zones
block dmz drop external home internal newzone public test trusted work
服务相关命令
--get-services 列出服务列表中所有可管理的服务
--add-service= 设置默认区域允许该填加服务的流量
--remove-service= 设置默认区域不允许该删除服务的流量
# 查看所有可管理的服务
[root@web01 ~]# firewall-cmd --get-services
# 设置默认区域允许填加服务的流量
[root@web01 ~]# firewall-cmd --add-service=http
success
[root@web01 ~]# firewall-cmd --list-all
services: http
# 删除默认区域服务的流量