Linux

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > Linux > Linux Audit系统配置

Linux Audit系统配置全过程

作者:笑锝没心没肺

这篇文章主要介绍了Linux Audit系统配置全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

针对 Linux Audit 系统(auditd),常用设置主要集中在配置文件调优规则策略制定日志管理以及最佳实践四个方面。

以下是 Audit 最常用的设置和技巧:

配置文件调优

1. 核心配置文件调优 (auditd.conf)

主配置文件位于 /etc/audit/auditd.conf

默认配置通常能满足基本需求,但在生产环境中,建议调整以下参数以防日志丢失或占用过多磁盘空间。

vim /etc/audit/auditd.conf

常用参数设置:

log_file = /var/log/audit/audit.log

max_log_file = 8 (或更大,如 100)

max_log_file_action = ROTATE

num_logs = 5

space_left = 20% (或具体数值如 75M)

space_left_action = SYSLOG (或 email)

admin_space_left = 10%

admin_space_left_action = SUSPEND (或 HALT/SINGLE)

flush = INCREMENTAL

规则策略制定

1. 常用监控规则策略

规则通常写在 /etc/audit/rules.d/audit.rules 中。

以下是根据安全合规性(如 CIS Benchmark)整理的常用规则集合。

A. 文件完整性监控

监控关键系统文件是否被篡改(如密码文件、SSH配置、Web目录)。

# 监控 /etc/passwd 和 /etc/shadow (写和属性变更)
-w /etc/passwd -p wa -k identity
-w /etc/shadow -p wa -k identity

# 监控 SSH 配置
-w /etc/ssh/sshd_config -p wa -k sshd_config

# 监控 sudoers 文件
-w /etc/sudoers -p wa -k sudoers
-w /etc/sudoers.d/ -p wa -k sudoers

# 监控 Web 目录 (可选)
-w /var/www/html -p wa -k web_data

B. 系统调用监控 (更底层、更详细)

监控特定权限的提升或变更操作。

# 监控时间修改 (防止有人回溯系统时间)
-a always,exit -F arch=b64 -S adjtimex -S settimeofday -S stime -S clock_settime -k time_change

# 监控用户/组相关操作 (useradd, groupadd 等)
-a always,exit -F arch=b64 -S creat -S open -S openat -S truncate -S ftruncate -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access
-a always,exit -F arch=b64 -S unlink -S unlinkat -S rename -S renameat -F auid>=1000 -F auid!=4294967295 -k delete

# 监控权限变更 (chmod, chown)
-a always,exit -F arch=b64 -S chmod -S fchmod -S chown -S fchown -S lchown -S setxattr -S lsetxattr -S fsetxattr -S chmodat -S fchmodat -k perm_mod

# 监控特权管理 (sudo)
-a always,exit -F arch=b64 -S execve -C uid!=euid -F euid=0 -k exec_priv
-a always,exit -F arch=b64 -S execve -C gid!=egid -F egid=0 -k exec_priv

C. 登录与权限锁定

防止未登录用户(UID < 1000 或 4294967295)的噪音,只关注普通用户操作。

*注意:auditctl 的规则中,-F auid!=4294967295 是用来排除 unset (未设置) 的 auid,这是过滤系统进程的关键。*

2. 忽略特定规则 (排除噪音)

有时候系统会产生大量无用的审计日志(例如某个特定的高频程序),可以使用 -a never,exit 来忽略。

# 忽略特定系统调用的日志记录 (例如忽略特定用户的进程)
# 语法:-a <action>,<filter> -S <syscall> -F <field=value>
-a never,exit -S all -F pid=<特定PID>

注意:在 /etc/audit/rules.d/ 中配置忽略规则时,通常将忽略规则放在最前面。

日志管理

1. 日志查看与分析技巧

有了设置和规则,最重要的就是如何查看数据。

1. 实时查看审计日志

tail -f /var/log/audit/audit.log

