我想尝试在OUTPUT上使用DROP默认策略。
我添加了一个例外来继续提供我的 SSH 连接:
iptables -A OUTPUT -p tcp -m tcp --dport 22 -j ACCEPT
但是,当我更改默认策略时,我就被踢出去了,需要重新启动服务器才能再次获得访问权限。
iptables -P OUTPUT DROP
我甚至在删除输出之前尝试过这个,但问题仍然存在。
iptables -A OUTPUT -p tcp -m conntrack --ctstate RELATED,ESTABLISHED --dport 22 -j ACCEPT
请问我遗漏了什么?
答案1
sport/dport 参数指的是(此处:tcp)数据包,而不是连接。
从ssh 服务器传出的(OUTPUT)数据包来自端口 22,但不太可能发送到你的ssh 客户端机器。
尝试这个:
iptables -A OUTPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -P OUTPUT DROP
这些数据包的目标端口很可能被任意分配到客户端计算机或其 NAT 网关上的某个未使用的端口(例如端口 42123)。只有数据包离开您的服务器从ssh 端口已知。