跳转到内容跳转到页面导航:上一页 [访问键 p]/下一页 [访问键 n]
适用于 openSUSE Leap 15.6

41 设置 Linux 审计框架 编辑源文件

本章展示如何设置一个简单的审计场景。配置和启用审计涉及的每个步骤都将详细解释。学习了如何设置审计后,请考虑在 第 42 章,介绍审计规则集 中查看一个实际的示例场景。

要在 openSUSE Leap 上设置审计,您需要完成以下步骤

过程 41.1: 设置 Linux 审计框架
  1. 安装 audit 包。要使用如 第 41.6 节,“配置日志可视化” 中所述的日志可视化功能,请安装 gnuplotgraphviz

  2. 确定要审计的组件。有关详细信息,请参阅 第 41.1 节,“确定要审计的组件”

  3. 检查或修改基本的审计守护进程配置。有关详细信息,请参阅 第 41.2 节,“配置审计守护进程”

  4. 启用系统调用的审计。有关详细信息,请参阅 第 41.3 节,“启用系统调用的审计”

  5. 编写适合您场景的审计规则。有关详细信息,请参阅 第 41.4 节,“设置审计规则”

  6. 生成日志并配置定制的报告。有关详细信息,请参阅 第 41.5 节,“配置审计报告”

  7. 配置可选的日志可视化功能。有关详细信息,请参阅 第 41.6 节,“配置日志可视化”

Important
重要:控制审计守护进程

在配置审计系统的任何组件之前,请确保审计守护进程未运行,方法是输入 systemctl status auditd 作为 root。在默认的 openSUSE Leap 系统上,audit 会在启动时启动,因此您需要通过输入 systemctl stop auditd 来关闭它。使用 systemctl start auditd 在配置后启动守护进程。

41.1 确定要审计的组件 编辑源文件

在开始创建自己的审计配置之前,确定您希望使用它的程度。检查以下一般规则,以确定哪种用例最适合您和您的要求

41.2 配置审计守护进程 编辑源文件

审计守护进程的基本设置是通过编辑 /etc/audit/auditd.conf 来完成的。您还可以使用 YaST 配置基本设置,方法是调用 YaST › 安全与用户 › Linux 审计框架 (LAF)。使用 日志文件磁盘空间 选项卡进行配置。

log_file = /var/log/audit/audit.log
log_format = RAW
log_group = root
priority_boost = 4
flush = INCREMENTAL
freq = 20
num_logs = 5
disp_qos = lossy
dispatcher = /sbin/audispd
name_format = NONE
##name = mydomain
max_log_file = 6
max_log_file_action = ROTATE
space_left = 75
space_left_action = SYSLOG
action_mail_acct = root
admin_space_left = 50
admin_space_left_action = SUSPEND
disk_full_action = SUSPEND
disk_error_action = SUSPEND
##tcp_listen_port =
tcp_listen_queue = 5
tcp_max_per_addr = 1
##tcp_client_ports = 1024-65535
tcp_client_max_idle = 0
cp_client_max_idle = 0

默认设置对于许多设置来说效果很好。一些值,例如 num_logsmax_log_filespace_leftadmin_space_left 取决于您的部署规模。如果磁盘空间有限,您应该减少要保留的日志文件的数量(如果它们被轮换),并且应该在磁盘空间即将耗尽时提前发出警告。对于符合 CAPP 标准的设置,请调整 log_fileflushmax_log_filemax_log_file_actionspace_leftspace_left_actionadmin_space_leftadmin_space_left_actiondisk_full_actiondisk_error_action 的值,如 第 40.2 节,“配置审计守护进程” 中所述。一个符合 CAPP 标准的配置示例如下

log_file = PATH_TO_SEPARATE_PARTITION/audit.log
log_format = RAW
priority_boost = 4
flush = SYNC                       ### or DATA
freq = 20
num_logs = 4
dispatcher = /sbin/audispd
disp_qos = lossy
max_log_file = 5
max_log_file_action = KEEP_LOGS
space_left = 75
space_left_action = EMAIL
action_mail_acct = root
admin_space_left = 50
admin_space_left_action = SINGLE   ### or HALT
disk_full_action = SUSPEND         ### or HALT
disk_error_action = SUSPEND        ### or HALT

### 前缀表示注释,您可以从中选择几个选项。请勿将注释添加到您的实际配置文件中。

Tip
提示:更多信息

有关 auditd.conf 配置参数的详细背景信息,请参阅 第 40.2 节,“配置审计守护进程”

41.3 启用系统调用的审计 编辑源文件

如果未安装审计框架,请安装 audit 包。标准的 openSUSE Leap 系统默认情况下不会运行 auditd。使用以下命令启用它

> sudo systemctl enable auditd

有不同的审计活动级别可用

