09. Ubuntu Server 上的审计与日志记录:全面指南

简介:为什么审计和日志记录很重要

Ubuntu Server 上的审计和日志记录对于维护 Ubuntu 服务器的安全性、可靠性和问责制至关重要。它们可以让你了解系统活动、帮助发现异常,并且对于遵守 GDPR、HIPAA 或 PCI-DSS 等监管要求至关重要。

然而,许多系统由于担心磁盘空间消耗或缺乏有效分析数据的工具而没有启用审计。在本文中,我们将解决这些顾虑,并指导你以实用且可扩展的方式实施审计和日志记录。

涵盖的主题包括:

  • 审计的实际应用和挑战。
  • 使用 auditd 跟踪和记录系统事件。
  • 审计日志的磁盘空间规划。
  • 分析审计日志和系统日志的工具。
  • 使用以下工具配置日志轮转: logrotate。
  • 高级监控和审计实践

上一篇文章:

01. Ubuntu Server 简介 – SysOSX: AI & Cloud

02. 如何搭建你的第一台 Ubuntu Server:初学者指南 – SysOSX: AI & Cloud

03. 掌握 Ubuntu Server 的 Linux 命令行 – SysOSX: AI & Cloud

04. Ubuntu Server 用户与权限管理:全面指南 – SysOSX: AI & Cloud

05. Ubuntu Server 网络基础:全面指南 – SysOSX: AI & Cloud

06. 在 Ubuntu Server 上安装和管理软件:完整指南 – SysOSX: AI & Cloud

07.Ubuntu Server 补丁与更新:全面指南 – SysOSX: AI & Cloud

08. 保护你的 Ubuntu Server:加固与防护的实用步骤 – SysOSX: AI & Cloud



1. 系统审计的实际应用

为什么许多系统跳过审计

尽管审计功能强大,但许多管理员出于以下原因避免启用它:

  • 磁盘空间消耗:审计日志可能会快速增长,尤其是在繁忙的系统上,占用大量磁盘空间。
  • 性能开销:启用详细审计可能会给系统性能带来轻微开销。
  • 复杂性:审计日志内容繁杂,需要专门的工具进行分析。

如何规划审计

磁盘空间规划

要有效地规划审计:

  1. 估算日志增长量:通过临时启用审计并测量一周内日志的大小,来监控日志增长率。 sudo du -sh /var/log/audit/ 使用这些数据计算每日、每周和每月的存储需求。
  2. 分配专用存储:将审计日志存储在单独的分区或磁盘上,以防止日志占满根文件系统。例如:
    • 为日志创建一个分区: /var/log/audit。
    • 使用以下工具 lvcreate (逻辑卷管理器),以便在需要时动态扩展存储。
  3. 启用压缩:使用 logrotate 压缩旧的审计日志,从而显著降低存储需求。
  4. 保留策略:根据组织的需求定义保留策略。例如:
    • 将日志保留 30 天以便排查问题。
    • 将较旧的日志归档到外部存储,以满足合规要求。

性能考虑

Auditd 对大多数系统的性能影响微乎其微。但是,对于高流量服务器(例如 Web 服务器或数据库服务器),请在启用审计后监控 CPU 和 I/O 使用情况。如有必要:

  • 将审计规则的范围限制在关键文件或目录,而不是监控整个系统。
  • 使用采样技术降低日志的生成频率。

2. 使用 auditd 跟踪和记录系统事件

工具 auditd 仍然是系统审计最稳健的解决方案之一。下面是针对实际应用的其他考虑因素。

高级审计规则

不必审计每个文件,而应聚焦关键领域:

  • 系统配置文件:
 sudo auditctl -w /etc/ssh/sshd_config -p wa -k ssh_config_changes
  • 敏感目录:
sudo auditctl -w /var/www/html -p rwxa -k web_access
  • 用户活动:
    监控特定用户或组:
sudo auditctl -a always,exit -F uid=1001 -F arch=b64 -S execve -k user_commands

分析审计日志的工具

审计日志可能让人望而生畏,但有几种工具可以帮助整理和分析数据:

  1. Aureport:根据审计日志生成摘要报告。 sudo aureport --summary
  2. Auditbeat:Elastic 出品的轻量级工具,用于将审计日志发送到集中式 ELK Stack 进行可视化和分析。
    • 安装 Auditbeat: sudo apt install auditbeat
    • 将其配置为向 Elasticsearch 或 Logstash 发送日志。
  3. Splunk:一款商业日志分析工具,具备高级搜索和报告功能。

3. 审计日志的磁盘空间规划

磁盘空间规划示例

假设:

  • 每天的审计日志占用 500 MB。
  • 日志每周轮转一次,并压缩到原始大小的 20%。

磁盘空间计算:

  • 7 天的未压缩日志:500 MB×7=3.5 GB500MB×7=3.5GB
  • 30 天的压缩日志:500 MB×30×0.2=3 GB500MB×30×0.2=3GB
  • 所需总存储空间:3.5 GB+3 GB=6.5 GB3.5GB+3GB=6.5GB

