以下是通过在公共区域中启用 ftp 服务添加的 ftp 帮助程序的示例:
# iptables -t raw -S | grep CT -A PRE_public_allow -p tcp -m tcp --dport 21 -j CT --helper ftp
我没有尝试禁用任何默认帮助程序,但运行上述命令不会显示任何此类规则。也没有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>