Tripwire通过加密签名的指纹库对/bin、/sbin、/usr/bin等核心命令文件实施完整性监控,一旦ls、ps、top等被篡改即报警;需先确认麒麟V10 SP3版本,再初始化密钥、策略和数据库,最后执行tripwire --check实现篡改检测。

麒麟OS需对/bin、/sbin、/usr/bin等核心路径下的ls、ps、top等关键命令文件实施实时完整性监控,防止被恶意替换后隐匿攻击行为,Tripwire可基于加密签名的指纹库实现篡改即报。
确认系统环境与Tripwire状态
执行cat /etc/kylin-release确认为银河麒麟V10 SP3 2303或2403版本,非SP1/SP2;若输出含SP3字样,再运行rpm -qa | grep tripwire检查是否已预装。未安装则需先执行sudo apt install tripwire(Debian系)或sudo yum install tripwire(RHEL系兼容版),麒麟SP3默认已集成Tripwire 2.4.x。
运行sudo tripwire --check | head -5,若提示No such file or directory: /var/lib/tripwire/$(HOSTNAME).twd,说明数据库尚未初始化,必须先完成初始化才能启用监控。
初始化Tripwire策略与密钥体系
第一步:生成site密钥并设置强口令(至少8位,含大小写字母+数字):
sudo twadmin --generate-keys --site-keyfile /etc/tripwire/site.key
第二步:为本机生成唯一local密钥:
sudo twadmin --generate-keys --local-keyfile /etc/tripwire/$(hostname)-local.key
第三步:用site密钥签署配置文件twcfg.txt,生成二进制配置tw.cfg:
sudo twadmin --create-cfgfile --cfgfile /etc/tripwire/tw.cfg /etc/tripwire/site.key /etc/tripwire/twcfg.txt
第四步:编辑策略文件/etc/tripwire/twpol.txt,删除或注释掉所有在当前麒麟系统中实际不存在的路径条目(如某些CentOS专属路径),否则初始化必失败;可执行sudo tripwire --check 2>&1 | grep "Filename:" | cut -d: -f2 | xargs -I{} sed -i "s|^{}|#{}|g" /etc/tripwire/twpol.txt批量注释。
第五步:用site密钥重新签署更新后的策略文件:
sudo twadmin --create-polfile --polfile /etc/tripwire/tw.pol /etc/tripwire/site.key /etc/tripwire/twpol.txt
构建初始指纹库并启动监控
执行sudo tripwire --init,输入local密钥口令后等待完成;该操作将扫描策略中定义的所有文件,生成加密的初始数据库/var/lib/tripwire/$(HOSTNAME).twd。
这一步不可逆,一旦数据库生成,后续任何文件属性变更(包括权限、属主、大小、mtime)都会被标记为违规;若中途断电或中断,需手动清理/var/lib/tripwire/*.twd再重试。
验证初始化成功:
sudo tripwire --check | grep "Total objects scanned"应返回数值(如Total objects scanned: 12847),且无ERROR行。
日常完整性校验与篡改响应
方法一:执行全量校验并输出简明报告
sudo tripwire --check --quiet → 输出仅含违规项摘要,适合脚本调用。
方法二:交互式校验并自动更新数据库(仅限确认为合法变更时使用)
sudo tripwire --check --interactive → 输入local密钥口令后,会逐条列出变更项,按y确认保留新状态,n跳过;误选y将导致恶意篡改被“合法化”。
方法三:定向校验指定路径(例如只盯住关键命令目录)
sudo tripwire --check --file /bin/ls /sbin/ifconfig /usr/bin/python3
【关键提醒】校验结果中若出现严重等级(Severity)≥100的条目,且文件路径属于/bin、/sbin、/usr/bin,极大概率已被篡改,应立即隔离主机、比对备份镜像、回滚至上一次clean状态数据库,并排查入侵痕迹。
配置自动化巡检与邮件告警
编辑/etc/cron.d/tripwire-check,添加一行:
0 3 * * * root /usr/sbin/tripwire --check --email-report --quiet >/dev/null 2>&1
确保系统已配置可用的本地MTA(如ssmtp或msmtp),且/etc/tripwire/tw.cfg中EMAILREPORT = true已启用;否则邮件不会发出。
首次运行后检查/var/lib/tripwire/report/目录下是否有生成的twreport-*.txt文件,有则说明报告机制就绪;无则需检查cron日志journalctl -u cron -n 50定位失败原因。
