至少分配 10 GB,以应对意外的峰值。


4. 使用以下工具配置日志轮转: logrotate

日志轮转对于管理日志大小至关重要。以下是审计日志和系统日志的高级配置。

轮转审计日志

审计日志由以下守护进程自动管理。 auditd 要自定义轮转:

  • 编辑以下文件。 /etc/audit/auditd.conf :
max_log_file = 50   # Maximum size in MB for audit.log
max_log_file_action = rotate  # Rotate logs when size exceeds limit
  • 测试配置:
sudo service auditd restart

轮转其他日志

对于非审计日志,请使用 logrotate:

  • 以下示例: /var/log/syslog:
/var/log/syslog {
    weekly
    rotate 4
    compress
    missingok
    notifempty
    create 0640 root root
}

5. 高级监控和审计实践

实时日志监控

实时监控对于发现关键事件至关重要。以下是一些工具和技术:

  1. Logwatch:汇总每日日志,并通过电子邮件发送给管理员。 sudo apt install logwatch 在以下文件中配置它: /etc/logwatch/conf/logwatch.conf。
  2. 集中式日志管理:
    • Rsyslog:将日志转发到中央服务器。 sudo apt install rsyslog 配置 /etc/rsyslog.conf ,将日志发送到远程服务器。
    • Graylog:提供基于 Web 的日志分析界面。
    • ELK Stack:Elasticsearch、Logstash 和 Kibana,用于可扩展的日志管理。

以安全为重点的监控

  • Fail2ban:监控日志中的登录失败尝试并封禁 IP。
sudo apt install fail2ban
  • Tripwire:检测文件更改,用于入侵检测。
sudo apt install tripwire

集成告警

使用以下工具为关键事件设置告警:

  • Nagios:监控服务器健康状况和日志,发现异常。
  • Prometheus with Grafana:实时跟踪指标和日志。

日志文件的位置

有许多不同的日志文件,各自用途不同。当你想要查找与某件事相关的日志时,应该先确定最相关的文件。下面是常见日志文件位置的列表。

系统日志

系统日志处理的就是 Ubuntu 系统本身,而不是用户添加的其他应用程序。这些日志可能包含有关授权、系统守护进程和系统消息的信息。

授权日志

位置: /var/log/auth.log

跟踪授权系统,例如密码提示、命令 sudo 和远程登录。

守护进程日志

位置: /var/log/daemon.log

守护进程是在后台运行的程序,通常无需用户交互。例如显示服务器、SSH 会话、打印服务、蓝牙等。

调试日志

位置: /var/log/debug

提供来自 Ubuntu 系统和应用程序的调试信息。

内核日志

位置: /var/log/kern.log

来自 Linux 内核的日志。

系统日志

位置: /var/log/syslog

包含有关系统的更多信息。如果在其他日志中找不到任何内容,很可能就在这里。

应用程序日志

一些应用程序也会在以下目录中创建日志。 /var/log下面是一些示例。

Apache 日志

位置: /var/log/apache2/ (子目录)

Apache 会在以下子目录中创建多个日志文件。 /var/log/apache2/ 文件: access.log 记录为访问文件而向服务器发出的所有请求。文件: error.log 记录服务器抛出的所有错误。

X11 服务器日志

位置: /var/log/Xorg.0.log

X11 服务器会为你的每个显示器创建一个单独的日志文件。显示器编号从零开始,因此你的第一个显示器(显示器 0)将记录到 Xorg.0.log。下一个显示器(显示器 1)将记录到 Xorg.1.log,依此类推。

非人类可读的日志

并非所有日志文件都是为了供人阅读而设计的。有些是为了供应用程序解析而制作的。下面是一些示例。

登录失败日志

位置: /var/log/faillog

包含有关登录失败的信息。你可以使用以下命令查看它。 faillog 。

最近登录日志

位置: /var/log/lastlog

包含有关最近登录的信息。你可以使用以下命令查看它。 lastlog 。

登录记录日志

位置: /var/log/wtmp

包含其他实用程序用来了解谁已登录的登录信息。要查看当前登录的用户,请使用以下命令。 who 。


结论

审计和日志记录对于维护安全可靠的 Ubuntu 服务器至关重要。通过仔细规划磁盘空间、使用工具分析日志以及实施高级监控实践,你可以克服常见挑战,并更好地了解系统活动。

无论你是在管理合规要求,还是主动保护服务器,本文讨论的技术和工具都将帮助你制定可扩展且有效的日志记录和审计策略。

预告: Ubuntu Server 系统监控工具

在下一篇文章中,我们将深入探讨 监控和性能管理。我们将介绍强大的 Ubuntu Server 系统监控工具,包括以下解决方案: Nagios、 Prometheus、 Grafana和 htop,帮助你跟踪资源使用情况、发现瓶颈并优化服务器性能。

敬请期待,了解如何让服务器高效运行,并在潜在问题影响业务之前主动解决它们!

3 thoughts on “09. Audit and Logging on Ubuntu Server: A Comprehensive Guide”

发表评论