天天看点

Linux下安全审计audit 系统审计 记录root操作Linux下安全审计audit 系统审计

Linux下安全审计audit 系统审计

1.审计介绍

Linux 审计系统提供了一种跟踪系统上与安全相关的信息的方法。根据预先配置的规则,Audit 会生成日志条目,以尽可能多地记录有关系统上发生的事件的信息。此信息对于关键任务环境确定安全策略的违反者及其执行的操作至关重要。审计不会为您的系统提供额外的安全性;相反,它可用于发现违反您系统上使用的安全策略的情况。可以通过其他安全措施(例如 SELinux)进一步防止这些违规行为。

audit能够在日志中记录的信息有:

  • 时间的日期时间、类型和结果
  • 主体和客体的敏感度标签
  • 事件与触发事件的用户身份的关联
  • 对审计配置的所有修改和访问审计日志文件的尝试
  • 身份验证机制的所有用途,例如 SSH、Kerberos 等
  • 对任何受信任数据库的更改,例如

    /etc/passwd

  • 尝试将信息导入或导出系统
  • 根据用户身份、主题和对象标签以及其他属性包括或排除事件

使用审计系统也是许多与安全相关的认证的要求。审核旨在满足或超过以下认证或合规指南的要求:

  • 受控访问保护配置文件 (CAPP)
  • 标记安全保护配置文件 (LSPP)
  • 规则集基础访问控制 (RSBAC)
  • 国家工业安全计划操作手册 (NISPOM)
  • 联邦信息安全管理法案 (FISMA)
  • 支付卡行业 — 数据安全标准 (PCI-DSS)
  • 安全技术实施指南 (STIG)

审计还包括:

  • 由国家信息保障合作伙伴 (NIAP) 和最佳安全行业 (BSI) 评估。
  • 在 Red Hat Enterprise Linux 5 上通过 LSPP/CAPP/RSBAC/EAL4+ 认证。
  • 在 Red Hat Enterprise Linux 6 上通过操作系统保护配置文件/评估保证级别 4+ (OSPP/EAL4+) 认证。

2.审计能做什么

2.1 看文件访问

审计可以跟踪文件或目录是否已被访问、修改、执行,或者文件的属性是否已更改。这很有用,例如,检测对重要文件的访问并在这些文件之一损坏的情况下提供审计跟踪。

2.2 监控系统调用

可以将审计配置为每次使用特定系统调用时生成日志条目。这可以用来,例如,通过监控来跟踪更改系统时间

settimeofday

clock_adjtime

和其他时间相关的系统调用。

2.3 记录用户运行的命令

由于审计可以跟踪文件是否已被执行,因此可以定义许多规则来记录特定命令的每次执行。例如,可以为

/bin

目录中的每个可执行文件定义规则。然后可以通过用户 ID 搜索生成的日志条目,以生成每个用户执行命令的审计跟踪。

2.4 记录安全事件

pam_faillock

认证模块能够记录失败的登录尝试的。还可以设置审核以记录失败的登录尝试,并提供有关尝试登录的用户的其他信息。

2.5 搜索事件

Audit 提供了ausearch实用程序,该实用程序可用于过滤日志条目并根据许多条件提供完整的审计跟踪。

2.6 运行摘要报告

该aureport实用程序可用于生成,除其他事项外,记录的事件每日报告。然后系统管理员可以分析这些报告并进一步调查可疑活动。

2.7 监控网络访问

iptables和ebtables实用程序可以被配置为触发审计事件,从而允许系统管理员监控网络访问。

3.审计系统架构

审计系统由两个主要部分组成:用户空间应用程序和实用程序,以及内核端系统调用处理。内核组件接收来自用户空间应用程序的系统调用,并通过三个过滤器之一过滤它们:user、task或exit。一旦系统调用通过这些过滤器之一,它就会通过排除过滤器发送,排除过滤器根据审核规则配置将其发送到审核守护程序以进行进一步处理。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KnMsoByf-1632449444073)(C:\Users\15856\AppData\Roaming\Typora\typora-user-images\image-20210923164817910.png)]

