iptables-persistent 阻止任何出站连接

iptables-persistent 阻止任何出站连接

我使用 iptables-persistent 来设置防火墙规则。

这是我的标准配置:

*filter     
:INPUT DROP [0:0]     
:FORWARD ACCEPT [0:0]     
:OUTPUT ACCEPT [0:0]     
-A INPUT -p tcp --dport 2123 -m mac --mac-source XX:XX:XX:XX:XX:XX -j ACCEPT     
COMMIT

问题是我无法从 debian 服务器下载软件包并 ping 本地和外部 IP 地址。

INPUT 仅适用于“传入”连接,这是正确的吗?

以下是 IPv6 的规则:

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
COMMIT

答案1

您遇到的问题是您不允许任何传入数据包。因此,如果您尝试联系外部服务器,那么您将无法收到回复!

通常,这可以通过“既定”规则来处理

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

这里的想法是,与传出连接匹配的传入数据包将被允许返回。

现在与默认丢弃对于输入链,您可能会看到其他问题(例如 ICMP 数据包),因此您可能还需要根据您的要求允许它们进入。

答案2

问题解决了。

新的固定规则:

*filter
:INPUT DROP [0:0] 
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -i lo -j ACCEPT
-A FORWARD -o lo -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p tcp --dport 2123 -m mac --mac-source XX:XX:XX:XX:XX:XX -j    ACCEPT
COMMIT

答案3

如果您想更好地控制 iptables,请使用 conntrack“--ctstate”模块。它比“--state”更好、更新

例如:

iptables -A INPUT -p tcp -m tcp -m conntrack --ctstate ESTABLISHED -j ACCEPT

答案4

我并不声称自己是 iptables 规则的专家,但模块 conntrack 正在使用连接跟踪扩展 (conntrack),而第二个模块则使用状态扩展。根据这个文件conntrack 扩展取代了状态。

Obsolete extensions: • -m state: replaced by -m conntrack

更多信息这里

相关内容