用户空间审计系统应用程序

一、用户空间审计系统应用程序

在用户空间,审计系统由auditd、audispd、auditctl、autrace、ausearch和aureport等应用程序组成。

审计后台auditd应用程序通过netlink机制从内核中接收审计消息,然后,通过一个工作线程将审计消息写入到审计日志文件中,其中,还有一部分消息通过消息分发后台进程dispatcher调用syslog写入日志系统。

下面分别说明这些应用程序的功能。

1.审计后台auditd

在用户空间,审计系统通过auditd后台进程接收内核审计系统传送来的审计信息,将信息写入到/var/log/audit/audit.log 中,audit.log的路径可在/etc/auditd.conf 中指定

用户空间审计系统应用程序_第1张图片


当auditd没有运行时,内核将审计信息传送给 syslog,这些消息通常保存在/var/log/messages文件中,可以用dmesg命令查看。

如果要启用内核中的审计功能,必须在系统启动时将audit=1传递给内核。也可以在运行时,使用下列命令来启用内核审计功能:

auditctl -e 1

审计系统后台应用程序auditd是Linux审计系统的用户空间部件,它负责将审计记录写入到硬盘中。ausearch或aureport工具用来查看写在文件中的审计记录,auditctl工具用来设置审计规则。系统启动时,auditctl读取/etc/audit.rules中的规则,审计后台可以通过auditd.conf文件定制配置。

运行auditd后台的命令如下:

auditd [ -f ]

其中,选项-f表示让auditctl在前台运行,以方便调试,消息可以直接输出到stderr,而不是输出到log系统。

用于配置auditd后台的文件说明如下:

/etc/auditd.conf用于auditd后台的配置文件。

/etc/audit.rules启动时装载的审计规则。

2.auditctl

工具auditctl控制行为、得到状态、从内核审计系统增加或删除规则。命令格式如下:

auditctl [options]

工具auditctl的命令行选项(options)很多,例如:-e [0|1]表示停止或启动内核审计功能;-a表示将规则追加到链表;-S表示系统调用号或名字;-F表示规则域。

工具auditctl设置规则的样例如下:

//查看程序所有的系统调用

auditctl -a entry,always -S all -F pid=1005

//查看指定用户打开的文件

 

auditctl -a exit,always -S open -F auid=510

//查看不成功的open系统调用

auditctl -a exit,always -S open -F success!=0

 

设置规则和显示规则的命令样例列出如下:

 

^-^$ auditctl -a entry,always -S all -F pid=1005

 

^-^$ auditctl -l

LIST_RULES: entry,always pid=1005 (0x3ed) syscall=all

工具auditctl的选项说明如表2-1所示。

表2-1  工具auditctl的选项说明

选 项 名

选项的值

说    明

-b <backlog>

 

设置内核允许的缓冲区数,默认值为64

-e [0|1]

 

关闭或启动内核审计系统

-f [0..2]

 

设置失败标识0=silent 1=printk 2=panic,默认值为1。设置内核如何处理临界错误,如:backlog限制超出、内存错误等

-h

 

帮助信息

-i

 

当从文件中读取规则时忽略错误

-l

 

列出所有的规则,每行一条规则

-k <key>

 

设置审计规则上的过滤关键词key,key是不超过32字节长的任意字符串,它能唯一鉴别由watch产生的审计记录

-m text

 

仅由root用户发送用户空间消息到审计系统。为文件系统watch设置许可过滤器。r=read,w=write,x=execute,a=attribute change。这些许可不是文件的标准许可,而是系统调用使用的,read和write系统调用将忽略这种设置,否则它们将淹没log

-r <rate>

 

设置每秒传输的消息数限制,默认值为0,表示无限制

-R <file>

 

从file文件中读取规则

-s

 

报告状态

-a <l,a>

 

追加规则到l链表,a表示规则的动作

有效链表名l

task

追加规则到每个任务链表AUDIT_FILTER_TASK 。域应用任务创建时的uid、gid等

entry

追加规则到系统调用进入链表AUDIT_FILTER_ENTRY,用于决定进入到系统调用时是否创建审计事件

exit

追加规则到系统调用退出链表AUDIT_FILTER_EXIT 。用于决定退出系统调用时是否创建审计事件

user

追加规则到用户消息过滤链表AUDIT_FILTER_USER ,内核在转播用户空间产生的事件到审计后台之前,用这个链表过滤这些事件。仅域为uid、auid、gid和pid时有效

exclude

用于过滤不想看到的事件,对应内核消息过滤链表AUDIT_FILTER_TYPE

规则的有效动作a

never

不产生审计记录

always

分配一个审计上下文,在系统调用退出时填充

-A <l,a>

 

添加规则到l链表头,动作为a

-d <l,a>

 

从带有a动作的l链表删除规则

-D

 

删除所有的规则和watch

-S [系统调用名或号|all]

 

如果程序使用指定的系统调用,则它启动一项审计记录。如果给出域规则而没有指定系统调用,它将默认为所有系统调用

续表

选 项 名

选项的值

说    明

