在RHEL7和CentOS 7上开始使用Firewalld

RHEL7防火墙:我是安全人员。看到绕过网络的多层安全保护只是我始终以安全为中心的理由。一些系统管理员无法在几分钟之内关闭前门,这总是会对网络系统造成不利影响。

本指南对深度防御进行了介绍,涵盖了端口安全性和使用防火墙保护Linux服务器的安全。本教程无法涵盖所有​​内容,因此请重点介绍防火墙基础知识和各种配置的演示。

什么是防火墙?

Firewalld是管理Linux内核的动态防火墙服务 网络过滤器 使用低级别的子系统 iptablesip6tables沸腾的 命令Firewalld是Red Hat Enterprise Linux 7(RHEL)系列Linux发行版使用的默认防火墙服务。支持IPv4和IPv6防火墙设置。

提供的防火墙服务 防火墙 对配置所做的更改是动态的,而不是静态的,因为它们会立即实施。您无需应用或保存更改。这是一个优点,因为它不会导致现有网络连接的意外中断。

Firewalld将所有传入的流量划分为区域,每个区域都有自己的一组规则。

用于传入连接的防火墙逻辑

Firewalld需要确定用于传入连接的区域。为此,匹配的第一个规则将按以下顺序优先处理:

  1. 如果传入数据包的源地址与区域的源规则设置匹配,则数据包将通过区域路由。
  2. 如果数据包的传入接口与区域的过滤器设置匹配,则使用该区域。
  3. 否则,将使用默认区域。

注意事项答:新网络接口的默认区域是 公开的 区域。

配置文件在哪里?

防火墙配置文件存储在各种XML文件中: / usr / lib / firewalld // etc / firewalld / 目录。这些文件可以被编辑,编写,备份,并用作其他安装的模板。

如果两个位置都存储了相同名称的配置文件,则版本 / etc / firewalld / 这意味着管理员可以覆盖默认区域和设置。

如何管理firewalld?

有三种更改防火墙服务的方法:

  1. 使用命令行客户端 防火墙cmd。用于永久更改和运行时更改。根用户或成员 轮毂 组可以运行 防火墙cmd 命令 波尔基特 机制用于授权命令。
  2. 使用图形工具 防火墙配置
  3. 使用配置文件 / etc / firewalld /

注意事项

防火墙服务iptables.serviceip6tables.serviceebtables.service 服务彼此竞争。建议在运行防火墙服务之前屏蔽其他服务。可以使用以下命令完成此操作:

for SERVICE in iptables ip6tables ebtables; do
systemctl mask ${SERVICE}.service
done
}

Firewalld与iptables有何不同?

  • Firewalld将其配置文件存储在各种XML文件中。 / usr / lib / firewalld // etc / firewalld / 一会儿 iptables服务 保留他们 / etc / sysconfig / iptables。文件/ etc / sysconfig / iptables在RHEL 7中不存在,因为默认情况下它是firewalld附带的。
  • iptables服务进行所有更改后需要刷新过时的规则并重新加载规则 / etc / sysconfig / iptables。和 防火墙 仅差异适用,并且您可以在运行时更改设置而不会丢失现有连接。

防火墙和IPtables的操作图

使用firewall-cmd配置防火墙设置

防火墙-cmd是作为主要防火墙软件包的一部分安装的。几乎所有命令都在运行时配置中运行, --permanent 指定了一个选项。使用选项指定规则适用的区域 --zone=。在以下情况下使用默认区域: --zone 省略。

变化是 firewall-cmd --reload 当应用于他们 --permanent永久配置。

下表显示了一些常用示例 防火墙cmd 命令及说明:

