操作系统之Auditing Subsystem—Linux OS

版权声明:
本文遵循“署名非商业性使用相同方式共享 2.5 中国大陆”协议
您可以自由复制、发行、展览、表演、放映、广播或通过信息网络传播本作品
您可以根据本作品演义自己的作品
您必须按照作者或者许可人指定的方式对作品进行署名。
您不得将本作品用于商业目的。
如果您改变、转换本作品或者以本作品为基础进行创作,您只能采用与本协议相同的许
可协议发布基于本作品的演绎作品。
对任何再使用或者发行,您都必须向他人清楚地展示本作品使用的许可协议条款。
如果得到著作权人的许可,您可以不受任何这些条件的限制。
                                                                                                                  asram
 
     早期Linux的审计机制是基于应用层面的,如syslogd服务。它主要通过从其他服务(http、ftp等)的日志中过滤重要消息并处理。这种审计系统不是那么的可靠:如果外部服务程序被恶意用户破坏,这样syslogd就获取不了数据了;syslogd获取的日志较为简单。基于上述2点,目前的审计系统被设计进了Linux内核,基于中断描述表的系统过滤方法的调用。
      审计系统分为内核层和用户层两大部分。内核层收集审计信息并在磁盘中形成审计记录文件。用户层负责读取审计文件、显示和查询审计记录。 用户层进程打开系统调用,这时触发我们在内核中部署的check函数,然后调用审计子系统来匹配是否是需要过滤的信息,将过滤的信息加入到审计记录表中,后期审计记录表中记录数目达到阀值时由审计内核线程将其中的数据存入磁盘。
Linux内核中的Auditing Subsystem默认是关闭的,可以通过auditctl -s来查看(以Red Hat Enterprise Linux为例)。
code:
[root@www ~]# auditctl -s
AUDIT_STATUS: enabled=0 flag=1 pid=0 rate_limit=0 backlog_limit=64 lost=0 backlog=0
启动审计子系统只需要将enabled的值设为1即可。
code:
[root@www ~]# auditctl -s
AUDIT_STATUS: enabled=1 flag=1 pid=25717 rate_limit=0 backlog_limit=8192 lost=0 backlog=0
但是如果auditd服务没启动的话它的记录会保留在/var/log/messages里。这里可以看出来auditd就是用户层部分,通过它我们就可以很轻松的设定过滤条件来获取想要的信息了。
RHEL5中审计子系统包括3个文件auditd.conf、audit.rules和audit.log。
auditd.conf是审计子系统deamon的配置文件。该文件可以
● 设置审计消息的专用日志文件
● 确定是否循环使用日志文件
● 如果日志文件的启动用掉了太多磁盘空间则发出警告
文件内容如下:
#
# This file controls the configuration of the audit daemon
#
log_file = /var/log/audit/audit.log
log_format = RAW
priority_boost = 3
flush = INCREMENTAL
freq = 20
num_logs = 4
dispatcher = /sbin/audispd
disp_qos = lossy
max_log_file = 10
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
man 5 auditd.conf:
     log_file
审计日志文件的完整路径。如果您配置守护进程向除默认/var/log/audit/外的目录中写日志文件时,一定要修改它上面的文件权限,使得只有根用户有读、写和执行权限。所有其他用户都不能访问这个目录或这个目录中的日志文件。
     log_format
写日志时要使用的格式。当设置为RAW时,数据会以从内核中检索到的格式写到日志文件中。当设置为NOLOG时,数据不会写到日志文件中,但是如果用dispatcher选项指定了一个,则数据仍然会发送到审计事件调度程序中。
     priority_boost
审计应采用多少优先级推进守护进程。必须是非负数。0表示没有变化。
     flush
多长时间向日志文件中写一次数据。值可以是NONE、INCREMENTAL、DATA和SYNC之一。如果设置为NONE,则不需要做特殊努力来将数据刷新到日志文件中。如果设置为INCREMENTAL,则用freq选项的值确定多长时间发生一次向磁盘的刷新。如果设置为DATA,则审计数据和日志文件一直是同步的。如果设置为SYNC,则每次写到日志文件时,数据和元数据是同步的。
     freq
如果flush设置为INCREMETNAL,审计守护进程在写到日志文件中前从内核中接收的记录数。
     num_logs
