本节将讨论如何获得早期预警,如何在事后收到警报,以及如何清理入侵尝试。
这就是 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”。
您可能正在阅读本文,因为您注意到您的系统出现了一些 “奇怪” 的情况,并且怀疑有人进入了? 这可能是一个线索。
精心设计的 rootkit 可能非常有效。 系统上的任何东西都不能真正信任以提供准确的反馈。 没有什么可以信任! 但有时修改不如预期的那么顺利,并给出一些不正常的暗示。 一些可能是警告信号的事情
Login 行为异常。 也许没有人可以登录。 或者只有 root 用户可以登录。 任何 login 异常都应该引起怀疑。 同样,添加或更改密码的任何异常情况也应引起怀疑。
系统实用程序运行速度较慢、笨拙或显示奇怪且意外的结果。 可能被修改的常用实用程序有:ls、find、who、w、last、netstat、login、ps、top。 这不是一个确定的列表!
名为 “...” 或 “.. ” (点点空格)的文件或目录。 在这种情况下,这是一个确定的赌注。 具有 haxor 风格名称的文件,如 “r00t-something”。
这正变得越来越普遍的脚本小子伎俩。 实际上,在可疑系统上运行的一个快速测试(以 root 身份)
/usr/bin/lsattr `echo $PATH | tr ':' ' '` | grep i-- |
这将查找 root 的PATH中任何 “不可变” 文件,这几乎肯定是麻烦的迹象,因为没有标准发行版以这种状态交付文件。 如果上面的命令返回任何内容,则计划完全恢复系统(见下文)。 快速健全性检查
# chattr +i /bin/ps # /usr/bin/lsattr `echo $PATH | tr ':' ' '` | grep "i--" ---i---------- /bin/ps # chattr -i /bin/ps |
像 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)。
请阅读下文,了解从入侵中恢复的步骤。
现在您已经确认了入侵,并且知道其他人拥有 root 访问权限,并且很可能有一个或多个隐藏的后门通往您的系统。 您已经失去控制。 如何清理并重新获得控制权?
除了完全重新安装之外,没有万无一失的方法可以做到这一点。 无法有把握地找到可能已留下的所有修改后的文件和后门。 尝试修补受损的系统可能会带来虚假的安全感,并且实际上可能会加剧已经糟糕的情况。
根据情况的需要和恢复系统可用的时间,最好尽可能多地了解攻击者是如何进入的,以及为了堵塞漏洞并避免再次发生而做了什么。 这可能非常耗时,并且并非总是可行。 并且可能需要比典型用户拥有的更多的专业知识。
备份重要数据。 不要在备份中包含任何系统文件和系统配置文件,例如inetd.conf。 将备份限制为仅个人数据文件! 您不希望备份,然后恢复可能打开后门或其他漏洞的内容。
从头开始重新安装,并在安装期间重新格式化驱动器 (mke2fs) 以确保没有残余物隐藏。 实际上,更换驱动器不是一个坏主意。 尤其是,如果您想保留受损数据以供进一步分析。
从备份恢复。 在全新安装之后,是安装 IDS(入侵检测系统)的最佳时机,例如 tripwire (http://www.tripewire.org)。
应用您的发行版的所有更新或补丁。 检查您的供应商网站以获取与安全相关的通知。
重新检查您的系统是否存在不必要的服务。 重新检查您的防火墙和访问策略,并收紧所有漏洞。 使用新密码,因为这些密码很可能被盗。
重新连接系统 ;-)
此时,不建议使用可能在线提供的任何 rootkit 清理工具。 它们可能在大多数时候都能正常工作。 但同样,如何绝对确定一切安好,并且所有入侵痕迹都已消失?