SUSE Linux Audit使用说明

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SUSE Linux Audit使用说明
总体架构
一、
一、总体架构
图1.1Audit架构图
图1.1是Audit的架构图,这里先简单介绍一下Audit的运行过程。

我们可以看到,Audit是内核中的一个模块,内核的运行情况都会在Audit中记录,当然,这个记录的规则是由root来设置的。

(注:Audit只有root才有权限操作)
事实上,内核的Audit模块是由应用层的一个应用程序auditd来控制的。

Audit产生的数据都会传送到auditd中,然后再由auditd进行其它操作。

auditd.conf是auditd的配置文件,确定auditd是如何启动的,日志文件放在哪里等等,后面会有详细说明。

audit.rules是Audit的规则文件,确定Audit的日志中记录哪些操作。

它通过一个对Audit 进行控制的应用程序auditctl进行操作。

当然,root也可以直接调用auditctl进行操作。

auditd收到Audit传来的数据后会有两个去处。

默认的是将日志保存在audit.log文件中,默
认路径/var/log/audit/audit.log。

另一个通过audispd将日志进行分发。

aureport是简单的查看audit.log的工具;ausearch是日志搜索工具。

这里也有类似strace的程序追踪工具autrace,该工具还是只能在root下运行。

追踪结果记录在audit.log中,一般使用ausearch搜索查看。

