搜索“带全盘加密的注重隐私 VPS”,通常会停在价格页上的一个勾选框。这个勾选框是真的,但它能带给你的东西比营销暗示的要窄。在加密任何东西之前,先弄清楚你要防的是谁会很有帮助,因为在一个重要的场景下,磁盘加密完全不起作用。
VPS 上的加密能保护什么,不能保护什么
VPS 是运行在别人硬件上的虚拟机。它运行时,磁盘是解锁的,加密密钥就存放在虚拟机的内存里。宿主机原则上可以读取这块内存。所以:
加密能帮你防范:
- 你的磁盘镜像或快照的副本落到了不该去的地方。
- 更换硬件后旧硬盘被退役处理。
- 有人拿到了存储或备份的访问权,却无法访问你正在运行的服务器。
加密无法帮你防范:
- 任何控制着运行中宿主机的人。
- 在你服务器上拿到 shell 的攻击者:对他来说,磁盘早已解锁。
- 服务器运行期间送达的法律要求。
这不是跳过加密的理由,而是要把它用在对的地方,别把它误当成隐身衣。
为什么不加密整个根磁盘?
你可以这么做,但之后每次重启都会停在输入密码短语的界面。你得通过网页控制台解锁,或者在 initramfs 中内置一个 SSH 服务器(dropbear)远程解锁。内核更新从此需要你在场;一次无人值守的重启就意味着服务中断,直到你登录为止。对大多数人来说,更好的折中是:系统盘照常使用,敏感数据放在一个加密卷上,开机后再解锁。
五条命令搭一个加密保险箱
文件形式的 LUKS 容器在任何 VPS 上都能用,不需要额外的磁盘:
apt install -y cryptsetup
fallocate -l 10G /srv/vault.img
cryptsetup luksFormat /srv/vault.img # set a strong passphrase
cryptsetup open /srv/vault.img vault
mkfs.ext4 /dev/mapper/vault
挂载并使用:
mkdir -p /mnt/vault && mount /dev/mapper/vault /mnt/vault
重启之后,保险箱会保持锁定,直到你再次打开:
cryptsetup open /srv/vault.img vault && mount /dev/mapper/vault /mnt/vault
再添加一个密码短语作为备用钥匙(cryptsetup luksAddKey /srv/vault.img),并把两个都存进密码管理器。两个都丢了,数据就永远没了:任何工单都无法把它找回来。
把敏感服务(数据库目录、文档存储、密码管理器的数据文件夹)指向 /mnt/vault,并让它们只在保险箱挂载之后才启动。
往往更好的做法:加密数据,而不是磁盘
磁盘加密止步于磁盘。你复制到别处的数据(备份、导出、同步)会以明文传输,除非你也对它们加密。跟着数据走的保护通常更有价值:
- 备份: restic 在上传前就会在客户端加密所有内容。
- 文件:
age -p secrets.tar > secrets.tar.age用密码短语加密。 - 应用中的机密: 使用应用自带的加密(很多密码管理器、Nextcloud 的服务端加密、数据库列级加密)。
EQVPS 是怎么做的
我们不要求身份证件,不出售你的数据,并公开一份 warrant canary。Managed Backups 在离开宿主机之前加密,在存储中也保持加密,但用的是我们的密钥,因为一份我们无法恢复的备份就不算备份。如果你需要除你之外谁都读不了的数据,请在它落盘之前自己加密。这一点在任何服务器上都成立,包括我们的。
要点
凡是你不想在泄露的快照里看到的东西,都放进加密数据卷。在源头加密备份。也别让一个勾选框说服你,一台正在运行的虚拟服务器就是一个保险箱:你手中最强的隐私工具,是根本不保存你不需要的数据。
评论
暂无评论。来做第一个吧。