如何利用Auditd规则实时捕获并阻止对系统影子文件的非法读取

千枫酱_4671

千枫酱_4671

2026-04-27

159人浏览

原创

auditd仅审计不阻止,需联动外部工具实现阻断;一、用-w规则监控/etc/shadow读取并按auid过滤非root行为;二、通过ausearch验证日志与来源;三、借脚本或audispd告警并触发pkill/ip封禁等响应。

如何利用auditd规则实时捕获并阻止对系统影子文件的非法读取

Auditd 本身不提供“阻止”行为的能力,它是一个审计与记录工具,不是访问控制或入侵防御系统(如 SELinux、AppArmor 或 fail2ban)。它的核心作用是精准捕获非法读取等敏感操作,并留下不可抵赖的内核级日志,为溯源、告警和后续响应提供依据。所谓“实时捕获并阻止”,准确理解应为:通过 auditd 实时捕获非法读取行为 → 触发告警或联动外部工具 → 由其他机制(如脚本拦截、服务重启、IP封禁)实现阻止效果。

下面分三步说明如何落地:

一、用 -w 规则捕获 /etc/shadow 的所有读取行为

`/etc/shadow` 是只允许 root 读写的敏感文件,任何非 root 用户或进程的读取都属异常。auditd 支持监控“读”(r)权限,但需注意: - 单纯 `-p r` 可能产生大量噪音(如 root 自身的合法读取); - 更实用的是结合 `auid`(原始登录用户ID)过滤,区分“谁真正发起请求”。

推荐规则(写入 /etc/audit/rules.d/10-shadow.rules):

-w /etc/shadow -p r -k shadow_read_attempt
-a always,exit -F path=/etc/shadow -F perm=r -F auid!=0 -k unauthorized_shadow_read

说明:

  • 第一条捕获所有读取,便于基线分析;
  • 第二条聚焦非 root 用户(auid!=0)发起的读取,这才是高价值告警信号;
  • -k 关键字便于后续用 ausearch -k unauthorized_shadow_read 快速筛选。

二、验证规则是否生效并识别真实读取来源

规则加载后,务必手动测试并确认日志可查:

sudo augenrules --load
sudo auditctl -l | grep shadow
# 模拟非法读取(普通用户下执行):
su -l testuser -c "cat /etc/shadow" 2>/dev/null || true
# 查看捕获结果:
sudo ausearch -k unauthorized_shadow_read -i | tail -5

输出中重点关注字段:

  • auid=:原始登录用户(如 1001),确认是否非 root;
  • uid= 和 euid=:实际执行用户,判断是否提权后读取;
  • comm= 和 exe=:调用命令(如 cat、vim、python3),识别攻击工具;
  • tty= 和 addr=:登录终端与源 IP,定位攻击入口。

三、从“捕获”走向“响应”:告警与轻量级阻止联动

auditd 日志写入 `/var/log/audit/audit.log`,可通过以下方式实现闭环:

- 配置 audispd 插件,将匹配 `unauthorized_shadow_read` 的事件转发至 syslog 或 Kafka;
- 编写简易监控脚本(每30秒轮询):
  `sudo ausearch -k unauthorized_shadow_read -m SYSCALL --start recent | grep -q "auid!=" && echo "$(date) 非法读shadow!" | mail -s "ALERT" admin@example.com`
- 更进一步:脚本中加入临时阻断逻辑,例如:
  `pkill -u $(ausearch -k unauthorized_shadow_read --start recent -i | awk '/auid=/ {print $NF}' | head -1)`
  或调用 `iptables -I INPUT -s [源IP] -j DROP`(需提前提取 addr 字段)

不复杂但容易忽略

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

3970

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3393

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2553

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

6210

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

5842

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

3413

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

2925

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

3139

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

297

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.4万人学习