3Years - TotoroLMva 浪迹在上海的信息安全大学狗 我信仰的是信仰

03月 08

Linux使用Audit审计系统配置手册

1.版本说明
本配置需要在被采集日志的服务器上安装Audit软件包,并进行程序配置。使用的软件与版本是audit-2.8.4。

2.安装Audit
使用root用户执行如下安装命令:

yum install audit

安装完成后,/etc/audit目录下会生成如下文件或目录:

auditd.conf  audit.rules  audit.rules.prev  audit-stop.rules  rules.d
[root@idss13 audit]# pwd 
/etc/audit  
[root@idss13 audit]# ls
auditd.conf  audit.rules  audit.rules.prev  audit-stop.rules  rules.d
[root@idss13 audit]# cd rules.d/ 
[root@idss13 rules.d]# ls  
audit.rules

/etc/audit/audit.rules文件是在auditd服务启动之后,由/etc/audit/rules.d/audit.rules文件内容生成的副本。

3.配置 Auditd服务
审核守护程序可以在 /etc/audit/auditd.conf 配置文件中进行配置。这个文件包括修改审核守护进程特性的配置参数。紧跟 # 字符(#)的任何空行或者文本都被忽略。
/etc/audit/auditd.conf配置文件的样例如下:

[root@idss13 audit]# vim auditd.conf 
#
# This file controls the configuration of the audit daemon
#

local_events = yes
write_logs = yes

#日志文件保存的路径
log_file = /var/log/audit/audit.log

#指定应用于日志文件权限的组。默认为root。
log_group = root

#描述了如何将信息存储在磁盘上。有两个选项:raw和nolog
log_format = RAW

#多长时间向日志文件中写一次数据。值可以是NONE、INCREMENTAL、DATA和SYNC之一
flush = INCREMENTAL_ASYNC

#如果flush设置为INCREMETNAL,审计守护进程在写到日志文件中前从内核中接收的记录数
freq = 50

#以兆字节表示的最大日志文件容量。当达到这个容量时,会执行max_log_file _action指定的动作
max_log_file = 8

#max_log_file_action设置为ROTATE时要保存的日志文件数目。必须是0~99之间的数。如果设置为小于2,则不会循环日志。如果递增了日志文件的数目,就可能有必要递增/etc/audit/audit.rules中的内核backlog设置值,以便留出日志循环的时间。如果没有设置num_logs值,它就默认为0,意味着从来不循环日志文件
num_logs = 5

#这是一个非负数,告诉审计守护进程应该采取多少优先级提升。默认值为4,0表示没有变化
priority_boost = 4

#控制调度程序与审计守护进程之间的通信类型。有效值为lossy和lossless。如果设置为lossy,若审计守护进程与调度程序之间的缓冲区已满(缓冲区为128千字节),则发送给调度程序的引入事件会被丢弃。然而,只要log_format没有设置为nolog,事件就仍然会写到磁盘中。如果设置为lossless,则在向调度程序发送事件之前和将日志写到磁盘之前,调度程序会等待缓冲区有足够的空间
disp_qos = lossy

#当启动这个守护进程时,由审计守护进程自动启动程序。
dispatcher = /sbin/audispd

name_format = NONE
##name = mydomain

#当达到max_log_file的日志文件大小时采取的动作。值必须是IGNORE、SYSLOG、SUSPEND、ROTATE和KEEP_LOGS之一。如果设置为IGNORE,则在日志文件达到max_log_file后不采取动作。如果设置为SYSLOG,则当达到文件容量时会向系统日志/var/log/messages中写入一条警告。如果设置为SUSPEND,则当达到文件容量后不会向日志文件写入审计消息。如果设置为ROTATE,则当达到指定文件容量后会循环日志文件,但是只会保存一定数目的老文件,这个数目由num_logs参数指定。老文件的文件名将为audit.log.N,其中N是一个数字。这个数字越大,则文件越老。如果设置为KEEP_LOGS,则会循环日志文件,但是会忽略num_logs参数,因此不会删除日志文件
max_log_file_action = ROTATE

#以兆字节表示的磁盘空间数量。当达到这个水平时,会采取space_left_action参数中的动作
space_left = 75

