Linux:检测/阻止系统修改或使用单用户模式

通过备份解决scheme工作,可以使用一些安全协助。 请看下面。

这个过程

对于我们的编辑业务,我们有一个非现场备份服务器,我们每晚使用rsync通过SSH进行更新。 备份脚本:

  • 唤醒远程机器
  • 装入encryption的卷
  • 分析本地RAIDarrays上的文件与备份机器上的单个LUKSencryption磁盘相比较
  • 将它们拆分,以尽可能less的数据传输来适应这些备份驱动器
  • Rsync的的
  • 卸载encryption的卷
  • 进行SMARTtesting来解决问题
  • 使远程机器进入睡眠状态

问题

现在进程正在进行,所有的数据传输都被encryption,并且驱动器本身被encryption(系统本身除外),并通过远程服务器发送LUKS密码。 这主要是安全的,但理论上远程站点的恶意工作人员可能会闯入系统并通过如下方式监视stream量:

  • 启动到单用户模式
  • 更改root密码
  • 正常启动
  • 以root身份login
  • 更改密码文件,并隐藏痕迹
  • 当脚本远程login并安装驱动器时,监视所有的启动,文件名,访问文件系统

有没有一种方法可以解决这个问题,或者检测这些types的现场攻击,而不必在发送到远程服务器之前重写所有要encryption的东西(这会使我们的过程更加磁盘和/或带宽密集型,我们正在讨论许多TB数据的)。

谢谢。

这里有一些想法,让我知道这是否可行。

物理访问

假设您使用的是接近企业级的服务器,例如惠普,戴尔,那么您可以获得服务器的远程pipe理卡,以实现带外监控。 您可以设置警报,以便在下列情况下知道:

The machine is powered on. The anti-tamper switches on the enclosure are tripped. When there is a pending or active hardware problem. 

在你的情况下,你会想知道什么时候服务器上线,当你不期望。 如果远程pipe理卡变得无法访问,或者如果服务器没有预期到,则应该提醒您。 即nagios或内部脚本。

您也可以使用video监控摄像头,将video或照片发送给靠近硬件或进入房间的任何人。

文件完整性

您可以使用AIDE,Tripwire,Samhain,OSSEC等工具在远程端创build文件完整性数据库,然后将其复制回服务器(可能位于date命名文件夹中),然后比较本地副本上的数据库和远程复制。 如果某些文件或条件得到满足,那么编写禁用rsync的规则将取决于您。 你将不得不决定适合你组织需求的逻辑,在这一点上,一个人会被警告并被要求进行干预。 OSSEC也可以在您指定的目录中创build文件的差异。

在-dry-run模式下使用的Rsync甚至可以用在你的脚本中,以确定是否需要人为干预。 所以你可以比较你的本地和远程文件,看看有什么改变

从理论上讲,如果你的机器有一个TPM芯片,你可以使用它作为Trusted Boot(即将TPM芯片中的某些密钥存储在TPM芯片中,只有当MBR链到你想要的任何地方时才能加载)。 这个密钥可以用来encryption一些包含SSH密钥等信息的本地分区,这样,如果可信引导失败,SSH服务器就不能再起来了(或者整个服务器端软件,包括/etc/shadow等等。)

但实际上,设置(TrustedGRUB引导加载程序,自定义内核,决定要“测量”哪些文件)需要很多工作,这会使您的系统更新变得很痛苦(显然,对于TPM,软件的更新是无法区分的从一个邪恶的女仆攻击),这也意味着你不会只能在单用户模式(或从现场DVD)启动而不会使可信任的引导失败(除非你的密钥存储在异地作为一个备份,不要忘记把它们放入TPM中,一旦你触发了你自己的诱杀装置:)