文件完整性保护:TRIPWIRE

软件介绍
Tripwire软件的工作原理
Tripwire软件的安装和使用
Tripwire命令介绍
策略编写参考


Tripwire是一套有关数据和网络完整性保护的工具,主要是检测和报告系统中任意文件被改动、增加、删除的详细情况,可以用于入侵检测、损失的评估和恢复、证据保存等多个用途。由于使用了多达四种的Hash算法,因此准确度非常高。Tripwire也可检测多达十余种的Unix文件系统属性和二十余种的NT文件系统(包括注册表)属性,因此检测的结果也非常全面,几乎所有的变动都逃不过Tripwire的检查。它也是在系统管理员中最受欢迎的10种工具之一。
Tripwire软件分为商业版和开放源码版。由于两个版本的核心技术差别不大,并且开放源码的版本可以自由下载,所以本文就以最新的Tripwire(开放源码版)v2.3为例,讲解一下该软件的使用。
最新版的Tripwire v2.3支持以下平台:
- RedHat 7.0(Intel Only)
- Caldera 2.4 workstation
- TurboLinux 6.0.1
- SuSE 6.4


该软件基于预编写的策略工作,在基准数据库生成时,会根据策略文件中的规则读取指定的文件,同时生成该文件的数字签名并存贮在Tripwire自己的数据库中。为了达到最大限度的安全性,Tripwire提供了四种Hash算法--CRC32、MD5、SHA、HAVAL--用来生成签名。通常情况下采用前两种算法生成签名已经足够,当然也可全部采用。不过后两种算法对系统资源的耗费较大,使用时可根据文件的重要性灵活取舍。
进行完整性检查时,Tripwire会根据策略文件中的规则对指定的文件重新生成一次数字签名,并将此签名与存贮在数据库中的签名做对照。如果完全匹配,则说明文件没有被更改。如果不匹配,说明文件被改动了。然后在Tripwire生成的报告中查阅文件被改动的具体情况。
由上述可知,Tripwire自身的基准数据库是非常重要的。如果基准数据库变的不可靠,那么完整性检查的一切都没有意义。Tripwire软件安装完毕后,已经对配置文件、策略文件以及数据库文件均进行了高强度的加密。同时默认策略中也对自身文件进行完整性检查。当然,使用者自己也要做好这些文件的备份,因为Tripwire软件是不能恢复受损文件的,它只能详细列出每一个受损文件的详细情况。


