我在许多服务器中使用 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 是对的:你确实混淆了sport
和dport
。当你写:
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
你的INPUT
ssh 流量是到你的服务器,所以应该有目的地端口 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
事情应该会变得更好。