文章目录
一、Firewalld 概述
-
支持网络区域所定义的网络链接以及接口安全等级的动态防火墙管理工具
-
支持IPV4、IPV6防火墙设置以及以太网桥
-
支持服务或应用程序直接添加防火墙规则接口
-
拥有两种配置模式
1、运行时配置
2、永久配置
二、Firewalld和iptables的关系
- netfilter
- 位于Linux内核中的包过滤功能体系
- 称为Linux防火墙的“内核态”
- Firewalld/iptables
Firewalld | iptables | |
---|---|---|
配置文件 | /usr/lib/firewalld/、/etc/firewalld/ | /etc/sysconfig/iptables |
对规则的修改 | 不需要全部刷新策略,不丢失现行连接 | 需要全部刷新策略,丢失连接 |
防火墙类型 | 动态防火墙 | 静态防火墙 |
三、Firewalld 网络区域
3.1 区域介绍
- 区域如同进入主机的安全门,每个区域都具有不同限制程度的规则
- 可以使用一个或多个区域,但是任何一个活跃区域至少需要关联源地址或接口
- 默认情况下,public区域是默认区域,包含所有接口(网卡)
3.2 Firewalld 数据处理流程
- 检查数据来源的源地址
- 若源地址关联到特定的区域,则执行该区域所有指定的规则
- 若源地址未关联到特定的区域,则使用传入网络接口的区域并执行该区域所指定的规则
- 若若网络接口未关联到特定的区域,则使用默认区域并执行该区域所指定的规则
四、Firewalld 防火墙的配置方法
- 运行时配置
- 实时生效,并持续至Firewalld重新启动或重新加载配置
- 不中断现有连接
- 不能修改服务配置
- 永久配置
- 不立即生效,除非Firewalld重新启动或重新加载配置
- 中断现有连接
- 可以修改服务配置
五、Firewall-config 图形工具
- /etc/firewalld/中的配置文件
- Firewalld会优先使用/etc/firewalld中的配置,如果不存在配置文件,则使用/usr/lib/firewalld中的配置
- /etc/firewalld/:用户自定义配置文件,需要时可通过从/usr/lib/firewalld/中拷贝
- /usr/lib/firewalld:默认配置文件,不建议修改,若恢复至默认配置,可直接删除/etc//firewalld/中的配置
下面就带大家详细了解Firewalld图形工具的详细配置:
firewalld工具的“服务”、“服务”选项卡中有大量的子选项:
- “区域”选项卡
- “服务”子选项卡
- “端口”子选项卡
- “协议”子选项卡
- “源端口”子选项卡
- “伪装”子选项卡
- 端口转发子选项卡
- ICMP过滤器“子选项卡
- “服务”选项卡(注意!只有在永久配置模式下服务才可以创建、编辑以及删除)
- “模块”子选项卡
- “目标地址”子选项卡
六、Firewall-config 常用命令
1、启动firewalld
[root@localhost ~]# systemctl start firewalld
2、设置firewalld为开机自启动
[root@localhost ~]# systemctl enable firewalld
3、查看firewalld运行状态(2种)
[root@localhost ~]# systemctl status firewalld
[root@localhost ~]# firewall-cmd --state
4、停止firewalld
[root@localhost ~]# systemctl stop firewalld
5、设置firewall开机不自启动
[root@localhost ~]# systemctl disable firewalld
6、显示预定义区域
[root@localhost ~]# firewall-cmd --get-zones
7、显示预定义的服务
[root@localhost ~]# firewall-cmd --get-service
8、显示预定义的ICMP类型
[root@localhost ~]# firewall-cmd --get-icmptypes
9、显示网络连接或接口的默认区域
[root@localhost ~]# firewall-cmd --get-default-zone
10、设置网络连接或接口的默认区域(以work区域举例,下同)
[root@localhost ~]# firewall-cmd --set-default-zone=work
11、显示已激活的所有区域
[root@localhost ~]# firewall-cmd --get-active-zones
12、显示指定接口绑定的区域
[root@localhost ~]# firewall-cmd --get-zone-of-interface=ens33
13、为指定接口绑定区域
[root@localhost ~]# firewall-cmd --zone=work --add-interface=ens33
14、为指定的区域更改绑定的网络接口
[root@localhost ~]# firewall-cmd --zone=work --change-interface=ens33
15、为指定的区域删除绑定的网络接口
[root@localhost ~]# firewall-cmd --zone=work --remove-interface=ens33
16、显示所有指定区域的所有规则
[root@localhost ~]# firewall-cmd --zone=work --list-all
ps:如果不加--zone=work则仅显示默认区域:
[root@localhost ~]# firewall-cmd --list-all
17、显示指定区域内允许访问的所有服务
[root@localhost ~]# firewall-cmd --zone=work --list-service
18、为指定区域设置允许访问的某项服务
[root@localhost ~]# firewall-cmd --zone=work --add-service=http
19、删除指定区域已设置的允许访问的某项服务
[root@localhost ~]# firewall-cmd --zone=work --remove-service=http
20、显示指定区域内允许访问的所有端口号
[root@localhost ~]# firewall-cmd --zone=work --list-ports
21、为指定区域设置允许访问的某个/某段端口号(包括协议名)
[root@localhost ~]# firewall-cmd --zone=work --add-port=80/tcp
22、删除指定区域已设置的允许访问的端口号(包括协议名)
[root@localhost ~]# firewall-cmd --zone=work --remove-port=80/tcp
23、显示指定区域内拒绝访问的所有 ICMP 类型
[root@localhost ~]# firewall-cmd --zone=work --list-icmp-blocks
24、为指定区域设置拒绝访问的某项 ICMP 类型(请求类型)
[root@localhost ~]# firewall-cmd --zone=work --add-icmp-block=echo-request
25、删除指定区域已设置的拒绝访问的某项 ICMP 类
[root@localhost ~]# firewall-cmd --zone=work --remove-port=69/tcp
ps:如果忽略--zone=work,则表示对默认区域操作
- firewall-cmd 命令工具与配置模式相关的选项有三个:
- reload:重新加载防火墙规则并保持状态信息,即将永久配置应用为运行时配置。
- –permanent:带有此选项的命令用于设置永久性规则,这些规则只有在重新启动,firewalld 或重新加载防火墙规则时才会生效;若不带有此选项,表示用于设置运行时规则。
- –runtime-to-permanent:将当前的运行时配置写入规则配置文件中,使之成为永久性
例:
[root@localhost ~]# firewall-cmd --permanent --zone=work --add-port=443/tcp
七、Firewalld 防火墙配置实例
需求:
- 禁止主机Ping服务器
- 只允许192.168.50.132主机访问SSH服务
- 允许所有主机访问Apache服务
分析:
首先,想实现该需求我们要分别对源IP为192.168.50.132的主机及其他的各类主机建立防火墙规则,所以需要设置两个区域,我这里为work与public区域,work区域中的规则针对客户机,而public区域中的规则针对所有其他主机,有了配置思路后下面进行试验:
实验步骤:
1、将两台虚拟机分别重命名为“server“(服务器)与“client”(PC)
可以ping通
在ICMP过滤器中勾选“echo-reply”与“echo-request”两项
可以连接
7、在服务器上安装httpd并开启服务,在“服务”中将“http”服务勾选上
成功!
9、针对客户机的work区域已经设置完成,下面设置public区域
在“服务中将”ssh“取消勾选,将http进行勾选
在ICMP过滤器中勾选“echo-reply”与“echo-request”两项
10、设置完成够我们才测试一下,将客户机更换一个临时IP
[root@client ~]# ifconfig ens33 192.168.50.136
均失败,实验成功!