用户空间审计守护进程从内核收集信息并在日志文件中创建日志文件条目。其他审计用户空间实用程序与审计守护进程、内核审计组件或审计日志文件交互:

  • audisp — 审计调度程序守护进程与审计守护进程交互并将事件发送到其他应用程序以进行进一步处理。这个守护进程的目的是提供一个插件机制,以便实时分析程序可以与审计事件交互。
  • auditctl — 审计控制实用程序与内核审计组件交互,以控制事件生成过程的许多设置和参数。
  • 其余的审计实用程序将审计日志文件的内容作为输入,并根据用户的要求生成输出。例如,aureport实用程序生成所有记录事件的报告。

4.安装审计包

系统一般默认就有

yum install audit
           

5.配置审计服务

审计守护进程可以在

/etc/audit/auditd.conf

配置文件中进行配置。此文件包含修改审核守护程序行为的配置参数。任何空行或井号 (

#

)后面的任何文本都将被忽略。

5.1 配置auditd CAPP环境

默认

auditd

配置应该适用于大多数环境。但是,如果您的环境必须满足受控访问保护配置文件(CAPP)设置的标准,这是通用标准认证的一部分,则必须使用以下设置配置审核守护程序:

  • 保存审核日志文件的目录(通常为

    /var/log/audit/

    )应驻留在单独的分区上。这可以防止其他进程占用此目录中的空间,并为审计守护程序提供对剩余空间的准确检测。
  • 该*

    max_log_file

    *参数指定单个审计日志文件的最大大小,必须设置为充分利用保存审计日志文件的分区上的可用空间。
  • 该*

    max_log_file_action

    参数决定一旦

    max_log_file

    *达到设置的限制时采取的操作,应设置

    keep_logs

    为防止审计日志文件被覆盖。
  • 该*

    space_left

    参数指定磁盘上剩余的可用空间量,在该

    space_left_action

    参数中设置的操作将被触发,必须设置为一个数字,以便管理员有足够的时间来响应并释放磁盘空间。该

    space_left

    *值取决于生成审核日志文件的速率。
  • 建议将*

    space_left_action

    *参数设置为

    email

    exec

    使用适当的通知方法。
  • 该*

    admin_space_left

    参数指定

    admin_space_left_action

    *触发参数中设置的操作的绝对最小可用空间量,必须设置为一个值,以便留出足够的空间来记录管理员执行的操作。
  • 该*

    admin_space_left_action

    *参数必须设置为

    single

    使系统进入单用户模式并允许管理员释放一些磁盘空间。
  • 该*

    disk_full_action

    *参数指定在保存审核日志文件的分区上没有可用空间时触发的操作,必须设置为

    halt

    single

    。这可确保系统在 Audit 无法再记录事件时关闭或以单用户模式运行。
  • 的*

    disk_error_action

    *,其中规定,被触发的情况下,上保存审计日志文件的分区检测到错误的动作,必须设置为

    syslog

    single

    halt

    ,这取决于你的本地安全策略有关硬件故障的处理。
  • 所述*

    flush

    *配置参数必须设置为

    sync

    data

    。这些参数确保所有审计事件数据与磁盘上的日志文件完全同步。

其余配置选项应根据您的本地安全策略进行设置。

6.定义审计规则

审计系统根据一组规则运行,这些规则定义了要在日志文件中捕获的内容。可以指定三种类型的审计规则:

  • 控制规则 — 允许修改审计系统的行为及其某些配置。
  • 文件系统规则——也称为文件监视,允许审计对特定文件或目录的访问。
  • 系统调用规则——允许记录任何指定程序进行的系统调用。

可以使用auditctl实用程序在命令行上指定审计规则(请注意,这些规则在重新启动后不会持久),或写入

/etc/audit/audit.rules

文件。以下两节总结了定义审计规则的两种方法。

6.1 使用auditctl实用程序定义审计规则

与审计服务和审计日志文件交互的所有命令都需要 root 权限。确保以 root 用户身份执行这些命令。

auditctl

命令允许您控制审计系统的基本功能并定义决定记录哪些审计事件的规则。

6.1.1 定义控制规则

