数据完整性检测工具Tripwire
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据完整性检测工具:Tripwire
作者:nixe0n
综述
作为一个系统管理员,你需要保护自己的系统不被攻击者的侵入,但是系统非常庞大,这对你来说恐怕有些勉为其难了。Tripwire能够为你提供帮助,它不是为了抵御攻击者设计的,然而它能够帮助你判断系统的一些重要文件是否被攻击者修改。1992年,还在Purdue大学COAST实验室的 Gene H.Kim和Eugene H. Spafford开发了tripwire。它们的目的是建立一个工具,通过这个工具监视一些重要的文件和目录发生的任何改变。1997年,Gene Kim和W.Wyatt Starnes发起成立了Tripwire公司。他们成立这个公司的目的之一是发布一个能够用于更多平台的商业升级版本。Tripwire3的商业版本非常昂贵(这客观上促使aide的诞生)。
但是,到了2001年3月,情况发生了变化。Tripwire公司发布了Linux下的开放源码版本Tripwire-2.3.1,这个版本使用GPL作为许可证,代码是基于商业版的Tripwire-2.x。这无疑是一个好消息,最新的Redhat 7.x就包含了Tripwire-2.3.1的RPM软件包。
在1992年,Tripwire开发之初,只有很少的UNIX安全工具。
COPS (Computer Oracle and Password System)是一个能够支持很多UNIX平台的安全工具集。自从1989年,就开始自由分发,它使用CRC(循环冗余校验)监视系统的文件。但是,COPS有很多不足,例如:它不能监视文件索引节点(inode)结构所有的域。
TAMU是一个脚本集,以和COPS相同的方式扫描UNIX系统的安全问题。TAMU通过一个操作系统的特征码数据库来判断文件是否被修改。不过,它不能扫描整个文件系统,而且每当操作系统升级和修补之后,需要升级自己的特征码数据库。
Hobgoblin使用一个模板来检验文件系统,Hobgoblin运行时,会把系统文件和自己的数据库进行对比,以此来判断系统文件是否被修改。然而,如果文件系统改变,却没有办法对它的数据库进行升级。
ATP能够做一个系统快照并建立一个文件属性的数据库。它使用32位CRC和MD校验文件,而且每当检测到文件被修改,它会自动把这个文件的所有权改为root。和COPS、TAMU以及Hobgoblin相比,这个特征是独一无二的。
但是,以上这些工具,都不能提供足够的能力和移植性用于完整性检查。
Tripwire配置
Tripwire从一个配置文件中读取你想要监视的文件和目录。其自由版本和商业版本的配置文件是不同的。旧版本的自由版配置文件叫作tw.conf;而商业版和新版自由版(2.3.1)的配置文件是twpol.txt。不过,不要依赖其原始的配置文件,因为它的原始配置文件适用于所有Tripwire支持的操作系统,不一定能够满足的的安全要求。例如,其默认的配置就不能监视系统中的SUID和SGID文件,而这对于你的系统安全是非常重要的,因此,你需要自己修改配置加入对这个项目的监视。使用如下命令可以找出系统中的所有SUID文件:
find / -type f -perm -4000 -print
以下命令可以找出系统中的所有SGID文件:
find / -type f -perm -2000 -print
现在,你需要把以上命令找出的SUID和SGID文件加入到Tripwire的配置文件(自由版)/策略文件(商业版)。除此之外,最好把所有用户home目录下的初始文件也纳入监视的范畴。主要包括以下文件(这里是以笔者的Redhat Linux7.2为例):
.bashrc、.profile、.bash_profile、.cshrc、kshrc、.login等
bash、csh以及ksh登录之后的初始化命令或者脚本,根据自己的情况灵活决定。:) .forward
告诉/usr/lib/sendmail把邮件转发到某些地址。
.netrc
FTP初始化命令和宏,可能保存明文口令。
.rhosts
可以使用rsh登录到本帐户的远程主机名。
.xinitrc、.Xauthority、Xdefault等
X窗口系统的一些重要文件。
例如,你可以使用下面的命令找出系统中所有的.bashrc文件:
find / -name `.bashrc' -print
在找出所有帐户的重要文件之后,你就可以把它们加入到Tripwire的配置文件或者策略文件了(下面我们将以开放源码的Tripwire-2.3.1进行讨论)。在创建Tripwire 的特征码数据库之前,还有一件事情要做,就是检查某些重要文件的权限是否恰当,比如:.netrc和.rhosts的权限应该是600,这样可以禁止其它用户对这些文件的访问。
下面在创建Tripwire特征码数据库之前,我们大体了解一下Tripwire支持的特征码函数。所谓特征码函数就是使用任意的文件作为输入,产生一个固定大小的数据(特征码)的函数。入侵者如果对文件进行了修改,即使文件大小不变,也会破坏文件的特征码。因此,这些函数可以用于数据完整性检测。而且这些特征码函数一般是单向的。Tripwire-2.3.1版本支持如下特征码例程:
MD5
RSA Data Security公司提出,产生128位特征码的消息(message)算法。
Snefru
Xerox安全散列函数
MD4
RSA Data Security公司提出。利用32位RISC架构的消息算法。
MD2
RSA Data Security公司提出。产生128位特征码的消息算法。
SHA
安全散列算法(Secure Hash Algorithm)
Haval
128位message-digest算法。
CRC-16
16位循环冗余校验码
CRC32
32为循环冗余校验码
在Redhat7.2中包含了Tripwire-2.3.1的RPM包,其默认的策略文件是针对Redhat的缺省安装的。如果你使用的其它发布或者非缺省设置,就需要修改Tripwire的默认策略文件(/etc/tripwire/twpol.txt)。一个策略文件大体可以分为:全局变量定义和规则定义两个部分。Redhat7.2中默认的策略文件还把策略规则分成了更小的部分:文件系统和磁盘管理程序(File System and Disk Administration Programs)、内核管理程序(Kernel Administration Programs)、网络程序(Networking Programs)、系统管理程序(System Administration Programs)、硬件设备控制程序