(1) 配置审计守护进程。
(3) 启动守护进程,它启用了内核中的Linux Auditing System并开始进行日志记录。
本章将详细讨论各个部分。
Red Hat Enterprise Linux 5内核中的Linux Auditing System默认是关闭的。当启动审计守护进程时,启用这个内核特性。要在启动时不通过守护进程auditd来启用Linux Auditing System,只需用audit= 1参数来引导。如果这个参数设置为1,而且auditd没有运行,则审计日志会被写到/var/log/messages中。
用了auditd,管理员就可以定制产生的审计日志。下面只是一部分可用的自定义配置:
● 确定是否循环使用日志文件
● 配置审计规则记录更详细的信息
这些设置值及更多设置值位于/etc/audit/auditd.conf文件中,它包含修改审计守护进程的行为的选项。每个选项均应在独立的一行上,后面跟着等于号(=)和这个选项的值。程序清单25-1显示了默认配置文件。
#
#
log_file = /var/log/audit/audit.log
priority_boost = 3
freq = 20
dispatcher = /sbin/audispd
max_log_file = 5
ion = ROTATE
space_left_act
ion = SUSPEND
ion = SUSPEND
ion = SUSPEND
log_file
log_format
priority_boost
flush
TA和SYNC之一。如果设置为NONE,则不需要做特殊努力来将数据刷新到日志文件中。如果设置为INCREMENTAL,则用freq选项的值确定多长时间发生一次向磁盘的刷新。如果设置为DA
num_logs
ion设置为ROTATE时要保存的日志文件数目。必须是0~99之间的数。如果设置为小于2,则不会循环日志。如果递增了日志文件的数目,就可能有必要递增/etc/audit/audit.rules中的内核backlog设置值,以便留出日志循环的时间。如果没有设置num_logs值,它就默认为0,意味着从来不循环日志文件。
当启动这个守护进程时,由审计守护进程自动启动程序。所有守护进程都传递给这个程序。可以用它来进一步定制报表或者以与您的自定义分析程序兼容的不同格式产生它们。自定义程序的示例代码可以在/usr/share/doc/audit-
控制调度程序与审计守护进程之间的通信类型。有效值为lossy和lossless。如果设置为lossy,若审计守护进程与调度程序之间的缓冲区已满 (缓冲区为128千字节),则发送给调度程序的引入事件会被丢弃。然而,只要log_format没有设置为nolog,事件就仍然会写到磁盘中。如果设置为lossless,则在向调度程序发送事件之前和将日志写到磁盘之前,调度程序会等待缓冲区有足够的空间。
以兆字节表示的最大日志文件容量。当达到这个容量时,会执行max_log_file _act
以兆字节表示的磁盘空间数量。当达到这个水平时,会采取space_left_act
以兆字节表示的磁盘空间数量。用这个选项设置比space_left_act
ion
ion中的相同。
ion
ion中的相同。
如果不循环审计日志文件,则含有/var/log/audit/的分区可能变满并引起系统错误。因此,建议让/var/log/audit/位于一个单独的专用分区。
ion
ion中的相同。
25.2 编写审计规则与观察器
/etc/audit.audit.rules中的每个规则和观察器必须单独在一行中,以#开头的行会被忽略。规则和观察器是auditctl命令行选项,前面没有auditctl命令。它们从上到下阅读文件。如果一个或多个规则或观察器互相冲突,则使用找到的第一个。
要添加审计规则,可在/etc/audit/audit.rules文件中用下面的语法:
ion>
如果在运行守护进程时添加规则/etc/audit/audit.rules,则一定要以根用户身份用service auditd restart命令启用修改。也可以使用service auditd reload命令,但是这种方法不会提供配置文件错误的消息。
task
entry
exit
user
exclude
这个动作必须下面的动作之一:
不生成审计记录。
分配审计上下文,总是把它填充在系统调用条目中,总是在系统调用退出时写一个审计记录。
-s
- F
pid
ppid
uid
euid
suid
fsuid
gid
egid
sgid
fsgid
auid
msgtype
pers
arch
devmajor
devminor
Inode Number。
从系统调用中退出值。
系统调用的成功值。1表是真/是,0表示假/否。
分别表示系统调用的前4个参数。只能用数字值。
设置用来标记事件的审计日志事件消息的过滤键。参见程序清单25-2和程序清单25-3中的示例。当添加观察器时,类似于使用-k选项。参见“编写审计规则与观察器”了解关于-k选项的详细信息。
资源的SELinux用户。
资源的SELinux角色。
资源的SELinux类型。
资源的SELinux低级别。
资源的SELinux高级别。
程序的SELinux角色。
程序的SELinux类型。
程序的SELinux敏感性。
程序的SELinux安全级别(clearance)。
程序清单25-2 示例审计规则
#Use with caution since this can quickly
-a exit,always -S open -F uid=501 -F key=501open
-a entry,always -S chmod
如果安装了audit程序包,则其他示例在/usr/share/doc/audit-
程序清单25-3 示例审计规则日志消息
success=no exit=-2 a0=7fff37fc5a40 a1=0 a2=2aaaaaaab000 a3=0 items=1
egid=501 sgid=501 fsgid=501 tty=pts5 comm="vim" exe="/usr/bin/vim"
25.2.2 编写审计观察器
警告:
程序清单25-4中含有包括在/etc/audit/audit.rules文件中的示例规则。如果与-w结合起来使用-k
#Watch for changes to sysconfig files
#Watch for changes to audit config files
-w /etc/audit/auditd.conf -k AUDIT_CONF
#Watch to see who tries to start the ××× client
#Watch password files
-w /etc/passwd -k PASSWD
例如,程序清单25-4包括了关键过滤器PASSWD的口令文件上的一个观察器。程序清单25-5含有删除一个用户后/var/log/audit /audit.log中的日志项,它会修改正在观察的这些口令文件。正如程序清单25-3中带过滤键的规则的示例,这个键被添加到日志项的末尾,因此可以轻松地将它从日志项的其余部分过滤出来。
type=SYSCALL msg=audit(1168227741.656:17915): arch=c000003e syscall=82
pid=4147 auid=501 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0
25.2.3 定制auditctl
表25-1 配置审计系统参数的auditctl选项
说 明
允许的未完成审计缓冲区的最大数目。内核中的默认值为64。如果缓冲区已满,则内核引用通过-f选项设置的失败标志,以确定采取哪个动作
设置为0禁用审计,或者设置为1启用审计。对于为了故障检修或其他目的而临时禁用审计会很有用
设置用于通知内核如何处理关键错误(比如审计缓冲区已满或者内核内存用完)的失败标志。有效值是0(没有动作),1(用printk将消息记录到/var/log/messages)和2(混乱)。默认值为1,但是2更安全。
以每秒钟的消息条数为单位的速率限制。如果设置为0,则没有限制。如果超出了速率限制,则内核会咨询-f选项中的失败标志来确定采取哪个动作
当从一个文件中读取规则时忽略错误
要验证设置了这些选项,可用auditctl -s命令查看状态。输出类似下面这样:
lost=0 backlog=0
当配置守护进程和添加规则与观察器时,可以以根用户身份执行service auditd start命令启动守护进程。要停止它,可使用service auditd stop命令。要使它自动在运行时启动,则应作为根用户执行chkconfig auditd on命令。
25.4 分析记录
除非将守护进程配置为循环日志文件和像前面“配置审计守护进程”一节中介绍的那样删除老文件,否则/var/log/audit/中的日志文件永远不会被删除。管理员应经常检查日志,删除老日志或者移到备份存储器中。如果不周期性地删除日志,它们会填满整个磁盘的。因为这个原因,所以建议把/var /log/audit/放在一个单独的专用分区上,这样就不会影响写其他日志文件或者引起其他系统错误。
要强制立即循环日志文件,可以以根用户身份执行service auditd rotate命令。老日志文件的文件名将为audit.log.N,其中N是一个数字。这个数字越大,日志文件越老。
要生成审计消息的报表,可使用aureport。为了安全起见,/var/log/audit/目录和其中的所有审计日志文件只对根用户可读。因此,您必须作为根用户执行aureport命令。如果执行aureport时没有使用任何选项,则会显示程序清单25-7中所示的汇总报表。
选 项
-a
-c
-cr
-e
-f
-h
-l
-m
-ma
-p
-s
-tm
要以更可读的格式产生结果,比如用它们映射到的用户名替换UID,则也要使用-i选项:
要显示每个日志的启动和停止时间,可以添加-t选项:
要显示等于或早于特定时间的事件,可以添加-te选项,并在后面跟着结束日期和结束时间。用数字格式表示您所在地点的日期和时间,并以24小时制格式表示时间。例如,对于en_us.UTF-8这个地方,可使用日期格式MM/DD/YY:
要显示等于或者晚于特定时间的事件,添加-ts选项,后面跟着开始日期和时间。采用与-te选项相同的日期和时间格式化规则。
要仅显示失败事件,则使用- -failure,注意这个选项前面有两条虚线而不是一条:
要仅显示成功事件,则使用- -success,注意这个选项前面有两条虚线而不是一条:
有些报表也可以用- -summary选项以汇总格式生成;注意这个选项前面有两条虚线作前缀:
要产生汇总报表而不是关于一个地区的报表,可使用-r选项:
要产生来自一个日志文件的报表而不是默认报表,则可用-if选项指定它:
25.4.1 搜索记录
25.5 用审计跟踪进程
(1) 暂时关闭所有规则与观察器:
(2) (可选)要把审计记录从进程中隔离开,需强制一个日志文件循环:
autrace的日志将放在/var/log/audit/audit.log中。
autrace
Trace complete. You can locate the records with 'ausearch -i -p 10773'
service auditd restart
<P style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: auto; CLEAR: both; OVERFLOW: hidden; PADDING-TOP: 0px; "text-indent: 2em"> (6) 用ausearch显示关于跟踪的详细信息。