Tripwire 是目前最为著名的Unix下文件系统完整性检查的软件工具,这一软件采用的技术核心就是对每个要监控的文件产生一个数字签名,保留下来。当文件现在的数字签名与保留的数字签名不一致时,那么现在这个文件必定被改动过了。

软件特点

监视和检查系统发生的变化能够及时地帮助你发现攻击者的入侵,它们能够很好地提供系统完整性的检查。

用Tripwire建立数据完整性监测系统。虽然它不能抵御黑客攻击以及黑客对一些重要文件的修改,但是可以监测文件是否被修改过以及哪些文件被修改过,从而在被攻击后有的放矢的策划出解决办法。

Tripwire原理

Tripwire的原理是Tripwire被安装、配置后,将当前的系统数据状态建立成数据库,随着文件的添加、删除和修改等等变化,通过系统数据现状与不断更新的数据库进行比较,来判定哪些文件被添加、删除和修改过。正因为初始的数据库是在Tripwire本体被安装、配置后建立的原因,我们务必应该在服务器开放前,或者说操作系统刚被安装后用Tripwire构建数据完整性监测系统。

Tripwire的基本操作

一个配置文件(tw.config)描述监测哪些目录和文件,还有一个基线签名数据库产生一个有关改动的详细报告。

当第一次运行Tripwire时,程序创建一个签名的基线数据库。下一次运行时,它使用tw. config文件产生一个新的签名数据库。然后,它比较两个数据库,实施用户定义的任何选项屏蔽(排除经常更改的文件),最后通过电子邮件或显示器来为用户在终端上输出一个可读的报告。

Tripwire有四种操作模式:数据库生成、完整性检查、数据库更新或交互式更新。

数据库生成模式产生一个基线数据库,为未来的比较打下基础。

完整性检查是Tripwire的主要模式,把当前文件签名和基线数据库进行比较来进行检查。

有两种更新模式允许用户调整Tripwire数据库以消除不感兴趣的结果以及应付正常的系统变化。例如当用户帐号正常增加或删除时,不希望Tripwire重复报告/etc/passwd文件被改动了。

默认支持报告方式

Syslog
Mail

注意事项

有一点要注意,上述保障机制的重点在于数据库内的数字签名,如果数据库是不可靠的,则一切工作都丧失意义。所以在Tripwire生成数据库后,这个库文件的安全极为重要。比较常见的做法是将数据库文件, Tripwire二进制文件,配置文件单独保留到"可拿走并锁起来"的质上,如光盘,将上述文件复制到光盘后,关闭写保护口,锁到保险柜中。这样即使侵入者拿到盘也无计可施。除这种办法外,利用PGP等加密工具对上述关键文件进行数字签名也是一个很好的选择。

当然,当管理员自身对某些文件更动时, Tripwire的数据库必然是需要随之更新的, Tripwire考虑到了这一点,它有四种工作模式:数据库生成,完整性检查,数据库更新。交互更新。当管理员更动文件后,可运行数据库更新模式来产生新的数据库文件。

Tripwire只支持英文系统

单文件大于3G的时候执行tripwire –check 会出错,具体原因不明。

Tripwire Install

OS:CentOS

# http://sourceforge.net/projects/tripwire/
# install sendmail, wget
yum -y install gcc gcc-c++
cd /home
wget http://jaist.dl.sourceforge.net/project/tripwire/tripwire-src/tripwire-2.4.2.2/tripwire-2.4.2.2-src.tar.bz2
tar -xf tripwire-2.4.2.2-src.tar.bz2
cd tripwire-2.4.2.2-src
./configure --prefix=/home/tripwire

#在make install 期间,需要手动键入ENTER,阅读前言然后输入accept,接下来需要手动设置3组密匙口令 (建议:可以3组选同一个密码,请设置一个强力的口令,然后请牢记)

make && make install

# create database

/home/tripwire/sbin/tripwire --init

# 执行检查

/home/tripwire/sbin/tripwire --check

#设置 crontab

crontab -e
00 10 * * * su /home/tripwire/sbin/tripwire --check|mail -s "tripwire report" example@xiaomi.com

后续扩展:

收集多台tripwire报告,集中处理告警信息发送邮件通知相关人员,并按照每天的报告进行存档,方便日后查看。

最后相关人员收到的邮件如下:

标题:Tripwire Report
HI,All
文件完整性监控状态
hostname1    正常
hostname2 正常
hostname3 正常
hostname4 异常
hostname5 正常
hostname6 异常 异常的服务器请拷贝主机名,访问下面URL进行搜索查看详细信息。
http://tripwire.report.xiaomi.com/tripwire_2013-12-4.txt

Linux下文件完整性监控工具Tripwire详解的更多相关文章

  1. linux下文件打包、压缩详解

    Linux平台下,有如下几种常见的压缩工具: ========================================================================= 工 具 ...

  2. 【转】Linux下Android ADB驱动安装详解

    原文网址:http://blog.csdn.net/zhenwenxian/article/details/5901350 Linux下Android ADB驱动安装详解 概述 最近由于内置的合作商比 ...

  3. 【Linux开发】Linux下jpeglib库的安装详解

    Linux下jpeglib库的安装详解 首先要下载所需的库压缩包:jpegsrc.v6b.tar.gz或 jpegsrc.v8b.tar.gz 然后将下载的压缩包随便放在和解压到你喜欢的地方. # t ...

  4. 莱特币ltc在linux下的多种挖矿方案详解

    莱特币ltc在linux下的多种挖矿方案详解 4.0.1 Nvidia显卡Linux驱动Nvidia全部驱动:http://www.nvidia.cn/Download/index.aspx?lang ...

  5. Linux 执行文件查找命令 which 详解

    某个文件不知道放在哪里了,通常可以使用下面的一些命令来查找: which  查看可执行文件的位置 whereis 查看文件的位置 locate   配合数据库查看文件位置 find   实际搜寻硬盘查 ...

  6. Linux 下的dd命令使用详解(摘录)

    一.dd命令的解释 dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换. 注意:指定数字的地方若以下列字符结尾,则乘以相应的数字:b=512:c=1:k=1024:w=2 参数注释: 1. ...

  7. Linux下的压缩解压缩命令详解

    linux zip命令zip -r myfile.zip ./*将当前目录下的所有文件和文件夹全部压缩成myfile.zip文件,-r表示递归压缩子目录下所有文件. 2.unzipunzip -o - ...

  8. Linux 下的dd命令使用详解(摘录)【转】

    转自:https://www.cnblogs.com/jikexianfeng/p/6103500.html 一.dd命令的解释 dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换. 注意 ...

  9. Linux下的压缩解压缩命令详解及实例

    实例:压缩服务器上当前目录的内容为xxx.zip文件 zip -r xxx.zip ./* 解压zip文件到当前目录 unzip filename.zip ====================== ...

随机推荐

  1. 浅谈 PCA与SVD

    前言 在用数据对模型进行训练时,通常会遇到维度过高,也就是数据的特征太多的问题,有时特征之间还存在一定的相关性,这时如果还使用原数据训练模型,模型的精度会大大下降,因此要降低数据的维度,同时新数据的特 ...

  2. android学习相关intent和fragment的先关知识点

    对于使用intent,主要是用来进行活动之间的跳转,然后就是通过intent向下一个活动传递数据,还有就是想上一个活动传递数据. 实例: 先添加按钮的点击事件,当点击按钮时进行事件的触发,主要代码是 ...

  3. (js描述的)数据结构[队列结构,优先级队列](3)

    (js描述的)数据结构[队列结构](3) 一.队列结构的特点: 1.基于数组来实现,的一种受限的线性结构. 2.只允许在表头进行删除操作,在表尾进行插入操作. 3.先进先出(FIFO) 二.队列的一些 ...

  4. 07-JDBC协议

    1.下载mysql-connector-java-8.0.17.jar,jar包放进jmeter的安装目录lib文件夹下,启动jmeter就好 2.新增线程组,然后添加配置元件:JDBC connec ...

  5. Hibernate框架 jar包介绍

    一直使用my eclipse集成的Hibernate来学习.最近在写hibernate的日记,写到搭建hibernate框架的时候才发现自己对hibernate的内容还是不了解,决定自己手动搭建一下. ...

  6. 【Java】用IDEA搭建源码阅读环境

    用IDEA搭建源码阅读环境 参考自CodeSheep的Mac源码环境搭建, https://www.bilibili.com/video/BV1V7411U78L 但是实际上在Windows搭建的差别 ...

  7. 在学习java之余,js的使用精髓-闭包和原型链

    这里分享下廖雪峰官网写的js教程,内容写的比较实用,易懂,其中简介的原型链和闭包的知识,小伙伴们一起上呀,畅游在知识的海洋中: 地址:https://www.liaoxuefeng.com/wiki/ ...

  8. mongodb权限篇

    1. 权限详解 内建角色: 数据库用户角色: read.readWrite: 数据库管理角色: dbAdmin.dbOwner.userAdmin: 集群管理角色: clusterAdmin.clus ...

  9. SpringCloud(七)超时、重试

    一.Ribbon(单独配置) 可以通过ribbon.xx来进行全局配置.也可以通过服务名.ribbon.xx来对指定服务配置 全局配置: ribbon: ConnectTimeout: 3000 #连 ...

  10. socket小计

    socket,是一个实现了双向通信的链接. 将http比喻为轿车,承载数据.传递数据,那么socket,就是轿车的发动机,它轿车动起来.