max_log_file_action设置为ROTATE时要保存的日志文件数目。必须是0~99之间的数。如果设置为小于2,则不会循环日志。如果递增了日志文件的数目,就可能有必要递增/etc/audit/audit.rules中的内核backlog设置值,以便留出日志循环的时间。如果没有设置num_logs值,它就默认为0,意味着从来不循环日志文件。
     dispatcher
当启动这个守护进程时,由审计守护进程自动启动程序。所有守护进程都传递给这个程序。可以用它来进一步定制报表或者以与您的自定义分析程序兼容的不同格式产生它们。自定义程序的示例代码可以在/usr/share/doc/audit- <version>/skeleton.c中找到。由于调度程序用根用户特权运行,因此使用这个选项时要极其小心。这个选项不是必需的。
     disp_qos
控制调度程序与审计守护进程之间的通信类型。有效值为lossy和lossless。如果设置为lossy,若审计守护进程与调度程序之间的缓冲区已满(缓冲区为128千字节),则发送给调度程序的引入事件会被丢弃。然而,只要log_format没有设置为nolog,事件就仍然会写到磁盘中。如果设置为lossless,则在向调度程序发送事件之前和将日志写到磁盘之前,调度程序会等待缓冲区有足够的空间。
     max_log_file
以兆字节表示的最大日志文件容量。当达到这个容量时,会执行max_log_file _action指定的动作。
     max_log_file_action
当达到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参数,因此不会删除日志文件。
     space_left
以兆字节表示的磁盘空间数量。当达到这个水平时,会采取space_left_action参数中的动作。
     space_left_action
当磁盘空间量达到space_left中的值时,采取这个动作。有效值为IGNORE、SYSLOG、EMAIL、SUSPEND、SINGLE和HALT。如果设置为IGNORE,则不采取动作。如果设置为SYSLOG,则向系统日志/var/log/messages写一条警告消息。如果设置为EMAIL,则从action_mail_acct向这个地址发送一封电子邮件,并向/var/log/messages中写一条警告消息。如果设置为SUSPEND,则不再向审计日志文件中写警告消息。如果设置为SINGLE,则系统将在单用户模式下。如果设置为SALT,则系统会关闭。
     action_mail_acct
负责维护审计守护进程和日志的管理员的电子邮件地址。如果地址没有主机名,则假定主机名为本地地址,比如root。必须安装sendmail并配置为向指定电子邮件地址发送电子邮件。
     admin_space_left
以兆字节表示的磁盘空间数量。用这个选项设置比space_left_action更多的主动性动作,以防万一space_left_action没有让管理员释放任何磁盘空间。这个值应小于space_left_action。如果达到这个水平,则会采取admin_space_left_ action所指定的动作。
     admin_space_left_action
当自由磁盘空间量达到admin_space_left指定的值时,则采取动作。有效值为IGNORE、SYSLOG、EMAIL、SUSPEND、SINGLE和HALT。与这些值关联的动作与space_left_action中的相同。
     disk_full_action
如果含有这个审计文件的分区已满,则采取这个动作。可能值为IGNORE、SYSLOG、SUSPEND、SINGLE和HALT。与这些值关联的动作与space_left _action中的相同。
提示:
如果不循环审计日志文件,则含有/var/log/audit/的分区可能变满并引起系统错误。因此,建议让/var/log/audit/位于一个单独的专用分区。
     disk_error_action
如果在写审计日志或循环日志文件时检测到错误时采取的动作。值必须是IGNORE、SYSLOG、SUSPEND、SINGLE和HALT之一。与这些值关的动作与space_left_action中的相同。
/etc/sysconfig/auditd文件可以用来设置带EXTRAOPTIONS参数的auditd的命令行选项。唯一的命令行选项-f以调试模式安排守护进程。如果启用了调试模式,则会出现标准错误消息而不是日志文件。AUDITD_LANG设置值可以用来修改守护进程的位置。如果设置为none,则所有位置信息会从审计环境中删除。如果AUDITD_CLEAN _STOP选项设置为yes,则当用service auditd stop命令停止守护进程时,会删除审计规则与观察器。
audit.rules是审计子系统用来编写规则和观察器的。
内容如下:
# This file contains the auditctl rules that are loaded
# whenever the audit daemon is started via the initscripts.
# The rules are simply the parameters that would be passed
# to auditctl.
# First rule - delete all
-D
# Increase the buffers to survive stress events.
# Make this bigger for busy systems
-b 8192
# Feel free to add below this line. See auditctl man page
        规则和观察器是auditctl命令行选项,前面没有auditctl命令。它们从上到下阅读文件。如果一个或多个规则或观察器互相冲突,则使用找到的第一个。#表示注释。