#当磁盘空间量达到space_left中的值时,采取这个动作。有效值为IGNORE、SYSLOG、EMAIL、SUSPEND、SINGLE和HALT。如果设置为IGNORE,则不采取动作。如果设置为SYSLOG,则向系统日志/var/log/messages写一条警告消息。如果设置为EMAIL,则从action_mail_acct向这个地址发送一封电子邮件,并向/var/log/messages中写一条警告消息。如果设置为SUSPEND,则不再向审计日志文件中写警告消息。如果设置为SINGLE,则系统将在单用户模式下。如果设置为SALT,则系统会关闭
space_left_action = SYSLOG

#是否验证电子邮件地址
verify_email = yes

#负责维护审计守护进程和日志的管理员的电子邮件地址。如果地址没有主机名,则假定主机名为本地地址,比如root。必须安装sendmail并配置为向指定电子邮件地址发送电子邮件
action_mail_acct = root

#以兆字节表示的磁盘空间数量。用这个选项设置比space_left_action更多的主动性动作,以防万一space_left_action没有让管理员释放任何磁盘空间。这个值应小于space_left_action。如果达到这个水平,则会采取admin_space_left_ action所指定的动作
admin_space_left = 50

#当自由磁盘空间量达到admin_space_left指定的值时,则采取动作。有效值为IGNORE、SYSLOG、EMAIL、SUSPEND、SINGLE和HALT
admin_space_left_action = SUSPEND

#如果含有这个审计文件的分区已满,则采取这个动作。可能值为IGNORE、SYSLOG、SUSPEND、SINGLE和HALT
disk_full_action = SUSPEND

#如果在写审计日志或循环日志文件时检测到错误时采取的动作。值必须是IGNORE、SYSLOG、SUSPEND、SINGLE和HALT之一
disk_error_action = SUSPEND

use_libwrap = yes
##tcp_listen_port = 60
tcp_listen_queue = 5
tcp_max_per_addr = 1
##tcp_client_ports = 1024-65535
tcp_client_max_idle = 0
enable_krb5 = no
krb5_principal = auditd
##krb5_key_file = /etc/audit/audit.key
distribute_network = no

4.定义审核规则
审核系统根据一组规则运行,这组规则定义了日志文件中所获取的内容。有三种类型的审核规则可以详细说明:

  1. 控制规则 — 允许审核系统的行为和它的一些被修改的配置。
  2. 文件系统规则 — 也被称为文件监视,允许审核进入特定文件或者目录。
  3. 系统调用规则 — 允许记录任何指定程序所做的系统调用。
  4. 审核规则可以在命令行上使用 auditctl实用程序进行详细说明(请注意这些规则并不是在重新启动时一直有效),或者写在/etc/audit/audit.rules文件中。以下两个部分总结了定义审核规则的两个方法。

a.使用 auditctl 实用程序来定义审核规则
注意:所有与审核服务交互的命令以及审核日志文件都需要 root 特权。作为 root 用户确保您执行这些命令。

auditctl 命令允许您控制审核系统的基本功能并且限定规则来决定哪些审核项目要记录。

定义控制规则:

以下是一些控制规则允许您修改审核系统的行为:
-b
在 Kernel 中设定最大数量的已存在的审核缓冲区,例如:

# auditctl -b 8192

-f
当追踪重要错误时设定所要完成的行动,例如:

# auditctl -f 2

以上配置触发 kernel 恐慌以防重要错误。

-e
启动或者禁用审核系统或者锁定它的配置,例如:

# auditctl -e 2

以上命令锁定审核配置。

-r
设定每秒生成信息的速率,例如:

# auditctl -r 0

以上配置在生成信息方面不设定限制速率。

-s
报告审核系统状态,例如:

# auditctl -s

AUDIT_STATUS: enabled=1 flag=2 pid=0 rate_limit=0 backlog_limit=8192 lost=259 backlog=0

-l
列出所有当前装载的审核规则,例如:

# auditctl -l
LIST_RULES: exit,always watch=/etc/localtime perm=wa key=time-change
LIST_RULES: exit,always watch=/etc/group perm=wa key=identity
LIST_RULES: exit,always watch=/etc/passwd perm=wa key=identity
LIST_RULES: exit,always watch=/etc/gshadow perm=wa key=identity

-D
删除所有当前装载的审核规则,例如:

# auditctl -D
No rules

定义文件系统规则:

定义文件系统规则,使用以下语法:

auditctl -w path_to_file -p permissions -k key_name

其中:
path_to_file 是审核过的文件或者目录:
permissions 是被记录的权限:
r — 读取文件或者目录。
w — 写入文件或者目录。
x — 运行文件或者目录。
a — 改变在文件或者目录中的属性。
key_name 是可选字符串,可帮助您判定哪个规则或者哪组规则生成特定的日志项。

