分享
 
 
 

利用Tripwire检测系统完整性(3)

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

site密钥、local密钥以及tripwire可执行文件之所以要加以保护,是因为它们极为重要并且可能受到攻击。Tripwire的其他文件,如数据库、策略和配置等需要用这两个密钥和程序来签名,如果site密钥、local密钥以及tripwire可执行文件是安全的,那么用它们签过名的文件发生的任何变化都能被发现。另外,将/usr/sbin/tripwire拷贝到光盘之前,一定要确保它是静态链接的,也就是说该程序的执行不依赖任何动态共享库,因为应用动态共享库时,动态库调用更容易被攻击者所劫持。

除了上面的方法外,我们还可以利用远程进行完整性检验来提高安全强度。

为了提高检验的安全性,关键的Tripwire文件最好不要存放在被检验的机器上面。为此,我们在此引入两台机器untrusty和trusty。前者是一台想要用Tripwire来检查其完整性的"不可信"机器;后者是一台安全的机器,理想的情况下只能由它访问网络,而其他机器这不能访问它。此外,为了使其他机器不能访问存放site密钥、local密钥以及tripwire可执行文件的远程机器,通常使用rsync(SSH下的安全隧道技术)来验证原件和拷贝的一致性从而触发完整性检验。远程机器trusty上的原始配置如下所示:

在检验本地机器之前,需要首先将site密钥、local密钥以及tripwire可执行文件与它们在远程机器上的拷贝比较一番,以确定这三个文件的完整性。然后在trusty上运行下列代码(需要注意,这里的各个变量如REMOTE_MACHINE要与前面脚本中的保持一致):

rsync是一个常用来同步两台机器上的文件的实用程序。它实际上通过SSH建立了一条安全隧道,来为我们在两台机器之间提供安全的鉴别功能,并为两者之间的通信提供加密服务,但前提是您已经在两台机器之间设置了SSH设施,否则,rsync就不能提供上述的安全功能。

这里有几个常用的选项需要介绍一下:-progress通知rsync只有当本地和远程文件不同时才产生输出;-n选项的作用在于让rsync不拷贝文件。

对于fgrep命令,主要用于删除所有输出,但可疑的文件名除外。它的特点是用固定的字符串而非正则表达式进行匹配,而文件名中恰恰又包含常见于正则表达式的一些特殊字符,如"."等。fgrep -x对整行(即文件名)进行匹配,因此,当且仅当本地文件和远程文件完全一致时,log文件才为空,从而触发完整性检验。

那么是否要远程存储数据库呢?实际上是没有必要的,因为数据库是用local密钥来签名的,而该密钥又是"离机的",因此如果数据库发生意外变化的话,Tripwire就会发出警报。

Trusty不仅要检查这些重要的Tripwire文件,同时还必须赶在untrusty进行完整性检查之前将他们拷贝给untrusty:

高强度完整性检测

上面介绍的是常规强度的完整性检测,但我们还可以继续提高检验强度,但天下没有免费的午餐,这需要付出速度与方便性为代价的。

因此,我们可以创建一个可引导的CD-ROM,并在其中放上一个微型的Linux系统、Tripwire程序以及您的local和site密钥。然后,将您的机器与所有网络断开,从上面制作的可引导光盘引导系统,接着利用光盘上的(而不是硬盘上的)可执行程序来检查机器磁盘的完整性。之后还要经常备份您的Tripwire的数据库、配置和策略,以备万一它们被攻击者删除时之用。

这种方法至少需要两台机器,其中一个必须是安全可信的机器(称为trusty),另一个是被检测的机器(称为untrusty)。我们的目的是为后者进行安全的Tripwire检测。

第一步是安全创建可引导CD-ROM,这要求:

在trusty上创建CD-ROM,trusty必须是一个洁净的Linux系统,它可以是由可信的源或二进制软件包构建而成,从来没有连入网络或被第三方访问过,此外还要为其打上最新的安全补丁。

配置CD-ROM的启动脚本使其禁用所有网络。

直接用可信的源或二进制软件包来烧制光盘。

在trusty上建立site和local密钥。

