![我这里有正确的 IpTables 吗?我无法发送,但可以接收](https://linux22.com/image/752202/%E6%88%91%E8%BF%99%E9%87%8C%E6%9C%89%E6%AD%A3%E7%A1%AE%E7%9A%84%20IpTables%20%E5%90%97%EF%BC%9F%E6%88%91%E6%97%A0%E6%B3%95%E5%8F%91%E9%80%81%EF%BC%8C%E4%BD%86%E5%8F%AF%E4%BB%A5%E6%8E%A5%E6%94%B6.png)
设置邮件服务器,并采取措施确保其安全。其中一个步骤是设置一组 IPTABLES 规则。从您可以看出,我已将所有策略设置为 DROP,甚至 OUTPUT,我认为这很好。我是这方面的初学者,所以您可能会看到不需要的规则。请随时指出,我害怕成为中继。
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 143 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 143 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 143 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --dport 143 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --dport 443 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 993 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 993 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 993 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --dport 993 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 587 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 587 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 587 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --dport 587 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 25 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 25 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --dport 25 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 465 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 465 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 465 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --dport 465 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
iptables -N LOGGING
iptables -A INPUT -j LOGGING
iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables Packet Dropped: " -
-log-level 7
iptables -A LOGGING -j DROP
答案1
首先,恭喜,这是对规则集的一次很好的尝试。
例如,您允许正确的源端口入站和正确的目标端口出站,以便涉及出站邮件的流量流动,反之亦然。
看起来状态让你犯了错误。而不是将此模式应用于您的规则(使用 smtp 端口作为示例,因为它是您的症状的来源,尽管我建议的模式适用于 imap 和其余的):
iptables -A INPUT -i eth0 -p tcp --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 25 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 25 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --dport 25 -m state --state ESTABLISHED -j ACCEPT
这种模式应该有效:
iptables -A INPUT -i eth0 -p tcp --dport 25 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 25 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 25 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --dport 25 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
您会注意到,除了添加“RELATED”状态之外,我还翻转了最后 2 条规则的状态匹配条件。
我唯一怀疑的端口是端口 80。您提供网络服务器吗?如果是,请考虑切换到 https。也许是管理控制台?如果是,请考虑限制源 IP 或类似的东西。
提示:您可以运行iptables -L -n -vvv
,除了每条规则的行号之外,iptables 还会告诉您自加载以来每条规则匹配的数据包数量。您通常可以使用它来确定哪条规则导致了问题,方法是重现症状并观察哪些计数器无法增加。
此外,买者自慎:我是在手机上即兴写下这篇文章的;因此,如果有一点测试不通过,请不要犹豫,我可以在使用笔记本电脑时验证我的工作。