免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 782 | 回复: 0
打印 上一主题 下一主题

tripwire [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-04-09 10:53 |只看该作者 |倒序浏览
Tripwire
  当Tripwire运行在数据库生成模式时,会根据管理员设置的一个配置文件对指定要监控的文件进行读取,对每个文件生成相应数字签名,并将这些结果保存在自己的数据库中,在缺省状态下,MD5和SNCFRN (Xerox的安全哈希函数)加密手段被结合用来生成文件的数字签名。当怀疑系统被入侵时,可由Tripwire根据先前生成的,数据库文件来做一次数字签名的对照,如果文件被替换,则与Tripwire数据库内相应数字签名不匹配,这时Tripwire会报告相应文件被更动,管理员就很清楚了。这样如果数据库是不可靠的,则一切工作都丧失意义。除了妥善保管数据库外,用PGP等工具对上述关键文件进行签名也是一个很好的选择。
  当管理员对某些文件更动时,Tripwire的数据库必然是需要随之更新的,Tripwire考虑到了这一点,它有四种工作模式:数据库生成,完整性检查,数据库更新,交互更新。当管理员更动文件后,可运行数据库更新模式来产生新的数据库文件。
###编译安装之后配置
# cd /etc/tripwire
# ./twinstall.sh 脚本的作用有:
1,创建site和local密钥,这时会要求输入口令,site密钥为site.key,local密钥为$HOSTNAME-local.key
2,利用site.key对配置twcfg.txt,twpol.txt进行签名,并分别存放于tw.cfg tw.pol中.
如果没有 twinstall.sh 脚本就的手工修改以上两个txt文件,设置常见的变量:
        ROOT                   =/usr/sbin
        POLFILE                =/etc/tripwire/tw.pol
        DBFILE                 =/etc/tripwire/db/$(HOSTNAME).twd
        REPORTFILE             =/etc/tripwire/report/$(HOSTNAME)-$(DATE).twr
        SITEKEYFILE            =/etc/tripwire/site.key
        LOCALKEYFILE           =/etc/tripwire/$(HOSTNAME)-local.key
        EDITOR                 =/bin/vi
修改 twpol.txt 去掉系统中并不曾在的文件或目录;然后:
创建site密钥
        # twadmin --generate-keys --site-keyfile $SITE_KEY
生成local密钥
        # twadmin --generate-keys --local-keyfile $LOCAL_KEY
为配置文件签名
        # twadmin --create-cfgfile --cfgfile $DIR/tw.cfg \
                  --site-keyfile $SITE_KEY $DIR/twcfg.txt
为策略文件签名
        # twadmin --create-polfile --cfgfile $DIR/tw.pol \
                  --site-keyfile $SITE_KEY $DIR/twpol.txt
设置权限
        # cd $DIR
        # chown root:root $SITE_KEY $LOCAL_KEY tw.cfg tw.pol
        # chmod 600 $SITE_KEY $LOCAL_KEY tw.cfg tw.pol
# tripwire --init
为tripwire建立数据库并用local进行签名.
# rm twcfg.txt twpol.txt
为安全起见,需删除明文形式的策略和配置文件.
维护策略文件和配置文件
如何查看策略和配置
    如果您想浏览一下Tripwire的策略和配置情况,但他们是以二进制的形式加密后存放的,可请用下列命令生成有效配置文件
        #twadmin --print-cfgfile
        #twadmin --print-polfile
###修改策略文件和配置文件
    当系统新安装了软件或者添加了配置文件,就需要改变Tripwire所检查文件,或者想改变Tripwire的默认行为,需要按如下所示来进行:首先,提取出明文的策略和配置、修改之后,对他们重新签名:
        # twadmin --create-cfgfile --cfgfile /etc/tripwire/tw.cfg \
                  --site-keyfile /etc/tripwire site.key /etc/tripwire/twcfg.txt
        # twadmin --create-polfile --cfgfile /etc/tripwire/tw.pol \
                  --site-keyfile site.key /etc/tripwire/twpol.txt
然后,需重新初始化数据库,删除明文的配置文件:
###基本的完整性检测配置
    完整性检验的目的在于检查一下自从上次Tripwire对文件作了快照以后,我们的文件是否发生了变动,我们可以简单通过以下命令来达到此目的:# tripwire -check
    这是一条基本的命令,它能告诉我们系统是否被修改了。它根据在策略文件中规定的规则,利用Tripwire数据库跟文件系统当前状态加以对比,之后将比较结果写入标准输出,并将其加盖时间戳、签名,然后作为一份Tripwire报告存放起来。另外,我们还可以针对数据库中的单个或多个文件进行完整性检查。在Tripwire的策略中包括以下规则:
(
  rulename = "My funky files",
  severity = 50
)
{
  /sbin/e2fsck                         -> $(SEC_CRIT) ;
  /bin/cp                              -> $(SEC_CRIT) ;
  /usr/tmp                             -> $(SEC_INVARIANT) ;
  /etc/csh.cshrc                       -> $(SEC_CONFIG) ;
}
那么您就可以用以下命令来检查选中的文件和目录:
        # tripwire --check /bin/cp /usr/tmp
若要查看一条规则所对应的所有文件,用以下命令:
        # tripwire --check --rule-name "My funky files"
也可以查看严重性大于等于特定值的所有规则,如下所示:
        # tripwire --check --severity 40
关于策略文件的有关语法,请参阅有关手册或查看联机帮助:
        $ tripwire --check --help
###生成Tripwire报告
上面介绍了如何配置Tripwire来进行完整性检测。还得要Tripwire将结果以报告的形式提交给管理人员。具体操作如下所示:
#!/bin/sh
DIR=/var/lib/tripwire/report
HOST=`hostname -s`
LAST_REPORT=`ls -1t $DIR/$HOST-*.twr | head -1`
twprint --print-report --twrfile "$LAST_REPORT"
一般情况下,Tripwire报告存放在什么地方是由Tripwire配置文件中的REPORTFILE变量来决定,其常见值为:
REPORTFILE = /var/lib/tripwire/report/$(HOSTNAME)-$(DATE).twr
变量HOSTNAME存放的是机器的主机名,变量DATE存放的是时间戳,如。所以,主机untrusty的报告文件名应当为:
/var/lib/tripwire/report/untrusty-20040130-030518.twr
虽然tripwire可以通过电子邮件发送报告,但不要太信赖电子邮件,因为它很可能被截获并被篡改后重发。所以,最好由您直接检查报告为上,要Twprin打印报告,可以按如下操作进行:
# twprint --print-dbfile --dbfile /var/lib/tripwire/`hostname -s`.twd
Tripwire(R) 4.0 Database
Database generated by:        root
Database generated on:        Mon Jan  1 22:33:55 2004
Database last updated on:     Never
... contents follow ...
###Tripwire数据库的维护
对于Tripwire数据库的维护工作,除了安全维护外,还包括数据库的更新、添加和删除操作,下面我们将分别介绍。
更新数据库
有时候,我们会对程序作一些正常的修改,这些改动也会反映在最新的Tripwire报告中,但问题是,我们使用Tripwire很大程度上只想让它报告那些"非法的"修改。那么,这时我们就需要利用最新的报告来更新一下我们的Tripwier数据库,具体操作如下所示:
#!/bin/sh
DIR=/var/lib/tripwire/report
HOST=`hostname -s`
LAST_REPORT=`ls -1t $DIR/$HOST-*.twr | head -1`
tripwire --update --twrfile "$LAST_REPORT"
这里有一点必须注意,那就是如果你已经修改了某些文件的话,您不能只是简单的运行更新就算了事:您必须在此之前首先进行完整性检验。进行更新的好处是它比初始化数据库要快得多。
向数据库中添加文件
向有效策略文件中添加指定的文件,如/bin/ls:
/bin/ls  -->  $(SEC_BIN) ;
向有效策略文件中添加整个目录树,比如/etc:
/etc     -->  $(SEC_BIN) ;
向有效策略文件中添加目录如/etc及其下的文件,但不包括其子目录:
/etc     -->  $(SEC_BIN) (recurse=1) ;
向有效策略文件中添加目录如/etc,但不包括其下的文件以及其子目录:
/etc     -->  $(SEC_BIN) (recurse=0);
然后初始化数据库。
策略实际上就是存放在策略文件中的规则表,规则的一般形式如下所示:
filename -> rule ;
它的基本含义就是,如果给定的规则被违反的话,那么对应的文件或目录就被认为是到了安全侵害。例如:
/bin/login -> +pisug ;
上面这条规则的含义是:如果自从上次快照之后,如果/bin/login的文件权限(p)、inode号(i)、 尺寸 (s),、用户(u)或组 (g)发生了变化的话,那么就应当引起我们的关注。如果想全面深入的了解Tripwire语法的话,请参阅Tripwire手册。在这里,我们使用了一个预定义的全局变量SEC_BIN来指出二进制文件不得修改。recurse= n的作用在于通知Tripwire在文件系统中的递归深度;当n为零时,其含义为只测试到目录文件本身这一层次。很多时候我们需要修改默认策略文件,因为它们所提供的策略未必完全适合我们的系统,所以我们需要针对不同的Linux类型和版本,对Tripwire所提供的默认策略进行适当的剪裁,从而满足我们的要求。
从数据库中删减文件
我们不仅根据需要向数据库中添加文件,有时我们还需要对数据库中的文件加以删减。具体操作如下所示:
例如首先向数据库中添加一个目录:
/etc -> rule
然后排除掉其中的一些文件:
!/etc/not.me
!/etc/not.me.either
如果我们想去掉一个子目录的话:
!/etc/dirname
这里,感叹号!的作用在于将给定的文件或子目录排除掉。
    Tripwire是现实中最为常见的一种开源完整性检测工具,如果想更深入的了解软件,请参阅其使用手册。


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/26378/showart_523198.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP