简介
tripwire是一个基于主机的入侵检测系统,主要手段是在系统初始化后生成一个指纹库,通过定期检查校验文件,如果发生变化,则会触发邮件报警。
tripwire 运行方式并不是服务,而是crontab脚本,详见/etc/cron.daliy/tripwire-check,默认每天运行一次。
安装tripwire
安装tripwire十分容易,它已经包含在了EPEL仓库中。
- yum install tripwire --enablerepo=epel
配置详解
安装tripwire后会在/etc/tripwire/下生成两个文件,一个是程序配置文件,一个是入侵检测策略文件,twcfg.txt (tripwire configure)和 twpol.txt(tripwire policy)。
为了防止自身遭篡改,tripwire两个管理密码,一个叫站点密钥(site key),用于更新配置文件和入侵检测策略。另一个叫本地密钥(local key),用于更新本地数据库。
因此在运行tripwire之前必须创建key文件,运行命令:
- tripwire-setup-keyfiles
(除了分别要求输入两次密码外,还要求用站点密码来给配置文件签名)
接下来初始化tripwire,运行命令
- tripwire --init
(输入站点密码,开始扫描并建立数据库,扫描期间会报错,主要是twpol.txt文件里定义了一些不存在的文件,请根据需要调整twpol文件。)
检查方法,运行命令:
- tripwire --check
这样会有大量输出,可以直接用管道过滤,找到系统中不存在而策略里却存在的文件
- tripwire --check |grep -w "Filename:"
根据上文过滤结果,删除其在策略文件里的定义,修改twpol.txt文件后,需要更新策略,运行命令:
- tripwire -m p /etc/tripwire/twpol.txt
默认的twpol.txt 实际上是个使用手册,又臭又长,建议读一读,理解下原理。
根据twpol.txt,tripwire 把文件定义成如下类型:
- SEC_CRIT = $(IgnoreNone)-SHa ; # 重要文件,写死了但又不应改被修改,比如bashrc
- SEC_SUID = $(IgnoreNone)-SHa ; # 设置了SUID和SGID的二进制文件,比如/usr/sbin/里的文件
- SEC_BIN = $(ReadOnly) ; # 普通的二进制文件,比如/usr/bin/里的文件
- SEC_CONFIG = $(Dynamic) ; # 读多写少的配置,比如httpd.conf
- SEC_LOG = $(Growing) ; # 日志文件,经常写,但是属性应该是固定的,比如/var/log/message
- SEC_INVARIANT = +tpug ; # 固定属性的重要目录,比如用户家目录
- SIG_LOW = 33 ; # 安全等级较低的文件
- SIG_MED = 66 ; # 安全等级中等的文件
- SIG_HI = 100 ; # 安全等级最高的重要文件
以上是默认文件定义的类型,可以根据需要自定义。
规则格式(配置文件中摘取的实例)
- (
- rulename = "Kernel Administration Programs", 这里是规则名称
- severity = $(SIG_HI) , 这里是安全级别
- emailto=root@localhost 邮件支持
- (这里比较坑爹,因为加上了emailto,所以severity后面必须加上逗号,需要注意)
- )
- {
- /sbin/adjtimex -> $(SEC_CRIT) ; 文件 ->级别
- }
twpol.txt默认的规则很多很多,我们修改twpol.txt 应该只要替换自己想要的规则即可,不需要大动作。
按照我们通用的要求,监视/etc和/usr/bin、/usr/sbin、/sbin里的文件即可。
逐个列出那些目录的文件有些困难,需要借助find命令。
- find /usr/bin -type f -exec ls {} \; |sed 's/$/\t\t\t->\$(SYSBIN);/g;s/^/\t/g'
- find /bin -type f -exec ls {} \; |sed 's/$/\t\t\t->\$(SYSBIN);/g;s/^/\t/g'
- find /usr/sbin -type f -exec ls {} \; |sed 's/$/\t\t\t->\$(SYSBIN);/g;s/^/\t/g'
- find /sbin -type f -exec ls {} \; |sed 's/$/\t\t\t->\$(SYSBIN);/g;s/^/\t/g'
简单的命令行使用方法
- tripwire -m i 等效于 tripwire –-init 初始化
- tripwire -m c 等效于 tripwire –-check 测试
- tripwire -m p 等效于 tripwire --update-policy 更新策略
- tripwire -m u 等效于 tripwire --update 更新数据库
跟rkhunter的区别,
rkhunter的功能比较单一,可配置性比较差,只检查校验/usr/sbin之类的可执行文件的md5,防止篡改。
而tripwire除了rkhunter的功能外,还可以监控目录,新产生的文件等,有专门的配置文件可供修改。