6. 入侵检测

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

6.1. 入侵检测系统 (IDS)

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

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

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

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

RPM 用户可以使用rpm -Va获得有些类似的结果,它将验证所有软件包,但没有所有相同的功能。 例如,它不会注意到添加到大多数目录的新文件。 也不会检测到扩展属性已更改的文件(例如chattr +i,man chattr 和 man lsattr)。 为了使其有所帮助,需要在全新安装后完成,然后在每次升级或添加任何软件包时完成。 示例

 
 # rpm -Va > /root/system.checked

 

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

Debian 用户有一个类似的工具 debsums

 
 # debsums -s > /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 用户可以使用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/ 找到。 还有一个工具集合可用,恰如其分地称为 “验尸官工具包” (TCT)。

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

6.3. 恢复受损系统

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

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

要采取的步骤,按以下顺序

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