定义系统调用规则:

为了定义系统调用规则,使用以下语法:

auditctl -a action,filter -S system_call -F 输入栏=value -k key_name

其中:

action 以及 filter 详细说明某个事件何时被记录。 action 可能是always(经常是)或者never(从不是)其中之一。 filter 详细说明哪个 Kernel规则匹配过滤器应用在事件中。以下是其中之一的与规则匹配的过滤器: task、exit、user 以及 exclude。

system_call 通过它的名字详细说明系统调用。所有的系统调用都可以在/usr/include/asm/unistd_64.h 文件中找到。许多系统调用都能形成一个规则,每个都在 -S 选项之后详细说明。

field=value 详细说明其他选项,进一步修改规则来与以特定架构、组 ID、进程 ID和其他内容为基础的事件相匹配。为了列出完整可用的输入栏类型和它们的数值,请参考 auditctl(8) 手册页。

key_name 是可选字符串,可帮助您判定哪个规则或者哪组规则生成特定的日志项。

b.在 /etc/audit/audit.rules 文件中定义持久的审核规则和控制
为了定义在重新启动时可以一直有效的审核规则,您必须把它们包含在 /etc/audit/audit.rules 文件中。这个文件使用相同的 auditctl 命令行语法来详细说明规则。任何在 # 之后的空行或者文本(#)可以忽略。

auditctl 指令可以被用来读取来自指定文件的规则,使用 -R 选项,例如:

# auditctl -R /usr/share/doc/audit-2.8.4/30-stig.rules

定义控制规则:

文件可以只包括以下的控制规则,修改审核系统的行为: -b、-D、-e、-f、或者 -r。
例如:在 audit.rules中控制规则:

# Delete all previous rules
-D

# Set buffer size
-b 8192

# Make the configuration immutable -- reboot is required to change audit rules
-e 2

# Panic when a failure occurs
-f 2

# Generate at most 100 audit messages per second
-r 100

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

使用 auditctl 语法定义文件系统和系统调用原则。
例如,在 audit.rules 中的文件系统和系统调用规则:

-w /etc/passwd -p wa -k passwd_changes
-w /etc/selinux/ -p wa -k selinux_changes
-w /sbin/insmod -p x -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

预配置规则文件:

在 /usr/share/doc/audit-version/ 目录中, 根据不同的认证标准 audit 软件包提供一组预配置规则文件:

nispom.rules — 审核规则配置符合《国家行业安全程序操作运行指南》的第八章中详细说明的要求。
capp.rules — 审核规则配置满足由 CAPP 设定的要求,是公共标准认定的一部分。
lspp.rules —审核规则配置满足由 LSPP 设定的要求是公共标准认定的一部分。
stig.rules — 审核规则配置满足由 STIG 所设定的要求。

为了使用这些配置文件,需要创造您原始文件的备份 /etc/audit/audit.rules 并且复制您所选择的有关 /etc/audit/audit.rules 文件的配置文件:

# cp /etc/audit/audit.rules /etc/audit/audit.rules_backup
# cp /usr/share/doc/audit-version/stig.rules /etc/audit/audit.rules

5.启动Audit服务
一旦 auditd 进行适当配置,就可以开始服务来收集审核信息,并在日志文件中储存。作为 root 用户来开始执行以下指令 auditd:

# service auditd start

您可以可选择性地配置 auditd,作为 root 用户在启动事件开始使用以下指令:

# chkconfig auditd on

在 auditd上可以执行一些其他的行动, 使用 service auditd action 命令,action 可能是以下其中之一:

stop — 停止 auditd。
restart — 重启auditd。
reload 或者 force-reload — 重新加载 auditd 在 /etc/audit/auditd.conf 文件中的配置。
rotate — 在 /var/log/audit/ 目录中旋转日志文件。
resume — 在推迟审核事件日志之后重新开始,例如存在没有足够的磁盘分区空间来保存审核日志文件情况。
condrestart 或者 try-restart — 只有当它已经在运行时,重启 auditd 。
status — 显示运行状态 auditd。

  1. Audit审计规则文件

下载地址

7.注意事项
在配置完审计规则之后,使用如下命令查看规则是否已经加载:

auditctl -l

如果规则是指定了某个规则文件的,则需要注意执行如下加载命令的时候,是否有报错:

auditctl -R /规则文件的路径

标签:none

还不快抢沙发

添加新评论