audit子系统提供了一种纪录系统安全方面信息的方法,同时能为系统管理员在用户违反系统安全法则或存在违反的潜在可能时,提供及时的警告信息,这些audit子系统所搜集的信息包括:可被审计的事件名称,事件状态(成功或失败),别的安全相关的信息。
可被审计的事件,通常,这些事件都是定义在系统调用级别的。
脚本/APPS
-
命令
-
函数(库)
-
System Call (系统调用)
-
底层Kernel
Cat /etc/fstab
命令执行
ltrace cat /etc/fstab
追踪库
Strace cat /etc/fstab
追踪系统调用
[/usr/share/man/man3]
#ls -l | wc -l
6489
[/usr/share/man/man2]
#ls -l | wc –l
381
明确自己要审计什么?
[root@node1 ~]# service auditd status
auditd (pid 2815) is running...
[root@node1 ~]# rpm -qf /etc/init.d/auditd
audit-1.7.17-3.el5
[root@node1 ~]# auditctl -s
AUDIT_STATUS: enabled=1 flag=1 pid=2815 rate_limit=0 backlog_limit=320 lost=0 backlog=0
enabled=1开启审计
[root@node1 ~]# man auditctl 中的 EXAMPLE
auditctl -w /etc/shadow -p wa
-w 监控
-p 权限
r=read, w=write, x=execute, a=attribute(所属者所属组)
auditctl -w /etc/ -p wa (a是属性)
[root@node1 ~]# auditctl -w /tmp/ -p rwxa
[root@node1 ~]# auditctl -l
LIST_RULES: exit,always dir=/tmp (0x4) perm=rwxa
auditctl -l 查看所有
auditctl -D 删除清空
[root@node1 ~]# ls /tmp/
[root@node1 ~]# cat /var/log/audit/audit.log
。。。 。。。
type=SYSCALL msg=audit(1330126454.024:552): arch=40000003 syscall=5 success=yes exit=3 a0=9560868 a1=18800 a2=805e560 a3=9560850 items=1 ppid=11329 pid=13571 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts3 ses=66 comm="ls" exe="/bin/ls" key=(null)
type=CWD msg=audit(1330126454.024:552): cwd="/root"
type=PATH msg=audit(1330126454.024:552): item=0 name="/tmp/" inode=2031617 dev=fd:00 mode=041777 ouid=0 ogid=0 rdev=00:00
审计搜索
[root@node1 ~]# ausearch -f /tmp/
----
time->Sat Feb 25 07:34:14 2012
type=PATH msg=audit(1330126454.024:552): item=0 name="/tmp/" inode=2031617 dev=fd:00 mode=041777 ouid=0 ogid=0 rdev=00:00
type=CWD msg=audit(1330126454.024:552): cwd="/root"
type=SYSCALL msg=audit(1330126454.024:552): arch=40000003 syscall=5 success=yes exit=3 a0=9560868 a1=18800 a2=805e560 a3=9560850 items=1 ppid=11329 pid=13571 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts3 ses=66 comm="ls" exe="/bin/ls" key=(null)
[root@node1 ~]# auditctl -w /etc/shadow -p rwxa -k "SHADOW"(-k 关键字)
使用普通用户修改密码
[user1@node1 ~]$ passwd
Changing password for user user1.
Changing password for user1
(current) UNIX password:
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@node1 ~]# ausearch -k "SHADOW"
time->Sat Feb 25 07:47:43 2012
type=PATH msg=audit(1330127263.467:575): item=4 name="/etc/shadow" inode=4949304 dev=fd:00 mode=0100400 ouid=0 ogid=0 rdev=00:00
type=PATH msg=audit(1330127263.467:575): item=3 name="/etc/shadow" inode=4950505 dev=fd:00 mode=0100400 ouid=0 ogid=0 rdev=00:00
type=PATH msg=audit(1330127263.467:575): item=2 name="/etc/nshadow" inode=4949304 dev=fd:00 mode=0100400 ouid=0 ogid=0 rdev=00:00
type=PATH msg=audit(1330127263.467:575): item=1 name="/etc/" inode=4947969 dev=fd:00 mode=040755 ouid=0 ogid=0 rdev=00:00
type=PATH msg=audit(1330127263.467:575): item=0 name="/etc/" inode=4947969 dev=fd:00 mode=040755 ouid=0 ogid=0 rdev=00:00
type=CWD msg=audit(1330127263.467:575): cwd="/home/user1"
type=SYSCALL msg=audit(1330127263.467:575): arch=40000003 syscall=38 success=yes exit=0 a0=d9d317 a1=d9d1d6 a2=d9f5e4 a3=0 items=5 ppid=13633 pid=13661 auid=0 uid=505 gid=505 euid=0 suid=0 fsuid=0 egid=505 sgid=505 fsgid=505 tty=pts7 ses=77 comm="passwd" exe="/usr/bin/passwd" key="SHADOW"
auid 初始登录uid
[root@node1 ~]# auditctl -l
LIST_RULES: exit,always dir=/tmp (0x4) perm=rwxa
LIST_RULES: exit,always watch=/etc/shadow perm=rwxa key=SHADOW
[root@node1 ~]# auditctl -w /tmp -p rwxa
[root@node1 ~]# auditctl -a exit,always -F dir=/tmp/ -F perm=rwxa
[root@node1 ~]# auditctl -l
LIST_RULES: exit,always dir=/tmp (0x4) perm=rwxa
LIST_RULES: exit,always dir=/tmp/ (0x5) perm=rwxa
-a exit,always
-F 规则字段
always 总是记录审计
none 不记
exit:行为完成后记录审计(一般常用)
entry:行为刚开始时记录审计(某些规则要求)
auditctl -a exit,always -F auid!=0 -F uid=0 -S all
-F 字段
-S syscall all 所有系统调用(行为)
audictctl -a exit,always -F auid!=0 -F uid=0 -S all -k "ALL"
ausearch -k "ALL"
工作中常对 /tmp /etc 审计,攻击者常用/tmp提权
aureport --help
aureport -h
aureport -l (login)