我一直认为日志的最大好处是向您确认您的机器已被黑客入侵。然而,我看到黑客在互联网上吹嘘“root”服务器。是什么阻止了具有 root 访问权限的黑客删除日志以掩盖他们的踪迹?
为什么root用户可以删除日志?
为什么root用户可以删除日志?
因为您需要能够管理服务器。
是什么阻止了具有 root 访问权限的黑客删除日志以掩盖他们的踪迹?
关于本地伐木,只有他们自己的愚蠢。关于外部日志记录,他们的技能和你的。
有很多很多不同的“记录”方式。事实上,您可以将有根机器日志记录到一个单独的、隐藏的、不易被覆盖的设备上,比如我有几个 raspberry pi / arduino 记录器。
在 Linux 中,root 应该能够做几乎所有事情。在 Windows 中,同样的概念也适用;如果您对某台机器具有 root 访问权限,那么您几乎可以对该机器执行任何您想做的事情,包括删除日志。
您还可以记录到某台机器的所有连接,尤其是如果它一开始就不应该被“访问”。
您将如何了解发生了什么,以及如何规避它?
以下是查找过去 120 分钟内所有更改的方法:
find / -mmin -120 -printf '%p\t%a\n'
不错吧?明白了,黑客!Mwahahaha ...但是如果您知道自己在做什么,则可以更改这些属性,如下所示:
touch -d "24 hours ago" <file>
更糟糕的是,自动化它:
find / -print | while read file; do
touch -d "$(date -r "$file") - 24 hours" "$file"
done
但是等等,马克胡卡洛!如果所有文件最后一次编辑是在 24 小时前,那么这清楚地表明我们有一个骗子!是的,但您也可以$RANDOM
在 24 存在的地方应用。下面是一个 1-24 的数字示例:$((RANDOM % 10) + 1)
。现在它看起来并不那么容易被发现,不是吗?
但是,如果所有文件看起来都是这样,尤其是那些不应该被更改的文件呢?将范围限制在某个目录,例如/root
. 有很多方法可以在本地掩盖您的存在。
除非攻击者忘记清洗~/.bash_history
,否则你会失明。确实,如果您拥有的唯一“日志记录”是~/.bash_history
,那么如果您的攻击者至少具有中等智能,那么您就有麻烦了。只要您拥有适当的权限,就可以轻松地在每个用户帐户上删除它。
在不容易检测或修改的地方(例如外部设备)记录条目要容易得多。虽然可以使用取证来恢复攻击者的足迹,但如果您知道自己在做什么,则非常非常容易规避。这就是为什么外部日志记录是一个更好的解决方案的原因。
这就是为什么外部日志记录通常是答案的故事......请记住,还有一些方法可以规避外部日志记录。没有什么是 100% 安全的; 你只能让攻击者更难,而不是不可能。
为什么root用户可以删除日志?
因为必须有人能够对系统进行更改,即轮换日志文件、删除日志文件等。在 UNIX 中,root 传统上是这个完全特权的用户。实际上,修改日志和替换二进制文件以省略日志记录之间并没有太大区别——默认情况下,root 可以同时执行这两种操作。
是什么阻止了具有 root 访问权限的黑客删除日志以掩盖他们的踪迹?
标准配置通常根本无法阻止攻击者。一种明显的改进方法是登录到远程日志服务器,该日志服务器受到足够的保护,因此攻击者无法访问(在最简单的情况下:无法进行远程登录)。
除了 FreeBSD 之外,OpenBSD 和其他可能还有不可变或仅附加文件的想法。使用chflags,您可以通过这种方式标记日志文件,然后只能进行附加并且无法删除文件。将此功能与安全级别相结合,您可以实现只能在单用户模式下更改(删除、旋转)的日志文件。
您可以使用 SELinux 等替代或扩展安全机制来确保“普通”root 用户无法更改文件。
如果服务器的 root 用户被入侵,该用户当然可以删除系统上的任何文件(包括日志)。但是,在大多数企业中,日志并不存储在本地。
如果日志存储在本地并被删除,为了确定泄露的程度,可以进行取证分析以恢复文件。
但是,大多数企业 Web 服务器和企业环境都使用某种类型的日志管理——这可以包括标准工具(如 Syslog 和 SNMP)以及专有日志管理软件(如 Splunk)。
当使用这些系统时,攻击者必须破坏日志管理系统及其任何备份才能删除日志并掩盖其踪迹。
可以肯定的是,可以以root身份删除文件;但这并不是掩盖自己踪迹的某种方式。
因为 WORM(一次写入,多次读取)设备仍然不常见。在安全和取证非常重要的系统中,这些设备用于实时记录日志,但无法删除,即使是 root 用户。为了能够安全地实现这一点,它必须是一个硬件限制。不太安全,它可能会将 API 暴露给仅具有写入新文件和读取旧文件的操作的软件服务。如果服务器还有一个硬件设备或管理程序,它基本上记录了系统的每一次更改,那么隐藏你的踪迹将非常困难。