以下是一些允许您修改审计系统行为的控制规则:

  • -b

    设置内核中现有审计缓冲区的最大数量,例如:
    auditctl -b 8192
               
  • -f

    auditctl -f 2
               
    上述配置会在发生严重错误时触发内核恐慌。
  • -e

    auditctl -e 2
               
  • -r

    设置每秒生成消息的速率,例如:
    auditctl -r 0
               
    上述配置对生成的消息没有设置速率限制。
  • -s

    报告审计系统的状态,例如:
    [[email protected] ~]# auditctl -s
    enabled 1
    failure 2
    pid 5613
    rate_limit 0
    backlog_limit 8192
    lost 0
    backlog 0
    loginuid_immutable 0 unlocked
    
               
  • -l

    列出所有当前加载的审计规则,例如:
    [[email protected] ~]# auditctl -l
    No rules
    
               
  • -D

    删除所有当前加载的审计规则,例如:
    [[email protected] ~]# auditctl -D
    No rules
    
               

6.1.2 定义文件系统规则

语法:

auditctl -w path_to_file -p permission -k key_name

解释:

  • path_to_file:被审计的文件或目录
  • 权限:
    • r

      —对文件或目录的读取权限
    • w

      —对文件或目录的写访问权限
    • x

      —执行对文件或目录的访问
    • a

      —更改文件或目录的属性
  • key_name:是一个可选字符串,可帮助您识别生成特定日志条目的规则或规则集

例如:

  • 要定义记录对

    /etc/passwd

    文件的所有写访问和每个属性更改的规则,请执行以下命令:
    auditctl -w /etc/passwd -p wa -k passwd_change
               
    请注意,

    -k

    选项后面的字符串是任意的。
  • 要定义一个规则来记录

    /etc/selinux/

    目录中所有文件的所有写访问权限和每个属性更改,请执行以下命令:
    auditctl -w /etc/selinux/ -p wa -k selinux_change
               
  • 要定义记录

    /sbin/insmod

    命令执行的规则,将模块插入 Linux 内核,请执行以下命令:
    auditctl -w /sbin/insmod -p x -k module_insertion
               

6.1.3 定义系统调用规则

语法:

auditctl -a action,filter -S system_call -F field=value -k key_name

解释:

  • action和filter指定何时记录某个事件。action可以是always或nerver。filter指定将哪个内核规则匹配过滤器应用于事件。规则的匹配滤波器可以是以下中的一个:task、exit、user、exclude。
  • system_call通过名称指定系统调用。可以在/usr/include/asm/unistd_64.h文件中找到所有系统调用列表。多个系统调用可以组合成一个规则,每个都在-s选项后指定
  • filed=value指定其他选项,这些选项进一步修改规则以根据指定的体系结构、组ID、进程ID等匹配事件。
  • key_name是一个可选字符串,可帮助我们识别生成特定日志条目的规则或规则集。

例如:

  • 要定义一个规则,在程序每次使用

    adjtimex

    settimeofday

    系统调用时创建日志条目,并且系统使用 64 位架构,请执行以下命令:
    auditctl -a always,exit -F arch=b64 -S adjtimex -S settimeofday -k time_change
               
  • 定义一个规则,每次文件被ID为500或更大的系统用户删除或重命名时创建一个日志条目(该

    -F auid!=4294967295

    选项用于排除未设置登录UID的用户),执行以下命令:
    auditctl -a always,exit -S unlink -S unlinkat -S rename -S renameat -F "auid>=500" -F auid!="4294967295" -k delete
               
  • 也可以使用系统调用规则语法定义文件系统规则。以下命令为系统调用创建一个类似于

    -w /etc/shadow -p wa

    文件系统规则的规则:
    auditctl -a always,exit -F path=/etc/shadow -F perm=wa
               

6.2 在 /ETC/AUDIT/AUDIT.RULES 文件中定义持久审计规则和控制

要定义在重新启动后持续存在的审核规则,您必须将它们包含在

/etc/audit/audit.rules

文件中。此文件使用相同的

auditctl

命令行语法来指定规则。任何空行或井号 (

#

)后面的任何文本都将被忽略。

auditctl

命令还可用于从带有

-R

选项的指定文件中读取规则,例如:

auditctl -R  /usr/share/doc/audit-2.8.5/rules/xxx.rules
           

定义控制规则

一个文件可以只包含修改审计系统的行为如下控制规则:

-b

-D

-e

-f

,和

-r

6.2.1 控制规则

# 删除之前的所有规则
-D

# 设置缓冲区大小
-b 8192

