
主机层的安全防护不能仅仅依靠防火墙和端口策略来保证安全。一旦攻击者突破了边界之后,通常会采用替换系统二进制文件、修改SSH配置文件或者植入定时任务等方式来保持自己的控制权。文件完整性检查(FIM)用“可信基线+定期对比”的方式来进行静默篡改的检测,在AIDE和Tripwire等工具中已经得到了很好的应用。
AIDE注重轻便和易于维护,在第一次运行时会对/etc、/boot、/bin、/usr/bin、/usr/sbin等路径进行扫描,记录下文件大小、权限、所有者、inode以及SHA-256或SHA-512哈希值等信息来建立基准数据库。之后用aide –check命令检查这些文件的变化情况,会显示出新增加、被删除或者属性发生改变的文件列表。设置时要避开/var/log、/run以及软件包缓存等经常变化的目录,防止误报。
Tripwire使用相同的比较方式,但是加入了策略文件和基准数据库签名的功能来保证安全。策略用site key和local key进行加密,如果基线被修改的话就可以检测出来,在合规审查中更加适用。但是它的缺点就是密钥管理和策略语法都比较复杂一些,开源版的更新速度也比较慢。
重要文件范围应该包括:
- 身份与权限:/etc/passwd、/etc/shadow、/etc/sudoers、/etc/sudoers.d
- 远程访问:/etc/ssh/sshd_config、~/.ssh/authorized_keys
- 系统二进制文件:/bin、/sbin、/usr/bin、/usr/sbin
- 引导和模块:/boot、/lib/modules
- 业务代码:/var/www、发布目录
基线要建立在系统可信的状态下,数据库同步离线备份或者存放在只读介质中。如果root权限下的基线和被监控的文件一起修改了的话,那么检测就会失效。在生产环境中使用cron每天进行检查,告警信息发送到邮箱或者日志平台;合法的更改需要经过人工审核之后再用aide –update或者tripwire –update-policy来更新基线。
检测延迟来自于扫描周期,不能代替auditd进行实时审计。建议搭配使用:AIDE/Tripwire来验证“文件有没有被修改过”,而auditd则用来追踪“是谁、什么时候做了这件事”。
总结:
AIDE适用于单机或者小型服务器快速部署,而Tripwire则更侧重于严格的合规性和基线防篡改。两者都不属于实时拦截系统,而是为后续的审计提供了完整的证据链。要有效地实施它们需要精确地划定监控范围、离线基线保护、定期检查和变更后的受控更新。