被 iptables 锁定后如何重新获得 SSH 访问权限?

被 iptables 锁定后如何重新获得 SSH 访问权限?

TL:DR

我更改了 iptables 配置,现在 SSH 拒绝所有连接。我可以不联系托管公司就修复这个问题吗?


长版本

好吧,这很可能 100% 是我的错……

在准备将网站迁移到专用服务器时,我们获得了一台运行 CentOS 5.6 的新托管机器。该机器的 iptables 非常严格,仅允许 ssh(22) 和 http(80),但我们还需要它通过端口 20 和 21 接受 FTP。

今天下午我向 iptables 添加了几行,以便接受端口 20 和 21 的传入连接。起初这不起作用,因为在reject all为 ftp 添加的行上方有一行。所以我将该行移至底部,保存并重新启动 iptables,然后 ftp 就可以正常工作了。

2 小时后,当我再次尝试连接时,port 22: Connection refused http 也是同样的情况。

所以我无法通过 SSH 访问服务器,有什么方法可以在不联系托管公司的情况下解决这个问题?

答案1

不幸的是,不行。除非您有其他可用的管理界面,如远程串行控制台、iDRAC、iLO 等。请将其归功于经验,并记得在下次注销前测试设置 ;)

答案2

假设你仍然可以通过 ftp 连接到服务器,并且你可以通过 ftp 以 root 身份登录(不太可能,而且通常是不明智的)进入非 chrooted(等)环境:

在 /etc/cron.d 中放置一个包含以下内容的文件:

* * * * * root /sbin/service iptables stop 

答案3

根据这些指示,您还可以附加:

scripts2/doautofixer?autofix=iptablesflush

... 到您的 WHM 网址。我这样做了,最终得到了一个 URL:

https://mysite:2087/SESSION_ID/scripts2/doautofixer?autofix=iptablesflush

它重置了我的 iptables,一切又恢复正常了。:)

答案4

/etc/sysconfig/iptables在 CentOS 中,如果您没有该文件,您可以通过iptables-save将当前规则集转储到文件中来创建它。

iptables-save > /etc/sysconfig/iptables

要加载文件而不需要重新启动机器,您可以使用iptables-restore

iptables-restore < /etc/sysconfig/iptables

相关内容