基本日志记录

开箱即用(无需进一步配置),auditd 仅将有关其自身配置更改的事件记录到 /var/log/audit/audit.log。除非由 auditctl 请求,否则内核审计组件不会生成任何事件(文件访问、系统调用等)。但是,其他内核组件和模块可能会在 auditctl 的控制之外记录审计事件,这些事件会出现在审计日志中。默认情况下,唯一生成审计事件的模块是 AppArmor

使用系统调用审计的高级日志记录

要审计系统调用并获得有意义的文件监视,您需要为系统调用启用审计上下文。

由于即使在配置纯文件或目录监视时,您也需要系统调用审计功能,因此您需要为系统调用启用审计上下文。要为当前会话启用审计上下文,请以 root 身份执行 auditctl -e 1。要禁用此功能,请以 root 身份执行 auditctl -e 0

审计上下文默认启用。要暂时关闭此功能,请使用 auditctl -e 0

41.4 设置审计规则 编辑源文件

使用审计规则,确定应由审计分析系统的哪些方面。通常包括重要的数据库和安全相关的配置文件。如果您需要对系统进行广泛分析,您还可以详细分析各种系统调用。在 第 42 章,介绍审计规则集 中提供了一个详细的示例配置,其中包含 CAPP 合规环境中所需的大多数规则。

审计规则可以通过 auditctl 命令的命令行传递,也可以通过在 /etc/audit/audit.rules 中编写规则集来传递,该规则集会在启动审计守护进程时进行处理。要自定义 /etc/audit/audit.rules,请直接编辑它,或使用 YaST:安全与用户 › Linux 审计框架 (LAF) › “auditctl”的规则。通过命令行传递的规则不是持久性的,需要在重新启动审计守护进程时重新输入。

一个用于对几个重要文件和目录进行基本审计的简单规则集如下所示

# basic audit system parameters
-D
-b 8192
-f 1
-e 1

# some file and directory watches with keys
-w /var/log/audit/ -k LOG_audit
-w /etc/audit/auditd.conf -k CFG_audit_conf -p rxwa
-w /etc/audit/audit.rules -k CFG_audit_rules -p rxwa

-w /etc/passwd -k CFG_passwd -p rwxa
-w /etc/sysconfig/ -k CFG_sysconfig

# an example system call rule
-a entry,always -S umask

### add your own rules

在配置基本的审计系统参数(例如 backlog 参数 -b)时,使用您的预期审计规则集测试这些设置,以确定 backlog 大小是否适合您的审计规则集引起的日志记录活动级别。如果选择的 backlog 大小太小,您的系统可能无法处理审计负载,并在超出 backlog 限制时咨询失败标志 (-f)。

Important
重要:选择失败标志

在选择失败标志时,-f 2 会告诉您的系统在超出审计系统的限制时立即关闭,而不将任何待处理的数据刷新到磁盘。由于此关闭不是干净的关闭,因此请将 -f 2 的使用限制在最注重安全的的环境中,并为任何其他设置使用 -f 1(系统继续运行,发出警告并停止审计),以避免数据丢失或数据损坏。

目录监视比对这些目录下的文件进行单独监视产生更少的详细输出。要获得系统配置中 /etc/sysconfig 的详细日志记录,例如,请为每个文件添加监视。

为了更好地识别日志文件中的信息,已为每个文件和目录监视添加了一个键。使用该键,更容易梳理日志以查找与特定规则相关的事件。在创建键时,通过使用适当的前缀(在本例中,LOG 用于日志文件监视,CFG 用于配置文件监视)来区分纯日志文件监视和配置文件监视。在键中使用文件名也有助于您更轻松地在日志文件中识别此类事件。

在创建文件和目录监视时,还需要记住审计无法处理规则创建时不存在的文件。在审计已经运行时添加到您的系统的任何文件都不会被监视,除非您扩展规则集以监视此新文件。

有关创建自定义规则的更多信息,请参阅 第 40.4 节,“将参数传递给审计系统”

Important
重要:更改审计规则

更改审计规则后,始终使用 systemctl restart auditd 重新启动审计守护进程以重新读取更改的规则。

41.5 配置审计报告 编辑源文件

为了避免不得不深入研究原始审计日志才能了解您的系统当前正在做什么,请在特定时间间隔运行自定义审计报告。自定义审计报告使您能够专注于感兴趣的领域并获得有关您正在监视的事件的性质和频率的有意义的统计信息。要详细分析单个事件,请使用 ausearch 工具。

