Linux 下有类似 windows 磁盘加密工具 bitlocker 吗?

2022-09-25 02:25:07 +08:00
 Cify

有几台服务器需要托管到 IDC,担心 IDC 人用单用户模式进去修改资料, 打算用类似 bitlocker 方式来加密磁盘, 请问有类似的工具吗?

4820 次点击
所在节点    程序员
47 条回复
Cify
2022-09-25 09:16:35 +08:00
@eason1874 磁盘加密是最需要考虑的,这样就算别人拿到硬盘读取也无法解密内容.

同时也要考虑到单用户问题, 这 2 个考量都是我开此帖请教的目的.
Greenm
2022-09-25 09:35:01 +08:00
只要能硬件接触你的机器,极端情况下你怎么加密都没用,内存中的东西都是明文。

所以你既然把机器托管到别人那,就只能考虑常规情况的安全了,极端情况不用考虑,那个你防不了。
flexbug
2022-09-25 09:44:01 +08:00
托管 IDC 还考虑这问题,做好服务器监控,重启能看不见吗,IDC 有自己的管理制度,我这做金融行业 IDC 托管都不考虑你这问题
Cify
2022-09-25 10:13:59 +08:00
@Greenm
@flexbug 大概能防住就可以了... 难道赤裸裸的面对潜在风险吗?
eason1874
2022-09-25 10:42:00 +08:00
@Cify 单用户模式添加密码,编辑 grub conf 就可以添加

机箱内加开盖报警器,可以问卖你服务器的人有没有,没有的话贴几个易碎标签得了,异常的时候看下易碎标有没有坏就知道有没被拆过了。像 #23 说的,异常重启确实罕见,为几年一遇的事情考虑太多有些多余,这事发生的概率还没有服务器被黑的概率大 😂

要是底层系统选择全盘加密,用远程控制卡什么的输入密码好了,反正几年未必重启一次,用 TPM 没便利多少反而提高风险。如果安装虚拟化环境,可以选择底层系统不加密,在上面运行的虚拟机系统全盘加密,这样同样能确保业务数据不明文保存在硬盘
Cify
2022-09-25 10:49:49 +08:00
@eason1874 我觉得底层也加密, 运行虚拟机系统全盘也加密基本就是万无一失了.

单用户模式基本都是因为 root 密码忘记了才采用的, 这也相当于一个机房有人可以随时进我的系统, 为消除隐患所以单用户模式一般禁用.
duke807
2022-09-25 11:15:04 +08:00
可以看看我这个小脚本:
https://github.com/dukelec/cde/blob/master/tools/aes-mount.sh

可以输入密码解密
不解密的状态,传输也会比较安全
PendingOni
2022-09-25 11:33:34 +08:00
使用加密狗?
直接硬件加密了
malagebidi
2022-09-25 11:37:16 +08:00
单用户模式进去修改资料太麻烦了,直接把硬盘拔出来整个拷贝到一个新硬盘,再慢慢折腾。
Osk
2022-09-25 12:07:54 +08:00
个人见解:
安全没有绝对的安全, 你唯一能做到的只有保证付出较低的成本来拔高攻击者的成本, 让攻击者无利可图自己放弃, 原因解释一下:

给单用户模式设置密码, 或者阻止单用户模式:
属于预防只会百度的初级用户. 实际没啥用, 直接启动第二个系统或者拔盘破解;


使用 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 了,只要不调用显卡或者其他硬件外设, 一切都还好.
yanqiyu
2022-09-25 12:10:56 +08:00
要防 IDC 偷数据+数据很重要的话至少要实现
secure boot (建议自签名 unified kernel image ,保证 initramfs 镜像完整性)
fTPM+PIN (最好加密所有盘,只加密数据的话有离线被修改系统,注入恶意程序的可能,之所以用 TPM 是为了保证固件 /kernel/initramfs/安全启动设置没被修改,不然别人拿个假的 initramfs 就骗了你的密码)
SME 之类的内存加密技术,避免冷冻内存攻击

最糟糕的情况是别人拿一个假机器,骗了你的 PIN ,但这时候他虽然能把你的服务器开机进系统,但是他依然无法绕过系统的登陆限制,除非系统本身出安全问题,否则还可以认为是安全的

