Linux 开源入侵检测工具

作者:Bobby S. Wen

作为 ISP,由于我们网络的开放性,我们最容易受到攻击。与可以限制访问和可以回溯用户的企业网络不同,我们必须持续监控攻击,更重要的是,成功的入侵。我们使用多种开源安全工具来监控入侵和系统 compromise(妥协/入侵)。这些工具已警示我们注意攻击,并使我们能够快速响应系统 compromise(妥协/入侵)造成的入侵。

简介

系统管理员以训练有素的偏执狂而闻名。他们不仅关注更新系统以防范最新的程序漏洞、黑客工具和儿童脚本,而且还必须警惕未知或未记录的安全漏洞和利用。大多数优秀的系统管理员可以通过使用标准系统加固技术(“安装后安全程序”,Linux Journal,1999 年 12 月)来保护其系统免受低级破解者的攻击。未知漏洞和知识渊博的破解者构成了更大的危险。

入侵检测和恢复是所有系统安全的目标。它通常涉及寻找系统 compromise(妥协/入侵):检查日志中是否有异常活动、异常连接以及系统文件的更改。当然,为了使入侵检测和恢复有效,必须先保护系统安全。如果系统管理员不断发现有人闯入他们的系统并且不得不从中恢复,他们将不得不加班加点地工作。

系统管理员可以使用许多开源工具来协助完成此过程。

入侵检测

我们在 cron 作业中使用 Tiger、Logcheck 和 Tripwire 来持续监控系统是否存在入侵和渗透。它们会警示我们注意对我们系统的攻击,并使我们能够快速响应攻击或限制损害。我们还使用其他安全程序,但为了使本文易于管理,我们将专注于稳定版本的程序。

tiger-2.2.4

Tiger 是一组脚本,用于搜索系统中可能允许未经授权的用户更改系统配置、获得 root 访问权限或更改重要系统文件的弱点。系统管理员可能还记得 Tiger 是 COPS(计算机 Oracle 和密码系统)的继任者。

Tiger 最初是在德克萨斯 A&M 大学开发的,可以从 net.tamu.edu/pub/security/TAMU 下载。目前有多个版本的 Tiger 可用:tiger-2.2.3p1,最新的 Tiger,带有更新的 check_devs 和 check_rhost 脚本;tiger-2.2.3p1-ASC,tiger-2.2.3p1,包含来自北极地区超级计算机中心的贡献;tiger-2.2.4p1,tiger-2.2.3,带有 Linux 支持;以及 TARA,Tiger 分析研究助手,tiger-2.2.3 的升级版,来自高级研究公司。

Tiger 扫描系统中的 cron、inetd、passwd、文件权限、别名和 PATH 变量,以查看它们是否可以用于获得 root 访问权限。它检查 inetd、主机对等项和 PATH 中的系统漏洞,以确定用户是否可以获得对系统的远程访问权限。它还使用数字签名(使用 MD5)来确定关键系统二进制文件是否已被更改。

Tiger 由可以一起或单独运行的脚本组成。这使系统管理员可以根据系统大小和配置来确定检查其系统的最佳策略。Tiger 脚本文件可从 ftp.linuxjournal.com/pub/lj/listings/issue78 下载。

Tiger 可以用作交互式进程,也可以配置为使用 tigerrc 文件运行任何或所有脚本。此外,站点文件必须包含 Tiger 可能使用的文件的位置,例如 Crack 和 Reporter。发行版中包含示例 tigerrc 和站点文件。我们通常从 tigerrc 和 site-sample 文件中打开所有内容开始,并在初始审计后自定义要运行的脚本。可以通过在 Tiger 目录中键入 ./tiger 来运行 Tiger。将 Tiger 用作交互式操作将运行 Tiger 脚本,而无需考虑完成所需的时间。

可以使用 tigercron 脚本在一段时间内分散单个检查,而不会使您的 crontab 文件混乱。Tigercron 使用 cronrc 文件以类似于 crontab 的方式调度 tiger 脚本。Tigercron 与传统的 crontab 进程略有不同,因为 tigercron 每小时在 crontab 中运行一次,然后 tigercron 使用 tiger 目录中的 cronrc 来确定要运行哪些脚本。tigercron 的一个优点是它被配置为仅在与上次扫描相比发生更改时才通过电子邮件发送安全报告。这可以防止系统管理员的电子邮件因状态信息而变得混乱,并为系统管理员创建一个危险信号,表明系统已更改,并且每当生成 Tiger 电子邮件时都要注意可能的入侵者。

