iptables规则允许所有出站本地流量?


11

我想知道是否有人可以通过以下iptables规则来帮助我:

我们希望允许ANY和ALL本地发起(例如,在运行iptables的服务器上)流量。

DNS,HTTP等...全部。应该允许由运行iptables的服务器启动的任何连接。

当前,我们基本上使用OUTPUT默认策略ACCEPT。这个对吗?输入被阻止,所以我认为这意味着无法启动连接(我们允许的连接除外),因为在我们这边执行OUTPUT策略之前,它们将被断开?

抱歉,我的iptables技能很弱;)

非常感谢你。

Answers:


26

您需要两个规则来做到这一点:

iptables -I OUTPUT -o eth0 -d 0.0.0.0/0 -j ACCEPT
iptables -I INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

一些注意事项。

  • 您可能已有的预先存在的规则可能已经执行了此操作,但是看起来有所不同。
  • 这用于-I强制将这些规则放在第一位。iptables规则是自上而下评估的。
  • -o-i分别为“中”标志的意思是“去”和。替换eth0为正确的以太网接口名称。

我们都有:)我没有提到第二个,因为就像我说的...我的iptables技能太弱了。感谢您的澄清:)
匿名-

2
-d 0.0.0.0/0是多余的,不需要。
zapstar

好答案。但是现在我可以ping服务器了,我不明白为什么。你可以解释吗?
丹尼尔(Daniel)

@Daniel因为如果仅允许出站流量,则ping答复将在到达主机时被数据包筛选器丢弃。为防止这种情况,您还需要允许与任何会话都相同或相关联的传入流量。换句话说,由于ping回复与ping请求有关,因此应该允许它。如果会话表中没有传入的ping请求且未记录传出的ping,则传入的数据包将被丢弃。希望有道理!
bahamat

@bahamat:我再次尝试后,发现需要明确允许icmp流量。我说的是能够对服务器执行ping命令,我在上面实施了这些规则。不能再复制它。也许我在某个地方犯了一个错误。不管怎么说,还是要谢谢你。
丹尼尔(Daniel)

0

当前,我们基本上使用OUTPUT默认策略ACCEPT。

这对于OUTPUT就足够了,因为Netfilter不需要特殊的规则即可开始有状态连接跟踪。

但是,如果您想根据“ 默认拒绝 ”策略过滤出入站流量,可以通过将INPUT-chain 切换为DROPiptables -P INPUT DROP

之后,将仅用2条规则进行设置:

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

请注意规则允许回送接口上的输入流量 -正如我在博客文章“ 最终用户的最小防火墙 ”中指出的那样,除非明确允许,否则与“返回”相比,“建立的”状态检查将不会处理回送流量。交通过来,说,eth0

为了保证这个最小规则集装“ 为是 ” W与已经可能是有规则/ O干扰,这是较方便的使用iptables-restore在SHELL会话:

lptables-restore <<__EOF__
-P INPUT DROP
-A INPUT -j ACCEPT -i lo
-A INPUT -j ACCEPT -m state --state RELATED,ESTABLISHED
__EOF__

在执行此操作之前,请确保您不会断开自己的网络连接1,尽管已经打开的SSH会话应继续正常工作,但是尝试打开新的SSH会话将不会起作用。

__

  1. 当然,您可以添加其他规则以允许此类连接。它可以很简单-A INPUT -j ACCEPT -p tcp --dport 22-无需在-m state这里进行修改。也不要忘记修复lptables-restoreiptables-restore想出来之前;)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.