nftables 不接受端口 25。为什么?

nftables 不接受端口 25。为什么?

服务器:Debian Buster。

在 nftables.conf 中我有:

chain INPUT {
..
tcp dport { 25,465,587,993} log prefix "nft smtp: " accept comment "accept SMTP, SMTPS, IMAPS"
..
log prefix "nft nac: " comment "not accepted"
}
chain OUTPUT
{
..
tcp sport { 25,465,587, 993} log prefix "nft smtp: " accept comment "accept SMTP, SMTPS, IMAPS"
..
log prefix "nft nac: " comment "not accepted"
}

当我通过 Dovecot / Postfix 发送电子邮件时,

nft smtp 日志未显示任何内容

nft nac log(不被接受)说:

IN= OUT=eth0 SRC=188.166.29.7 DST=159.65.66.140 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=41257 DF PROTO=TCP SPT=58228 DPT=25

mail.info 说:连接超时。

显然 nftables 不接受端口 25,但它应该接受。我不明白为什么。

出了什么问题?

答案1

您的日志显示一个数据包离开您的以太网接口(输出)目的地端口 25。防火墙在 OUTPUT 链中允许的是带有 TCP来源25 端口。

你可能想做的是——而不是通过来源输出链中的端口 - 允许与现有(跟踪)连接相关联的传出连接。

您可能想要但尚未添加到防火墙规则中的是一条 OUTGOING 规则,它允许您发送外发邮件 - 即具有目的地25 端口。

答案2

为了检查发生了什么,我在 nftables.conf 中输入了以下代码

对于 INPUT 链

tcp sport { 25,465,587} log prefix "nft smtp1: " accept
tcp dport { 25,465,587} log prefix "nft smtp2: " accept

对于 OUTPUT 链

tcp dport { 25,465,587} log prefix "nft smtp3: " accept
tcp sport { 25,465,587} log prefix "nft smtp4: " accept

在 /etc/rsyslog.d/10-nftables.conf 中

:msg, contains, "nft smtp1" -/var/log/nft_smtp1.log
:msg, contains, "nft smtp2" -/var/log/nft_smtp2.log
:msg, contains, "nft smtp3" -/var/log/nft_smtp3.log
:msg, contains, "nft smtp4" -/var/log/nft_smtp4.log
:msg, contains, "nft nac" -/var/log/nft_not_accepted.log
&stop

service rsyslog restart

systemctl restart nftables

我可以使用防火墙测试电子邮件,并在日志文件中获取详细的调试信息。然后我可以看到哪些电子邮件活动触发了哪条 nftable 规则。

进行这些更改后,我发现 INPUT 和 OUTPUT 链中的 dport 和 sport 错误。将其更改为以下位置后,它就可以正常工作:

对于 INPUT 链

tcp dport { 25,465,587} log prefix "nft smtp2: " accept

对于 OUTPUT 链

tcp dport { 25,465,587} log prefix "nft smtp3: " accept

或者至少这两行是通过发送和接收电子邮件触发的。

我真正缺少的 是防火墙工作原理的全面概述。大多数信息都是关于在配置中插入规则和“它应该工作”。我希望真正了解防火墙,以便我可以快速找到错误。您能推荐一个好的网站或书籍吗?谢谢!

相关内容