[原]用Tripwire实现系统完整性检查

   以前的日志中也曾经提到,由于Linux服务器执行同样的配置,可使用不同的配置及启动方式,所以,我们应该尽可能按照标准的配置模式进行。但万一服务器给入侵,黑客并不会考虑您运行的配置模式,并会通过修改系统的核心执行文件,如:ls、ps、top等方式尽可能的去隐含自己的行踪。此时,若未能及时发现问题,我们将会处在很被动的位置。而解决该问题的其中一个方法,就是利用一些工具,定时对系统的核心文件进行跟踪,在发现文件被修改后,及时采取对应的措施。Tripwire是其中一款常见的完整性检查工具,同时也是红旗上自带的工具之一。
一、原理
   Tripwire可以对要求校验的系统文件进行类似md5的运行,而生成一个唯一的标识,即“快照”snapshot。当这些系统文件的大小、inode号、权限、时间等任意属性被修改后,再次运行Tripwire,其会进行前后属性的对比,并生成相关的详细报告。
   Tripwire由下面部分组成:

引用
1、配置文件:定义数据库、策略文件和Tripwire可执行文件的位置:
/etc/tripwire/twcfg.txt
2、策略:定义检测的对象及违规时采取的行为:
/etc/tripwire/twpol.txt
3、数据库:用于存放生成的快照:
/var/lib/tripwire/$(HOSTNAME).twd

   另外,Tripwire为了自身的安全,防止自身被篡改,也会对自身进行加密和签名处理。其中,包括两个密钥:

引用
1、site密钥:用于保护策略文件和配置文件,只要使用相同的策略和配置的机器,都可以使用相同的site密钥:
/etc/tripwire/site.key
2、local密钥:用户保护数据库和分析报告,这肯定不会重复的:
/etc/tripwire/$(HOSTNAME)-local.key

二、安装及初始化
   以红旗DC 5.0 for x86为例,在系统安装完毕后,就会带有Tripwire:

# rpm -qa|grep tripwire
tripwire-2.3.1-18.2AX

1、安装
可以先使用twpol.txt默认的配置内容。然后运行:

cd /etc/tripwire
./twinstall.sh

twinstall脚本会执行下面的任务,也可用手工方式运行相应的命令实现:
a)创建site密钥,为安全起见,会提示输入口令(最少8位)

twadmin –generate-keys –site-keyfile /etc/tripwire/site.key

b)创建local密钥,同样的,也会提示输入口令

twadmin –generate-keys –site-keyfile /etc/tripwire/`hostname`-local.key

c)利用site密钥对twcfg.txt进行签名,并将签名后的文件存为tw.cfg

twadmin –create-cfgfile –cfgfile /etc/tripwire/tw.cfg \
–site-keyfile /etc/tripwire/site.key /etc/tripwire/twcfg.txt

会提示输入site.key的口令
d)利用site密钥对twpol.txt进行签名,并将签名后的文件存为tw.pol

twadmin –create-polfile –cfgfile /etc/tripwire/tw.cfg \
–site-keyfile /etc/tripwrie/site.key /etc/tripwire/twpol.txt

也会提示输入site.key的口令,请注意参数。
如果是手工创建上述密钥和签名的话,还需要设置权限:

cd /etc/tripwire
chown root:root site.key `hostname`-local.key tw.cfg tw.pol
chmod 600 site.key `hostname`-local.key tw.cfg tw.pol

2、初始化数据库
使用local密钥的口令初始化数据库:

tripwire –init

这个时间会比较长,而且对系统的资源占用也比较厉害。其中,如果出现类似下面的错误:

引用
### Warning: File system error.
### Filename: /dev/kmem
### No such file or directory
### Continuing…
### Warning: File system error.
### Filename: /proc/ksyms
### No such file or directory
### Continuing…

这不用担心,其原因是由于上面的目录或文件是默然配置文件中定义扫描,而他们并不存在当前的系统中。解决的方法就是在生成tw.pol前,修改twpol.txt文件,把不需要扫描的路径注释或删除即可。
最后生成的数据库文件会存放在:

引用
/var/lib/tripwire/mail.zoosoft.net.twd

可用下面的命令查看数据库内容:

twprint –print-dbfile –dbfile /var/lib/tripwire/mail.zoosoft.net.twd|more

自此,tripwire安装及初始化完成。为安全起见,可删除明文形式的twcfg.txt和twpol.txt文件:

rm twcfg.txt twpol.txt

三、检查完整性
在生成原始数据库完毕,以后就可以根据该数据库对配置文件中定义的系统文件及目录进行完整性检查。默然情况下,每天会进行一次例行检查:

# ls /etc/cron.daily/tripwire-check
/etc/cron.daily/tripwire-check

当然,您也可以根据实际的情况,手工运行全面检查的命令:

tripwire –check

※如果其中发现类似下面的错误:

引用
1.   File system error.
    Filename: /dev/kmem
    No such file or directory
2.   File system error.
    Filename: /proc/ksyms
    No such file or directory

那通常的原因都是和前面生成初始化数据库的使用相同的,不是严重的问题,只是因为这些文件或目录不存在而已。解决的方法就是把这些目录和文件在twpol.txt中排除后,再生成tw.pol,最后再初始化数据库即可。
当然,如果您已经把前面的工作都做完了,也可以参考下面的方式更新数据库的内容。
检查生成的报告会放在:

ls /var/lib/tripwire/report/
mail.zoosoft.net-20070615-040442.twr

四、更新数据库
1、查看报告

twprint –print-report –twrfile /var/lib/tripwire/report/mail.zoosoft.net-20070615-040442.twr

报告是加密的,并且以生成时间排序。
2、更新数据库
更新数据库的原因有很多,通常都是因为我们已知系统中某些文件被正确的修改,所以需要反应到数据库中,以便今后排除这些文件。
要更新数据库,必须依赖最新的检测报告:

# ls -lt /var/lib/tripwire/report/`hostname`-*.twr|head -1
-rw-r–r–  1 root root 14646 Jun 15 04:08 /var/lib/tripwire/report/mail.zoosoft.net-20070615-040442.twr

更新:

tripwire –update –twrfile /var/lib/tripwire/report/mail.zoosoft.net-20070615-040442.twr

※更新前会先把使用到的报告列举一次,可用vi的方式(:q!)退出,并自动执行更新。
Tripwire的使用和维护都比较简单。但要实现对系统的监控,关键还是需要依靠管理员定制完整的策略和检查周期,以便及时发现问题。另外,Tripwire只能告诉您那些文件被修改,以及修改的属性。但判断和维护是依赖管理员操作的,Tripwire是一个“事后诸葛亮”的工具。

[原]用Tripwire实现系统完整性检查内文分页: [1] [2] [3]

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/113021.html

(0)
上一篇 2021年8月27日
下一篇 2021年8月27日

发表回复

登录后才能评论