Loading... ## Linux 服务器审计功能开启 Linux 服务器的审计功能是保障系统安全性和可控性的重要手段。开启审计功能可以实时监控和记录服务器上发生的关键事件,如文件访问、用户登录、权限变更等。这对排查安全隐患、追溯操作历史以及满足合规性要求至关重要。本文将详细介绍如何在 Linux 服务器上启用审计功能,并提供审计配置的示例。 ### 1. 审计功能概述 **审计(Audit)** 是 Linux 系统中用来监控和记录系统事件的安全机制。通过审计系统,可以记录用户活动、系统调用、文件访问、权限变更等操作。系统管理员可以通过这些记录来分析安全问题、优化系统管理,甚至用来进行法律取证。 Linux 中审计功能由 **auditd** 守护进程管理,`auditd` 守护进程负责记录、管理和存储审计日志,配合 **ausearch**、**aureport** 等工具可以方便地查看和分析审计日志。 ### 2. 安装审计工具 在大多数 Linux 发行版中,审计工具 `auditd` 可以通过包管理器安装。不同的 Linux 发行版,安装命令稍有不同。 #### 2.1 在 CentOS / RHEL 上安装 `auditd` ```bash sudo yum install audit ``` #### 2.2 在 Ubuntu / Debian 上安装 `auditd` ```bash sudo apt-get install auditd ``` #### 2.3 验证安装 安装完成后,可以使用以下命令检查 `auditd` 是否已经安装并运行: ```bash sudo systemctl status auditd ``` 确认服务已经启动。如果服务未启动,可以手动启动: ```bash sudo systemctl start auditd ``` ### 3. 配置审计规则 `auditd` 审计系统依赖规则来定义哪些事件需要被记录。可以通过配置文件或动态修改审计规则,通常使用的配置文件是 `/etc/audit/audit.rules` 或 `/etc/audit/rules.d/audit.rules`。 #### 3.1 配置文件路径 - CentOS / RHEL 系统通常使用 `/etc/audit/audit.rules`。 - Ubuntu / Debian 系统中,规则文件保存在 `/etc/audit/rules.d/` 目录下,通常编辑 `/etc/audit/rules.d/audit.rules` 文件。 #### 3.2 配置常见审计规则 以下是一些常见的审计规则,用于监控系统关键操作: - **监控文件/目录的访问和修改**: ```bash -w /etc/passwd -p wa -k passwd_changes ``` 该规则监控 `/etc/passwd` 文件的所有写(`w`)和属性更改(`a`)操作,并打上 `passwd_changes` 标签,便于日志查询和过滤。 - **监控用户登录事件**: ```bash -w /var/log/lastlog -p wa -k user_login ``` 此规则监控 `/var/log/lastlog` 文件,该文件记录了每个用户的最后一次登录信息,`user_login` 是为事件打上的标签。 - **监控系统调用(syscall)**: ```bash -a always,exit -F arch=b64 -S execve -k exec_commands ``` 该规则监控 `execve` 系统调用,记录所有执行的命令操作。`-F arch=b64` 代表这是针对 64 位架构的规则。 - **监控特定用户或组的行为**: ```bash -w /home -p rwx -k home_access ``` 监控 `/home` 目录下所有文件的读写和执行操作,可以用来跟踪用户对主目录的访问行为。 #### 3.3 重新加载审计规则 在修改审计规则文件后,需要重新加载 `auditd` 服务使其生效: ```bash sudo service auditd restart ``` 或者使用: ```bash sudo systemctl restart auditd ``` ### 4. 查看和分析审计日志 配置完成后,`auditd` 会记录指定规则的审计事件。默认的审计日志存放在 `/var/log/audit/audit.log` 文件中。可以通过 `ausearch` 和 `aureport` 工具来查询和分析这些日志。 #### 4.1 使用 `ausearch` 查询日志 `ausearch` 是一个强大的工具,可以基于不同的条件查询审计日志。 - **按关键字查询**: ```bash ausearch -k passwd_changes ``` 该命令根据前面定义的关键字 `passwd_changes` 查找所有与 `/etc/passwd` 修改相关的事件。 - **按用户 ID 查询**: ```bash ausearch -ua 1000 ``` 该命令查询用户 ID 为 `1000` 的用户的所有活动。 #### 4.2 使用 `aureport` 生成审计报告 `aureport` 工具可以生成审计系统的汇总报告,便于系统管理员分析和评估系统安全状态。 - **生成用户登录报告**: ```bash aureport --login ``` - **生成所有文件访问的报告**: ```bash aureport --file ``` - **生成系统调用报告**: ```bash aureport --syscall ``` ### 5. 审计日志管理 由于审计日志记录了大量的系统事件,日志文件可能会迅速增长,因此需要做好日志管理,防止系统磁盘空间耗尽。可以通过审计日志轮换机制进行日志管理。 #### 5.1 审计日志轮换配置 可以通过修改 `/etc/audit/auditd.conf` 文件来配置日志轮换。例如: ```bash max_log_file = 8 # 单个日志文件最大为 8 MB num_logs = 5 # 保留 5 个历史日志文件 max_log_file_action = ROTATE # 当达到日志文件大小限制时,自动轮换日志 ``` 这些配置项可以有效防止审计日志占用过多磁盘空间。 ### 6. 审计系统的性能影响 审计功能会对系统性能产生一定影响,尤其是在规则配置过多或高频率的系统事件下。以下是一些优化建议: - **精简审计规则**:只记录必要的操作,避免监控大量不重要的事件。 - **合理设置日志轮换**:避免日志文件过大,确保日志存储有足够的磁盘空间。 - **分析日志频率**:定期分析审计日志,并及时清理旧日志,防止日志积压。 ### 7. 总结 通过启用 Linux 服务器的审计功能,系统管理员可以更好地监控服务器上的安全事件,识别潜在威胁,满足安全审计的要求。`auditd` 守护进程、审计规则配置以及日志分析工具(如 `ausearch` 和 `aureport`)为服务器提供了全面的审计支持。在实际应用中,配置合理的审计规则并定期检查日志,是维护系统安全的有效手段。 最后修改:2024 年 09 月 18 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