在 Linux 上进行远程网络干预的死人开关

asc*_*bol 6 networking remote-access configuration-management best-practices

当我要更改远程服务器的网络配置时,我正在考虑一些安全机制来防止我意外失去对服务器的控制。

我使用的 0 级保护是预定的系统重启:

# at now+x minutes
> reboot
> ctrl+D
Run Code Online (Sandbox Code Playgroud)

其中 x 是重启前的延迟。

虽然这对于非常简单的任务(例如使用 iptables)非常有效,但这种方法至少有两个缺点:

  • 它不是很被动,即如果例如自动远程 ssh 命令失败 x 秒内不再起作用,则应该自动检测连接问题。
  • 如果需要修改一些配置文件然后重新启动以测试更改,这显然是行不通的。

你们在使用第二点的工具吗?如果我无法在重新启动后 X 分钟加入服务器,我希望能够将系统配置恢复到以前已知的稳定状态。

谢谢!

编辑:

  • 该服务器是一个远程 Linux 服务器,具有类似 Debian 或类似 RHEL 的发行版。

  • 我只能访问防火墙后面的这个特定服务器。除端口 22 (ssh) 外,所有端口都被过滤。所以没有 KVM 切换器,没有 iDRAC 等。

  • 如果发生严重故障,我可以在这台机器上获得本地支持,但这需要太多时间:开车需要三个小时。我更愿意把这段时间花在 serverfault 上或开发我自己的工具以避免去那里。

  • 我的实际计划:开发一些基于 mercurial 或 git 的丑陋工具,并在 cron 中调用“hg revert;reboot”。我只是想知道是否已经存在一些经过良好测试的工具。

eww*_*ite 6

这是一种以 ILO 或 DRAC 卡或远程 IP KVM形式进行带外管理的案例?在您的场景中这是一个选项吗?


dun*_*nxd 5

除了 ewwhite 建议的替代连接方法之外,我认为您的方法很好。这很简单,你可以给自己你觉得必要的时间。

注意 - 我认为您不需要重新启动服务器来验证您的更改 - 如果绝对必要,请重新启动适当的服务。重新启动不是“锁定”更改所必需的 - 这只是可能实现此目的的一种选择。

我要补充的是,您可能不应该直接在生产系统上试验更改。使用预定的重启作为预防措施,但只有在应用更改时您确定会起作用。当您的更改生效时取消计划的重启。