我看不到 Firewalld 启用帮助程序的 iptables 规则。为什么?助手是否因某种原因而被禁用?

我看不到 Firewalld 启用帮助程序的 iptables 规则。为什么?助手是否因某种原因而被禁用?

以下是通过在公共区域中启用 ftp 服务添加的 ftp 帮助程序的示例:

# iptables -t raw -S | grep CT
-A PRE_public_allow -p tcp -m tcp --dport 21 -j CT --helper ftp

https://firewalld.org/2016/10/automatic-helper-assignment

我没有尝试禁用任何默认帮助程序,但运行上述命令不会显示任何此类规则。也没有sudo iptables-save | grep 21。为什么?


# rpm -q firewalld
firewalld-0.5.5-1.fc28.noarch

答案1

这是通过在公共区域中启用 ftp 服务添加的 ftp 助手的[示例]。

听起来 ftp“助手”仅在您明确允许 ftp“服务”时才启用firewalld。对于每个帮助器定义,都应该有一个匹配的服务定义。

最初我以为只有在运行 FTP 时才会启用“服务”服务器。文件传输协议被动的如今首选的模式仍然需要额外的连接。客户端必须通过第二个端口连接到服务器才能传输文件数据。需要“帮助程序”来检测正在使用哪个端口并允许此额外连接。

没有一个助手被标记为-client(如服务dhcpv6-client)。但据我所知,启用 FTP 服务客户将允许它使用原始的 FTP积极的模式(假设firewalld是唯一的防火墙)。我认为这个例子并不是一个大的安全问题,但它可能会非常令人困惑:-(。

(挑剔:FedoraWorkstation 无论如何都会允许 FTP 主动模式,因为它允许传入连接到任何高于 1024 的端口。请不要让我解释原因)。

我看的第二个例子是 irc 助手,但我无法理解它。在我看来它已经破碎了。

# cat /usr/lib/firewalld/helpers/irc.xml
<?xml version="1.0" encoding="utf-8"?>
<helper module="nf_conntrack_irc" family="ipv4">
  <port protocol="tcp" port="194"/>
</helper>
# cat /usr/lib/firewalld/services/irc.xml 
<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>IRC</short>
  <description>An IRCd, short for Internet Relay Chat daemon, is server software that implements the IRC protocol.</description>
  <port protocol="tcp" port="6667"/>
</service>

相关内容