Tiger 完成后会输出安全报告。输出很详细,并以神秘的错误消息为前缀。幸运的是,Tiger 带有一个实用程序来解释错误消息,称为 tigexp。可以通过运行 tigexp -f <report filename> 来获得每个错误消息的解释。

Tiger 2.2.4 已更新为可与使用 2.0.35 内核的 Red Hat Linux 一起运行。这对于使用 Red Hat 5.1 且尚未升级的人来说非常有用。使用其他 Linux 版本或已升级的系统将必须使用 util/mksig 脚本更新其二进制签名文件。这允许在升级或安装新程序时更新 Tiger 二进制检查。

Tiger 是我们系统完整性监控器的重要组成部分。它主动检查 root 可能被 compromise(妥协/入侵)的方式,并扫描重要系统文件中的更改。过去,由于 Tiger,我们已收到系统入侵警报。

Logcheck 1.1.1

Logcheck 是一个扫描系统日志文件并检查异常活动和攻击的脚本。这假设入侵者尚未获得主机的 root 权限,并且无法更改日志文件。保持良好日志文件的一个大问题是收集了大量信息。在大型系统上手动扫描日志文件可能需要数天时间。Logcheck 通过对记录的信息进行分类并将其通过电子邮件发送给系统管理员,从而简化了系统日志监控的任务。Logcheck 可以配置为仅报告您想要看到的信息,而忽略所有您不想看到的信息。Logcheck 可以从 www.psionic.com/tools/logcheck-1.1.1.tar.gz 下载。它是 Abacus 项目(入侵防御系统)的一部分,但是,并非所有其他组件都已发布稳定版本。Logcheck 基于一个名为 frequentcheck.sh 的日志检查程序,它是 Gauntlet 防火墙软件包的一部分。

logcheck.sh 脚本与关键字文件一起安装到 /usr/local/etc/ 中。该脚本可以从 ftp.linuxjournal.com/pub/lj/listings/issue78 下载。

Logcheck 首先扫描日志文件以查找活动的系统攻击,然后是安全违规,然后是异常系统事件。然后,Logcheck 通过电子邮件将报告发送给 root 用户(请参见图 1)。

Open-Source Intrusion-Detection Tools for Linux

图 1. Logcheck 操作

在此示例 Logcheck 电子邮件中,我故意从不允许连接的主机登录到我的系统,然后在我的 sendmail 端口上使用了一些常见的黑客探测命令。Logcheck 检测到使用 sendmail 收集用户 ID 的尝试,并将其列为“活动系统攻击警报”。它在“安全违规”部分中发现用户 ftp 进入系统;他们可能拼错了其合法的用户 ID,或者可能是破解者在探测系统以查找用户 ID。它还发现系统尝试连接到我们,但不允许连接。

最后,在“异常系统事件”中,显示任何不寻常的但未被明确忽略的内容。Logcheck 创建一个 .offset 文件来标记它已扫描的日志部分,以避免重复处理先前处理过的信息。

Logcheck 基于以下假设:syslog 配置为记录尽可能多的信息,并且如果可能,将所有活动记录到一个文件中以便于解析。仅解析一个文件可确保不会遗漏信息。除了标准日志文件外,我们还将所有信息记录到 /var/log/messages 中。这需要更多的磁盘空间,但可以更轻松地调试系统问题。Logcheck 严重偏向于来自 TCP wrapper 的 Firewall Toolkit 和 BSDish 消息。不使用 Firewall Toolkit 或 TCP wrapper 的系统可能需要为其安全/监控程序添加关键字。

Logcheck 仅有助于管理员发现攻击并采取预防措施,但是一旦入侵者获得对您系统的访问权限,他们的第一步之一就是通过禁用日志记录来隐藏他们的踪迹。

我们将 Logcheck 用作监控我们系统上的攻击、入侵活动和系统问题的工具。我们特别关注对我们系统的个别攻击,并交叉引用较旧的 Logcheck 输出,以尝试建立数周或数月内发生的探测和攻击模式。我们认为对我们系统进行分布式或定时探测是高优先级的,因为它通常表明有决心或有组织的攻击者有耐心寻找和利用新的漏洞和程序漏洞。我们在 cron 中每天运行 logcheck,如果怀疑有活跃的探测或攻击,则更改为每小时检查一次。