man 8 auditctl:
-b <backlog>
允许的未完成审计缓冲区的最大数目。内核中的默认值为64。如果缓冲区已满,则内核引用通过-f选项设置的失败标志,以确定采取哪个动作
-e [0,1]
设置为0禁用审计,或者设置为1启用审计。对于为了故障检修或其他目的而临时禁用审计会很有用
-f [0,1,2]
设置用于通知内核如何处理关键错误(比如审计缓冲区已满或者内核内存用完)的失败标志。有效值是0(没有动作),1(用printk将消息记录到/var/log/messages)和2(混乱)。默认值为1,但是2更安全。
-r <rate>
以每秒钟的消息条数为单位的速率限制。如果设置为0,则没有限制。如果超出了速率限制,则内核会咨询-f选项中的失败标志来确定采取哪个动作
-i
当从一个文件中读取规则时忽略错误
-l
一行一句列出所有规则和观察器
-a <list>,<action> <options>向规则表最后添加规则。
警告:
如果在运行守护进程时添加规则/etc/audit/audit.rules,则一定要以根用户身份用service auditd restart命令启用修改。也可以使用service auditd reload命令,但是这种方法不会提供配置文件错误的消息。
列表名必须是下列名称之一。
     task
每个任务的列表。只有当创建任务时才使用。只有在创建时就已知的字段(比如UID)才可以用在这个列表中。
     entry
系统调用条目列表。当进入系统调用确定是否应创建审计时使用。
     exit
系统调用退出列表。当退出系统调用以确定是否应创建审计时使用。
     user
用户消息过滤器列表。内核在将用户空间事件传递给审计守护进程之前使用这个列表过滤用户空间事件。有效的字段只有uid、auid、gid和pid。
     exclude
事件类型排除过滤器列表。用于过滤管理员不想看到的事件。用msgtype字段指定您不想记录到日志中的消息。
这个动作必须下面的动作之一:
     never
不生成审计记录。
     always
分配审计上下文,总是把它填充在系统调用条目中,总是在系统调用退出时写一个审计记录。
<options>可以包括下面几个选项中的一个或多个。
     -S <syscall>
根据名称或数字指定一个系统。要指定所有系统调用,可使用all作为系统调用名称。如果程序使用了这个系统调用,则开始一个审计记录。可以为相同的规则指定多个系统调用,每个系统调用必须用-S启动。在相同的规则中指定多个系统,而不是列出单独的规则,这样可以导致更好的性能,因为只需要评价一个规则。
     - F <name[=,!=,&lt;,>,<=]value>