# 使配置不可变——需要重启才能更改审计规则
-e 2

# 发生故障时的恐慌
-f 2

# 每秒最多生成 100 条审计消息
-r 100
           

6.2.2 定义文件系统和系统调用规则

文件系统和系统调用规则是使用

auditctl

语法定义的

例如:文件系统和系统调用规则

audit.rules

-w /etc/passwd -p wa -k passwd_changes
-w /etc/selinux/ -p wa -k selinux_changes
-w /sbin/insmod -px -k module_insertion

-a always,exit -F arch=b64 -S adjtimex -S settimeofday -k time_change
-a always,exit -S unlink -S unlinkat -S rename -S renameat -F auid>=500 -F auid!=4294967295 -k delete
           

6.2.3 预配置的规则文件

在目录中,审计包根据各种认证标准提供了一组预配置的规则文件:

/usr/share/doc/audit-*version*/rules

  • nispom.rules

    ——符合《国家工业安全方案操作手册》第八章要求的审计规则配置。
  • capp.rules

    — 满足受控访问保护配置文件(CAPP)设置的要求的审计规则配置,这是通用标准认证的一部分。
  • lspp.rules

    — 符合标记安全保护配置文件(LSPP)设置要求的审计规则配置,这是通用标准认证的一部分。
  • stig.rules

    — 符合安全技术实施指南 (STIG) 规定要求的审计规则配置。

7.审计日志文件

默认情况下,审计系统将日志条目存储在

/var/log/audit/audit.log

文件中;如果启用日志轮换,则轮换

audit.log

文件存储在同一目录中。

以下审核规则会记录每次读取或修改

/etc/ssh/sshd_config

文件的尝试:

-w /etc/ssh/sshd_config -p warx -k sshd_config
           

如果

auditd

守护进程正在运行,运行以下命令会在审计日志文件中创建一个新事件:

~]# cat /etc/ssh/sshd_config
           

audit.log

文件中的 此事件如下所示:

type=SYSCALL msg=audit(1632445286.424:140): arch=c000003e syscall=2 success=yes exit=3 a0=7ffdc4adf839 a1=0 a2=1fffffffffff0000 a3=7ffdc4add9e0 items=1 ppid=7725 pid=8290 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts1 ses=3 comm="cat" exe="/usr/bin/cat" key="sshd_config"
type=CWD msg=audit(1632445286.424:140):  cwd="/root"
type=PATH msg=audit(1632445286.424:140): item=0 name="/etc/ssh/sshd_config" inode=37244245 dev=fd:00 mode=0100600 ouid=0 ogid=0 rdev=00:00 objtype=NORMAL cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0


           