命令
命令说明
--get-zones列出所有可用区域
--get-default-zone获取当前的默认区域
--get-active-zones列出当前正在使用的具有与之关联的界面或源的所有区域。
--set-default-zone=设置默认区域。这将更改运行时配置和永久配置。
--list-all-zones获取所有区域的所有信息,包括接口,端口,服务和源。
--list-all [--zone=]列出所有已配置的服务,端口,源和接口 。如果否,则使用默认区域 --zone= 使用选项。
--add-interface= [--zone=]路由所有通过的流量 > 到指定区域。如果没有,则使用默认区域 --zone= 提供了选项。
--change-interface= [--zone=]关联界面 而不是当前区域。如果没有,则使用默认区域 --zone= 提供了选项。
--add-source= [--zone=]路由来自IP地址/网络的所有流量 到指定区域。如果未提供区域,则使用默认区域。
--remove-source= [--zone=删除将所有流量路由到指定IP地址或网络的规则 从指定区域开始。如果未指定区域选项,则使用默认区域。
--get-services列出所有定义的服务
--add-service=允许流量 。如果否,则使用默认区域 --zone=提供了选项。
--remove-service=删掉 从区域的允许列表中。如果否,则使用默认区域 --zone= 提供了选项。
--add-port=允许流量 端口。如果否,则使用默认区域 --zone= 提供了选项。
--remove-port=删掉 区域允许列表中的端口。如果否,则使用默认区域 --zone= 提供了选项。
--reload删除运行时配置并应用永久配置。

关于网络区域

防火墙可以根据您决定放置的信任级别将网络划分为不同的区域。带有许多预定义的区域 防火墙,及其预期用途。下表提供了详细信息。

区域
默认设定
trusted默认情况下,允许所有传入流量
home默认情况下,除非匹配,否则拒绝传入流量 ssh,ipp-client,mdns,samba-client,dhcpv6-client 与定义的服务或外向流量有关
public默认情况下,除非匹配,否则拒绝传入流量 ssh,dhcpv6-client 与定义的服务或外向流量有关。这是 默认区域 用于新添加的网络接口。
internal默认情况下,除非匹配,否则拒绝传入流量 ssh,ipp-client,mdns,samba-client,dhcpv6-client 与预定义服务或传出流量有关–与 首页 区域。
work默认情况下,除非匹配,否则拒绝传入流量 ssh,ipp-client,dhcpv6-client 与定义的服务或外向流量有关
dmz默认情况下,除非匹配,否则拒绝传入流量 ssh 与定义的服务或外向流量有关。主要用于非公开区域的可公开访问的计算机,对内部网络的访问受限
external默认情况下,除非匹配,否则拒绝传入流量 ssh 与定义的服务或传出流量有关。通过此区域转发的传出IPv4流量 假冒 类似于源自传出网络接口的IPv4地址的流量。
block默认情况下,除非与传出流量相关,否则拒绝所有传入流量
drop默认值为丢弃所有传入流量,除非它与传出流量相关。不以ICMP错误响应。

firewall-cmd的用法示例

为了增强您对使用firewall-cmd的了解,请考虑以下示例。首先 防火墙 已启用并在系统上运行。

systemctl status firewalld.service

如果没有,您可以使用以下命令启动并启用它:

systemctl start firewalld
systemctl enable firewalld

1. 默认区域 dmz

firewall-cmd --set-default-zone=dmz
firewall-cmd --get-default-zone 

2. 分配所有来自的流量 192.168.100.0/24 网络到 可靠的 区域和验证。

firewall-cmd --permanent --zone=trusted --add-source=192.168.100.0/24
firewall-cmd --reload
firewall-cmd --list-all --zone=trusted
firewall-cmd --get-active-zones 

3. 开门 httphttps 交通量 里面 区域。

firewall-cmd --permanent --add-service={http,https} --zone=internal
firewall-cmd --reload
firewall-cmd --list-services --zone=internal 

要从区域中删除持久服务:

firewall-cmd --permanent [--zone=] --remove-service=

4. 过渡期 eth0 连接到当前会话的“内部”区域:

firewall-cmd --zone=internal --change-interface=eth0

5. 新增 eth1 到本地区域的接口:

 firewall-cmd --zone=home --add-interface=eth1

其他界面管理选项:

查询接口是否在区域中。

 firewall-cmd [--zone=] --query-interface=

从区域中删除接口。

 firewall-cmd [--zone=] --remove-interface=

6. 启用化妆舞会 首页 区域

 firewall-cmd --zone=home --add-masquerade

禁止在区域伪装

 firewall-cmd [--zone=] --remove-masquerade

查询区域中的伪装

firewall-cmd [--zone=] --query-masquerade

永久禁用区域中的化装舞会

firewall-cmd --permanent [--zone=] --remove-masquerade

7. 在本地区域中永久启用mysql端口3306 / TCP

firewall-cmd --permanent --zone=home --add-port=3306/tcp

永久禁用区域中的端口和协议组合

firewall-cmd --permanent [--zone=] --remove-port=[-]/

8. 在公共区域中阻止回显回复消息

 firewall-cmd --zone=public --add-icmp-block=echo-reply

9. 将ssh转发到内部区域中的主机192.168.10.5

 firewall-cmd --zone=home --add-forward-port=port=22:proto=tcp:toaddr=192.168.10.5

参考资料

  1. 手册页:
man firewall-cmd 
man firewalld
man firewalld.zones
man firewall.zone
man firewall-config
Sidebar