我建立了一个非常简单的服务器,并尝试使用一些我认为还不错的工具和指南来确保它的安全。
我想到了使用 AIDE,它作为入侵检测系统的实现速度很快。我每天都会进行检查,它会将冻结系统状态、数据库和当前系统状态之间的文件系统级别不匹配的结果通过邮件发送给我。效果很好。
下面我假设 AIDE 数据库放在只读设备上,例如写锁定的 USB 驱动器。
现在我想到了一些场景。攻击者以某种方式进入系统并注意到 AIDE 正在系统上运行。这个聪明的家伙已经有了一个不错的工具,它可以替换 AIDE 的可执行文件,这样他的工作就不会通过邮件显示给我,但正常的系统更改(如日志文件更改)会显示出来。应该是可行的。或者他只需更改 AIDE 配置,这样他的更改就不会被检查到。
鉴于此,我认为 AIDE 只是攻击者必须应对的某种负担,但实际上并没有给他带来太大的伤害。
我错了吗?
AIDE 是否只能保护我的系统免受没有适当权限的攻击者的攻击?
每天进行一次以上的检查是否有意义?
(请记住这是大量的磁盘 IO)
答案1
我错了吗?
你的分析是正确的,但我认为这里存在细微差别。
每天进行一次以上的检查是否有意义?
检查频率决定了变化检测的粒度。频率越高==检测变化越快,但对你来说什么时间才是最重要的?在我自己的工作中,每天检查是正常的,但当系统有大量磁盘需要扫描时,使用频率就会降低。
AIDE 是否只能保护我的系统免受没有适当权限的攻击者的攻击?
这是一个重要的问题。
首先,要认识到这只是一个侦查控制。它不会修复任何问题,只会提醒您有些事情不对劲。它提供的“保护”容易出现误报和漏报——要么它会提醒您不关心的更改(这是一个调整问题,可以通过其他方式解决),要么它不会提醒您关心的更改,通常是因为它看不到它 [因为工具已被更改或数据库已被更改],或者因为更改被设计为对工具不可见(例如,他们巧妙地设计了具有相同大小和哈希值的更改)。我将在下文中忽略最后一种可能性,因为这通常也是一个调整问题。
回到问题。AIDE 可以扫描系统中的更改。我认为许多人将它与主机本身上的 DB 和扫描引擎一起使用,这样可以毫不费力地识别更改。这在变更代理不知道或没有权限更改 AIDE 二进制文件和数据库的情况下很有用。实际上,这是一种非常常见的情况,并且在 99% 的情况下,如果你没有拥有国家资源的 APT,它确实很有用。邮寄更改报告,甚至重置数据库,这样你就不会报告两次更改。生活很美好。
正如您所指出的,如果恶意变更代理有权访问 AIDE 二进制文件和/或数据库和/或从磁盘打开文件的库(即 AIDE 打开文件,并且库会说“没有更改,先生!”无论磁盘是什么样子),那么您也运气不佳。在这种 APT 场景中,您可以做一些事情。例如,许多人将数据库存储在离线存储的一次性写入媒体上,并且仅在维护窗口期间安装 AIDE 二进制文件、DB 等。更好的方法是:通过操作系统不可见的机制克隆实际磁盘,并从存储 AIDE 二进制文件、DB 和磁盘访问库的单独黄金副本主机启动系统;安装磁盘,然后在该克隆副本上运行报告。我怀疑可能仍存在可能导致误报的情况,但我暂时没有看到。
这一切都取决于你愿意做多少工作,因为这只是侦探控制。你的对手是谁?你有多少钱?诚信受损会有什么影响?还有其他方法吗?
AIDE 是一款非常有用的工具。我围绕它编写了其他工具。但它并不完美。