我在用防火墙配置我的防火墙。我尝试创建一个允许特定源端口和目标端口对的服务:
<?xml version="1.0" encoding="utf-8"?>
<service>
<port protocol="tcp" port="1234"/>
<source-port protocol="tcp" port="4321"/>
</service>
我原本以为这只允许从端口 4321 通信的客户端连接到端口 1234 上的服务器。然而,服务文件似乎只允许两个都所有到端口 1234 的传入连接以及所有来自端口 4321 的连接,如果我理解nft list ruleset
正确的话:
…
chain filter_IN_public_allow {
tcp dport 1234 ct state new,untracked accept
tcp sport 4321 ct state new,untracked accept
}
…
如果这不是正确的方法。我该如何使用firewalld实现我想要的效果?
(编辑:我的进一步调查使我相信目前需要所谓的直接规则,即基本上使用 iptables。我不想要那种解决方案......)
答案1
显然firewalld
不是这样设计的。它不包含限制目的地的简单方法。(如果您认为丰富的规则不是一种简单的方法:))
这RedHat 文档状态(我以粗体表示强调):
Firewalld 使用区域和服务的概念,简化了流量管理。区域是预定义的规则集。网络接口和源可以分配给区域。允许的流量取决于您的计算机所连接的网络以及此网络分配的安全级别。防火墙服务是预定义的规则 涵盖所有必要的设置,以允许传入特定服务的流量,并且它们在区域内应用
同一文献中称,标题1.1.1. 何时使用firewalld、nftables或iptables;他们firewalld
只建议用于简单情况,并且应该用来nftables
设置复杂且性能关键的防火墙。
这里您可以了解 nftables。
文章引用:
1.1. 开始使用FIREWALLD
下面介绍firewalld的功能,比如服务和区域,以及如何管理firewalld systemd 服务。
1.1.1. 何时使用firewalld、nftables或iptables
下面简要概述了您应该在哪种情况下使用以下实用程序之一:
防火墙: 使用防火墙适用于简单防火墙用例的实用程序。该实用程序易于使用,并涵盖了这些场景的典型用例。
nftables: 使用nftables实用程序来设置复杂且性能关键的防火墙,例如整个网络。
iptables: 这iptablesRed Hat Enterprise Linux 上的实用程序使用nf_表内核 API 取代了传统的后端。 nf_表API 提供向后兼容性,以便使用iptables命令仍然适用于 Red Hat Enterprise Linux。对于新的防火墙脚本,Red Hat 建议使用nftables。
重要的
为了防止不同的防火墙服务相互影响,请在 RHEL 主机上仅运行其中一个服务,并禁用其他服务。