指定一个规则字段。如果为一个规则指定了多个字段,则只有所有字段都为真才能启动一个审计记录。每个规则都必须用-F启动,最多可以指定64个规则。如果用用户名和组名作为字段,而不是用UID和GID,则会将它们解析为UID和GID以进行匹配。
-A<list>,<action> <options>
向列表开头添加规则。
-d <list>,<action> <options>
删除该条规则。
-D
删除所有规则。
-w path [-p rwxa] [-k keystring]
添加观察器后面跟文件或者路径。要限制文件或目录观察器为某些动作,可使用-p选项,后面跟着下面的选项中的一个或多个:r表示观察读动作,w表示观察写动作,x表示观察执行动作,a表示在末尾添加动作。-k <key>选项,则由观察器产生的所有记录会含有一个警报词(限制为31个字节),因此可以将该观察器的记录轻松地从日志文件中过滤出来。
使用auditctl命令添加规则和观察器如下:
code:
[root@www audit]# auditctl -a exit,always -S open -F uid=0 -F key=rootopen
[root@www audit]# auditctl -w /etc -p w -k FILE_AUDIT
[root@www audit]# auditctl -l
LIST_RULES: exit,always uid=0 key=rootopen syscall=open
LIST_RULES: exit,always dir=/etc (0x4) perm=w key=FILE_AUDIT
直接写入audit.rules文件则如下:
code:
[root@www ~]# more /etc/audit/audit.rules
# This file contains the auditctl rules that are loaded
# whenever the audit daemon is started via the initscripts.
# The rules are simply the parameters that would be passed
# to auditctl.
# First rule - delete all
-D
# Increase the buffers to survive stress events.
# Make this bigger for busy systems
-b 8192
# Feel free to add below this line. See auditctl man page
-a exit,always -S open -F uid=0 -F key=rootopen
-w /etc -p w -k FILE_AUDIT
写入文件后需要重启服务或者重新加载规则文件,使用如下命令:
code:
[root@www ~]# service auditd restart
[root@www ~]# service auditd reload
上述规则和观察器的含义分别是:
向规则表追加规则,总是在系统调用open退出时过滤用户id是0的用户记录并标记key为“rootopen”。
向规则表追加观察器,观察/etc目录下的文件的写操作并标记key为“FILE_AUDIT”
日志中对应的纪录为:
type=PATH msg=audit(1275320760.503:33585): item=0 name="/etc/audit/audit.rules" inode=814279 dev=08:03 mode=0100640 ouid=0 ogid=0 rdev=00:00
type=CWD msg=audit(1275320760.503:33585):  cwd="/root"
type=SYSCALL msg=audit(1275320760.503:33585): arch=40000003 syscall=5 success=yes exit=3 a0=bf9d7b4a a1=8000 a2=1b6 a3=8f55918 items=1 ppid=22844 pid=26037 auid=0 uid=0 gid=0 euid
=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts1 comm="more" exe="/bin/more" key="rootopen"
type=PATH msg=audit(1275321346.514:33860): item=3 name="audit.rules~" inode=814279 dev=08:03 mode=0100640 ouid=0 ogid=0 rdev=00:00
type=PATH msg=audit(1275321346.514:33860): item=2 name="audit.rules" inode=814279 dev=08:03 mode=0100640 ouid=0 ogid=0 rdev=00:00
type=PATH msg=audit(1275321346.514:33860): item=1  name="/etc/audit" inode=811503 dev=08:03 mode=040750 ouid=0 ogid=0 rdev=00:00
type=PATH msg=audit(1275321346.514:33860): item=0  name="/etc/audit" inode=811503 dev=08:03 mode=040750 ouid=0 ogid=0 rdev=00:00
type=CWD msg=audit(1275321346.514:33860):  cwd="/etc/audit"
type=SYSCALL msg=audit(1275321346.514:33860): arch=40000003 syscall=38 success=yes exit=0 a0=95bfd28 a1=95c19f0 a2=95c19f0 a3=95bfd28 items=4 ppid=2180 pid=26040 auid=4294967295 u
id=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 comm="vi" exe="/bin/vi" key="FILE_AUDIT"
audit.log是符合我们规则和观察器的审计记录。该文件的大小和数目收auditd.conf中的num_logs和max_log_file限制。
分析记录
通过aureport来生成报表。
code:
[root@www ~]# aureport
Summary Report
======================
Range of time in logs: 1975年03月12日 04:29:04.163801344 - 2010年06月01日 00:13:35.313
Selected time for report: 1975年03月12日 04:29:04 - 2010年06月01日 00:13:35.313
Number of changes in configuration: 139
Number of changes to accounts, groups, or roles: 12
Number of logins: 8
Number of failed logins: 0
Number of authentications: 12
Number of failed authentications: 0
Number of users: 2
Number of terminals: 9
Number of host names: 2
Number of executables: 125
Number of files: 667
Number of AVC's: 0
Number of MAC events: 0
Number of failed syscalls: 333
Number of anomaly events: 0
Number of responses to anomaly events: 0
Number of crypto events: 0
Number of process IDs: 28196
Number of events: 42012
man aureport
-a
报告关于访问向量缓冲(access vector cache,AVC)的消息
-c
报告关于配置修改的消息
-cr
报告关于crypto事件的消息
-e
报告关于事件的消息
-f
报告关于文件的消息
-h
报告关于主机的消息
-l
报告关于登录的消息
-m
报告关于账户修改的消息
-ma
报告关于Mandatory Access Control(MAC)事件的消息
-p
报告关于进程的消息
-s
报告关于系统调用的消息
-tm
报告关于终端的消息
要以更可读的格式产生结果,比如用它们映射到的用户名替换UID,则也要使用-i选项:
     aureport -<flag> -i
要显示每个日志的启动和停止时间,可以添加-t选项:
     aureport -<flag> -i -t
