我的目标是配置一个使用 systemd 的“封闭/黑匣子”Linux,但根本不可能进行任何类型的交互式登录。
我不是在谈论只是关闭某些配置选项来关闭交互式登录,我想知道是否有一种方法可以使系统在任何情况下都无法登录,因为机器上没有软件允许登录。
那可能吗?
答案1
作为一个 StackExchange 问题,并且细节很少:不。作为配置步骤很可能无法做到这一点。
您可以删除少量关键链接,但不能彻底删除。
通常,您不会删除所有交互式 shell 解释器,因为您需要一个来运行 shell 脚本。 systemd 项目的目标是在没有它们的情况下启动,并且它也使许多系统软件能够这样做,但仍然很难说你会绝不想要运行一个shell脚本。例如rpm
,dpkg
使用 shell 运行包安装操作。
login
( 和sulogin
) 是名为 的单个包的一部分util-linux
。一般情况下你不会删除这个包。例如,util-linux
也是提供程序的包mount
,它是 PID 1 的依赖项systemd
。因此,您必须破坏(删除)已安装包的部分内容。这通常是可以避免的,例如,如果您升级软件包,损坏将被修复,如果您想要验证软件包校验和,它将显示为警告等。
systemd/system/debug-shell.service
根据这些定义,您也必须删除。该文件也不是旨在修改或删除的配置文件,它是systemd
包的一部分。
未运行允许登录的软件将是实现这一目标的标准方法。它相当干净和有效。另一种标准技术是不创建任何具有解锁密码和(或)有效登录 shell 的用户。如果我感到偏执,我会选择后者。 (为了清洁和减少“攻击面”,以及为了冗余,前者自然会遵循)。
答案2
您可以禁用 getty 服务[email protected]
。您可以禁用sshd
.您可以禁用可能提供登录的其他服务。
您可以将每个用户的密码字段设置为/etc/shadow
,*
这样即使有允许登录的服务也没有有效的密码。