auditd通过监控包管理器执行(如yum、apt)和关键路径写入(如/var/lib/rpm/、/var/lib/dpkg/)来间接审计软件包操作,需配置永久规则并用ausearch -i检索解析。

auditd 本身不直接记录“安装/卸载软件包”这一高层操作,但它能精准捕获底层系统调用——而所有包管理行为(如 yum、dnf、apt)最终都表现为对关键路径的写入、执行和配置修改。因此,要审计软件包操作,需监控这些行为发生的**具体载体**:包管理器二进制文件、软件仓库缓存目录、系统配置文件及数据库路径。
监控核心包管理命令的执行
这是最直接有效的方式。所有安装/卸载动作必须调用包管理器程序,只要捕获其执行行为,就能锁定操作源头。
- CentOS/RHEL(yum/dnf):
sudo auditctl -w /usr/bin/yum -p x -k pkg_yumsudo auditctl -w /usr/bin/dnf -p x -k pkg_dnf - Ubuntu/Debian(apt):
sudo auditctl -w /usr/bin/apt -p x -k pkg_aptsudo auditctl -w /usr/bin/apt-get -p x -k pkg_aptget - 通用补充(避免绕过):
sudo auditctl -w /usr/bin/rpm -p x -k pkg_rpm(RPM系底层)sudo auditctl -w /usr/bin/dpkg -p x -k pkg_dpkg(Debian系底层)
注意:-p x 表示监控“执行”权限,每次运行命令都会触发一条审计事件,并附带 comm(命令名)、exe(真实路径)、auid(原始登录用户)、uid(当前有效用户)等关键字段。
监控包数据库与关键配置路径的写入
安装/卸载必然修改数据库或配置文件。监控这些路径的写入(-p w),可补全操作上下文,尤其当用户用脚本或非标准方式调用时。
- RHEL/CentOS:
sudo auditctl -w /var/lib/rpm/ -p w -k rpm_db(RPM数据库目录)sudo auditctl -w /etc/yum.repos.d/ -p wa -k yum_repos(仓库配置,含新增/修改源) - Ubuntu/Debian:
sudo auditctl -w /var/lib/dpkg/ -p w -k dpkg_dbsudo auditctl -w /etc/apt/sources.list* -p wa -k apt_sources - 通用重要路径:
sudo auditctl -w /usr/bin/ -p w -k bin_mod(警惕恶意替换包管理器)sudo auditctl -w /etc/passwd -p w -k user_mod(某些包安装会添加服务用户)
⚠️ 警告:不要对整个 /usr 或 /var 目录加 -p rwxa,会产生海量日志导致服务阻塞或磁盘占满。
在无 root/sudo 权限的环境(云容器、VPS、隔离主机)中安装并配置 OpenClaw 浏览器工具的 headless Chrome。适用场景:...
永久生效并正确查询日志
临时规则(auditctl 添加)在重启 auditd 或系统后丢失,生产环境必须落盘为永久规则。
- 新建规则文件:
echo "-w /usr/bin/yum -p x -k pkg_yum" | sudo tee /etc/audit/rules.d/pkg.rulesecho "-w /var/lib/rpm/ -p w -k rpm_db" | sudo tee -a /etc/audit/rules.d/pkg.rules - 加载规则:
sudo augenrules --load(推荐)或sudo systemctl restart auditd - 验证是否加载:
sudo auditctl -l | grep pkg - 查询相关事件(务必加
-i解析):sudo ausearch -k pkg_yum -i | head -20sudo ausearch -k rpm_db -i --start today
输出中重点关注:comm="yum"、exe="/usr/bin/python3"(实际解释器)、auid=1001(谁发起的)、cwd="/root"(在哪执行)、argc=3(参数个数,可结合 avc 字段进一步分析)。
识别典型安装/卸载行为模式
单条日志无法直接显示“安装了 nginx”,但组合分析可还原操作意图:
- 高频关联:一条
comm="yum"执行日志 + 紧随其后的多条name="/var/lib/rpm/..."写入日志 = 很可能执行了yum install; - 卸载特征:
comm="rpm"+syscall=unlinkat+name="/usr/bin/nginx"表示删除二进制文件; - 异常线索:非 root 用户(
uid != 0)执行apt、或从临时目录(cwd="/tmp")调用rpm -ivh需重点排查。
若需自动化归类,可用 aureport -f -i --start today 汇总文件访问,再人工交叉比对。










