![如何使用 iptables 将自己锁在 Linux 盒子之外?](https://linux22.com/image/60423/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20iptables%20%E5%B0%86%E8%87%AA%E5%B7%B1%E9%94%81%E5%9C%A8%20Linux%20%E7%9B%92%E5%AD%90%E4%B9%8B%E5%A4%96%EF%BC%9F.png)
在里面保护 Debian 指南我读到(关于 iptables):
这些工具很容易被滥用,通过完全瘫痪对系统的网络访问而造成巨大的痛苦。远程系统管理员意外地将自己锁定在数百或数千英里外的系统之外的情况并不少见。一个人甚至可以设法将自己锁在键盘放在手指下的计算机之外。
我想知道……怎么办?
答案1
在以下情况下,您可能会将自己锁在键盘前。
如果您使用 IPTABLES 阻止所有出站网络流量。并且如果您使用某种网络身份验证(例如 LDAP 或 NIS)进行用户登录。因此,系统无法访问外部服务,因此您将无法使用这些用户 ID 登录。并且您没有其他带有密码的本地用户帐户,并且您已禁用从控制台直接 root 登录。
您仍然没有完全锁定,因为您可以将系统重新启动到单用户模式并修复您的错误。
答案2
以最简单的形式,如果登录和身份验证依赖于网络连接,同时禁用控制台登录(出于物理安全目的,也可以这样做)。
答案3
在保护计算机的同时,您可以将自己锁定在外面,因此唯一的恢复方法就是重新启动到控制台模式。在某些情况下,您将需要可启动 CD。在 BIOS 被锁定的最坏情况下,您可能也无法轻松做到这一点。
从所有控制台锁定 root 权限很简单,只需按任意顺序执行两个步骤:
- 删除或锁定 root 密码(推荐配置)。
- 编辑
/etc/sudoers
为无效配置。
在进行更改时,我总是保持一个或多个根控制台打开,并在关闭新连接之前对其进行测试。
远程访问更容易被破解,只需要阻止通过允许登录的协议进行访问即可。 (Shorewall 有一个“心不在焉的管理员”选项来帮助防止这种情况。)同样,它有助于在进行更改时保持活动根控制台打开。具有测试模式的工具也有帮助,因为当测试超时并且配置恢复时,您应该重新获得访问权限。
如果您的密码协议通过网络(NIS、LDAP 等)工作,您可以通过使用 iptables 阻止其协议来锁定所有访问。如果您的缓存正在运行,您可能不会立即注意到这一点。在注销根控制台之前,请仔细测试服务是否仍在工作。拥有本地帐户和/或密码可以帮助防止这种情况发生。
密码锁定策略也会导致问题。我听一位开发人员描述了他在实施密码策略时如何将自己锁在门外。他的第一个政策是 1 次失败和 24 小时停工。他可以让其他登录的人重新启用他的帐户。
答案4
听起来我是唯一一个这样做过的人......
如果您有一个系统,并且访问它的唯一方式是通过 SSH,那么您可以轻松地搞乱您的规则集并阻止 SSH 访问该系统,从而有效地将您自己锁定在计算机之外。
例如:
# Because it's secure
iptables -P INPUT DROP
iptables -P OUTPUT DROP
# Because you want to create a new ruleset and you've been up for 25 hours and aren't thinking straight
iptables -F
这将丢弃所有进出流量,然后刷新当前加载的规则,包括允许 SSH 流量进出盒子的规则。繁荣!你被锁在门外了。