基本 iptables 规则

基本 iptables 规则

我正在尝试保护运行 ubuntu HardyHeron (8.04 lts) 的 vps 服务器。我使用 iptables 来阻止几乎所有传入流量。我希望允许以下内容:

  • 网络流量(80 和 443)
  • 邮件流量(传入和传出,25?)
  • 来自我家电脑的所有流量(我有一个静态 IP)

除了邮件之外,一切都运行良好。我还没有测试过收到的邮件,但是当我加载链时,外发邮件似乎被阻止了。我有几个通过电子邮件发送确认的网页,当我加载规则时,这些确认被阻止了,但是当我没有任何规则时,它们工作正常。以下是规则(来自 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

我不明白为什么邮件被阻止,因此我希望得到帮助,并具体添加什么才能允许发送邮件。

答案1

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

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

您可能还想允许与已建立连接相关的新入站连接(例如,对于 FTP,当它打开新连接时以及对于 ICMP 错误)。您可以通过将ESTABLISHED上面的行更改为 来实现这一点ESTABLISHED,RELATED

答案2

我使用的语法与上面的略有不同。而第一位回复者写道:

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 上投入大量时间。我想很快就会了。祝你好运!

相关内容