各构件说明
二、各构件说明
二、
auditd.conf的配置)
的配置(auditd.conf
1.auditd的配置(
配置文件的路径:/etc/auditd.conf
一般来讲,配置文件的默认值如下:
log_file=/var/log/audit/audit.log
log_format=RAW
priority_boost=3
flush=INCREMENTAL
freq=20
num_logs=4
dispatcher=/usr/sbin/audispd
disp_qos=lossy
max_log_file=5
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
——————————————华丽的分割线————————————————
log_file就是日志文件的存放路径。

log_format是日志存放格式,有两个选项(RAW,NOLOG)。

RAW的话就是内核的Audit 模块传什么过来就记录什么;NOLOG就是不记录。

这里基本都是选择RAW的。

priority_boost是启动优先级,可能值为0~3,3为最高。

flush决定Audit的日志怎样写到硬盘里,可能值为:NONE,INCREMENTAL,DATA,
SYNC。

NONE表示正常去写,没有特殊的功能;INCREMENTAL表示多久写一次,当选用这个值时,freq(flush下面那个)必须要设置一个值,表示每多少条记录就往硬盘里写;DATA 表示一有记录就写;SYNC保持metadata和data的同步。

num_logs确定日志的文件数。

当max_log_file_action选项的值是ROTATE的时候就必须设置。

ROTATE之后的日志文件的命名为audit.log.*(*为某数字)。

该选项的可能值为0~99。

dispatcher指定分发器路径。

disp_qos表示将数据转给分发器的时候是有损的还是无损的,所以其可能值为lossless和lossy。

max_log_file表示日志文件最大为多少MB。

max_log_file_action表示如果日志文件满了会有什么操作,可能值为:IGNORE,SYSLOG, SUSPEND,ROTATE。

IGNORE表示满了的话也啥都不管,忽略它;SYSLOG表示满了就发出警告并发至syslog;SUSPEND的话会停止往硬盘写日志,但是auditd保持活动状态;ROTATE 表示满了就触发日志滚动。

space_left和space_left_action表示当硬盘还剩多少空间(MB)时会触发什么动作。

space_left_action的可能值为IGNORE,SYSLOG,EMAIL,SUSPEND,SINGLE,HALT。

IGNORE表示忽略警告继续操作;SYSLOG会向syslog发出警告;EMAIL表示会向
action_mail_acct中设置的邮箱发送一封邮件;SUSPEND的话会停止往硬盘写日志,但是auditd保持活动状态;SINGLE的话会把系统进入single模式;HALT的话会关机。

action_mail_acct确定警告消息发生时发送的邮箱地址,一般是root。

admin_space_left和admin_space_left_action与space_left和space_left_action类似,不过这个存在的意义是最后一次警报,所以admin_space_left要比space_left小。

disk_full_action表示硬盘满怎么办,可能值和space_left_action相同。

disk_error_action表示硬盘错误怎么办,可能值和space_left_action相同。

2.操作audit
audit((auditctl的使用)
注:使用命令rcauditd restart可以重启auditd
auditctl可以通过传递一些参数,修改Audit的状态值(flag)以控制Audit系统。

经常使用的命令有:-e,-f,-r,-b,-s。

auditctl-e:启动或关闭audit,可能值:0(关闭),1(启动)
auditctl-f:设置失败标志位,可能值:0(silent),1(printk),2(panic),推荐不要设置为2,因为遇到错误就马上关机,还是不正常的关机。

我使用中就遇到过这个问题,结果系统挂了,进入single模式恢复的。

auditctl-r:控制每秒消息传送率。

auditctl-b:设置最大的audit缓冲区大小。

auditctl-s:显示当前audit状态,如:
AUDIT_STATUS:enabled=1flag=2pid=3105rate_limit=0backlog_limit=8192lost=0backlog=0 auditctl-l:查看正在运行的规则,如:
LIST_RULES:exit,always watch=/etc perm=rx
LIST_RULES:exit,always watch=/etc/passwd perm=rwxa key=fk_passwd
LIST_RULES:exit,always watch=/etc/shadow perm=rwxa
LIST_RULES:entry,always syscall=mkdir
LIST_RULES:entry,always a1=4(0x4)syscall=access
LIST_RULES:exit,always a0=2(0x2)syscall=ipc
LIST_RULES:exit,always success!=0syscall=open
auditctl-D:清除当前所有规则。

3.规则配置(如何配置audit.rules文件)
audit.rules文件的路径是/etc/audit.rules,通过它可以设置各种audit的审计规则,规定什么操作被记录,什么操作不被记录等。

像上一节提到的标志位的设置:
-b1000
-f1
-r10
-e1
如果要监视文件系统就使用-w参数:
-w/etc/shadow#监视了/etc/shadow
可以通过参数-p指定监视文件的读(r)、写(w)、执行(x)、属性变更(a)操作:-w/etc-p rx#指定监视读和执行的操作
通过参数-k指定一个关键字在日志中进行事件筛选:
-w/etc/passwd-k fk_passwd
如果要监视系统调用就要使用-a参数,并用-S参数指定监视的系统调用名,-F可以进一步筛选:
-a entry,always-S mkdir#监视系统调用mkdir,其中entry,always表示系统调用一被执行马上记录-a entry,always-S access-F a1=4#参数a1=4的access系统调用才被记录
-a exit,always-S open-F success!=0#执行成功的open调用被记录,系统调用退出时被记录-a task,always-F uid=0#可以根据uid等去筛选,task表示task类型的系统调用,这个系统调用只是
#通过fork()或clone()出来的
删除监视文件系统的规则可以使用-W:
-W/etc
删除监视系统调用的规则可以使用-d:
-d entry,always-S mkdir
4.原始的Audit日志详解(直接查看audit.log文件)
Audit的原始日志记录很强大,基本上能记的都记下来了,前提是上一节提到的规则要是有效的。

每一条日志占一行,大致分两部分:type,msg。

如:type=CWD msg=audit(1175176190.105:157):cwd="/tmp"
type表示该事件的类型,类型有很多,常见的有SYSCALL,CWD,PATH。

msg记录着这个事件的信息,上面的例子可以看到一个括号,其中括号里面被一个冒号分成两部分:冒号前面是时间,后面是事件ID。

接着看看一个比较复杂的SYSCALL事件:
type=SYSCALL msg=audit(1175176190.105:157):arch=40000003syscall=5success=yes exit=4
a0=bfba161c a1=8000a2=0a3=8000items=1ppid=4457pid=4462auid=0uid=0gid=0euid=0 suid=0fsuid=0egid=0sgid=0fsgid=0tty=pts0comm="less"exe="/usr/bin/less"
subj=unconstrained key="LOG_audit_log"
arch是CPU类型,如i386,这里显示的是40000003是因为没有转换。

(转换下一节讲)syscall是系统调用号,通过转换可以变成系统调用名。

success表示该事件(系统调用)成功与否。

exit表示退出值(返回值),一般负数表示失败。

a0到a3是系统调用的参数。

items表示传递给系统调用的字符串数目。

ppid父进程ID,pid~
auid是audit ID,每个登录的用户都分配一个,无论它是否中途变成另外的用户。

uid,gid,euid,egid,不解释。

suid,sgid是set user id和set group id。

fsuid是启动该进程的用户的file system user id。

fsgid是启动该进程的用户的file system group id。

tty不解释。

comm是在任务列表中显示的程序名。

exe执行二进制程序的路径。

subj表示该程序是否受制于任何的安全环境,如AppArmor。

key和上一节监视文件系统里设置的key值相关,用于标记和筛选。

这里只是对syscall产生的日志项分析了一下,还有很多事件,其实通过下面将要介绍的aureport和ausearch把一些看不懂的数据转换成看得懂的,大部分也能猜出来。

5.aureport的使用
aureport的使用很简单,直接输入命令aureport就可以了,不过这样只是输出audit当前使用的日志文件的概括性统计。

Summary Report
======================
Range of time:08/17/201113:42:43.280-08/18/201115:11:21.533
Number of changes in configuration:55
Number of changes to accounts,groups,or roles:0
Number of logins:20
Number of failed logins:10
Number of users:3
Number of terminals:11
Number of host names:5
Number of executables:12
Number of files:3
Number of AVC denials:0
Number of MAC events:0
Number of failed syscalls:4
Number of anomaly events:0
Number of responses to anomaly events:0
Number of crypto events:0
Number of process IDs:544
Number of events:2795
各种参数可以查不同的的东西:
--failed:显示成功的。

--success:显示失败的。

-u:显示关于用户的报告。

-e:显示关于事件的报告。

-p:显示关于进程的报告。

-s:显示关于系统调用的报告。

-x:显示关于所有可执行事件的报告。

-f:显示关于文件系统的报告。

-l:显示关于登录的报告。

-t:显示当前日志的始末时间段。

-i:人性化显示,就是上一节说的转换,如把系统调用号转为系统调用名。

-if:指定日志文件,不设置就用当前的。

-ts[date][time]:设定要查看的日志的开始时间。

-te[date][time]:设定要查看的日志的结束时间。

6.ausearch的使用
与aureport类似,具体可查阅--help。

有时候想看全部的日志但是又不够人性化,就是用ausearch-i命令。

7.autrace的使用
使用autrace前必须使用命令auditctl-D把所有命令清除掉,再使用autrace,参数是要跟踪的程序的路径,后面可解该程序的参数。

auditctl-D
No rules
autrace/usr/bin/less/etc/sysconfig/auditd
Waiting to execute:/usr/bin/less
Cleaning up...
No rules
Trace complete.You can locate the records with'ausearch-i-p7642'
最后使用ausearch-i-p xxxx查看即可。

如何启动Audit
三、如何启动
三、
audit默认是没开启的(SUSE中没开启,CentOS是开启的),因为标志为enable=0,所以要开启audit,必须得将这个标志为打开。

启动audit前,先配置一下/etc/auditd.conf,根据需要进行配置。

如修改log_file指定日志保存的路径,确定flush类型,硬盘满了怎么处理等。

接下来是指定好规则,打开/etc/audit.rules文件进行编辑。

一般开头要对原有规则进行清除,设置好各个标志位,参考如下:
-D
-b8192
-f1
-e1
监视一些重要文件或目录,如:
-w/etc/passwd-k CFG_passwd-p rwxa
监视一些系统调用,如:
-a entry,always-S socketcall
配置好后需要重启auditd才能生效,重启的命令是rcauditd restart。

停止和启动也分别可以使用命令rcauditd stop和rcauditd start。

另外,需要注意的是,在监视文件夹的时候,如果这个文件中新建了一个文件,这个文件是不会被监视到的,除非重新启动auditd。

配置详解(补充)
四、
四、配置详解(补充)
前文中提到如何对待某些系统调用事件,上面提到了entry,exit,task三种,这里把它们都列出来。

task:当一个任务被创建是,也就是父进程通过fork和clone创建子进程时记录该事件。

entry:当一个系统调用开始时判断是否记录该调用。

exit:当一个系统调用结束时判断是否记录该调用。

user:记录只在当前用户空间中产生的事件。

exclude:不想看到的事件。

never:对某些系统调用不产生记录。

always:分配一个审计环境,当系统调用开始时审计,系统调用结束时写出记录。

相关文档
最新文档