在设置审计报告之前,请考虑以下事项

  • 您希望监视哪些类型的事件来生成定期报告?选择如 第 40.5.2 节,“生成自定义审计报告” 中所述的适当 aureport 命令行。

  • 您想如何处理审计报告?决定是将从累积的数据中创建图形图表,还是应该将其传输到任何类型的电子表格或数据库。设置 aureport 命令行和进一步处理,类似于 第 41.6 节,“配置日志可视化” 中显示的示例,以可视化您的报告。

  • 报告何时以及以什么间隔运行?使用 cron 设置适当的自动化报告。

在本例中,假设您有兴趣了解任何尝试访问您的 audit、PAM 和系统配置的行为。按照以下步骤查找系统上的文件事件

  1. 生成所有事件的完整摘要报告,并检查摘要报告中的任何异常情况,例如,查看 失败的系统调用 记录,因为这些可能由于权限不足而失败访问文件或文件不存在

    > sudo aureport
    
    Summary Report
    ======================
    Range of time in logs: 03/02/09 14:13:38.225 - 17/02/09 16:30:10.352
    Selected time for report: 03/02/09 14:13:38 - 17/02/09 16:30:10.352
    Number of changes in configuration: 24
    Number of changes to accounts, groups, or roles: 0
    Number of logins: 9
    Number of failed logins: 15
    Number of authentications: 19
    Number of failed authentications: 578
    Number of users: 3
    Number of terminals: 15
    Number of host names: 4
    Number of executables: 20
    Number of files: 279
    Number of AVC's: 0
    Number of MAC events: 0
    Number of failed syscalls: 994
    Number of anomaly events: 0
    Number of responses to anomaly events: 0
    Number of crypto events: 0
    Number of keys: 2
    Number of process IDs: 1238
    Number of events: 5435
  2. 运行失败事件的摘要报告,并检查 文件 记录中失败的文件访问事件的数量

    > sudo aureport --failed
    
    Failed Summary Report
    ======================
    Range of time in logs: 03/02/09 14:13:38.225 - 17/02/09 16:30:10.352
    Selected time for report: 03/02/09 14:13:38 - 17/02/09 16:30:10.352
    Number of changes in configuration: 0
    Number of changes to accounts, groups, or roles: 0
    Number of logins: 0
    Number of failed logins: 15
    Number of authentications: 0
    Number of failed authentications: 578
    Number of users: 1
    Number of terminals: 7
    Number of host names: 4
    Number of executables: 12
    Number of files: 77
    Number of AVC's: 0
    Number of MAC events: 0
    Number of failed syscalls: 994
    Number of anomaly events: 0
    Number of responses to anomaly events: 0
    Number of crypto events: 0
    Number of keys: 2
    Number of process IDs: 713
    Number of events: 1589
  3. 要列出无法访问的文件,请运行失败文件事件的摘要报告

    > sudo aureport -f -i --failed --summary
    
    Failed File Summary Report
    ===========================
    total  file
    ===========================
    80  /var
    80  spool
    80  cron
    80  lastrun
    46  /usr/lib/locale/en_GB.UTF-8/LC_CTYPE
    45  /usr/lib/locale/locale-archive
    38  /usr/lib/locale/en_GB.UTF-8/LC_IDENTIFICATION
    38  /usr/lib/locale/en_GB.UTF-8/LC_MEASUREMENT
    38  /usr/lib/locale/en_GB.UTF-8/LC_TELEPHONE
    38  /usr/lib/locale/en_GB.UTF-8/LC_ADDRESS
    38  /usr/lib/locale/en_GB.UTF-8/LC_NAME
    38  /usr/lib/locale/en_GB.UTF-8/LC_PAPER
    38  /usr/lib/locale/en_GB.UTF-8/LC_MESSAGES
    38  /usr/lib/locale/en_GB.UTF-8/LC_MONETARY
    38  /usr/lib/locale/en_GB.UTF-8/LC_COLLATE
    38  /usr/lib/locale/en_GB.UTF-8/LC_TIME
    38  /usr/lib/locale/en_GB.UTF-8/LC_NUMERIC
    8  /etc/magic.mgc
    ...

    为了将此摘要报告聚焦于几个感兴趣的文件或目录,例如 /etc/audit/auditd.conf/etc/pam.d/etc/sysconfig,请使用类似于以下命令的命令

    > sudo aureport -f -i --failed --summary |grep -e "/etc/audit/auditd.conf" -e "/etc/pam.d/" -e "/etc/sysconfig"
    
    1  /etc/sysconfig/displaymanager
  4. 从摘要报告中,然后继续从日志中隔离这些感兴趣的项目,并找出它们的事件 ID 以进行进一步分析

    > sudo aureport -f -i --failed |grep -e "/etc/audit/auditd.conf" -e "/etc/pam.d/" -e "/etc/sysconfig"
    
    993. 17/02/09 16:47:34 /etc/sysconfig/displaymanager readlink no /bin/vim-normal root 7887
    994. 17/02/09 16:48:23 /etc/sysconfig/displaymanager getxattr no /bin/vim-normal root 7889
  5. 使用事件 ID 获取每个感兴趣项目的详细记录

    > sudo ausearch -a 7887 -i
    ----
    time->Tue Feb 17 16:48:23 2009
    type=PATH msg=audit(1234885703.090:7889): item=0 name="/etc/sysconfig/displaymanager" inode=369282 dev=08:06 mode=0100644 ouid=0 ogid=0 rdev=00:00
    type=CWD msg=audit(1234885703.090:7889):  cwd="/root"
    type=SYSCALL msg=audit(1234885703.090:7889): arch=c000003e syscall=191 success=no exit=-61 a0=7e1e20 a1=7f90e4cf9187 a2=7fffed5b57d0 a3=84 items=1 ppid=25548 pid=23045 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts2 ses=1166 comm="vim" exe="/bin/vim-normal" key=(null)
