当我执行 iptables -F 时,我正在设置我的 iptables,但我的 ssh 管道断了。
这是我的会话的最后输出:
root@alfapaints:~# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere state NEW,ESTABLISHED tcp dpt:2222
ACCEPT tcp -- li465-68.members.linode.com anywhere state NEW,ESTABLISHED tcp dpt:nrpe
ACCEPT tcp -- anywhere anywhere tcp dpt:9200 state NEW,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:http state NEW,ESTABLISHED
ACCEPT udp -- anywhere anywhere udp spt:domain
Chain FORWARD (policy DROP)
target prot opt source destination
Chain OUTPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere state ESTABLISHED tcp spt:2222
ACCEPT tcp -- anywhere anywhere state ESTABLISHED tcp spt:nrpe
ACCEPT tcp -- anywhere anywhere tcp spt:9200 state ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp spt:http state ESTABLISHED
ACCEPT udp -- anywhere anywhere udp dpt:domain
root@alfapaints:~# iptables -F
Write failed: Broken pipe
我之前测试过我的连接,我能够使用 ssh 连接。现在我进行了 nmap 扫描,发现没有一个端口打开。我知道我的 VPS 在 VMWare ESXi 上运行,重新启动有帮助吗?
或者如果不行,我可以将磁盘连接并安装到另一个虚拟机来保存数据吗?
有人能给点建议吗?或者能解释一下发生了什么或者是什么原因导致我的管道破裂?
ps:我没有将规则保存在 iptables 的配置目录中。但是我使用存储在 ~/rules.config 中的文件来应用我的规则,如下所示:iptables-restore < rules.config 那么重新启动可能会有帮助吗?
提前致谢。
答案1
您的所有三个策略都是DROP
,因此通过刷新链,您已经删除了所有可能修改特定数据包配置的规则,并将它们全部保留为默认策略:实际上,您已经说过所有进出和通过机器的数据包都应被丢弃。
重启是否有用取决于您机器的启动状态。如果您有一套合理的规则设计为在重启时出现,那么就重启它。另一方面,如果您设置了重启代码来保存和恢复防火墙的运行状态,或者您有一套高度限制的启动规则,那么重启将无济于事。
假设你把它拿回来了,我发现在制定iptables
规则时经常有帮助的是
at now+5min
service iptables stop
^D
当我尝试做一些巧妙的事情时,这常常能帮我解围。我可以把事情搞砸,把自己锁在外面,因为我知道五分钟后防火墙就会关闭,然后我就可以回来把事情处理好。
答案2
您似乎正在使用 Linode。在这种情况下,请使用Linode Shell以访问虚拟机的控制台。然后您可以登录并修复防火墙。
使用其他提供商,提供商可以为您提供等效的虚拟控制台访问权限。例如,VMware 完全可以做到这一点。