上述事件由三条记录(每条以

type=

关键字开头)组成,它们共享相同的时间戳和序列号。每条记录由若干对组成,由空格或逗号分隔。对上述事件的详细分析如下:

  • 第一条记录
    • type=SYSCALL

      type

      字段包含记录的类型。在此示例中,该

      SYSCALL

      值指定此记录是由对内核的系统调用触发的。
    • msg=audit(1364481363.243:24287)

      msg

      字段记录:
      • 表单中记录的时间戳和唯一 ID 。如果多条记录是作为同一审计事件的一部分生成的,则它们可以共享相同的时间戳和 ID。

        audit(*time_stamp*:*ID*)

      • 内核或用户空间应用程序提供的 各种特定于事件的对。

        *name*=*value*

    • arch=c000003e

      arch

      字段包含有关系统 CPU 架构的信息。值

      c000003e

      以十六进制表示法编码。

      ausearch

      使用命令搜索审计记录时,使用

      -i

      --interpret

      选项自动将十六进制值转换为人类可读的等效值。该

      c000003e

      值被解释为

      x86_64

    • syscall=2

      syscall

      字段记录发送到内核的系统调用的类型。值 ,

      2

      可以与

      /usr/include/asm/unistd_64.h

      文件中人类可读的等价物相匹配。在这种情况下,

      2

      open

      系统调用。请注意,ausyscall实用程序允许您将系统调用号转换为其人类可读的等效项。使用该

      ausyscall --dump

      命令显示所有系统调用及其编号的列表。
    • success=yes

      success

      字段记录了该特定事件中记录的系统调用是成功还是失败。
    • exit=3

      exit

      字段包含一个值,用于指定系统调用返回的退出代码。该值因系统调用而异。您可以使用以下命令将该值解释为人类可读的等效值:(

      ausearch --interpret --exit 3

      假设您的审核日志包含一个失败并显示退出代码的事件

      3

      )。
    • a0=7ffdc4adf839 a1=0 a2=1fffffffffff0000 a3=7ffdc4add9e0

      a0

      a3

      场记录的前四个参数,编码以十六进制表示,在此事件中的系统调用。这些参数取决于所使用的系统调用;它们可以由ausearch实用程序解释。
    • items=1

      items

      字段包含事件中的路径记录数。
    • ppid=7725

      ppid

      字段记录父进程 ID (PPID)。在这种情况下,

      7725

      bash

      进程的 PPID 。
    • pid=8290

      pid

      字段记录进程 ID (PID)。在这种情况下,

      8290

      cat

      进程的 PID 。
    • auid=0

      auid

      字段记录审计用户 ID,即 loginuid。该 ID 在登录时分配给用户,即使用户的身份发生变化(例如,通过使用

      su - john

      命令切换用户帐户)也会被每个进程继承。
    • uid=0

      uid

      字段记录启动分析进程的用户的用户 ID。可以使用以下命令将用户 ID 解释为用户名:. 在本例中,是 user 的用户 ID 。

      ausearch -i --uid UID

      [[email protected] rules]# ausearch -i --uid 0
      ----
      type=PROCTITLE msg=audit(09/23/2021 21:01:26.424:140) : proctitle=cat /etc/ssh/sshd_config
      type=PATH msg=audit(09/23/2021 21:01:26.424:140) : item=0 name=/etc/ssh/sshd_config inode=37244245 dev=fd:00 mode=file,600 ouid=root ogid=root rdev=00:00 objtype=NORMAL cap_fp=none cap_fi=none cap_fe=0 cap_fver=0
      type=CWD msg=audit(09/23/2021 21:01:26.424:140) :  cwd=/root
      type=SYSCALL msg=audit(09/23/2021 21:01:26.424:140) : arch=x86_64 syscall=open success=yes exit=3 a0=0x7ffdc4adf839 a1=O_RDONLY a2=0x1fffffffffff0000 a3=0x7ffdc4add9e0 items=1 ppid=7725 pid=8290 auid=root uid=root gid=root euid=root suid=root fsuid=root egid=root sgid=root fsgid=root tty=pts1 ses=3 comm=cat exe=/usr/bin/cat key=sshd_config
      
                 
    • euid=500

      euid

      字段记录启动分析进程的用户的有效用户 ID。
    • suid=500

      suid

      字段记录启动分析进程的用户的设置用户 ID。
    • fsuid=500

      fsuid

      字段记录启动分析进程的用户的文件系统用户 ID。
    • egid=500

      egid

      字段记录了启动分析进程的用户的有效组 ID。
    • sgid=500

      sgid

      字段记录启动分析进程的用户的集合 ID。
    • fsgid=500

      fsgid

      字段记录启动分析进程的用户的文件系统组 ID。
    • tty=pts1

      tty

      字段记录调用分析进程的终端。
    • ses=3

      ses

      字段记录从中调用分析进程的会话的会话 ID。
    • comm="cat"

      comm

      字段记录用于调用分析进程的命令的命令行名称。在这种情况下,该

      cat

      命令用于触发此审核事件。
    • exe="/usr/bin/cat"

      exe

      字段记录了用于调用分析过程的可执行文件的路径。
    • key="sshd_config"

      key

      字段记录了与在审核日志中生成此事件的规则相关联的管理员定义的字符串。

audit.log

文件中的 此事件如下所示:

