6. 入侵检测

本节将讨论如何获得早期预警、如何在事后收到警报以及如何清理入侵尝试。

6.1. 入侵检测系统 (IDS)

入侵检测系统(简称 IDS)旨在捕获可能已通过防火墙的内容。它们可以设计为捕获正在进行的活动入侵尝试,或在事后检测成功的入侵。在后一种情况下,阻止任何损害为时已晚,但至少我们对问题有了早期的认识。IDS 主要有两种类型:保护网络的和保护单个主机的。

对于基于主机的 IDS,这是通过监视文件系统更改的实用程序完成的。以某种方式更改但本不应更改的系统文件——除非是我们自己做的——是表明出现问题的明显迹象。任何入侵并获得 root 权限的人,大概都会在系统的某个地方进行更改。这通常是首先完成的事情。要么是为了让他可以通过后门再次进入,要么是为了对其他人发起攻击。在这种情况下,他必须更改或添加文件到系统。

这就是 tripwire (http://www.tripwire.org) 等工具发挥作用的地方。Tripwire 从 Red Hat 7.0 开始包含在内。此类工具监视文件系统的各个方面,并将其与存储的数据库进行比较。并且可以配置为在检测到任何更改时发送警报。此类工具应仅安装在已知的 “干净” 系统上。

对于家庭桌面和家庭局域网,这可能不是整体安全策略的绝对必要组成部分。但它确实能让人安心,并且肯定有其地位。因此,就优先级而言,在深入研究此内容之前,请确保上述步骤 1、2 和 3 已实施并验证为可靠。

我们可以使用以下命令获得大致相同的结果rpm -Va,它将验证所有软件包,但没有所有相同的功能。例如,它不会注意到添加到大多数目录的新文件。它也不会检测到扩展属性已更改的文件(例如chattr +i,请参阅 chattr 手册页和 lsattr 手册页)。为了使其有用,需要在全新安装后以及每次升级或添加任何软件包时执行此操作。例如

 
 # rpm -Va > /root/system.checked

 

然后我们有了一个存储的系统快照,我们可以参考它。

另一个想法是以每周 cron 任务的形式运行 chkrootkit (http://www.chkrootkit.org/)。这将检测常见的 “rootkit”

6.2. 我被黑客入侵了吗?

也许您正在阅读本文是因为您注意到您的系统出现了一些 “奇怪” 的情况,并且怀疑有人入侵了?这可能是一个线索。

入侵者通常做的第一件事是安装 “rootkit”。互联网上有许多预先打包的 rootkit 可用。rootkit 本质上是一个脚本或一组脚本,可以快速修改系统,使入侵者处于控制之下,并且他被很好地隐藏起来。他通过安装常用系统实用程序的修改后的二进制文件并篡改日志文件来实现这一点。或者通过使用实现类似结果的特殊内核模块。因此,像 ls 这样的常用命令可能会被修改,以不显示他存储文件的位置。很聪明!

一个精心设计的 rootkit 可能非常有效。系统上的任何东西都不能真正信任以提供准确的反馈。什么都不能!但有时修改并不像预期的那样顺利,并给出一些不正常的提示。一些可能是警告信号的事情

有时入侵者不够聪明,忘记了 root 的.bash_history,或清理日志条目,甚至在/tmp中留下奇怪的、遗留的文件。因此也应始终检查这些。只是不一定期望它们是准确的。通常,此类遗留文件或日志条目会具有明显的脚本小子风格的名称,例如 “r00t.sh”

tcpdump 这样的数据包嗅探器 (http://www.tcpdump.org) 可能有助于查找任何不请自来的流量。解释嗅探器输出可能超出了普通新用户的掌握范围。snort (http://www.snort.org) 和 ethereal (http://www.ethereal.com) 也很好。Ethereal 有一个 GUI。

如前所述,受损的系统无疑会更改系统二进制文件,并且系统实用程序的输出是不可信的。系统上的任何东西都不能被依赖来告诉你全部真相。重新安装单个软件包可能没有帮助,因为可能是系统库或内核模块在做肮脏的工作。这里的重点是,没有办法绝对确定哪些组件已被更改。

我们可以使用rpm -Va |less来尝试验证所有软件包的完整性。但同样不能保证 rpm 本身没有被篡改,或者 RPM 依赖的系统组件没有被篡改。

如果您的系统上有 pstree,请尝试使用它来代替标准的 ps。有时脚本小子会忘记这个。但也不能保证这是准确的。

您还可以尝试查询/proc文件系统,其中包含内核了解的有关正在运行的进程的所有信息

 
 # cat /proc/*/stat | awk '{print $1,$2}'
 
 

这将提供所有进程和 PID 号码的列表(假设恶意的内核模块没有隐藏这一点)。

另一种方法是访问 http://www.chkrootkit.org,下载他们的 rootkit 检查器,看看它说了什么。

有关取证问题的有趣讨论可以在 http://www.fish.com/security/ 找到。还有一个工具集合可用,恰如其分地称为 “The Coroner's Toolkit” (TCT)。

请阅读下文,了解从入侵中恢复的步骤。

6.3. 夺回受损系统

所以现在您已经确认了入侵,并且知道其他人拥有 root 访问权限,并且很可能有一个或多个隐藏的后门通往您的系统。您已经失去了控制。如何清理并重新获得控制权?

除了完全重新安装之外,没有万无一失的方法可以做到这一点。无法有把握地找到所有可能被修改的文件和后门。尝试修补受损的系统可能会冒着虚假安全感的风险,并且实际上可能会加剧已经很糟糕的情况。

要采取的步骤,按此顺序

此时,不建议使用任何可能在线提供的 rootkit 清理工具。它们可能在大多数情况下都能正常工作。但再说一次,如何绝对确定一切都安好,并且所有入侵痕迹都已消失?