Tip
提示:聚焦于特定时间范围

如果您对特定时间段内的事件感兴趣,请使用起始和结束日期和时间通过您的 aureport 命令(-ts-te)来缩小报告范围。有关更多信息,请参阅 第 40.5.2 节,“生成自定义审计报告”

所有步骤(除了最后一步)都可以自动运行,并且可以轻松地编写脚本并配置为 cron 作业。任何 --failed --summary 报告都可以轻松转换为绘制文件与失败访问尝试的条形图。有关可视化审计报告数据的更多信息,请参阅 第 41.6 节,“配置日志可视化”

41.6 配置日志可视化 编辑源文件

使用脚本 mkbarmkgraph,您可以利用各种图表和图形来展示您的审计统计信息。与任何其他 aureport 命令一样,绘图命令也可以编写脚本并轻松配置为 cron 作业。

mkbarmkgraph 由 Red Hat 的 Steve Grubb 创建。它们可从 https://people.redhat.com/sgrubb/audit/visualize/ 获取。由于 openSUSE Leap 中的当前 audit 版本不包含这些脚本,因此请按以下步骤使其在您的系统上可用

Warning
警告:下载的内容存在危险

请自行承担使用 mkbarmkgraph 的风险。从 Web 下载的任何内容都可能对您的系统造成危险,尤其是在使用 root 权限运行时。

  1. 将脚本下载到 root~/bin 目录

    > sudo wget http://people.redhat.com/sgrubb/audit/visualize/mkbar -O ~/bin/mkbar
    > sudo wget http://people.redhat.com/sgrubb/audit/visualize/mkgraph -O ~/bin/mkgraph
  2. 调整文件权限,以便 root 具有读、写和执行权限

    > sudo chmod 744 ~/bin/mk{bar,graph}

要绘制摘要报告,例如在 第 41.5 节,“配置审计报告” 中讨论的报告,请使用脚本 mkbar。一些示例命令如下所示

创建事件摘要
> sudo aureport -e -i --summary | mkbar events
创建文件事件摘要
> sudo aureport -f -i --summary | mkbar files
创建登录事件摘要
> sudo aureport -l -i --summary | mkbar login
创建用户事件摘要
> sudo aureport -u -i --summary | mkbar users
创建系统调用事件摘要
> sudo aureport -s -i --summary | mkbar syscalls

要创建上述任何事件类型的失败事件摘要图表,请将 --failed 选项添加到相应的 aureport 命令。要涵盖特定时间段,请在 aureport 上使用 -ts-te 选项。可以使用 grep 或 egrep 和正则表达式进一步调整这些命令中的任何一个。请参阅 mkbar 脚本中的注释以获取示例。上述任何命令都会生成包含请求数据的条形图的 PNG 文件。

要说明不同类型的审计对象之间的关系,例如用户和系统调用,请使用脚本 mkgraph。一些示例命令如下所示

用户与可执行文件
> sudo LC_ALL=C aureport -u -i | awk '/^[0-9]/ { print $4" "$7 }' | sort | uniq | mkgraph users_vs_exec
用户与文件
> sudo LC_ALL=C aureport -f -i | awk '/^[0-9]/ { print $8" "$4 }' | sort | uniq | mkgraph users_vs_files
系统调用与命令
> sudo LC_ALL=C aureport -s -i | awk '/^[0-9]/ { print $4" "$6 }' | sort | uniq | mkgraph syscall_vs_com
系统调用与文件
> sudo LC_ALL=C aureport -s -i | awk '/^[0-9]/ { print $5" "$4 }' | sort | uniq | mkgraph | syscall_vs_file

可以将图表组合起来以说明复杂的关系。有关更多信息和示例,请参阅 mkgraph 脚本中的注释。此脚本生成的图表默认以 PostScript 格式创建,但您可以将脚本中的 EXT 变量从 ps 更改为 pngjpg 来更改输出格式。

打印此页面