我在理解iptables时遇到了一些麻烦。我知道它充当过滤器,但是没有点击,因为它没有按照我认为的方式工作。首先,我要创建一个白名单,因此所有策略(INPUT,FORWARD,OUTPUT)默认为DROP。
我有以下与SMTP相关的规则:
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p tcp --dport 25 -j ACCEPT -A OUTPUT -p tcp --dport 25 -j ACCEPT //needed for receiving? -A OUTPUT -p tcp --sport 25 -j ACCEPT //needed for sending?
*这3条线也逐字存在于587和465端口
如果我删除了第一行输出,那么我的服务器将不会收到电子邮件;如果我删除了最后一行,它将不会发送电子邮件。我不明白是为什么。不应该:
-A INPUT -p tcp --dport 25 -j ACCEPT -A OUTPUT -p tcp --sport 25 -j ACCEPT
足以让一切都通过?AFAIK所有SMTP通信都应该超过25、587或465。我目前的理解是,SMTP数据包应始终与这两个规则之一匹配。所有输入数据包都应到达端口25,所有输出数据包都应从25发送?我想念什么?
对于SMTP,您不需要任何--sport
规则。源和目标不取决于方向-它们在数据包的源和目标端口上匹配。每个连接都有一个随机的源端口,因此没有匹配项。
如果我删除了第一行输出,那么我的服务器将不会收到电子邮件;如果我删除了最后一行,它将不会发送电子邮件。
错了 仅INPUT行对于接收电子邮件很重要。同样,只有输出--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端口。您列出的其中一些仅用于电子邮件提交和不建议使用的加密,而对于服务器到服务器的通信则不需要。这可能会改变您计划规则的方式。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句