抗勒索软件的 Linux Samba 文件服务器

信息安全 linux 勒索软件
2021-09-12 04:36:18

想象以下场景:

  • 文件保存在 Linux 服务器上,客户端通过 Samba 访问它们。
  • 其中一台客户端计算机感染了勒索软件,该软件会加密登录用户范围内的所有内容,包括服务器共享上的文件。

我很好奇是否有任何解决方案(除了定期备份)可以完全轻松地从此类攻击中恢复。

我想到的粗略设计将基于某种快照/版本管理:

  • 每当更改或删除文件时,请在某处保留旧版本的副本。
  • 这些以前的版本对普通用户来说是只读的,保护他们免受客户端计算机上运行的任何类型的勒索软件的篡改。
  • 以前的版本可以通过特殊的路径获得,例如以前的版本/home/john/path/to/file.odt会在/home/john/path/to/~snapshot/20161120_163242/file.odt.
  • 某种将整个共享恢复到早期状态的机制。
  • 可选地,检测可疑活动(例如正在读取大量文件、创建类似大小的新文件和删除原始文件或大规模修改文件)并触发适当操作(提醒管理员、阻止写入访问)的启发式方法)。
  • 保护不应仅仅依赖于已知勒索软件的特定特征——虽然这些特征可能对那些特定的特洛伊木马有效,但它们很容易对未来以不同方式实施的勒索软件完全无用。

有没有做这种事情的软件,在 Linux 上运行并且是 FOSS?

3个回答

我认为备份是您唯一确定的选择。您建议的解决方案基本上包括进行特殊备份;我建议您只保留几个(至少两个)完整备份。然后将问题简化为检测勒索软件在您的文件上运行并从上次良好的备份中恢复。您可以使用重复数据删除备份来节省空间。走备份路线的好处是

  1. 你引入了更少的复杂性(没有额外的系统只是为了勒索软件)
  2. 您提高了备份例程的质量——一旦您将警报和恢复自动化,您就已经部署了很多东西来使备份恢复变得轻而易举。这不仅适用于勒索软件,还适用于更广泛的故障类别。

至于检测勒索软件,这很容易:加密文件看起来都是随机数据,因此您可以简单地对每个文件进行统计测试(字节的平均分布?不能使用 zip 压缩?等)并计算看起来随机的文件数量。

目前你的主要敌人是 Locky:

在此处输入图像描述

本文详细介绍了使用Fail2Ban通过检测锁定的赎金票据来做你想做的事:

[Definition]

failregex = smbd * \.. \ IP = <HOST> \ | * \ locky $.

. Smbd * \. \ IP = <HOST> \ | * _ Locky_recover_instructions \ .txt $

从那以后,我已经阅读了一些东西,并提出了以下设计——尚未在实践中进行测试,但它可能会按照我的意愿去做。

背景

此设置背后的“支持技术”是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、整个服务器、一组服务器、所有您认为合适的服务器对共享的写访问——这将阻止木马继续其工作,但代价是阻止一些合法用途。
  • 如果阻止写入访问不切实际,请限制服务器的带宽(也可能有选择地)——这至少会减慢加密过程,同时允许继续合法使用,尽管会降低性能。
  • 禁用快照轮换——如果这是一次攻击并且已经持续了一段时间,您可能无法从最新的快照中恢复所有内容,但可能需要及时返回。
  • 如果您有适当的取证程序,请酌情触发这些程序。这很可能包括保存证据的程序,例如禁用日志轮换或启用更详细的日志记录。