-F [n=v | n!=v | n<v | n>v | n<=v | n>=v]

 

创建一个规则域:名字、操作、值。可以单个命令行传递最多64个域。每个域必须启动一个审计记录。可支持6种操作:等于、不等于、小于、大于、小于或等于和大于或等于

有效的规则域n

a0, a1, a2, a3

对应系统调用的前4个参数。不支持字符串参数。常用于复合的套接字或IPC操作

arch

系统调用的CPU构架

auid

audit uid,是用户注册的最初的ID

b32

用于32位系统调用表的arch

b64

用于64位系统调用表的arch

devmajor

主设备号(Device Major Number)

devminor

次设备号(Device Minor Number)

egid

有效组ID

euid

有效用户ID

exit

从一个系统调用退出时的值

fsgid

文件系统组ID

gid

组ID

inode

节点号

key

设置过滤关键字,与-k选项一样

msgtype

用于匹配消息类型编号,仅用于排除(exclude)过滤链表

obj_user

资源的SELinux用户

obj_role

资源的SELinux角色

obj_type

资源的SELinux类型

obj_lev_low

资源的SELinux低级别

obj_lev_high

资源的SELinux高级别

path

监视的文件的全路径,仅用于exit链表

pers

操作系统(OS)个人特征序列号

pid

进程ID

ppid

父进程ID

subj_user

程序的SELinux用户

subj_role

程序的SELinux角色

subj_type

程序的SELinux类型

subj_sen

程序的SELinux敏感度(Sensitivity)

subj_clr

程序的SELinux的间隔(Clearance)

sgid

设置组ID

success

如果退出值大于或等于0,这个值为true/yes,否则为false/no。当写规则时,用1表示true/yes,用0表示false/no

suid

设置用户ID(Set User ID)

uid

用户ID(User ID)

-w <path>

 

为文件系统对象<path>插入一个watch(监视)。不支持匹配符

-W <path>

 

移去文件系统对象<path>上的watch

 

3.autrace

 

autrace是一个程序,它将添加审计规则、类似于strace跟踪一个进程,审计信息的结果将记录在审计log文件中。在目标程序执行的前后,它都将删除审计规则。

 

autrace用于模拟strace工具。语法列出如下:

autrace program

 

一个使用sutrace程序的典型样例列出如下:

 

^-^$ auditd

 ^-^$ autrace /bin/ls /tmp

 

Waiting to execute: /bin/ls

gconfd-root

virtual-root.SReCx6

Cleaning up...

No rules

Trace complete. You can locate the records with 'ausearch -i -p 5722'

 

^-^$ vi /var/log/audit/audit.log

type=DAEMON_START msg=audit(1174214581.293:1962) auditd start, ver=1.2.8,

format=raw, auid=4294967295 pid=5477 res=success, auditd pid=54

type=CONFIG_CHANGE msg=audit(1174214581.514:38): audit_enabled=1 old=1 by

auid=4294967295 subj=user_u:system_r:unconfined_t:s0


4.ausearch


工具ausearch用于查询审计后台的日志,它能基于不同搜索规则的事件查询审计后台日志。每个系统调用进入内核空间运行时有个唯一的事件ID,系统调用在进入内核后的运行过程的审计事件共享这个ID。


内核可以添加各种审计记录,例如:系统调用“open”的审计事件将引起内核发送一个带有文件名的PATH记录。
ausearch的语法列出如下:

ausearch [ options ]

 

其中,options表示选项值,如:-a <audit event id>、-f <file name>等。


基于用户ID的搜索样例列出如下:

 

^-^$ ausearch -ui 4294967295

----

time->Sun Mar 18 18:43:01 2007

type=DAEMON_START msg=audit(1174214581.293:1962) auditd start, ver=1.2.8,

format=raw, auid=4294967295 pid=5477 res=success, auditd pid=54

----

time->Sun Mar 18 18:43:01 2007

type=CONFIG_CHANGE msg=audit(1174214581.514:38): audit_enabled=1 old=1

by auid=4294967295 subj=user_u: system_r:unconfined_t:s0

 

5.aureport


工具aureport用于产生审计后台日志的总结报告,语法列出如下:

 

aureport [ options ]

 

其中,options表示选项,如:-a报告所有的AVC(AccessVector Cache)消息;-c报告配置改变的消息;-e报告事件消息。


工具aureport运行后结果列出如下:

 

^-^$ aureport

 

Summary Report

======================

Range of time: 03/18/2007 18:43:01.293 - 03/18/2007 18:43:01.514

Number of changes in configuration: 1

Number of changes to accounts or groups: 0

Number of logins: 0

Number of failed logins: 0

Number of users: 0

Number of terminals: 0

Number of host names: 0

Number of executables: 0

Number of files: 0

Number of avc denials: 0

Number of failed syscalls: 0

Number of anomaly events: 0

Number of responses to anomaly events: 0

Number of process IDs: 1

Number of events: 2

 

6.audispd


audispd是消息分发的后台进程,用于将auditd后台发过来的一些消息通过syslog写入日志系统

 


你可能感兴趣的:(用户空间审计系统应用程序)