posts - 21, comments - 2, trackbacks - 0, articles - 0

audit系统的功能和概念,以及相关的命令

Posted on 2006-04-06 17:46 Freebird 阅读(219) 评论(0)  编辑 收藏 引用 所属分类: AIX

snowtty 发表于 2005年09月12日20时53分
本文简要介绍了audit系统的功能和概念,以及相关的命令
 
一、AUDIT系统的概念:
 
audit子系统提供了一种纪录系统安全方面信息的方法,同时可以为系统管理员在用户违反系统安全法则或存在违反的潜在可能时,提供及时的警告信息,这些audit子系统所搜集的信息包括:可被审计的事件名称,事件状态(成功或失败),别的安全相关的信息。
 
AIX定义了一些可被审计的事件,可以在/etc/security/audit/events中找到,通常,这些事件都是定义在系统调用级别的。那么,一条命令可以产生多个事件,例如,如果用户通过cat或more命令来显示文件,可以在审计报告中发现下列事件:
 
FILE_Open(打开文件)
FILE_Read(读文件)
FILE_Write(写文件)
PROC_Create(产生进程cat或more)
PROC_Execute(执行命令)
PROC_Delete(进程执行完毕)
 
如果不加选择审计所有的事件会产生非常大量的数据,通过修改audit配置文件/etc/security/audit/config文件,可以选择需纪录的事件。
 
本文简要介绍了audit系统的功能和概念,以及相关的命令
 
一、AUDIT系统的概念:
 
audit子系统提供了一种纪录系统安全方面信息的方法,同时可以为系统管理员在用户违反系统安全法则或存在违反的潜在可能时,提供及时的警告信息,这些audit子系统所搜集的信息包括:可被审计的事件名称,事件状态(成功或失败),别的安全相关的信息。
 
AIX定义了一些可被审计的事件,可以在/etc/security/audit/events中找到,通常,这些事件都是定义在系统调用级别的。那么,一条命令可以产生多个事件,例如,如果用户通过cat或more命令来显示文件,可以在审计报告中发现下列事件:
 
FILE_Open(打开文件)
FILE_Read(读文件)
FILE_Write(写文件)
PROC_Create(产生进程cat或more)
PROC_Execute(执行命令)
PROC_Delete(进程执行完毕)
 
如果不加选择审计所有的事件会产生非常大量的数据,通过修改audit配置文件/etc/security/audit/config文件,可以选择需纪录的事件。
 
审计事件可以组成类,多个功能类似或相近的审计事件可以为它们定义一个类,类的定义也在/etc/security/audit/config中有,类的名字可以任意指定,类和用户UID是关联在一起的,需要对某用户定义其需要被事件的类。
 
审计对象是那些单个可以被审计的文件,能够审计的操作包括读、写和执行,审计对象和用户的UID不关联,只要这些文件被操作,不管是来自哪个用户,都可以产生审计纪录。审计对象在/etc/security/audit/objects中定义,如下:
 
/etc/security/environ:
w = "S_ENVIRON_WRITE"
/etc/security/group:
w = "S_GROUP_WRITE"
/etc/security/limits:
w = "S_LIMITS_WRITE"
/etc/security/login.cfg:
w = "S_LOGIN_WRITE"
/etc/security/passwd:
r = "S_PASSWD_READ"
w = "S_PASSWD_WRITE"
/etc/security/user:
w = "S_USER_WRITE"
/etc/security/audit/config:
w = "AUD_CONFIG_WR"
 
其中第一行为审计对象的文件名,第二行为输出的格式,该格式在/etc/security/audit/events中定义如下:
 
/etc/security/environ
S_ENVIRON_WRITE = printf "%s"
/etc/group
S_GROUP_WRITE = printf "%s"
/etc/security/limits
S_LIMITS_WRITE = printf "%s"
 
用户可以自己在该文件中定义审计对象。
 
审计可以以两种模式运行:BIN和STREAM,BIN模式指的是audit将结果写入临时文件bins,然后在写入到一个单一的文件中去。STREAM模式指的是审计子系统通过伪设备文件/dev/audit将数据写入一个固定大小的文件,当写入数据超出时,最早写入的数据将被覆盖。
 
审计子系统可以以其中一种模式或两种模式启动。我们可以编辑审计子系统的配置文件/etc/security/audit/config来更改所用模式,如下:
 
start:
binmode = on
streammode = off
bin:
trail = /audit/trail
bin1 = /audit/bin1
bin2 = /audit/bin2
binsize = 10240
cmds = /etc/security/audit/bincmds
stream:
cmds = /etc/security/audit/streamcmds
 
可见,该系统使用的是bin模式,它使用了两个临时bins文件,bin1和bin2,它们的大小都是10240字节,当其中一个文件满了之后,子系统将打开另一个文件,并把前一个文件的纪录都转移到trail文件中,子系统停止时,这些bins中的内容将都被加入到trail文件中去,这些纪录的文件采用了二进制方式,可用命令auditpr查看。
 
