一 : 介绍
1.1
防⽕墙是保护机器不受来⾃外部的、不需要的⽹络数据的⼀种⽅式。它允许⽤⼾通过定义⼀组防
⽕墙规则来控制主机上的⼊站⽹络流量。这些规则⽤于对进⼊的流量进⾏排序,并可以阻断或允
许流量。
1.2
firewalld 是⼀个防⽕墙服务守护进程,其提供⼀个带有 D-Bus 接⼝的、动态可定制的、
基于主机的防⽕墙。如果是动态的,它可在每次修改规则时启⽤、修改和删除规则,⽽不需要在
每次修改规则时重启防⽕墙守护进程。
1.3(区别)
1.3.1
firewalld :使⽤ firewalld 实⽤程序进⾏简单防⽕墙⽤例。此⼯具易于使⽤,并
涵盖了这些场景的典型⽤例
1.3.2
nftables :使⽤ nftables 实⽤程序设置复杂和⾼性能的防⽕墙,如为整个⽹络设
置。
1.3.3
iptables :Red Hat Enterprise Linux 上的 iptables ⼯具使⽤ nf_tables 内
核 API ⽽不是 legacy 后端。 nf_tables API 提供了向后兼容性,以便使⽤
iptables 命令的脚本仍可在 Red Hat Enterprise Linux 上⼯作。对于新的防⽕墙脚
本,红帽建议使⽤ nftables
1.4(联系)
RHEL 7 中使⽤ firewalld 服务作为⽤⼾配置防⽕墙规则的⼯具,iptables 作为实现防⽕墙规则的⽤⼾空间实现,因此通过 firewall-cmd 与 iptables 命令⾏均可实现防⽕墙的配置。RHEL 8 中也使⽤ firewalld 服务,但其后端默认通过 nftables 实现防⽕墙规则,iptables也可作为其后端,但为⾮默认配置可通过⼿动⽣效
1.5(Zones 分区)
可以根据⽤⼾对该⽹络中的接⼝和流量设置的信任程度,使⽤ fi rewalld 来将⽹络划分为不同的区。⼀个连接只能是⼀个区的⼀部分,但⼀个区可以被⽤来进⾏很多⽹络连接。
1.5.1(分区工具)
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 :可⽤于您主要信任⽹络中其他计算机的⼯作。只接受所选的⼊站连接。
二:防火墙的使用
2.1防火墙的启用
[root@kittod ~ # systemctl unmask firewalld
[root@kittod ~ # systemctl start firewalld
[root@kittod ~ # systemctl enable firewalld (系统启动时自动启用)
2.2防火墙的停止
[root@kittod ~ # systemctl stop firewalld
[root@kittod ~ # systemctl disable firewalld (防止系统启动时自动启动)
2.3 查看防火墙的状态
[root@kittod ~ # firewall- cmd --state
[root@kittod ~ # systemctl status firewalld
2.4查看区的状态:
[root@kittod ~ # firewall- cmd --list- all(列出默认区的相关信息)
[root@kittod ~ # firewall- cmd --list-all-zone=home(列出指定区home的状态)
2.5查看当前区允许哪些服务
[root@kittod ~ # firewall- cmd --list- services
2.6当要禁止网络服务时可以使用以下命令(谨慎使用):
[root@kittod ~ # firewall- cmd --panic-on(启用)
[root@kittod ~ # firewall- cmd --query- panic(是否关闭)
启⽤ panic 模式可停⽌所有⽹络流量。因此,只有当您具有对机器的物理访问权限或使⽤
串⾏控制台登录时,才应使⽤它。
2.7列出所有预定的服务
[root@kittod ~ # firewall- cmd --get-services
2.8检查被允许的服务
[root@kittod ~ # firewall- cmd --get-services
2.9添加允许服务
[root@kittod ~ # firewall- cmd --add-service=http
2.10添加永久服务
[root@kittod ~ # firewall- cmd --runtime- to- permanent
2.11 端口的设置:
2.11.1 列出所有允许端口
[root@kittod ~ # firewall- cmd --list- ports
2.11.2 在允许端口中添加端口
[root@kittod ~ # firewall- cmd --add- port=port- number/port- type
2.11.3删除端口
[root@kittod ~ # firewall- cmd --remove- port=port- number/port- type
2.12 区域
2.12.1 列出可用区域
[root@kittod ~ # firewall- cmd - get- zone
2.12.2 查看所有区的详细信息
[root@kittod ~ # firewall- cmd - list- all- zones
2.12.3 查看特定区的信息
[root@kittod ~ # firewall- cmd - zone=zone- name - list- all
2.12.4 更改特定区的设置
[root@kittod ~ # firewall- cmd --add- service=ssh - zone=public
2.12.5 更改默认区
[root@kittod ~ # firewall- cmd --get- default- zone
2.12.6 设置新的默认区
[root@kittod ~ # firewall- cmd --set- default- zone zone- name
2.13 网络接口分配给区
2.13.1 列出启用区域以及接口
[root@kittod ~]# fi rewall- cmd --get- active- zones
2.13.2 为不同的区分配接口
[root@kittod ~]# firewall- cmd --zone=internal -- change- interface=ens224
[root@kittod ~]# firewall- cmd --get- active- zones(查看)
2.14 使用nmcli为连接分配区域
[root@kittod ~]# nmcli connection modify ens256 connection.zone public
[root@kittod ~]# firewall- cmd - get- active- zones
2.15 创建一个区
[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
2.16 配置区文件
区配置⽂件包含区的信息。这些区描述、服务、端⼝、协议、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
2.17设定传入区流量的默认行为
ACCEPT :接受除特定规则不允许的所有传⼊的数据包。
REJECT :拒绝所有传⼊的数据包,但特定规则允许的数据包除外。当 fi rewalld
拒绝数据包时,源机器会发出有关拒绝的信息。
DROP :除⾮由特定规则允许,丢弃所有传⼊数据包。当 fi rewalld 丢弃数据包时,
源机器不知道数据包丢弃的信息。
2.17.1 列出特定区的默认目标
[root@kittod ~ # fi rewall- cmd --zone=zone- name --list- all
2.17.2 设置区中的新目标
[root@kittod ~ # fi rewall- cmd --permanent - zone=zone- name --set
target=<default|ACCEPT|REJECT|DROP>
三:题目
定义两个虚拟主机 node1, node2
1、在 node1 主机上配置 chrony 时间服务器,将该主机作为时间服务器。
2、在 node1 主机上创建防火墙区域 testzone, 将 node1 主机网络接口接入该区域,创建新防火墙服务为 timeservice
3、在 node1 将该防火墙服务 timeservice 定义为允许 chrony 服务通过。
4、在 node2 主机上配置 chrony 时间客户端,该主机将 node1 主机作为时间源服务器文章来源:https://www.toymoban.com/news/detail-725859.html
5、配置完防火墙服务之后,node1 和 node2 主机的时间服务器可以正常工作。文章来源地址https://www.toymoban.com/news/detail-725859.html
创建一个新区:
[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
vim编辑/etc/firewalld/services/:
查看服务端口的命令:
[root@localhost services]# netstat -nultp
将服务timeservice放入public zones 永久放行
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:
时间配置 vim/etc/chrony.conf:
node1
server ntp1.aliyun.com iburst
allow 192.168.203.132
node2
server 192.168.203.133 iburst (node1的ip)
node2
node1
到了这里,关于linux 防火墙(firewall)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!