Tripwire是一个开源的功能强大的服务器文件完整性监测系统,利用各个文件的数字签名前后之间的对比 ,从而得出系统中的文件是否被人篡改过。Tripwire强大之处在于利用MD5和SNCFRN加密手段来生成文件的数字签名,任何文件改动的痕迹都能察觉。
如果你怀疑服务器遭到黑客攻击过,在多数情况下,黑客可能对系统文件等等一些重要的文件进行修改,这时Tripwire就可以生成文件变动的详细报告了。同时,为了防止Tripwire自身的文件也被人动手脚,我们可以将Tripwire的数字签名数据库、Tripwire二进制文件、配置文件单独取出来。
总之,Tripwire虽然不能抵御服务器入侵,但是却是“黑客”背后一双明亮的“眼睛”,默默地记录着服务器上所有的一切,是我们保证服务器安全的一个重要工具。本文就来分享一下Tripwire的安装与使用方法。
一、Tripwire安装
1、Tripwire官网:
- 1、官方网站:https://sourceforge.net/projects/tripwire/
2、Tripwire安装在VPS上只要执行以下命令:
wget https://sourceforge.net/projects/tripwire/files/tripwire-src/tripwire-2.4.1.2-src/tripwire-2.4.1.2-src.tar.bz2 tar jxvf tripwire-2.4.1.2-src.tar.bz2 cd tripwire-2.4.1.2-src ./configure --prefix=/usr/local/tripwire make make install
3、安装过程中,会要求你阅读使用协议,回车。
4、空格是翻页,到最后输入“Accept”继续安装。
5、接着会要求你输入“site keyfile”口令和“local keyfile”口令,各两遍,完成确认。
6、最后安装Tripwire完成。
二、Tripwire配置
1、Tripwire相关文件目录是在/usr/local/tripwire中。主要是:
- 1、配置文件:定义数据库、策略文件和Tripwire可执行文件的位置:/etc/tripwire/twcfg.txt
- 2、策略:定义检测的对象及违规时采取的行为:/etc/tripwire/twpol.txt
- 3、数据库:用于存放生成的快照:/var/lib/tripwire/$(HOSTNAME).twd
2、同时,Tripwire为了自身的安全,防止自身被篡改,也会对自身进行加密和签名处理。其中,包括两个密钥:
- 1、site密钥:用于保护策略文件和配置文件,只要使用相同的策略和配置的机器,都可以使用相同的site密钥:/etc/tripwire/site.key
- 2、local密钥:用户保护数据库和分析报告,不会重复:/etc/tripwire/$(HOSTNAME)-local.key
3、其中 /etc/twpol.txt中是控制对哪些目录进行检查,执行:vim /usr/local/tripwire/etc/twpol.txt 可以打开编辑此文件。
4、对于一些不存在的文件目录和文件或者不想让Tripwire监控的文件目录等可以用#号把它注释掉。
三、Tripwire使用
1、Tripwire第一次安装后,需要进行一次数据初始化,命令:
/usr/local/tripwire/sbin/tripwire --init
2、在检测服务器文件完整性时,对于不存在的目录或者文件Tripwire会报警,没有关系。当然你可以在twpol.txt 把这些目录或者文件给注释掉。
3、最后Tripwire会生成一个文件监控数据库,存放在/usr/local/tripwire/lib/tripwire 中。
4、Tripwire初始化完成后,就可以执行文件完整性检测了,默认的情况下Tripwire每天进入一次检查:
/etc/cron.daily/tripwire --check
5、手动检查的命令是,先进入到/usr/local/tripwire中 ,再执行命令:
./sbin/tripwire --check --interactive
6、后面加上interactive,是用于检测完成后自动打开文件完整性报告,这就是Tripwire的检测报告,任何文件属性的变动就可以在报告中看到。(点击放大)
四、Tripwire报告
1、Tripwire检测后生成的报告放在/usr/local/tripwire/lib/tripwire/report 中,文件是加密的。
2、如果要查看的话,需要用到Tripwire的解密工具:twprint。依然是进入到/usr/local/tripwire 目录中,然后执行(注意:freehao123.XX.XX.twr 是报告文件名,你需要修改成你自己的):
./sbin/twprint --print-report --twrfile ./lib/tripwire/report/freehao123.cloud.mos.meituan.local-20140810-152548.twr >/tmp/tripwire_readable.txt cat /tmp/tripwire_readable.txt
3、解密后的Tripwire报告可以下载到本地用文本编辑器打开查看,不过为了保密,查看后记得把这些解密后的文本文件删除。
4、如果你怀疑某一个文件有重大的问题,除用文本编辑器搜索功能查找外,还可以使用twprint提取工具:
./sbin/twprint -m d --print-dbfile /home/freehao123.js
五、更新Tripwire数据库和定时执行文件完整性检测
1、如果你修改过文件完整性监测项目控制文件twpol.txt,需要执行更新配置文件:
cd /usr/local/tripwire ./sbin/tripwire --update-policy --secure-mode low ./etc/twpol.txt
2、Tripwire以最开始生成的文件完整性的数据库作为对比基准,但如果有些文件是自己修改过的,并不希望Tripwire在每次检测时把它当成是异常,这时就需要找到原始的数据库文件,执行更新操作了。
tripwire --update --twrfile /usr/local/tripwire/lib/tripwire/report/freehao123.cloud.mos.meituan.local-20140810-152548.twr
备注:执行该命令之后,您就进入了一个编辑器。搜索所报告的文件名。所有侵害或更新都在文件名前面有一个 [x]。该演示中的查找模式如下:
[x] "/usr/local/bin/pwgen"
例如:
Rule Name: pwgen (/usr/local/bin/pwgen) Severity Level: 0 ------------------------------------------------------------------------------- Remove the "x" from the adjacent box to prevent updating the database with the new values for this object. Modified: [x] "/usr/local/bin/pwgen"
如果您希望接受这些更改为正当的,则只需保存并退出文件即可。Tripwire 不再报告此文件。如果您想要这个文件不被添加到数据库,那么请删除 ‘x‘。
保存文件并退出编辑器时,若有数据库更新发生,会提示您输入密码以完成该过程。如果没有更新发生,那么 Tripwire 会通知您的,并且不需要输入密码。该演示中出现以下提示,因为数据库将被更新:
Please enter your local passphrase: master Wrote database file: /var/lib/tripwire/rs6000.twd
我们也可以用 init 选项再次运行 Tripwire,对下次运行要比较的内容进行一次基本的扫描,如下所示:
# /usr/local/tripwire/sbin/tripwire --init
3、Tripwire设置定时检测任务。编辑定时任务:crontab -e,以下命令是表示每天凌晨4:00时开始自动执行文件完整性检测并生成报告 。
00 4 * * * /usr/local/tripwire/sbin/tripwire --check
六、Tripwire使用小结
1、管理员如果能够定制完整的策略和检查周期,Tripwire将可以实现对系统的完整监控,在遭遇服务器入侵时Tripwire将是帮助检测入侵痕迹的最有力工具。
2、为了防止Tripwire本身也遭遇篡改,我们需要做好Tripwire的备份工作,有兴趣的朋友还可以设置好Tripwire执行完检测任务后自动将检测报告发送到管理员邮箱,以便及时作出应对。