type=SYSCALL msg=audit(1632445286.424:140): arch=c000003e syscall=2 success=yes exit=3 a0=7ffdc4adf839 a1=0 a2=1fffffffffff0000 a3=7ffdc4add9e0 items=1 ppid=7725 pid=8290 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts1 ses=3 comm="cat" exe="/usr/bin/cat" key="sshd_config"
type=CWD msg=audit(1632445286.424:140):  cwd="/root"
type=PATH msg=audit(1632445286.424:140): item=0 name="/etc/ssh/sshd_config" inode=37244245 dev=fd:00 mode=0100600 ouid=0 ogid=0 rdev=00:00 objtype=NORMAL cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0


           
  • 第二条记录
    • type=CWD

      在第二条记录中,

      type

      字段值为

      CWD

      — 当前工作目录。此类型用于记录调用第一条记录中指定的系统调用的进程所执行的工作目录。

      此记录的目的是记录当前进程的位置,以防在关联的 PATH 记录中捕获到相对路径。这样就可以重建绝对路径。

    • msg=audit(1364481363.243:24287)

      msg

      字段与第一条记录中的值具有相同的时间戳和 ID 值。
    • cwd="/home/shadowman"

      cwd

      字段包含调用系统调用的目录的路径。
  • 第三条记录
    • type=PATH

      在第三条记录中,

      type

      字段值为

      PATH

      。审计事件包含

      PATH

      作为参数传递给系统调用的每个路径的-type 记录。在此审核事件中,只有一个路径 (

      /etc/ssh/sshd_config

      ) 用作参数。
    • msg=audit(1364481363.243:24287):

      msg

      字段拥有与第一条和第二条记录中的值相同的时间戳和 ID 值。
    • item=0

      item

      字段指示

      SYSCALL

      当前记录在类型记录中引用的项目总数中的哪个项目。这个数字是从零开始的;值 表示它是第一项。
    • name="/etc/ssh/sshd_config"

      name

      字段记录作为参数传递给系统调用的文件或目录的路径。在这种情况下,它是

      /etc/ssh/sshd_config

      文件。
    • inode=37244245
                 

      inode

      字段包含与此事件中记录的文件或目录相关联的 inode 编号。以下命令显示与

      409248

      inode 编号关联的文件或目录:
      [[email protected] ~]# find / -inum 37244245
      /etc/ssh/sshd_config
      
                 
    • dev=fd:00

      dev

      字段指定包含此事件中记录的文件或目录的设备的次要和主要 ID。在这种情况下,该值代表

      /dev/fd/0

      设备。
    • mode=0100600

      mode

      字段记录文件或目录权限,以数字符号编码。在这种情况下,

      0100600

      可以解释为

      -rw-------

      ,意味着只有 root 用户对

      /etc/ssh/sshd_config

      文件有读写权限。
    • ouid=0

      ouid

      字段记录对象所有者的用户 ID。
    • ogid=0

      ogid

      字段记录对象所有者的组 ID。
    • rdev=00:00

      rdev

      字段包含仅用于特殊文件的记录设备标识符。在这种情况下,它不被使用,因为记录的文件是一个普通文件。

8.搜索审计日志文件

该ausearch工具允许你搜索审计日志文件中的特定事件。默认情况下,ausearch 会搜索

/var/log/audit/audit.log

文件。您可以使用该命令指定不同的文件。在一个命令中提供多个选项等效于使用AND运算符。

ausearch *options* -if *file_name*``ausearch

8.1 使用

ausearch

搜索审计日志文件

  • 要在

    /var/log/audit/audit.log

    文件中搜索失败的登录尝试,请使用以下命令:
    ausearch --message USER_LOGIN --success no --interpret
               
  • 要搜索所有帐户、组和角色更改,请使用以下命令:
    ausearch -m ADD_USER -m DEL_USER -m ADD_GROUP -m USER_CHAUTHTOK -m DEL_GROUP -m CHGRP_ID -m ROLE_ASSIGN -m ROLE_REMOVE -i
               
  • 要使用用户的登录 ID (

    auid

    )搜索某个用户执行的所有记录操作,请使用以下命令:
    ausearch -ua 500 -i
               
  • 要搜索从昨天到现在所有失败的系统调用,请使用以下命令:
    ausearch --start yesterday --end now -m SYSCALL -sv no -i
               

9.创建审计报告

该aureport实用程序可以生成记录在审计日志文件中的事件总结和柱状报告。默认情况下,查询目录中的所有

audit.log

文件

/var/log/audit/

以创建报告。您可以使用该命令指定不同的文件来运行报告。

aureport *options* -if *file_name*

9.1 使用

aureport

