使用 iptables 时,与 VPS 的连接丢失,默认策略为 INPUT、OUTPUT、FORWARD 为 DROP

使用 iptables 时,与 VPS 的连接丢失,默认策略为 INPUT、OUTPUT、FORWARD 为 DROP

我在许多服务器中使用 iptables,但是在使用默认策略作为 DROP 时遇到了这个问题。

这是我在 VPS 中使用过的规则,尝试过很多次,一切似乎都很好,但是当我使用这些规则时,VPS 会断开连接。

我只想要 ssh 端口 2222 和 ntp 来更新我的时间。

iptables -F
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 2222 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --dport 2222 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p udp --sport 2222 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p udp --dport 2222 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p udp --sport 123 -m state --state ,NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p udp --dport 123 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -j DROP
iptables -N LOGGING
iptables -A INPUT -j LOGGING
iptables -A LOGGING -m limit --limit 10/min -j LOG --log-prefix "IPTables Packet Dropped: " --log-level 7

直到从 VPS 注销后我才能访问 VPS,它仍然已建立,如果我曾经注销并尝试再次登录,则无法登录。有人会帮我检查规则吗?

答案1

miniBill 是对的:你确实混淆了sportdport。当你写:

iptables -A INPUT -i eth0 -p tcp --sport 2222 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --dport 2222 -m state --state NEW,ESTABLISHED -j ACCEPT

你的INPUTssh 流量是你的服务器,所以应该有目的地端口 2222,不是来源端口;OUTPUT流量有同样的问题。将这些行更改为

iptables -A INPUT -i eth0 -p tcp --dport 2222 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 2222 -m state --state NEW,ESTABLISHED -j ACCEPT

事情应该会变得更好。

相关内容