在stream模式中,系统将通过调用 /etc/security/audit/streamcmds命令来处理纪录,这条命令将把输出变成可读的格式写入文件 /audit/stream.out中,audit系统重新启动时,它将被清空。所以,可以定时读它或将它的内容打印出来。
 
下面介绍一下审计子系统的控制命令:
启动和停止审计子系统 /usr/sbin/audit是控制审计子系统的基本命令,它有下列五条子命令:
 
* audit start 激活审计子系统
这是启动审计子系统的唯一正确方法
* audit shutdown 停止审计子系统
它将处理BIN模式下的bins临时文件,并删除/audit/auditb文件,这个文件是一个审计子系统是否活着的标识
* audit off 暂时挂起审计子系统
* audit on 挂起后重新激活审计子系统
* audit query 显示子系统状态
 
如果不按顺序使用这些命令,审计子系统会被弄乱,如果出现这种状态,将/audit下的文件都删除(除去纪录文件train.stream.out, bin1, bin2等)
 
如希望在系统启动时启动审计子系统,可在/etc/rc中,在dspmsg rc.cat 5 'Multi-user initialization completed\n'行之前加入下行: /usr/sbin/audit start
 
如果审计子系统一直运行,那要确保系统关闭时它被正确地停止了,在/usr/sbin/shutdown中加入一行: /usr/sbin/audit/shutdown
配置审计子系统
 
审计子系统的配载文件为/etc/security/audit/config,它包含以下几段:
start: 按BIN或STREAM模式启动
bin and stream: BIN和STREAM的配置,在前简介文章中有介绍
classes: 定义的类。
 
预定义的类有:general, objects, SRC, kernel, files, SVIPC, mail, cron和TCPIP。例如general类的定义如下:
general = USER_SU,PASSWORD_Change,FILE_Unlink,FILE_Link, FILE_Rename,FS_Chdir,FS,PORT_Locked,PORT_Change,FS_Mkdir,FS_Rmdir
 
说明上述在/etc/security/audit/events中定义的事件被归类为general,用户可以自己编辑配置文件来修改类的定义,但所用事件需在/etc/security/audit/events中存在,类的定义要和用户联系在一起。
 
users: 该段中定义了使用类的用户。
用户必须是可登录用户或default用户,如下例:
users: root=general, joe=general,files,TCPIP default=general
 
当审计子系统启动后,系统将会对root用户发生的general事件做纪录,对joe用户发生的general,files,TCPIP事件做纪录,对别的用户,做general事件纪录。对审计对象而言,审计子系统启动是,会去监测/etc/security/audit/objects文件,对其中的有效文件开始做审计,无论哪个用户,包括root用户对它们的访问都会被纪录。
 
为一个用户更改审计类可以通过smit菜单执行
smit chuser * User NAME root
AUDIT classes []
选中相应类即可,或者直接编辑/etc/security/audit/config文件。
 
BIN文件可以通过下面命令来读取: #auditpr -v /audit/trail | more
结果如下:
BIN文件的输出表
event login status time command
FILE_Rename root OK 日 6月 29 12:02:07 2003 xntpd
frompath: /etc/ntp.drift.TEMP topath: /etc/ntp.drift
FS_Chdir root OK 日 6月 29 12:02:19 2003 ksh
change current directory to: /
FS_Chdir root OK 日 6月 29 12:05:20 2003 ksh
change current directory to: /
 
STREAM文件的输出可以直接读取如下: #more /audit/stream.out
STREAM文件的输出表
event login status time command
FS_Chdir root OK 日 6月 29 12:05:19 2003 ksh
FS_Chdir root OK 日 6月 29 12:05:20 2003 ksh
FILE_Unlink root OK 日 6月 29 12:05:29 2003 ksh
 
审计结果比较多的时候,可以通过下面的方法来过滤:
/usr/sbin/auditselect -f /audit/pick /audit/trail | /usr/sbin/auditpr -v
 
/audit/pick文件是手工编辑的,内容如下:
command == rlogin && \
time 〉= 08:00:00 && time 〈 = 17:00:00 && \
data 〉= 04/01/96 && date 〈 = 04/12/96
 
这个过滤器将只显示rlogin命令在指定的时间段和日期内的执行情况,指定的时间为每天的8AM到5PM,日期为96年四月一日至96年四月12日。
AUDIT系统一些常见错误如下:
 
1. 运行audit start时报错:
** failed setting kernel audit objects
这通常是由于/etc/security/audit/objects中的语法错误引起的。
2. 错误信息:
auditbin: ** failed backend command
/etc/auditcat -p -o /audit/trail -r /audit/bin1
这个错误可通过给BIN文件改名或删除来修正,有时停止并重启子系统也可以修正错误。
3. 错误信息:
Unable to find the user stanza in /etc/security/audit/config 如果对user段做了修改,请检查/etc/security/audit/config中的用户段,如为发现问题,仔细检查classes段,确保每个 classes是在一个连续行中定义的。
 
只有注册用户登录后才能发表评论。