步骤 1:编辑配置文件
首先打开文本格式的配置文件twcfg.txt。然后根据自己的需要修改配置文件,修改完毕后存盘。最后使用twadmin命令根据已编辑的文本文件生成一个加密的配置文件。
twadmin --create-cfgfile --site-keyfile /etc/tripwire/site.key twcfg.txt
安装完毕后,该文件已存在,因此不必再重新创建。通常情况下,配置文件的内容不会发生变化,因此没有必要去修改它,使用Tripwire默认的就可以了。
如果你想测试一下Email报告功能是否起作用,你可以输入以下命令进行测试。
tripwire --test --mail [email protected]
步骤 2:编辑策略文件
首先打开文本格式的策略文件twpol.txt。Tripwire在安装时已经在策略文件中写入了默认的检查规则。这些默认的规则主要检查重要的系统文件和Tripwire自身文件的完整性。这些默认规则可以满足大部分人的需要,即保护系统。当然你也可以用Tripwire来保护其他任何的文件,这样,你的重要数据和应用系统也得到了保护。修改完策略文件后存盘。最后使用twadmin命令根据已编辑的文本文件生成一个加密的策略文件。注意,策略文件的文本文件最好删除,否则该文件的内容易被察看。
twadmin --create-profile twpol.txt
安装完毕后,该文件已存在,因此不必再重新创建。默认的策略中有一些被检测的文件可能在你的机器中不存在,因此使用默认策略进行基准数据库的生成和完整性检查时,系统会报出一些文件找不到的小错误。请不要惊慌,这是正常现象,不影响检查的结果。你可以修改策略文件,也可以执行步骤6来避免这些小错误。
如何书写Tripwre认可的规则呢?这些规则具有一定的语法,有几个部分组成。本文的第5部分详细的说明了Tripwire的规则写法。
步骤 3:生成基准数据库
配置文件和策略文件都编辑和生成好了之后,就应该根据配置文件的规则生成基准数据库。基准数据库在Tripwire安装完毕后生成一次即可。可以使用tripwire命令来生成基准数据库。
tripwire --init
基准数据库生成时,Tripwire会提示你输入local key,对其进行高强度的加密,以防止对文件内容的非法改变。它的存贮位置为/var/lib/tripwire/$(HOSTNAME).twd。
步骤 4:运行完整性检查
基准数据库生成完毕之后,就可以使用tripwire命令随时进行完整性检查了。
tripwire --check
进行检查时指定检查报告的存贮位置。
tripwire --check --twfile/var/lib/report/report.twr
进行检查时发送Email报告结果。
tripwire --check --email-report
进行检查时指定使用Email进行发送的报告等级。
tripwire --check --email-report --email-report-level 2
使用指定严重性等级的规则进行检查。
tripwire --check --severity 80
使用指定的规则名进行检查。
tripwire --check --rule-name rulename
只检查指定的文件或目录。
tripwire --check object1 object2 object3 …
进行检查时忽略某些属性(因为有些属性的检查比较耗费系统资源,比如Hash算法)。
tripwire --check --ignore "property, property, property, property"
如果完整性检查完毕后,发现Email报告功能未生效,可以检查两个方面:一个是策略文件中规则的emailto属性必须填写妥当,另一个是运行tripwire命令时,--email-report选项必须被包含。
生成基准数据库和进行完整性检查时,如果策略制订不当,资源耗费会比较大。这时应该调整你的策略,减少一些次重要文件的监测属性,尤其是耗时较多的属性。一个能取得性能和安全均衡点的策略不可能一次写成,你必须不断进行调整,直到满意为止。记住,编辑完策略文件不要忘了执行步骤7。
步骤5:查阅报告
完整性检查进行完毕后,你就可以查阅报告以发现有哪些文件遭到了改动,改动了什么。 使用twprint命令可以输出报告。
将加密的报告内容输出到显示器。
twprint --print-report --twrfile /var/lib/report/report.twr
将加密的报告内容输出到一个文本文件。
twprint --print-report --twrfile /var/lib/report/report.twr > myreport.txt
输出报告时指定输出的报告等级。
twprint --print-report --report-level 4 --twrfile /var/lib/report/report.twr
步骤6:升级基准数据库文件
如果在报告中发现了一些违反策略的错误,而这些错误又是你认为正常的,那么怎样才能使Tripwire检查时也认为这是正常的呢?使用tripwire命令可以做到更新基准数据库。
tripwire --update --twrfile /var/lib/report/report.twr
你也可以在进行完整性检查之后立即自动进行更新,命令如下。
tripwire --check --interactive
进行更新时Tripwire会显示出每条错误,形式如下。如果括号中有x,则该条错误将会被更新。如果没有,该条错误将不会被更新。
Modified:
[x] "/usr/local/tw"
drwxr -xr -x root(0) 512 Tue Nov 22 17:19:15 1999
在此步骤中,Tripwire软件会要求你输入local key。
步骤7:升级策略文件
随着系统的变化,原来的策略文件必然会不能满足需要,因此必须要不断的更新策略文件中的规则。更新和创建新的策略文件不同,因为如果为Tripwire创建了新的策略文件,那么你就必须要重新生成基准数据库。更新时首先打开策略文件的文本文件。
twadmin --print-profile > twpol.txt
然后编辑该文件,完毕后存盘。最后使用tripwire命令进行策略更新。
tripwire --update-policy twpol.txt
在此步骤中,Tripwire软件会要求你输入site key。
步骤8:改变site key和local key
sitekey和localkey是在安装时生成的,但是你也可以随时修改。注意,如果已经用来加密的密钥文件被删除了或是被覆盖了,那么Tripwire加密过的文件都不能访问了。因此,最好对这两个文件做备份。
很多时候你会发现你的口令可能不太安全,因此要改变口令。如果要这么做,只需执行以下命令即可。
twadmin --generate-keys --local-keyfile /etc/tripwire/site.key
twadmin --generate-keys --local-keyfile /etc/tripwire/local.key
但是这么做的话,会造成使用以前密钥进行加密的文件无法打开的情况。如果你仍想使用以前的策略文件、配置文件、数据库文件、报告文件的话,那么在改变口令之前,必须使用以下的命令把这些已加密的文件进行解密。
twadmin --remove-encryption file1 file2 ...
千万不要忘记,在生成新的密钥文件之后,应该用新密钥对这些文件进行加密。配置文件和策略文件只能用site key加密,而数据库文件和报告文件只能用local key加密。
twadmin --encrypt --site-keyfile /etc/tripwire/site.key file1 file2 file3 ...
twadmin --encrypt --local-keyfile /etc/tripwire/local.key file1 file2 file3 ...
如果你想知道究竟那个文件(Tripwire的自身文件)被加密,只需输入以下命令。
tripwire --examine file1 file2 ...