然后,从CD-ROM引导untrusty,装上本地磁盘并利用CD-ROM上的程序和密钥来创建untrusty的Tripwire数据库。因为数据库、策略和配置文件已经用CD-ROM的密钥签过了名,所以这些文件在untrusty上的安全性是可信的。接着,您就可以在执行完整性检查之前从光盘上引导untrusty。另外,若只是从untrusty上加载光盘并从光盘上运行untrusty的话,则会出现以下情况:

如果untrusty是动态链接的话,很难保证共享库的安全性;

难以保证系统内核的安全性;

难以保证untrusty上挂载点的正确性;

虽然这种方法提供了非常高的安全级别,但做起来非常麻烦,所以只有有特殊安全需求的情况下才采取该措施。为方便起见,我们可以安排一个cron任务,使其在每晚规定的时间从光盘上重引导untrusty,来进行Tripwire检验,之后再重引导untrusty。然而,不要让untrusty本身来执行该任务,因为untrusty是不安全的,所以在其上运行的cron也是不可靠的;相反,应将其安排给trusty来执行,如利用SSH批处理任务来触发重引导,因为这样作更为合理一些。

六、完整性检测的自动化

如果您想让Tripwire在特定的时刻或每隔一段时间就自动进行检测的话,可以按照下列提示来完成。例如我们要他每天的下午2点进行一次检测,那该如何做呢?我们可以利用cron来来协助我们完成此项任务。我们可以在root用户的 crontab文件中添加以下一项:

0 2 * * * /usr/sbin/tripwire --check

需要注意的是,cron本身也可能受到攻击,因而可能出现不执行等意外情况。所以我们最好在一个可信的远程机器上来执行cron任务。在trusty上的crontab中添加如下一个远程检测项:

0 2 * * * ssh -n -l root untrusty /usr/sbin/tripwire --check

但是如果入侵者攻破了untrusty上的sshd的话,那么覆巢之下,焉有完卵--您的安全性也必将受到威胁!此外,某些rootkits能够颠覆对Tripwire的远程exec调用。为了获取最大的安全性,只是执行cron任务是远远不够的,还得在可信机器上进行完整性检验。

Red Hat Linux预配置情况下,会在每晚通过cron任务/etc/cron.daily/tripwire-check来运行Tripwire程序。但是,Tripwire数据库不是由操作系统来提供的,而是由用户自己来提供一个原件,否则,cron只是定时向超级用户发送一封Tripwire调用失败的的电子邮件。

七、生成Tripwire报告

上面介绍了如何配置Tripwire来进行完整性检测。但这并不是使用Tripwire的目的所在,我们需要的是完整性检测的结果,换句话说还得要Tripwire将结果以报告的形式提交给管理人员,这样我们才能以此判断系统是否遭到破。具体操作如下所示:

一般情况下,Tripwire报告存放在什么地方是由Tripwire配置文件中的REPORTFILE变量来决定,其常见值为:

REPORTFILE = /var/lib/tripwire/report/$(HOSTNAME)-$(DATE).twr

变量HOSTNAME存放的是机器的主机名,变量DATE存放的是时间戳,如。所以,主机untrusty的报告文件名应当为:

/var/lib/tripwire/report/untrusty-20040130-030518.twr

虽然tripwire可以通过电子邮件发送报告,但不要太信赖电子邮件,因为它很可能被截获并被篡改后重发。所以,最好由您直接检查报告为上,要Twprin打印报告,可以按如下操作进行:

八、Tripwire数据库的维护

对于Tripwire数据库的维护工作,主要包括数据库的更新、添加和删除操作,下面我们将分别介绍。

更新数据库

有时候,我们会对程序作一些正常的修改,这些改动也会反映在最新的Tripwire报告中,但问题是,我们使用Tripwire很大程度上只想让它报告那些"非法的"修改。那么,这时我们就需要利用最新的报告来更新一下我们的Tripwier数据库,具体操作如下所示:

这里有一点必须注意,那就是如果你已经修改了某些文件的话,您不能只是简单的运行更新就算了事:您必须在此之前首先进行完整性检验。进行更新的好处是它比初始化数据库要快得多!

向数据库中添加文件

为了向Tripwire的数据库中添加文件和目录,请执行以下操作:

向有效策略文件中添加指定的文件,如/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 ;

上面这条规则的含义是:如果自从上次快照之

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有