从那以后,我已经阅读了一些东西,并提出了以下设计——尚未在实践中进行测试,但它可能会按照我的意愿去做。
背景
此设置背后的“支持技术”是Btrfs,我们利用其中的三个功能:
- 写时复制 (COW):当文件被复制时,Btrfs 最初不会复制有效负载——两个文件都指向磁盘上的同一区域,并且只有当两个文件之一被更改时才会创建真正的副本。这使得文件的复制非常容易和轻量级。
- 子卷:这些是卷中的卷。子卷固有地与它们的父卷一起安装(显示为常规目录)或以它们自己的方式安装。
- 快照:快照是子卷的副本,其本身就是子卷。由于 Btrfs 的 COW 特性,开销很小。如果被快照的子卷有子子卷,这些子卷将不包括在内(如果需要,请单独对它们进行快照)。快照可以是读/写或只读的。在后一种情况下,即使它们是读/写挂载的一部分,它们也是不可变的。
设置
- 创建一个 btrfs 卷来保存所有文件共享。(由于FHS指定
/srv服务特定用户数据的根目录,因此挂载点可能类似于/srv/samba或/srv/file。)使用noatime选项挂载它(这确保简单读取不会更改文件的元数据,进一步减少快照的开销)。
- 对于每个文件共享,创建一个 Btrfs 子卷。它们可以具有与其父对象相同的挂载属性,因此不需要单独挂载。
- 运行定期(每晚,每小时 - 取决于您的需要)cronjob,它创建子卷的只读(重要!)快照,作为后者的子卷。例如,今天的每日快照
/srv/file/joe进入/srv/file/joe/snapshot/daily-20180317. 可选地,该脚本可以删除超过特定年龄的快照。可以在此处找到示例。
- 如果可能,请采取以下额外措施:
- 将特权帐户(例如具有
sudo权限的帐户)与用于访问网络共享的帐户分开
- 限制普通用户在系统上运行命令的能力(禁止 shell 登录或将命令限制在最低限度)。
- 锁定 root 帐户(强制使用 sudo)。
- 需要用户的密码才能进行特权操作。
作用机制
加密其范围内所有内容的勒索软件工具将无法简单地加密快照。它需要:
- 请注意,它是针对网络共享运行的(已知的加密木马也会加密云存储,因此这不是真正的障碍)。
- 请注意,文件是从 Btrfs 磁盘提供的,并且能够检测其子卷结构。
- 提升其在服务器上的权限以处理 Btrfs 子卷(例如,删除快照或用读写快照替换它们)——这是我们将文件共享用户帐户与特权帐户分开的主要原因。
如果做得正确(即三个先决条件中的至少一个对攻击者来说足够昂贵),那将大大提高标准。
如果恶意软件来袭,将会发生以下情况:
- 文件可能会被加密,但快照不受影响。恢复点目标等于快照之间的时间,即至多,自上次快照以来所做的修改将丢失。这可以通过增加快照频率来解决(例如,从每天到每天多次、每小时或什至每小时多次)。
- 由于 Btrfs 的 COW 特性,加密文件会占用额外的空间。如果磁盘接近容量,它可能会在加密完成之前用完空间。这可能会阻止对剩余文件的加密(确切的行为取决于木马,所以不要指望它)。
附加功能
定期备份您的系统——快照只是对此的补充。如果您需要从由故障软件、用户错误或某些恶意操作导致的数据损坏中恢复,快照很有帮助,但如果您的磁盘坏了,它们就没有用了。
这种设置可以通过检测可疑活动和触发对策来进一步补充。
可疑活动的迹象是:
- 文件被大规模覆盖,看似系统化(尽管有些木马只针对某些文件类型)
- 被覆盖文件内容的高熵(简单测试:压缩节省的空间接近于零——尽管一些木马只加密文件的一部分,这种方式更难检测)
- 更改您通常不希望更改的文件(例如几年前的假日照片,甚至为此目的创建的蜜糖文件 - 但是,如果木马恰好在加密了大部分文件后才加密这些文件,则效果会降低其余的部分)
潜在的行动包括:
- 触发警报,以便管理员可以查看它。
- 阻止用户、可疑 IP、整个服务器、一组服务器、所有您认为合适的服务器对共享的写访问——这将阻止木马继续其工作,但代价是阻止一些合法用途。
- 如果阻止写入访问不切实际,请限制服务器的带宽(也可能有选择地)——这至少会减慢加密过程,同时允许继续合法使用,尽管会降低性能。
- 禁用快照轮换——如果这是一次攻击并且已经持续了一段时间,您可能无法从最新的快照中恢复所有内容,但可能需要及时返回。
- 如果您有适当的取证程序,请酌情触发这些程序。这很可能包括保存证据的程序,例如禁用日志轮换或启用更详细的日志记录。