要显示等于或早于特定时间的事件,可以添加-te选项,并在后面跟着结束日期和结束时间。用数字格式表示您所在地点的日期和时间,并以24小时制格式表示时间。例如,对于en_us.UTF-8这个地方,可使用日期格式MM/DD/YY:
     aureport -<flag> -i -te <end date> <end time>
要显示等于或者晚于特定时间的事件,添加-ts选项,后面跟着开始日期和时间。采用与-te选项相同的日期和时间格式化规则。
     aureport -<flag> -i -ts <start date> <start time>
要仅显示失败事件,则使用- -failure,注意这个选项前面有两条虚线而不是一条:
     aureport -<flag> -i --failed
要仅显示成功事件,则使用- -success,注意这个选项前面有两条虚线而不是一条:
     aureport -<flag> -i --success
有些报表也可以用- -summary选项以汇总格式生成;注意这个选项前面有两条虚线作前缀:
     aureport -<flag> -i --summary
要产生汇总报表而不是关于一个地区的报表,可使用-r选项:
     aureport -r -i
要产生来自一个日志文件的报表而不是默认报表,则可用-if选项指定它:
     aureport -<flag> -i -if /var/log/audit/audit.log.1
常用的命令如下:
code:
[root@www ~]# aureport -ts today -i --summary|more
Summary Report
======================
Range of time in logs: 1974年04月20日 09:41:52.135653744 - 2010年06月01日 00:17:26.709
Selected time for report: 2010年06月01日 00:00:01 - 2010年06月01日 00:17:26.709
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: 4
Number of host names: 1
Number of executables: 20
Number of files: 220
Number of AVC's: 0
Number of MAC events: 0
Number of failed syscalls: 235
Number of anomaly events: 0
Number of responses to anomaly events: 0
Number of crypto events: 0
Number of process IDs: 44
Number of events: 879
也可以通过ausearch来查找记录。
man ausearch
-a <event id>
显示特定事件ID的消息。每条消息中均含有一个标识字符串,比如msg=audit(1145758414.468:8758)。冒号后面的数字是审计事件ID,本例中是8758。来自应用程序的系统调用的所有事件都有相同的审计事件ID,因此可以将它们组成一组
-c <comm name>
显示特定comm名称的消息,它是任务结构中的可执行文件的名称。当搜索一个特定的审计事件ID时会显示comm名称,比如firefox-bin或vim
-f <filename>
显示关于特定文件名的消息。对于观察带auditct1的文件时有用
-ga <group id>
显示一个有效组ID或者匹配给定GID的组ID的消息
-ge <group id>
显示匹配给定GID的一个有效组ID的消息
-gi <group id>
显示匹配给定GID的一个组ID的消息
-h
显示简短帮助信息
-hn <hostname>
显是含有特定主机名的消息
-i
以人类可读的格式显示结果
-if <logfile>
从<logfile>中读日志,而不是从/var/log/audit/audit.log中或用/etc/audit/auditd.conf.log中的log_file参数设置的文件中读日志
-k <key>
显示带<key>的消息
-m <mess type>
显示含有特定消息类型的消息,比如CONFIG_CHANGE或USER_ACCT
-o <SELinux context>
显示含有与提供的字符串相匹配的SELinux tcontext (object)的消息
-p <pid>
显示特定进程ID的消息
-sc <syscall>
显示关于特定系统调用的消息,由系统调用名或它的数值指定
-se <SELinux context>
显示含有与提供的字符串相匹配的SELinux scontext/subject或tcontext/object的消息
-su <SELinux context>
显示含有与提供的字符串相匹配的SELinux scontext (subject)的消息
-sv <success value>
这个选项是yes则显示成功消息,这个选项是no则显示失败消息。如程序清单25-8所示,在消息末尾,success值后面跟着关键字res,可以是success或者failed
-te <date> <time>
显示等于或早于给定日期和时间的时间标记的消息。日期和时间格式取决于系统的地点。用24小时制指定时间,比如23:00:00。对于en_US.UTF-8这个地方,日期格式是MM/DD/YY的数值等价物
-ts <date> <time>
显示等于或晚于给定时间的时间标记的消息。日期和时间规则与-te选项的规则相同
-tm <terminal>
显示指定终端的消息,比如pts/6。有些可执行文件,比如时钟守护进程和atd,使用终端的守护进程名
-ua <uid>
显示用户ID、有效用户ID或登录UID(auid)匹配指定ID的消息
-ue <uid>
显示有效用户ID匹配指定ID的消息
-ui <uid>
显示用户ID匹配指定ID的消息
-ul <login id>
显示登录UID匹配指定ID的消息
-v
显示ausearch版本
-w
如果指定了要匹配的字符串,则只显示匹配整个单词的结果
-x
显示关于可执行文件的消息,比如crond或sudo。
例如:
code:
[root@www audit]# ausearch -k rootopen|more
----
time-&gt;Mon May 31 23:44:06 2010
type=PATH msg=audit(1275320646.938:33567): item=0 name="/etc/ld.so.cache" inode=812901 dev=08:03 mode=0100644 ouid=0 ogid=0 rdev=0
0:00
type=CWD msg=audit(1275320646.938:33567):  cwd="/etc/audit"
type=SYSCALL msg=audit(1275320646.938:33567): arch=40000003 syscall=5 success=yes exit=3 a0=bdd037 a1=0 a2=0 a3=ffffffff items=1 p
pid=2180 pid=26032 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 comm="auditctl" exe="/sbin/aud
itctl" key="rootopen"
----
time-&gt;Mon May 31 23:44:06 2010
type=PATH msg=audit(1275320646.938:33568): item=0 name="/lib/libpthread.so.0" inode=67264 dev=08:03 mode=0100755 ouid=0 ogid=0 rde
v=00:00
type=CWD msg=audit(1275320646.938:33568):  cwd="/etc/audit"
type=SYSCALL msg=audit(1275320646.938:33568): arch=40000003 syscall=5 success=yes exit=3 a0=b7f04612 a1=0 a2=bfda56d8 a3=8 items=1
ppid=2180 pid=26032 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 comm="auditctl" exe="/sbin/a
uditctl" key="rootopen"
code:
[root@www audit]# ausearch -k rootopen|more
----
time-&gt;Mon May 31 23:44:06 2010
type=PATH msg=audit(1275320646.938:33567): item=0 name="/etc/ld.so.cache" inode=812901 dev=08:03 mode=0100644 ouid=0 ogid=0 rdev=0
0:00
type=CWD msg=audit(1275320646.938:33567):  cwd="/etc/audit"
type=SYSCALL msg=audit(1275320646.938:33567): arch=40000003 syscall=5 success=yes exit=3 a0=bdd037 a1=0 a2=0 a3=ffffffff items=1 p
pid=2180 pid=26032 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 comm="auditctl" exe="/sbin/aud
itctl" key="rootopen"
----
time-&gt;Mon May 31 23:44:06 2010
type=PATH msg=audit(1275320646.938:33568): item=0 name="/lib/libpthread.so.0" inode=67264 dev=08:03 mode=0100755 ouid=0 ogid=0 rde
v=00:00
type=CWD msg=audit(1275320646.938:33568):  cwd="/etc/audit"
type=SYSCALL msg=audit(1275320646.938:33568): arch=40000003 syscall=5 success=yes exit=3 a0=b7f04612 a1=0 a2=bfda56d8 a3=8 items=1
ppid=2180 pid=26032 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 comm="auditctl" exe="/sbin/a
uditctl" key="rootopen"
       autrace实用程序可以用来生成特定进程中的审计记录。当autrace在运行时,没有其他规则或观察器可以启用。对于其他审计实用程序,autrace必须以根用户身份运行。要审计跟踪一个进程,需采用下列步骤:
(1) 暂时关闭所有规则与观察器:
     auditctl -D
(2) (可选)要把审计记录从进程中隔离开,需强制一个日志文件循环:
     service auditd rotate
autrace的日志将放在/var/log/audit/audit.log中。
(3) 在命令行执行autrace:
     autrace <command to trace>
(4) 等待直到进程完成。将显示一条类似于下面这个消息:
     Trace complete. You can locate the records with 'ausearch -i -p 10773'
(5) 重启审计守护进程来重新启用规则和观察器:
     service auditd restart
(6) 用ausearch显示关于跟踪的详细信息。
 
参考:
1.深入解析Red Hat Enterprise Linux 原名Red Hat Enterprise Linux 5 Administration Unleashed 。

你可能感兴趣的:(linux,审计,休闲,audit,auditing)