auditd可实时监控/etc/resolv.conf的访问与修改行为,通过auditctl -w /etc/resolv.conf -p wa -k resolv_conf_mod添加规则,持久化需写入/etc/audit/rules.d/resolv.conf.rules并augenrules --load,配合ausearch -k resolv_conf_mod检索日志,实现dns劫持攻击的可追溯审计。

要在 Linux 上利用 auditd 实时监控并记录所有对 /etc/resolv.conf 的访问与修改行为,是防范 DNS 劫持攻击的重要主动防御手段。它不替代权限锁定或不可变属性,而是提供可追溯、不可抵赖的操作审计能力——尤其当攻击者已获得低权限但试图篡改 DNS 配置时,auditd 能第一时间捕获动作来源(进程、用户、命令行)、时间及操作类型。
启用 auditd 并添加 resolv.conf 监控规则
确保 auditd 服务已安装并运行:
- Debian/Ubuntu:
sudo apt install auditd && sudo systemctl enable --now auditd - RHEL/CentOS/Fedora:
sudo dnf install audit && sudo systemctl enable --now auditd
添加针对 /etc/resolv.conf 的细粒度监控规则(需 root 权限):
- 监控所有写入、属性修改、重命名、删除等关键操作:
sudo auditctl -w /etc/resolv.conf -p wa -k resolv_conf_mod - 其中
-p wa表示监控“write”和“attribute change”(如 chmod/chown/chattr);-k resolv_conf_mod是自定义键名,便于后续检索 - 为保证重启后持久生效,将该规则写入配置文件:
echo "-w /etc/resolv.conf -p wa -k resolv_conf_mod" | sudo tee -a /etc/audit/rules.d/resolv.conf.rules
识别可疑行为的关键日志字段
当有进程尝试修改 /etc/resolv.conf 时,auditd 会生成类似如下日志(可通过 ausearch -k resolv_conf_mod 查看):
-
exe="/usr/bin/nmcli"或exe="/usr/lib/NetworkManager/nm-dispatcher":表明 NetworkManager 触发了写入(需检查其 DNS 配置是否合规) -
uid=1001 auid=1001:显示普通用户 ID,若非预期运维人员,则高度可疑 -
comm="dhclient":DHCP 客户端自动更新,应结合/etc/dhcp/dhclient.conf中是否禁用domain-name-servers覆盖 -
nametype=NORMAL+res=success:表示修改成功,需立即响应;若res=failed,说明权限控制(如chattr +i)已起效
联动响应与日常巡检建议
仅记录不够,需建立快速响应闭环:
- 配置
audispd插件或使用auditbeats将日志接入 SIEM(如 ELK、Graylog),设置告警规则:1 小时内出现 ≥2 次resolv_conf_mod成功事件即触发通知 - 定期执行:
sudo ausearch -k resolv_conf_mod --start today -i | grep -E "(exe|uid|comm)" | sort | uniq -c | sort -nr,快速发现高频操作主体 - 若发现未知进程(如
exe="/tmp/.x"或comm="curl")频繁尝试写入,应立即排查是否存在恶意脚本或提权行为 - 注意:auditd 不监控符号链接目标内容变更。若
/etc/resolv.conf是指向/run/systemd/resolve/stub-resolv.conf的软链,需额外添加对目标路径的监控规则
与权限加固策略协同使用
auditd 是“哨兵”,不是“门锁”。必须配合基础防护才能形成纵深防御:
- 仍需执行:
sudo chown root:root /etc/resolv.conf && sudo chmod 644 /etc/resolv.conf && sudo chattr +i /etc/resolv.conf - 禁用自动覆盖机制:如 NetworkManager 需设
dns=none,systemd-resolved 若不用则应disable --now,避免 auditd 日志被合法服务刷屏 - 验证有效性:
sudo ls -l /etc/resolv.conf应显示-rw-r--r--;sudo lsattr /etc/resolv.conf必须含i标志;sudo auditctl -l | grep resolv应可见对应规则











