个人见解:
安全没有绝对的安全, 你唯一能做到的只有保证付出较低的成本来拔高攻击者的成本, 让攻击者无利可图自己放弃, 原因解释一下:
给单用户模式设置密码, 或者阻止单用户模式:
属于预防只会百度的初级用户. 实际没啥用, 直接启动第二个系统或者拔盘破解;
使用 luks 加密:
属于常规操作, 能阻止一部分人, 但需要往下看: 如何阻止被窃取密码和无人交互启动.
initramfs 中 ssh 去解锁: 我不知道怎么吐槽 wiki 上面的这个建议, 遍地是漏洞:
1. 如果使用预先生成的 sshd 证书, 攻击者轻松中间人;
2. 如果每次启动生成 sshd 证书, 根本不好验证有没有被中间人.
当然, 可能我理解有误.
使用 secure boot 保护启动组件:
注意: 大部分 linux 的 secure boot 不验证 initramfs, 你要用这种方法请把 kernel + initramfs + kernel command line 一起打包成一个 efi 文件签名, 最好不要用 grub 等中间加一道.
如果你的机器能轻松重置固件设置, secure boot 属于废物, 毕竟他不像 surface 那样关闭 secure boot 会红屏警告. 攻击者可以重签安全启动证书, 重新配置主板证书链, 你还不好发现...
但有一说一, 到这一步了, 使用 secure boot 保护 kernel + initramfs 已经能挡住不少人了.
使用 tpm 解锁 luks:
不用交互自动启动. 不知道现在 linux 对此支持如何, 以前一团糟.
但是: 目前的 TPM 是挂在 LPC 总线上的, 硬件黑客低成本就能完成攻击窃取密码.
tpm 能阻挡相当大比例的攻击, 等未来微软推广开新的安全处理器规范后, 从 LPC 窃取密码也许不再可能, TPM 的一个大漏洞被堵上.
硬件层面实际上漏洞很多, 比如 cold boot attack 攻击, 直接 dump 内存; 主板固件安全不到位等等等等问题挺多的.
但你可以认为: 使用 secure boot + tpm 已经可以认为比较安全了, 毕竟要攻击这一套, 算是比较高级玩家玩的了, 除非你的数据足够值钱, 大佬才没空破解你的硬件呢.
说会本题:
如何在不安全的环境中托管 Linux 服务器:
之前我也有这个需求, 还在 v 站多次发帖问过, 比如:
https://www.v2ex.com/t/803782 最终结论: 放弃, 我换成 Windows Server + Hyper-V 跑 Linux 了,只要不调用显卡或者其他硬件外设, 一切都还好.