2. 使用 ausearch 精准查询

    ausearch -m USER_LOGIN -ts today -sv no
    
    ausearch -f /etc/passwd -i

-i 参数很重要,它会把数字翻译成可读的文本。

    ausearch -k sshd_config -i

3. 生成汇总报告 (aureport)

# 查看今天的总体摘要
aureport -ts today -i

# 查看最近谁登录成功过
aureport -l -ts today -i

# 查看文件修改记录
aureport -f -ts today

实践总结(重点看)

1. 基础规范

  1. 使用 Key (-k) 标记:每一条规则都尽量加上 -k 标签,否则在海量日志中你找不到头绪。
  2. 定期检查磁盘空间:审计日志如果不加控制,可以轻松写满硬盘。务必设置好 max_log_file_action
  3. 永久化规则:不要只运行 auditctl 命令,一定要修改 /etc/audit/rules.d/audit.rules 并执行 augenrules --load
  4. 保护 Auditd 自身:防止恶意用户关闭审计服务。
    # 监控 auditd 自身的控制命令
    -w /sbin/auditctl -p x -k audit_tools
    -w /sbin/auditd -p x -k audit_tools

2. 添加规则

在 Linux 中,auditctl 命令用于控制审计系统。添加规则主要有两种方式:临时添加(立即生效,重启失效)和永久添加(写入配置文件,重启生效)。

临时添加规则 (使用auditctl)

基本语法:
auditctl -a <action,list> <filter> -S <syscall> -F <field=value> -k <key_name>

常用场景示例:

    # -w 指定路径,-p 指定权限,-k 指定关键字
    auditctl -w /etc/passwd -p wa -k passwd_changes

解释:监控 /etc/passwd 文件的写入 和属性变更 操作,并标记为 passwd_changes

    auditctl -w /var/www/html -p rwa -k web_access

解释:监控该目录的读、写和属性变更。

    auditctl -a always,exit -F arch=b64 -S unlink -S unlinkat -k delete_file

解释:监控 64 位系统的 unlink 和 unlinkat 系统调用。

    auditctl -a always,exit -F arch=b64 -S unlink -F uid=1000

永久添加规则 (写入配置文件)

为了让规则在重启后依然生效,需要将规则写入 /etc/audit/rules.d/ 目录下的文件中(通常以 .rules 结尾)。

    vim /etc/audit/rules.d/audit.rules
    -w /etc/passwd -p wa -k passwd_changes
    -w /var/www/html -p rwa -k web_access
    systemctl restart auditd

3. 删除规则

临时删除规则

    auditctl -D

如果你在添加规则时使用了 -k 参数,可以通过它删除:

    auditctl -W <path> -k <key_name>
    # 例如:
    auditctl -W /etc/passwd -k passwd_changes

永久删除规则

    vim /etc/audit/rules.d/audit.rules
    # 强制重新加载规则(不重启服务)
    augenrules --load
    # 或者重启
    systemctl restart auditd

4. 查看规则

查看当前生效的规则

可以使用以下命令查看内核中当前加载的审计规则:

auditctl -l

# 或者以更详细的格式显示
auditctl -l -v

查看状态

查看 Auditd 服务是否正在运行以及一些基本统计:

auditctl -s

查看日志 (查看审计记录)

添加规则是为了记录日志,查看日志通常使用 ausearch 或 aureport

    # 搜索标记为 'passwd_changes' 的日志
    ausearch -k passwd_changes
    ausearch -ts recent | aureport -i

或者直接看原始日志:

    ausearch -ts recent
    ausearch -f /etc/passwd

总结表格

操作命令说明
添加(临时)auditctl -w /path -p permissions -k key监控文件/目录
添加(永久)编辑 /etc/audit/rules.d/*.rules重启生效
删除(全部)auditctl -D清空所有当前规则
查看规则auditctl -l列出当前加载的规则
查看日志ausearch -k <key>根据标签查找记录

注意: 执行这些操作通常需要 root 权限 (sudo)。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文