文件属性为何要单独核查
ext2、ext3、ext4 等文件系统支持在文件上设置扩展属性,其中 +i(不可变)禁止任何写入、改名与删除,+a(仅追加)只允许在文件末尾追加内容,常用于保护日志与关键配置不被篡改。这些属性对 root 同样生效,必须先清除属性才能修改文件,因此既是加固手段,也会被攻击者用来锁定后门文件与替代二进制,让清理工作卡住。核查属性用 lsattr 与 chattr,重点是系统关键文件与事件时间窗内被改动的文件。
基本信息
| 查看命令 | lsattr <文件>、lsattr -R <目录> |
|---|---|
| 设置命令 | chattr +i / -i / +a / -a |
| 权限影响 | 对 root 同样生效,修改前必须先清除属性 |
| 文件系统 | ext2/3/4 支持,XFS 部分属性含义不同 |
典型使用场景
- 核查 /bin、/usr/bin 下是否存在被锁定的替代二进制
- 确认关键日志是否被设为仅追加,评估篡改难度
- 排查为什么某文件无法删除或修改,定位属性原因
- 检查事件时间窗内新增或改动的文件是否带异常属性
- 评估清理方案:确认清除哪些属性、是否会被审计记录
核查属性
核查属性
lsattr /etc/passwd /bin/bash /var/log/auth.log 2>/dev/null # 关键文件属性
lsattr -R /etc/cron.d 2>/dev/null | head -20 # 目录递归查看
find / -xdev -type f -newermt '-7 days' -exec lsattr {} + 2>/dev/null \
| grep -E '^[^ ]*i' | head -20 # 近期改动且带 i 属性
lsattr -d /var/log 2>/dev/null # 目录本身的属性
# 确需清除时先记录原属性:chattr -i <文件>,处置后按需恢复属性字符读法
| 字符 | 含义 | 判读要点 |
|---|---|---|
| i | 不可变,禁止写入与删除 | 出现在系统二进制上需重点解释 |
| a | 仅追加,只能往后写 | 日志文件上的常见加固方式 |
| e | 使用扩展区,ext4 默认 | 常规属性,不代表异常 |
| - | 该项未设置 | 逐字符位置对应固定属性 |
只有部分文件系统支持这些属性,XFS 上可设置的属性集与 ext 系列并不相同,跨文件系统比对时要先确认支持范围,否则差异会被误读为异常。
清除或设置属性都需要 root,操作本身可能被审计记录;处置前先用 lsattr 拍照留存原始属性,再决定是否调整,避免现场状态被自己改变。
属性为 +i 的文件无法直接删除,常规清理命令会报错,处置流程要单列一步,先清除属性再删除,并把两步骤都写入记录。