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

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

我想知道是否有人可以帮助我制定以下 iptables 规则:

我们希望允许任何和所有本地发起的(如在运行 iptables 的服务器上)流量。

DNS、HTTP 等……全部。应允许运行 iptables 的服务器发起的任何连接。

目前我们基本上使用的是 OUTPUT 默认策略,即 ACCEPT。这是正确的吗?输入被阻止,所以我假设这意味着连接(我们允许的连接除外)无法启动,因为它们将在我方达到 OUTPUT 策略之前被丢弃?

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

非常感谢你。

答案1

要做到这一点,你需要两条规则:

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用正确的以太网接口名称替换。

答案2

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

对于 OUTPUT 来说这已经足够了,因为 Netfilter 不需要特殊规则来启动状态连接跟踪。

但如果你想根据“默认拒绝“策略可以通过切换INPUT链来完成DROPiptables -P INPUT DROP

之后一切都会定下来只有 2 条规则

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

注意允许环回接口输入流量的规则— 正如我在博客文章中指出的那样“为最终用户提供最低限度的防火墙“,除非明确允许,否则环回流量将不会通过“已建立”状态检查来处理,与返回流量相比,例如eth0

确保此最小规则集已加载”照原样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 会话应该继续正常工作,但尝试打开新的会话将不起作用。

__

  1. 当然,您可以添加其他规则来允许此类连接。它可以很简单-A INPUT -j ACCEPT -p tcp --dport 22——无需在这里进行修改。在尝试之前,-m state也不要忘记修复lptables-restore; )iptables-restore

相关内容