gpt4 book ai didi

linux - iptables --sport 与 --dport。输入与输出

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:52:02 27 4
gpt4 key购买 nike

我在理解 iptables 时遇到了一些问题。我知道它作为一个过滤器,但有些东西没有点击,因为它没有按照我认为应该的方式工作。首先让我说我正在创建一个白名单,因此所有策略(INPUT、FORWARD、OUTPUT)都默认为 DROP。

我有以下与 SMTP 相关的规则:

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

-A 输入 -p tcp --dport 25 -j 接受
-A OUTPUT -p tcp --dport 25 -j ACCEPT//需要接收吗?
-A OUTPUT -p tcp --sport 25 -j ACCEPT//需要发送吗?

*这 3 行也逐字存在于端口 587 和 465

如果我删除第一个 OUTPUT 行,那么我的服务器将不会收到电子邮件,如果我删除最后一行,它也不会发送电子邮件。我不明白的是为什么。不应该:

-A 输入 -p tcp --dport 25 -j 接受
-A 输出 -p tcp --sport 25 -j 接受

足以让一切通过?据我所知,所有 SMTP 通信都应超过 25、587 或 465。我目前的理解是 SMTP 数据包应始终匹配这两个规则之一。所有输入数据包都应该到达端口 25,并且所有输出数据包都从 25 发送?我错过了什么?

最佳答案

对于 SMTP,您不需要任何 --sport 规则。源和目标不依赖于方向——它们在数据包的源和目标端口上匹配。每个连接都有一个随机的源端口,因此没有什么可以匹配的。

If I remove the first OUTPUT line then my server won't receive emails & if I remove the last line it won't send emails.

这是错误的。只有 INPUT 行对接收电子邮件很重要。此外,只有 OUTPUT --dport 25 行对发送电子邮件很重要。所以这些规则应该足够了:

-A INPUT -p tcp --dport 25 -j ACCEPT
-A OUTPUT -p tcp --dport 25 -j ACCEPT

问题可能是您将 OUTPUT 设置为默认为 DROP,但只允许在 INPUT 上建立连接。通常人们将 OUTPUT 默认设置为 ACCEPT。如果您想继续为 OUTPUT 使用白名单,则必须添加:

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

此外,请阅读有关 SMTP 端口的信息。您列出的其中一些仅用于电子邮件提交和已弃用的加密,而不用于服务器到服务器的通信。这可能会改变您规划规则的方式。

关于linux - iptables --sport 与 --dport。输入与输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28945114/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com