You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:44:21