Linux Audit系统配置全过程

 更新时间:2026年06月24日 14:48:20   作者:笑锝没心没肺  
这篇文章主要介绍了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)

  • 单个日志文件的最大容量(单位:MB)。当达到这个大小时,Auditd 会自动轮转日志。

max_log_file_action = ROTATE

  • 当日志达到最大容量时的动作。
  • ROTATE:轮转(保留旧日志,创建新文件,数量由 num_logs 决定)。推荐。
  • KEEP_LOGS:不覆盖,不断增加日志文件。
  • IGNORE:不记录,继续写到当前文件(可能导致日志损坏)。

num_logs = 5

  • 保留的轮转日志文件数量。
  • 例如设置为 5,加上当前正在使用的 1 个,总共最多占用 6 倍 max_log_file 的空间。

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

  • 当磁盘剩余空间低于此值时触发警告。

space_left_action = SYSLOG (或 email)

  • 磁盘空间不足时的动作。
  • SYSLOG 会向系统日志发送警告;如果安装了邮件服务,可以设置为 email 并配置 action_mail_acct

admin_space_left = 10%

  • 极低空间的警戒线。

admin_space_left_action = SUSPEND (或 HALT/SINGLE)

  • 极其重要的设置
  • SUSPEND:暂停记录日志(默认),防止系统崩溃。
  • HALT:直接关机(适用于极高安全要求的系统,防止日志被覆盖)。
  • SINGLE:切换到单用户模式。

flush = INCREMENTAL

  • 数据写入磁盘的频率。
  • INCREMENTAL 配合 freq 参数可以平衡性能和数据安全。
  • 对于高频操作,设为 DATA 或 SYNC 更安全但更耗性能。

规则策略制定

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
    
  • 查看关于 /etc/passwd 的所有变更:
    ausearch -f /etc/passwd -i

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

  • 查看某个 Key 标记的事件(如设置的 sshd_config):
    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>
  • -a: 添加规则。
  • -S: 系统调用名称(如 openwritechmod)。
  • -F: 过滤条件(如路径、用户ID等)。
  • -k: 给规则打一个唯一的标签(方便后续查找)。

常用场景示例:

  • 监控特定文件的写入操作(如监控 /etc/passwd):
    # -w 指定路径,-p 指定权限,-k 指定关键字
    auditctl -w /etc/passwd -p wa -k passwd_changes

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

  • 监控特定目录的所有访问(如监控 /var/www/html):
    auditctl -w /var/www/html -p rwa -k web_access

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

  • 监控某个系统调用(如删除文件操作 unlink):
    auditctl -a always,exit -F arch=b64 -S unlink -S unlinkat -k delete_file

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

  • 禁止某个用户(UID 为 1000)执行特定操作(并阻断):
    auditctl -a always,exit -F arch=b64 -S unlink -F uid=1000

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

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

  • 编辑或创建一个规则文件:
    vim /etc/audit/rules.d/audit.rules
  • 将之前使用 auditctl 的命令(去掉 auditctl)写入文件。例如:
    -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)。

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

相关文章

  • linux如何为已存在的用户创建home目录

    linux如何为已存在的用户创建home目录

    这篇文章主要介绍了linux如何为已存在的用户创建home目录问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • Linux服务器磁盘空间清理方法汇总

    Linux服务器磁盘空间清理方法汇总

    在长时间运行过程中,Linux服务器上的磁盘空间可能会被各种文件和目录占用,导致磁盘空间不足,所以我们定期清理磁盘空间是非常必要的,本文将介绍一些常见的Linux服务器磁盘空间清理方法,需要的朋友可以参考下
    2024-04-04
  • Ubuntu中实现定时唤醒与自动休眠功能

    Ubuntu中实现定时唤醒与自动休眠功能

    在自动化脚本执行的时间段内唤醒系统使其正常运行,其余时间则让其进入休眠状态,以此来降低能耗,为达成这一目标,我编写了一个简易的脚本,并通过 crontab 配置了自动化任务,接下来,我会详尽地讲解整个配置过程,需要的朋友可以参考下
    2024-09-09
  • CentOS 7 网络配置详解

    CentOS 7 网络配置详解

    本篇文章主要介绍了CentOS 7 网络配置,现在分享给大家,也给大家做个参考。需要的朋友可以参考下。
    2016-11-11
  • Apache后缀名解析漏洞分析和防御方法

    Apache后缀名解析漏洞分析和防御方法

    这篇文章主要介绍了Apache后缀名解析漏洞分析和防御方法,后缀解析漏洞通常通过伪造PHP后辍,来上传文件到服务器中,很致命的一漏洞,需要的朋友可以参考下
    2014-08-08
  • Linux变量操作符“${}“的用法详解

    Linux变量操作符“${}“的用法详解

    这篇文章主要介绍了Linux变量操作符“${}“的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-05-05
  • CentOS下SSH无密码登录的配置文件

    CentOS下SSH无密码登录的配置文件

    这篇文章主要介绍了CentOS下SSH无密码登录的配置,包括配置SSH无密码登录需要三个步骤,本文给大家介绍的非常详细,具有参考借鉴价值,需要的朋友可以参考下
    2016-10-10
  • Linux提权技巧全面汇总

    Linux提权技巧全面汇总

    在Linux系统中,提权是指获取更高的权限,这通常通过使用特定的命令或工具来完成,在这篇文章中,我们将探讨一些常见的Linux提升权限的技巧:常用提权命令,反弹shell,获取完整交互式SHELL,Linux内核漏洞提权,脏牛提权,metasploit linux提权,SUID提权,passwd提权,ssh密钥提权
    2024-05-05
  • Linux 服务器硬件数据的收集及使用案例

    Linux 服务器硬件数据的收集及使用案例

    这篇文章主要介绍了Linux 服务器硬件数据的收集,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-05-05
  • Linux如何快速统计文件夹中的文件数量

    Linux如何快速统计文件夹中的文件数量

    在日常计算机使用和系统管理工作中,我们经常需要知道某个文件夹下有多少个文件,本文将为大家详细介绍一下Linux快速统计文件夹中的文件数量的相关方法,希望对大家有所帮助
    2025-06-06

最新评论