跳到内容跳到页面导航:上一页 [access key p]/下一页 [access key n]
documentation.suse.com / SUSE Linux Enterprise Server 文档 / 安全和强化指南 / The Linux Audit Framework / 设置 Linux 审计框架
适用范围 SUSE Linux Enterprise Server 15 SP5

45 设置 Linux 审计框架

本章介绍如何设置一个简单的审计方案,其中会详细说明配置和启用审计所涉及的每个步骤。在了解如何设置审计后,请考虑第 46 章 “审计规则集简介中的真实示例方案。

要在 SUSE Linux Enterprise Server 上设置审计,需要完成以下步骤:

过程 45.1︰ 设置 Linux 审计框架
  1. 安装 audit 软件包。要使用第 45.6 节 “配置日志可视化”中所述的日志可视化,请安装 gnuplotgraphviz

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

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

  4. 对系统调用启用审计。有关详细信息,请参考 第 45.3 节 “对系统调用启用审计”

  5. 根据您的方案撰写审计规则。有关详细信息,请参考 第 45.4 节 “设置审计规则”

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

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

重要
重要:控制审计守护程序

在配置审计系统的任何组件之前,请以 root 身份输入 systemctl status auditd,以确保审计守护程序未运行。SUSE Linux Enterprise Server 系统默认会在引导时启动审计,因此您需要输入 systemctl stop auditd 将其关闭。配置守护程序后,使用 systemctl start auditd 将其启动。

45.1 确定要审计的组件

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

45.2 配置审计守护程序

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

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 标准的设置,请如第 44.2 节 “配置审计守护程序”中所述调整 log_fileflushmax_log_filemax_log_file_actionspace_left、​space_left_actionadmin_space_leftadmin_space_left_action、​disk_full_actiondisk_error_action 的值。符合 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

注释的前面带有 ###,您可以根据注释从多个选项中进行选择。请不要在实际的配置文件中添加注释。

提示
提示:更多信息

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

45.3 对系统调用启用审计

如果未安装审计框架,请安装 audit 软件包。标准的 SUSE Linux Enterprise Server 系统默认不会运行 auditd。使用以下命令启用 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

45.4 设置审计规则

使用审计规则确定审计应分析系统的哪些方面。一般情况下,这包括重要数据库以及安全相关的配置文件。如果需要对系统进行广泛分析,您也可以详细分析各种系统调用。第 46 章 “审计规则集简介中提供了一个详细的示例配置,其中包括 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

配置基本审计系统参数(例如积压参数 -b)时,请使用所需的审计规则集对这些设置进行测试,以确定积压大小是否适合审计规则集导致的日志记录活动的级别。如果选择的积压大小太小,您的系统可能无法处理审计负载,并无法在超出积压上限时查询故障标志 (-f)。

重要
重要:选择故障标志

选择故障标志时,如果超出审计系统的限制,-f 2 会告知系统不将任何等待中数据刷写到磁盘便立即关闭。由于这种关闭并非正常关闭,请仅对最注重安全的环境使用 -f 2,对任何其他环境使用 -f 1(系统继续运行并发出警告,审计停止),以避免数据丢失或损坏。

目录监测项生成的输出不如这些目录下各文件的单独文件监测项那样详细。例如,要生成 /etc/sysconfig 中的系统配置的详细日志,请添加每个文件的监测项。审计不支持通配,这意味着,您无法创建 -w /etc/* 这样的规则来监测 /etc 下的所有文件和目录。

为便于在日志文件中识别,每个文件和目录监测项中都添加了一个键。使用该键可以更轻松地梳理日志,找到与特定规则相关的事件。创建键时,请将适当的前缀与键结合使用,以区分单纯的日志文件监测项和配置文件监测项。在本例中,LOG 表示日志文件监测项,CFG 表示配置文件监测项。使用文件名作为键的一部分也有助于您更轻松地在日志文件中识别此类事件。

创建文件和目录监测项时,要注意的另一点是,审计无法处理创建规则时尚不存在的文件。审计不会监测在其运行后添加到系统中的任何文件,除非您将规则集扩展为监测此新文件。

有关创建自定义规则的详细信息,请参见第 44.4 节 “将参数传递到审计系统”

重要
重要:更改审计规则

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

45.5 配置审计报告

为了避免必须挖掘原始审计日志才能大致了解系统当前发生的情况,请按特定间隔运行自定义审计报告:自定义审计报告可让您将重点放在关注的方面,并获取有关所监视事件的性质和频率的有意义统计。要详细分析单个事件,请使用 ausearch 工具。

在设置审计报告之前,请考虑以下问题:

  • 您要通过生成定期报告来监视哪种类型的事件?根据第 44.5.2 节 “生成自定义审计报告”中所述选择适当的 aureport 命令行。

  • 您要将审计报告用于什么目的?确定是否要基于累积数据创建图表,或者是否要将这些数据传输到任何类型的电子表格或数据库中。按第 45.6 节 “配置日志可视化”中所示示例的相似方法设置 aureport 命令行,并进行进一步处理,以直观呈现报告。

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

本示例假设您想要找出对您的审计、PAM 和系统配置进行的任何访问尝试。执行以下操作,找出系统上的文件事件:

  1. 生成所有事件的完整摘要报告,并检查摘要报告中的任何异常情况,例如查看failed syscalls记录,因为这些活动失败的原因可能是文件访问权限不足,或者文件不存在:

    > 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. 运行失败事件的摘要报告,并在files记录中检查文件访问失败事件的数目:

    > 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)
提示
提示:侧重于特定的时间范围

如果您要关注特定时间段的事件,请在 aureport 命令中使用开始与结束日期和时间(-ts-te)来裁减报告。有关详细信息,请参见 第 44.5.2 节 “生成自定义审计报告”

除最后一个步骤以外的所有步骤均可自动运行,您可以轻松编写其脚本并将其配置为 cron 作业。任何 --failed --summary 报告均可轻松转换为标绘文件与失败访问尝试的条形图。有关直观呈现审计报告数据的详细信息,请参见第 45.6 节 “配置日志可视化”

45.6 配置日志可视化

可以使用脚本 mkbarmkgraph 通过各种图形和图表来说明您的审计统计。与任何其他 aureport 命令一样,您可以编写绘图命令脚本,并轻松将其配置为以 cron 作业的形式运行。

mkbarmkgraph 是由 Red Hat 的 Steve Grubb 创建的。所在网址为 http://people.redhat.com/sgrubb/audit/visualize/。由于 SUSE Linux Enterprise Server 中当前版本的审计未随附这些脚本,请执行以下操作以在您的系统上提供这些脚本:

警告
警告:下载的内容有风险

使用 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}

要绘制摘要报告(例如第 45.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

要创建上述任何事件类型的失败事件摘要图表,请在相关的 aureport 命令中添加 --failed 选项。要仅涵盖特定的时间段,请在 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,来更改输出格式。