@ryd994 #6 最极端的情况下攻击者可以修改你的明文部分的系统等你输密码的时候偷走你的密码
@Greenm #22 内存加密在近些年的服务器平台上已经很成熟了,也没什么明显感知的性能下降
Osk
2022-09-25 12:19:35 +08:00
对了, 关于 TPM 和 pin:

Bitlocker 的 pin 不是密码, 他应该只是最终发给 TPM 的一个检验因子, 估计会是 PCR11 的某个因子 (乱猜测的, 没有深入了解过).
之前看过相关文档好像是这么说的.


这个 PIN, 就算被人知道了, 也可以在一定时间内保证你的数据安全:
只有这个 pin 是没有用的, 这个 pin 是 tpm 的一个校验因子, 只有其它校验因子, 比如 pcr7 等全部符合要求要求才能解封 tpm 中的密码. (不一定正确, 没有找到明确的文档说明目前常用的 PCR11 到底有哪些东西).


一定时间是指:
攻击者利用 pin 启动进入系统, 但他什么也做不了, 因为 Windows 账户密码阻止了他进一步的操作, 但万一过一段时间后, 你的系统被发现有没有修复的安全漏洞, 此时, 攻击者就能利用漏洞进入你的系统. 所以说, 这个是 "一定时间内" 的安全的.
SD10
2022-09-25 12:21:29 +08:00
记得保存 recoverykey ,刚刚遇到一个怎么都找不到 key 的案例,什么都找不回来了🥲
yanqiyu
2022-09-25 12:21:35 +08:00
@Osk #30 你提到的攻击方式应该在 #31 都可以规避?包括 TPM 总线的监听可以通过使用 fTPM 实现,这时候 CPU core 和 TPM 的沟通就在 SOC 内部完成了
yanqiyu
2022-09-25 12:28:28 +08:00
@yanqiyu 查了下,大概也不是完全没办法,可以让 initramfs 从 tpm 签 hostkey ,这样也能防输入 pin 的 sshsession 被 mitm 了
Osk
2022-09-25 12:34:08 +08:00
@yanqiyu 确实, 大部分的 fTPM 攻击难度要高得多, 但一些机器还是有在用 dTPM 的.

我个人觉得, 普通人防护到 TPM + secure boot 这一步就可以认为足够了. 再搞下去可用性就大大降低, 如果数据真有这么值钱的话, 也不适合放在不受信任的物理位置了.
shijingshijing
2022-09-25 13:35:58 +08:00
@Jirajine 现在 Trust Chain 的建立是从 SoC 内部开始,SoC 不仅包含最初上电时候运行的 bootrom ,还包含硬件 key 。然后才开始验证 BIOS/EFI/Bootloader 的完整性,然后将控制权转交给 BIOS/EFI/Bootloader ,然后开始向后传播。

这个过程基本上都分 Two Stages ,第一个 Stage 完全在 SoC 内部完成,这样要 Hack 进去,攻击面非常有限,只能在 Silicon 这个 level 进行,除非是找到 bootrom 的 bug ,其他外部措施几乎没有可能性;第二个 Stage 才开始用到系统 RAM ,PCI-E 等 SoC 片外的资源。
RichardY
2022-09-25 13:38:44 +08:00
有没有办法在输入错误密码时候硬盘自毁?
RichardY
2022-09-25 13:39:00 +08:00
@RichardY 输入特定的密码时
Jirajine
2022-09-25 15:06:05 +08:00
@shijingshijing 是的呀,trusted computing 从硬件开始 cryptographically 阻止 Root of Turst 以外的实体(比如购买了设备的最终用户)对系统的任何修改。
这种 trust chain 之下如果用户不被 trust ,那设备简直就是租的,而非拥有的。欧美国家反垄断应该立法使用 trusted computing 的设备必须 trust 购买者,或禁止各种应用在非 trusted 环境下拒绝工作的行为。
现在很多不能解锁的 Android 设备连内网私有 CA 签名的 HTTPS 服务都不能用,能解锁的很多应用也能通过 TEE 验证环境不可信从而拒绝工作。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/882712

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX