Ubuntu 14.04.5环境下如何检测auditd停止/崩溃并执行响应操作?
用audispd实现auditd异常时的应急操作
当然可以用audispd搞定这个需求!毕竟auditd自己没法监控自身状态,而audispd作为它的配套事件转发守护进程,刚好能补上这个短板——当auditd停止或者崩溃时,audispd能第一时间察觉到连接中断,进而触发你预设的应急操作(停机或者切换到单用户模式)。
下面是具体的实现步骤和注意事项:
1. 编写应急触发脚本
首先你需要一个能执行应急操作的脚本,比如/usr/local/bin/auditd_failure_handler.sh,内容可以这样写:
#!/bin/bash # 根据需求选择操作,二选一即可 # 选项1:直接停机 systemctl poweroff -i # 选项2:切换到单用户/救援模式 # systemctl isolate rescue.target
写完后记得给脚本加执行权限:
chmod +x /usr/local/bin/auditd_failure_handler.sh
2. 配置audispd调用该脚本
编辑/etc/audisp/audispd.conf这个核心配置文件:
- 找到
dispatcher配置项,把默认的/sbin/audispd替换成你刚才写的脚本路径:dispatcher = /usr/local/bin/auditd_failure_handler.sh - 调整
max_restarts参数为0,这样auditd崩溃后audispd不会尝试重启它,直接触发应急脚本:max_restarts = 0
3. 可选:用插件实现更精细的控制
如果需要区分auditd是正常停止还是异常崩溃,可以用audispd的插件机制:
- 在
/etc/audisp/plugins.d/目录下新建一个自定义插件配置,比如auditd-monitor.conf:active = yes direction = out path = /usr/local/bin/auditd_failure_handler.sh type = always args = crash format = string - 这样你可以在脚本里通过传入的参数
args来判断触发场景,执行不同的操作,比如正常停止时不做动作,崩溃时才停机。
4. 验证配置有效性
配置完成后,重启相关服务生效:
systemctl restart auditd systemctl restart audispd
测试的时候可以先把脚本里的操作改成写日志(比如echo "auditd stopped" >> /var/log/auditd_monitor.log),确认触发逻辑没问题后,再换回实际的停机/单用户操作,避免误操作影响生产环境。
关键注意事项
- 确保脚本以root权限运行,否则没法执行停机、切换运行级别的操作。
- 部分系统中audispd是auditd的子进程,可能需要调整systemd服务配置,让audispd独立运行,确保它能在auditd崩溃后依然正常工作并触发脚本。
- 如果你已经配置了auditd.conf处理磁盘空间问题,这个audispd的配置不会和它冲突,两者可以协同工作。
内容的提问来源于stack exchange,提问作者Gary Wemmerus
相关产品推荐
相关产品推荐