Tripwire

入侵检测和恢复中最著名和最有用的工具之一是 Tripwire。Tripwire 创建系统上文件的签名数据库,并在比较模式下运行时,会向系统管理员发出文件系统更改警报。Tripwire 与 Tiger 的不同之处在于,它是一个专用的文件签名程序,可以使用多个哈希函数来生成数字签名。

Tripwire 是为普渡大学的计算机操作审计和安全技术 (COAST) 实验室开发的。公开可用的版本 Tripwire 版本 1.2 可从 www.cs.purdue.edu/coast/archives 获得。Tripwire 版本 1.2-2 与 Red Hat 一起在 powertools CD 上以 RPM 形式提供,也可从 ftp://ftp.redhat.com/pub/redhat/powertools/ 获得。自 1999 年 1 月以来,Tripwire 已作为 Tripwire Inc. 的商业产品提供。Tripwire 1.3 以学术源代码发布形式分发。2.x.x 版本以仅二进制形式提供。两者都可以从 www.tripwire.com/downloads/index.cfml 下载以用于非商业用途。Tripwire Inc. 已宣布将在 2000 年第三季度采用 Tripwire 的开源模式,但尚未确定许可方案。

存在大量关于 Tripwire 的文章,因此我们将专注于使用 Tripwire 作为入侵检测工具,而不是如何使用 Tripwire。

正如我之前提到的,当入侵者渗透系统时,他们会尝试做的第一件事就是隐藏自己及其在系统中的活动。为了实现此目的,他们通常会将系统文件替换为特洛伊木马二进制文件 - 其中添加了代码的二进制文件 - 这些文件会过滤他们的活动。常见的特洛伊木马二进制文件是 TELNET、login、su、FTP、ls、netstat、ifconfig、du、ps、inetd 和 syslogd。入侵者还会尝试通过在 passwd 中添加用户或在 inetd 中添加服务来为自己创建后门。在大多数情况下,他们会尝试获取 /etc/passwd 文件并在其上运行 Crack,希望找到密码较弱的用户。

入侵者还将安装工具以允许他们监视网络或维护对系统的访问权限。他们将尝试安装具有已知漏洞的程序,以允许他们获得 root 访问权限,通常是在“隐藏”文件中。他们还可能安装网络扫描仪和探测器,以从以明文形式发送的网络流量中收集信息,并可能收集密码。

Open-Source Intrusion-Detection Tools for Linux

图 2. Tripwire 操作

Tripwire 作为入侵检测工具需要系统的一个原始映像数据库,即您的系统在已知的未 compromise(妥协/入侵)状态下的快照。最佳方案(请参见图 2)是在首次安装系统时能够拍摄干净的快照或“指纹”。随着程序的安装和升级,系统管理员会将新的文件签名与数据库进行比较,以确保仅更新他们处理的程序,而没有更改其他系统文件。

捕获整个文件系统的数字签名可能会为系统管理员创建信息过载。文件系统的某些部分应该随着正常操作而更改,因此捕获 /var/spool、/tmp 甚至 /var/log 中的文件可能是无用的,因为它们一直在被更改。同时,如果检测到 compromise(妥协/入侵),我们需要能够识别隐藏在系统中的文件。为了满足扫描的不同需求,我们创建了两个 Tripwire 配置文件,其中包含两个 Tripwire 数据库:一个用于扫描整个系统,另一个仅用于扫描关键系统文件。

对于哪些文件是“关键”文件,系统管理员有不同的看法。我们认为,除非我们更改系统二进制文件和库,否则它们不应更改。因此,所有 *bin 和 *lib 目录(例如 /bin、/sbin、/usr/bin、/usr/sbin、/lib 和 /usr/lib)都应由 Tripwire 进行指纹识别。此外,应指纹识别 /etc 中的所有系统配置文件。可以使用 tw.config 配置要扫描的文件和目录。我们可以使用 Tripwire 的 -c 和 -d 开关重定向要使用的配置文件和数据库。

Tripwire 可以用作入侵检测工具,方法是让它作为 cron 进程运行比较。任何在系统管理员不知情的情况下更改的系统文件都将表明系统已 compromise(妥协/入侵),并且需要立即采取行动以限制损害。系统已 compromise(妥协/入侵)的明显迹象是与登录、访问权限以及进程监视或记帐相关的系统文件发生更改。