1、命令行语法
所有Tripwire命令(除了siggen)都必须遵守以下的命令行语法规范:
命令 选择的模式 [选项] [文件名]
注意:所有的命令行参数的顺序不能改变,否则将会产生错误。
2、具体命令介绍
Tripwire现在支持的命令有以下四种,各命令的主要功能如下所示。如想获得更详细的命令参数介绍,请参阅Tripwire软件的帮助及其使用手册。
tripwire命令
tripwire命令可以实现数据库初始化、完整性检查、数据库升级、策略文件升级、测试等功能。它是Tripwire软件中最核心的命令。
twadmin命令
twadmin命令可以实现创建和打印配置文件、创建和打印策略文件、加密和清除加密、验证加密、产生密钥等功能。
twprint命令
通常情况下,数据库文件和报告文件均已加密,无法直接查阅。twprint命令可以实现以文本格式查阅和打印数据库和报告的功能。
siggen命令
使用siggen命令可以显示特定文件的一个或多个Hash值。由于Tripwrie v2.3使用的算法不同于Tripwire v1.2或v1.3,所以对于同一文件,不同版本的Tripwire软件计算出的Hash值可能会不同。


在Tripwire软件中,策略文件包含着一系列的规则控制着Tripwire软件如何检查系统的完整性。Tripwire的策略文件有5个标准组成部分,分别是:规则、停止点、特征、指示符、预定义变量。

1、 规则
规则是策略文件的基本组成部分,指明了Tripwire在进行检查时会对哪些文件或目录检测哪些属性的变化。如:
# This is a comment.
/temp -> $(ReadOnly)+H-M;
# 是注释符号,指明了#号后的部分都是注释,Tripwire根据策略检查时,会忽略这部分。
-> 把检测的对象名和检测的属性分离开来。
; 用来结束一条规则
检测的对象名中含有特殊字符,只需用双引号将对象名括起即可。这里的特殊字符包括!{ } 〉( )\n \t , ; = $ # | \ ' +,其中还有空格。
$(ReadOnly) 是预定义变量之一。
+ 表示检测这项属性。- 表示不检测这项属性。
这个版本的Tripwire一共能够检测18项文件或目录属性。详细的属性信息请查阅Tripwire的 policyguide.txt 文件,该文件安装后的默认位置在/usr/doc/tripwire/。
2、 停止点
停止点指明了Tripwire在进行检查时不会对哪些文件或目录检测属性的变化。如:
!/etc/rc.d # will not check this object.
3、 特征
特征是为一条或一组规则提供其他信息而设。如:
(emailto = [email protected], severity = 90)
{
/etc/dog-> +pingus (severity = 75);
/etc/cat-> $(Dynamic) (emailto = [email protected]);
}
规则后使用()括起的部分就是这条规则的特征。
一组规则前使用()括起的部分就是这组规则的特征。
如果既有规则组特征,又有每条规则自己的特征,那么最终以每条规则自己的特征为准。注意:emailto 特征正好相反,最终的特征是两者相加。
这个版本的Tripwire一共有4种特征。详细的特征信息请查阅Tripwire的 policyguide.txt 文件,该文件的默认位置在/usr/doc/tripwire/。
4、 指示符
指示符允许Tripwire有条件的应用这组规则。如:
@@ifhost salmon
/etc -> +abcdgimnpstul;
@@else
/bin -> +abcdgimnpstul;
@@endif
前两句将会使 Tripwire 在应用此项规则时,首先判断主机名是否是"salmon"。如果是,才会执行"/etc -> +abcdgimnpstul;"。如果不是,将会执行"/bin -> +abcdgimnpstul;"。
Tripwire支持7种指示符。详细的特征信息请查阅Tripwire的 policyguide.txt 文件,该文件的默认位置在/usr/doc/tripwire/。
5、 预定义变量
预定义变量是Tripwire内置的、已定义的变量,不同的变量代表了对文件不同的检测策略,也就是代表了不同的检测属性和不检测属性。
Tripwire已经预定义了6种变量,详细的特征信息请查阅Tripwire的 policyguide.txt 文件,该文件的默认位置在/usr/doc/tripwire/。
另外Tripwire还支持在规则文件中用户自由定义变量,如:
param1 = +SMCH; # Set variable param1.


 

你可能感兴趣的:(职场,文件,休闲,tripwire)