一、概述
当服务器遭到黑客攻击时,在多数情况下,黑客可能对系统文件等等一些重要的文件进行修改。对此,我们用Tripwire建立数据完整性监测系统。虽然 它不能抵御黑客攻击以及黑客对一些重要文件的修改,但是可以监测文件是否被修改过以及哪些文件被修改过,从而在被攻击后有的放矢的策划出解决办法。
Tripwire的原理是Tripwire被安装、配置后,将当前的系统数据状态建立成数据库,随着文件的添加、删除和修改等等变化,通过系统数据现 状与不断更新的数据库进行比较,来判定哪些文件被添加、删除和修改过。正因为初始的数据库是在Tripwire本体被安装、配置后建立的原因,我们务必应 该在服务器开放前,或者说操作系统刚被安装后用 Tripwire构建数据完整性监测系统。
Tripwire可以对要求校验的系统文件进行类似md5的运行,而生成一个唯一的标识,即“快照”snapshot。当这些系统文件的大小、inode号、权限、时间等任意属性被修改后,再次运行Tripwire,其会进行前后属性的对比,并生成相关的详细报告。
下载地址:http://sourceforge.net/projects/tripwire/files/
环境:OS:Centos 6.2
软件:tripwire-2.4.2.2-src.tar.bz2
二、安装
1、解压
# tar -jxvf tripwire-2.4.2.2-src.tar.bz2
# cd tripwire-2.4.2.2-src
2、配置
#./configure --prefix=/opt/tripwire ←设置安装目录
注:如果出现这样的错误:
configure: error: C++ preprocessor "/lib/cpp" fails
sanity checkSee `config.log\' for more details.
解决办法:出现该情况是由于c++编译器的相关package没有安装,以root用户登陆,在终端上执行:
# yum install glibc-headers
# yum install gcc-c++
3、编译
# make
--过程省略--
4、安装过程
# make install
--出现协议--
license agreement. [do not accept] accept ← 输入“accept”同意协议。
--过程省略--
Continue with installation? [y/n] y ← 键入y继续安装。
--过程省略--
Enter the site keyfile passphrase: ← 输入“site keyfile”口令(输入后不会显示),并且记住这个口令。
Verify the site keyfile passphrase: ← 再次确认“site keyfile”口令。
--过程省略--
Enter the local keyfile passphrase: ← 输入“local keyfile”口令(输入后不会显示),并且记住这个口令。
Verify the local keyfile passphrase: ← 再次确认“local keyfile”口令。
--过程省略--
Please enter your site passphrase: ← 输入“site keyfile”口令(输入后不会显示)第一次。
--过程省略--
Please enter your site passphrase: ← 输入“site keyfile”口令(输入后不会显示)第二次。
安装完成。
三、文件说明
(1)、配置文件:定义数据库、策略文件和Tripwire可执行文件的位置:
/opt/tripwire/etc/twcfg.txt
(2)、策略:定义检测的对象及违规时采取的行为:
/opt/tripwire/etc/twpol.txt
(3)、数据库:用于存放生成的快照:
/opt/tripwire/lib/tripwire/$(HOSTNAME).twd
(4)、Tripwire为了自身的安全,防止自身被篡改,也会对自身进行加密和签名处理。其中,包括两个密钥:
(4.1)、site密钥:用于保护策略文件和配置文件,只要使用相同的策略和配置的机器,都可以使用相同的site密钥:
/usr/local/tripwire/etcsite.key
(4.2)、local密钥:用户保护数据库和分析报告,这肯定不会重复的:
/usr/local/tripwire/etc/$(HOSTNAME)-local.key
四、设置tripwire
4.1、编辑 twcfg.txt文件
vi /opt/tripwire/etc/twcfg.txt ← 修改文本格式的Tripwire配置文件 LOOSEDIRECTORYCHECKING =false ← 找到这一个行,将false的值变为true(不监测所属目录的数据完整性) LOOSEDIRECTORYCHECKING =true ← 变为此状态 REPORTLEVEL =3 ← 找到这一行,将3变为4(改变监测结果报告的等级) REPORTLEVEL =4 ← 变为此状态 #wq ← 保存退出
4.2、建立加密格式
#cd /opt/tripwire/etc #/opt/tripwire/sbin/twadmin --create-cfgfile -S site.key twcfg.txt ← 从文本配置文件建立加密格式配
Please enter your site passphrase: ← 输入“site keyfile”口令
Wrote configuration file: /usr/local/tripwire/etc/tw.cfg
完成。
五、初始化数据库
#/opt/tripwire/sbin/tripwire --init ← 初始化数据库
Please enter your local passphrase: ← 输入“local keyfile”口令
六、更新数据库
当你更新了twpol.txt后需用此命令更新数据库
#cd /opt/tripwire
#./sbin/tripwire --update-policy --secure-mode low /opt/tripwire/etc/twpol.txt
Please enter your local passphrase: ← 输入“local keyfile”口令
Please enter your site passphrase: ← 输入“site keyfile”口令
Wrote database file: /usr/local/tripwire/lib/tripwire/localhost.localdomain.twd
The database was successfully generated
七、检查文件异动
安装完tripwire后你可以定期检查文件是否存在异动。加上interactive在当前显示结果。
./sbin/tripwire --check --interactive
八、查看报告
所有tripwire的报告以.twr后缀保存在lib/tripwire目录下,需要使用twprint命令来转化成文本格式。
#./sbin/twprint --print-report --twrfile /lib/tripwire/report/localhost.localdomain-20100225-164220.twr>/tmp/tripwire_readable.txt #vi /tmp/tripwire_readable.txt
或直接查看
#./sbin/twprint --print-report --twrfile /lib/tripwire/report/localhost.localdomain-20100225-164220.twr
九、修改环境变量
需要注意的是,一般情况下,这仅仅对于普通用户适用,避免修改根用户的环境定义文件,因为那样可能会造成潜在的危险。 $vi .bash_profile #修改环境变量定义文件。 然后编辑你的PATH声明,其格式为: PATH=$PATH:/usr/local/tripwire/sbin/
执行命令使其立刻生效
$source .bash_profile
Tripwire的使用和维护都比较简单。但要实现对系统的监控,关键还是需要依靠管理员定制完整的策略和检查周期,以便及时发现问题。另外,Tripwire只能告诉您那些文件被修改,以及修改的属性。但判断和维护是依赖管理员操作的,Tripwire是一个“事后诸葛亮”的工具。
十、结束