生成审计报告

  • 要为过去三天(不包括当前示例日)记录的事件生成报告,请使用以下命令:
    [[email protected] ~]# aureport --start 09/21/2021 00:00:00 --end 09/24/2021 00:00:00
    
    Summary Report
    ======================
    Range of time in logs: 12/31/1969 19:00:00.000 - 09/23/2021 21:01:26.424
    Selected time for report: 09/21/2021 00:00:00 - 09/24/2021 00:00:00
    Number of changes in configuration: 0
    Number of changes to accounts, groups, or roles: 0
    Number of logins: 0
    Number of failed logins: 0
    Number of authentications: 0
    Number of failed authentications: 0
    Number of users: 1
    Number of terminals: 1
    Number of host names: 0
    Number of executables: 1
    Number of commands: 1
    Number of files: 1
    Number of AVC's: 0
    Number of MAC events: 0
    Number of failed syscalls: 0
    Number of anomaly events: 0
    Number of responses to anomaly events: 0
    Number of crypto events: 0
    Number of integrity events: 0
    Number of virt events: 0
    Number of keys: 1
    Number of process IDs: 1
    Number of events: 1
    
               
  • 要生成所有可执行文件事件的报告,请使用以下命令:
    [[email protected] ~]# aureport -x
    
    Executable Report
    ====================================
    # date time exe term host auid event
    ====================================
    1. 09/23/2021 21:01:26 /usr/bin/cat pts1 ? 0 140
    
               
  • 要生成上述可执行文件事件报告的摘要,请使用以下命令:
    [[email protected] ~]# aureport -x --summary
    
    Executable Summary Report
    =================================
    total  file
    =================================
    1  /usr/bin/cat
    
               
  • 要为所有用户生成失败事件的摘要报告,请使用以下命令:
    [[email protected] ~]# aureport -u --failed --summary -i
    
    Failed User Summary Report
    ===========================
    total  auid
    ===========================
    <no events of interest were found>
    
               
  • 要为每个系统用户生成所有失败登录尝试的摘要报告,请使用以下命令:
    [[email protected] ~]# aureport --login --summary -i
    
    Login Summary Report
    ============================
    total  auid
    ============================
    2  unset
    1  root
    
               
  • 要从

    ausearch

    搜索 user 的所有文件访问事件的查询生成报告

    500

    ,请使用以下命令:
    ausearch --start today --loginuid 500 --raw | aureport -f --summary
               
  • 要生成查询的所有审计文件及其包含的事件时间范围的报告,请使用以下命令:
    [[email protected] ~]# aureport -t
    
    Log Time Range Report
    =====================
    /var/log/audit/audit.log: 09/23/2021 21:01:26.424 - 09/23/2021 21:43:58.190
    
               

10.为审计配置PAM

10.1 配置pam_tty_audit

Red Hat Enterprise Linux 中的审计系统使用

pam_tty_audit

PAM 模块来启用或禁用对指定用户的 TTY 输入的审计。当被审计的用户登录时,

pam_tty_audit

将用户在

/var/log/audit/audit.log

文件中进行的准确击键记录下来。该模块与

auditd

守护程序一起使用,因此请确保audit正常启用。

When you want to specify user names for TTY auditing, modify the

/etc/pam.d/system-auth

and

/etc/pam.d/password-auth

files using the

disable

and

enable

options in the following format:

session required pam_tty_audit.so disable=username,username2 enable=username 
           

注意:

By default,

pam_tty_audit

does **NOT** log keystrokes when the TTY is in password entry mode. Logging can be re-enabled by adding the

log_passwd

option along with the other options in the following way:

session required pam_tty_audit.so disable=username,username2 enable=username log_passwd 
           

When you enable the module, the input is logged in the

/var/log/audit/audit.log

file, written by the

auditd

daemon. Note that the input is not logged immediately, because TTY auditing first stores the keystrokes in a buffer and writes the record periodically, or once the audited user logs out. The

audit.log

file contains all keystrokes entered by the specified user, including backspaces, delete and return keys, the control key and others. Although the contents of

audit.log

are human-readable it might be easier to use the aureport utility, which provides a TTY report in a format which is easy to read. You can use the following command as root:

aureport --tty
           

The following is an example of how to configure

pam_tty_audit

to track the actions of the

root

user across all terminals and then review the input.

example:

Enter the following line in the

