防⽕墙是保护机器不受来⾃外部的、不需要的⽹络数据的⼀种⽅式。它允许⽤⼾通过定义⼀组防
⽕墙规则来控制主机上的⼊站⽹络流量。这些规则⽤于对进⼊的流量进⾏排序,并可以阻断或允
许流量。
firewalld 是⼀个防⽕墙服务守护进程,其提供⼀个带有 D-Bus 接⼝的、动态可定制的、
基于主机的防⽕墙。如果是动态的,它可在每次修改规则时启⽤、修改和删除规则,⽽不需要在
每次修改规则时重启防⽕墙守护进程。
firewalld :使⽤ firewalld 实⽤程序进⾏简单防⽕墙⽤例。此⼯具易于使⽤,并
涵盖了这些场景的典型⽤例
nftables :使⽤ nftables 实⽤程序设置复杂和⾼性能的防⽕墙,如为整个⽹络设
置。
iptables :Red Hat Enterprise Linux 上的 iptables ⼯具使⽤ nf_tables 内
核 API ⽽不是 legacy 后端。 nf_tables API 提供了向后兼容性,以便使⽤
iptables 命令的脚本仍可在 Red Hat Enterprise Linux 上⼯作。对于新的防⽕墙脚
本,红帽建议使⽤ nftables
RHEL 7 中使⽤ firewalld 服务作为⽤⼾配置防⽕墙规则的⼯具,iptables 作为实现防⽕墙规则的⽤⼾空间实现,因此通过 firewall-cmd 与 iptables 命令⾏均可实现防⽕墙的配置。RHEL 8 中也使⽤ firewalld 服务,但其后端默认通过 nftables 实现防⽕墙规则,iptables也可作为其后端,但为⾮默认配置可通过⼿动⽣效
可以根据⽤⼾对该⽹络中的接⼝和流量设置的信任程度,使⽤ fi rewalld 来将⽹络划分为不同的区。⼀个连接只能是⼀个区的⼀部分,但⼀个区可以被⽤来进⾏很多⽹络连接。
NetworkManager 通知接⼝区的 firewalld 。您可以为接⼝分配区:
fi rewall- confi g 图形化⼯具
fi rewall- cmd 命令⾏⼯具
后 三 个 只 能 编 辑 适 当 的 NetworkManager 配 置 ⽂ 件 。 如 果 您 使 ⽤ web 控 制 台
fi rewall- cmd 或 fi rewall- confi g 来 更 改 接 ⼝ 的 区 , 则 请 求 将 被 转 发 到
NetworkManager ,且不是由 fi rewalld 来处理。
预定义的区存储在 /usr/lib/fi rewalld/zones/ ⽬录中,并可⽴即应⽤到任何可⽤的⽹
络接⼝。只有在修改后,这些⽂件才会被拷⻉到 /etc/fi rewalld/zones/ ⽬录中
预定区默认配置有:
block :任 何 传 ⼊ 的 ⽹ 络 连 接 都 会 被 拒 绝 , 并 报 IPv4 的 icmp-host-prohibited 消息和
IPv6 的 icmp6-adm-prohibited 消息 。只有从系统启动的⽹络连接才能进⾏。
dmz :对于您的⾮企业化区⾥的计算机来说,这些计算机可以被公开访问,且有限访问您的内部
⽹络。只接受所选的⼊站连接。
drop :所有传⼊的⽹络数据包都会丢失,没有任何通知。只有外发⽹络连接也是可⾏的。
external :适⽤于启⽤了伪装的外部⽹络,特别是路由器。您不信任⽹络中的其他计算机不会损害您
的计算机。只接受所选的⼊站连接。
home :⽤于家⽤,因为您可以信任其他计算机。只接受所选的⼊站连接。
internal :当您主要信任⽹络中的其他计算机时,供内部⽹络使⽤。只接受所选的⼊站连接。
public :可⽤于您不信任⽹络中其他计算机的公共区域。只接受所选的⼊站连接。
trusted :所有⽹络连接都被接受。
work :可⽤于您主要信任⽹络中其他计算机的⼯作。只接受所选的⼊站连接。
[root@kittod ~ # systemctl unmask firewalld
[root@kittod ~ # systemctl start firewalld
[root@kittod ~ # systemctl enable firewalld (系统启动时自动启用)
[root@kittod ~ # systemctl stop firewalld
[root@kittod ~ # systemctl disable firewalld (防止系统启动时自动启动)
[root@kittod ~ # firewall- cmd --state
[root@kittod ~ # systemctl status firewalld
[root@kittod ~ # firewall- cmd --list- all(列出默认区的相关信息)
[root@kittod ~ # firewall- cmd --list-all-zone=home(列出指定区home的状态)
[root@kittod ~ # firewall- cmd --list- services
[root@kittod ~ # firewall- cmd --panic-on(启用)
[root@kittod ~ # firewall- cmd --query- panic(是否关闭)
启⽤ panic 模式可停⽌所有⽹络流量。因此,只有当您具有对机器的物理访问权限或使⽤
串⾏控制台登录时,才应使⽤它。
[root@kittod ~ # firewall- cmd --get-services
[root@kittod ~ # firewall- cmd --get-services
[root@kittod ~ # firewall- cmd --add-service=http
[root@kittod ~ # firewall- cmd --runtime- to- permanent
[root@kittod ~ # firewall- cmd --list- ports
[root@kittod ~ # firewall- cmd --add- port=port- number/port- type
[root@kittod ~ # firewall- cmd --remove- port=port- number/port- type
[root@kittod ~ # firewall- cmd - get- zone
[root@kittod ~ # firewall- cmd - list- all- zones
[root@kittod ~ # firewall- cmd - zone=zone- name - list- all
[root@kittod ~ # firewall- cmd --add- service=ssh - zone=public
[root@kittod ~ # firewall- cmd --get- default- zone
[root@kittod ~ # firewall- cmd --set- default- zone zone- name
[root@kittod ~]# fi rewall- cmd --get- active- zones
[root@kittod ~]# firewall- cmd --zone=internal -- change- interface=ens224
[root@kittod ~]# firewall- cmd --get- active- zones(查看)
[root@kittod ~]# nmcli connection modify ens256 connection.zone public
[root@kittod ~]# firewall- cmd - get- active- zones
[root@kittod ~]# firewall- cmd --new- zone=testzone --permanent
[root@kittod ~]# firewall- cmd --get- zones
[root@kittod ~]# firewall- cmd --reload
[root@kittod ~]# firewall- cmd --get- zones
区配置⽂件包含区的信息。这些区描述、服务、端⼝、协议、icmp-blocks、
masquerade、forward-ports 和丰富的语⾔规则采⽤ XML ⽂件格式。⽂件名必须是 * zone-
name* .xml , 其 中 zone-name 的 ⻓ 度 限 制 为 17 个 字 符 。 区 配 置 ⽂ 件 位 于/usr/lib/fi rewalld/zones/ 和 /etc/fi rewalld/zones/ ⽬录中
[root@kittod ~]# cd /etc/fi rewalld/zones/
[root@kittod zones]# cp public.xml testzone02.xml
[root@kittod zones]# fi rewall- cmd - get- zones
block dmz drop external home internal nm- shared public testzone trusted
work
[root@kittod zones]# fi rewall- cmd --reload
success
[root@kittod zones]# fi rewall- cmd --get- zones
block dmz drop external home internal nm- shared public testzone
testzone02 trusted work
ACCEPT :接受除特定规则不允许的所有传⼊的数据包。
REJECT :拒绝所有传⼊的数据包,但特定规则允许的数据包除外。当 fi rewalld
拒绝数据包时,源机器会发出有关拒绝的信息。
DROP :除⾮由特定规则允许,丢弃所有传⼊数据包。当 fi rewalld 丢弃数据包时,
源机器不知道数据包丢弃的信息。
[root@kittod ~ # fi rewall- cmd --zone=zone- name --list- all
[root@kittod ~ # fi rewall- cmd --permanent - zone=zone- name --set
target=
定义两个虚拟主机 node1, node2
1、在 node1 主机上配置 chrony 时间服务器,将该主机作为时间服务器。
2、在 node1 主机上创建防火墙区域 testzone, 将 node1 主机网络接口接入该区域,创建新防火墙服务为 timeservice
3、在 node1 将该防火墙服务 timeservice 定义为允许 chrony 服务通过。
4、在 node2 主机上配置 chrony 时间客户端,该主机将 node1 主机作为时间源服务器
5、配置完防火墙服务之后,node1 和 node2 主机的时间服务器可以正常工作。
[root@localhost ~]# firewall-cmd --new-zone=testzone --permanent
success
[root@localhost ~]# firewall-cmd --get-zones
block dmz docker drop external home internal nm-shared public trusted work
[root@localhost ~]# firewall-cmd --reload
success
[root@localhost ~]# firewall-cmd --get-zones
block dmz docker drop external home internal nm-shared public testzone trusted wor
[root@localhost ~]# nmcli connection modify ens160 connection.zone testzone
[root@localhost ~]# firewall-cmd --get-active-zones
testzone
interfaces: ens160
[root@localhost ~]# firewall-cmd --new-service=timeservice --permanent
success
[root@localhost ~]# ll /etc/firewalld/services/
total 4
-rw-r--r--. 1 root root 60 Mar 16 00:02 timeservice.xml
[root@localhost services]# netstat -nultp
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: cockpit dhcpv6-client ssh timeservice
ports:
protocols:
forward: yes
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
server ntp1.aliyun.com iburst
allow 192.168.203.132
server 192.168.203.133 iburst (node1的ip)