基本的iptables规则

我试图保证我的vps服务器运行Ubuntu的HardyHeron(8.04升)。 我使用iptables来阻止几乎所有的传入stream量。 我希望允许以下内容:

  • networkingstream量(80&443)
  • 邮件通信(来电和去电,25?)
  • 所有stream量从我的家用电脑(我有一个静态IP)

除了邮件,一切都很好。 我还没有testing传入邮件,但是当我加载链时,传出邮件似乎被阻塞。 我有几个通过电子邮件发送确认信息的网页,这些确认信息在我加载规则时被阻止,但是当我没有任何规则的时候工作正常。 这里是规则(输出从iptables -L)

target prot opt source destination ACCEPT tcp -- anywhere anywhere tcp dpt:www ACCEPT tcp -- anywhere anywhere tcp dpt:https ACCEPT tcp -- anywhere anywhere tcp dpt:smtp ACCEPT all -- 208.69.32.132 anywhere #fake ip, but allows all traffic from my home pc LOG all -- anywhere anywhere limit: avg 5/min burst 5 LOG level debug prefix `iptables denied: ' DROP all -- anywhere anywhere Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination 

我不明白为什么邮件被阻止,所以我会很感激帮助,还有什么特别添加允许发送邮件。

您的出站邮件将失败,因为您允许出站数据包,但丢弃入站回复。 以下iptables命令将添加一个规则来接受已经build立的连接的一部分的传入数据包:

 iptables --insert INPUT 1 -m state --state ESTABLISHED --jump ACCEPT 

您可能还想要允许与已build立的连接相关的新的入站连接(例如,当它打开一个新的连接和ICMP错误时用于FTP)。 您可以通过将上述行中的ESTABLISHED,RELATED更改为ESTABLISHED,RELATED来执行此操作。

我用了一些不同的语法,然后上面。 而第一响应者写道:

iptables --insert INPUT 1 -m state --state ESTABLISHED --jump ACCEPT

我更喜欢:

iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

为什么要做这个改变? 例如,添加RELATED状态可以使您从连接失败中收到更多的错误。 另外,请注意我如何在第一条规则中用-i标志指定循环返回接口(表示为“lo”)? 您可以同样指定NIC,如下所示:

iptables --insert INPUT 2 -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT

iptables中有很多很酷的东西, 看到它被NFTables所替代,我非常的脾气暴躁,而且还没有在NFT上投入大量的时间。 很快,我想。 祝你好运!