session

section of the

/etc/pam.d/system-auth

and

/etc/pam.d/password-auth

files:

session    required     pam_tty_audit.so disable=* enable=root
           

Use the

aureport --tty

command to view the log. If the

root

user has logged in a TTY console at around 11:00 o’clock and tried to issue the

pwd

command, but then deleted it and issued

ls

instead, the report will look like this:

#登录root用户,先后执行了pwd和ls
[[email protected] ~]# aureport --tty -ts today | tail -f

TTY Report
===============================================
# date time event auid term sess comm data
===============================================
1. 09/23/2021 21:59:50 179 0 ? 7 bash "pwd",<ret>
2. 09/23/2021 21:59:50 180 0 ? 7 ? "pwd"
3. 09/23/2021 21:59:51 181 0 ? 7 bash "ls",<ret>
4. 09/23/2021 21:59:51 182 0 ? 7 ? "ls"
#root用户下,随便敲了点东西如下
[[email protected] ~]# aureport --tty -ts today | tail -f
3. 09/23/2021 21:59:51 181 0 ? 7 bash "ls",<ret>
4. 09/23/2021 21:59:51 182 0 ? 7 ? "ls"
5. 09/23/2021 22:00:56 183 0 ? 7 bash "dfddgfds",<ret>
6. 09/23/2021 22:00:56 184 0 ? 7 ? "dfddgfds"
7. 09/23/2021 22:00:57 185 0 ? 7 bash "dsgds",<ret>
8. 09/23/2021 22:00:57 186 0 ? 7 ? "dsgds"
9. 09/23/2021 22:00:57 187 0 ? 7 bash "g",<ret>
10. 09/23/2021 22:00:57 188 0 ? 7 ? "g"
11. 09/23/2021 22:00:57 189 0 ? 7 bash "sdg",<ret>
12. 09/23/2021 22:00:57 190 0 ? 7 ? "sdg"
#root用户下,cat了/etc/passwd
[[email protected] ~]# aureport --tty -ts today | tail -f
5. 09/23/2021 22:00:56 183 0 ? 7 bash "dfddgfds",<ret>
6. 09/23/2021 22:00:56 184 0 ? 7 ? "dfddgfds"
7. 09/23/2021 22:00:57 185 0 ? 7 bash "dsgds",<ret>
8. 09/23/2021 22:00:57 186 0 ? 7 ? "dsgds"
9. 09/23/2021 22:00:57 187 0 ? 7 bash "g",<ret>
10. 09/23/2021 22:00:57 188 0 ? 7 ? "g"
11. 09/23/2021 22:00:57 189 0 ? 7 bash "sdg",<ret>
12. 09/23/2021 22:00:57 190 0 ? 7 ? "sdg"
13. 09/23/2021 22:01:20 198 0 ? 7 bash "cat /et",<tab>,"pass",<tab>,<ret>
14. 09/23/2021 22:01:20 199 0 ? 7 ? "cat /etc/passwd
           

这样就可以监控root的每一时刻在做什么了,嘿嘿

11.安全等保中较常用配置

vim /etc/audit/rules.d/audit.rules

-a exit,always -F arch=b64 -S umask -S chown -S chmod 
-a exit,always -F arch=b64 -S unlink -S rmdir 
-a exit,always -F arch=b64 -S setrlimit 
-a exit,always -F arch=b64 -S setuid -S setreuid 
-a exit,always -F arch=b64 -S setgid -S setregid 
-a exit,always -F arch=b64 -S sethostname -S setdomainname 
-a exit,always -F arch=b64 -S adjtimex -S settimeofday 
-a exit,always -F arch=b64 -S mount -S _sysctl
 
-w /etc/group -p wa 
-w /etc/passwd -p wa 
-w /etc/shadow -p wa 
-w /etc/sudoers -p wa

-w /etc/ssh/sshd_config

-w /etc/bashrc -p wa   
-w /etc/profile -p wa   
-w /etc/profile.d/   
-w /etc/aliases -p wa   
-w /etc/sysctl.conf -p wa
 
-w /var/log/lastlog
 
# Disable adding any additional rules - note that adding *new* rules will require a reboot

           

参考红帽子官方:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/security_guide/sec-understanding_audit_log_files

继续阅读