当检测到或怀疑有入侵时,Tripwire 可以通过识别已更改的文件来向系统管理员指示损害的程度。如果及早检测到入侵,则破解者可能没有时间渗透系统,并且可能只有时间通过引入工具和程序来启动该过程。这就是完整系统指纹的价值所在。使用对系统的完整扫描,可以识别和调查隐藏的文件和目录。Tripwire 将标记它们并将它们输出到 Tripwire 报告,而不是手动扫描文件系统以查找新目录和文件。

知识渊博的破解者(了解入侵检测的破解者)通常会尝试将程序隐藏在文件结构中,他们知道系统文件会在正常操作期间更改,从而使他们自己免受简略的 cron Tripwire 比较的影响。系统管理员应特别注意 /tmp、/dev 和 /var/spool 目录,因为文件是在正常操作期间创建和删除的。破解者将尝试通过在目录前加上 .(点)来隐藏其目录,以便它们不会显示在正常的 ls 命令中。

文件完整性检查器应成为每个系统安全的一部分;Tripwire 是该领域的“最佳”。它可以用作系统渗透的警报和入侵恢复。

入侵恢复

当检测到入侵时,系统管理员首先需要通过断开系统与网络的连接来重新获得对 compromise(妥协/入侵)系统的控制。这是为了防止进一步入侵和可能源自 compromise(妥协/入侵)主机的互联网拒绝服务攻击。应备份系统的映像,以便稍后分析和参考入侵。

然后必须通过查看日志文件来彻底分析系统。这是关于入侵如何、何时以及何地发生的首要信息来源。需要验证所有系统二进制文件和配置文件(包括内核),以确保它们未被更改。为此,系统管理员必须首先确保系统分析工具本身是干净的,并且不包含特洛伊木马。还应检查系统数据,以确保入侵者未对其进行更改。入侵者可能会在系统上“停放”数据或程序。这可能包括用于其他入侵的程序以及来自其他 compromise(妥协/入侵)系统的数据。入侵者还可能安装网络嗅探器和其他监视程序,希望捕获信息,从而使他们能够访问其他主机。一旦在一个系统上检测到入侵,还应检查网络上的所有其他系统是否存在可能的入侵。入侵者可能已使用 compromise(妥协/入侵)系统来获得对网络上其他主机的访问权限,或者他们可能已使用其他主机来获得对检测到入侵的系统的访问权限。

系统管理员应向计算机协调中心(例如 CERT)提交所有 compromise(妥协/入侵)主机的事件报告。入侵者通常使用 compromise(妥协/入侵)帐户来攻击其他系统。对于单个系统来说,追踪知识渊博的攻击者的来源是困难或不可能的。但是,通过系统管理员之间的合作,关闭攻击和访问途径,将攻击者限制在可以对其进行监控和识别的主机和系统上,这是可以实现的。

一旦入侵被分析和报告,接下来就是从入侵中恢复的任务。首先应安装干净版本的系统,最好从原始安装介质安装。如果使用备份,则应从已知干净二进制文件的副本中还原系统二进制文件。系统管理员应采取偏执的立场,即最新的备份可能包含已更改的程序和数据,并且需要确保他们没有重新安装坏文件。

一旦 compromise(妥协/入侵)系统被还原,就必须对其进行保护以防止再次入侵。加固系统的步骤包括禁用所有不必要的服务、安装所有供应商安全补丁、咨询 CERT 和其他安全公告以及更改密码。

结论

检测和从入侵中恢复实际上可能只是系统管理员安全之旅的开始。入侵只会突出系统安全的必要性。互联网上有数百万用户,人们不得不假设,虽然他们个人可能造成的威胁最小,但从总体上来说,他们比任何系统管理员或安全程序都更知识渊博,并且拥有更多资源。

Bobby S. Wen (wen@vasia.com) 拥有两个工程学位和一个 MBA 学位。他从 1994 年开始使用 Slackware pre-1.0 发行版玩 Linux,并且从此沉迷于此。即使他在家中有适用于每个人、女人、孩子和狗的计算机,他仍然必须等待轮到他使用计算机,因为他的孩子们唯一想玩的计算机是他正在使用的计算机。他目前多重启动 Linux、FreeBSD、Solaris、BeOS、Windows 98 和 Windows NT。

Tiger 脚本文件活动系统攻击警报的列表可用。

资源

电子邮件:wen@vasia.com

加载 Disqus 评论