在linux中进行审计

我正在尝试在我的centos 6.x盒子上设置一个强大的审计机制。 我尝试和testing了各种审计工具

  • 进程auditd
  • 助手
  • psacct

但是没有一个能满足我的要求。 我的要求很简单,我知道一个审计系统不会全部服务,我可能必须一起使用不同的审计系统。 我要

  • 监视用户运行的所有命令

psacct是完美的,但它只告诉用户运行的命令,而不是传递给命令的参数。 即如果用户运行vim /erc/passwd ,那么lastcomm <username>只会告诉vim命令已经运行,但是不会告诉哪个文件实际被编辑了。

并且auditd告诉例如vim命令已经运行,并且一个特定的文件被编辑了,但是不知道谁编辑了这个文件。

假设我以sudo用户的身份运行一个命令,那么如果有10个sudo用户作为gid和uid将是超级用户输出命令,那么它不会告诉我哪个用户编辑了特定的文件:

 time->Sat Jun 20 15:52:45 2015 type=PATH msg=audit(1434795765.057:54685): item=4 name="/etc/passwd" inode=152790 dev=fd:00 mode=0100644 ouid=0 ogid=0 rdev=00:00 nametype=CREATE type=PATH msg=audit(1434795765.057:54685): item=3 name="/etc/passwd" inode=152786 dev=fd:00 mode=0100644 ouid=0 ogid=0 rdev=00:00 nametype=DELETE type=PATH msg=audit(1434795765.057:54685): item=2 name="/etc/passwd+" inode=152790 dev=fd:00 mode=0100644 ouid=0 ogid=0 rdev=00:00 nametype=DELETE type=PATH msg=audit(1434795765.057:54685): item=1 name="/etc/" inode=130562 dev=fd:00 mode=040755 ouid=0 ogid=0 rdev=00:00 nametype=PARENT type=PATH msg=audit(1434795765.057:54685): item=0 name="/etc/" inode=130562 dev=fd:00 mode=040755 ouid=0 ogid=0 rdev=00:00 nametype=PARENT type=CWD msg=audit(1434795765.057:54685): cwd="/etc" type=SYSCALL msg=audit(1434795765.057:54685): arch=c000003e syscall=82 success=yes exit=0 a0=7fffba897300 a1=7fd7cc94ece0 a2=7fffba8971c0 a3=0 items=5 ppid=14041 pid=14043 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts1 ses=8494 comm="useradd" exe="/usr/sbin/useradd" key=(null) 
  • 希望跟踪对文件所做的实际更改

助手工具告诉我一个文件已被修改,但我怎样才能得到实际修改内容的细节和哪个用户做了修改?

你可以使用auditd和pam模块来实现这个function。 您需要在会话之下加载pam模块pam_tty_audit

 session required pam_tty_audit.so disable=testuser1 enable=testuser,root 

/etc/pam.d/password-auth/etc/pam.d/system-auth文件中。

然后启用的用户的关键笔划将被logging到审计日志中。

在生成审计报告时,使用带有aureport的-i选项来准确获取用户名。

例如: aureport --tty -i -ts today

这种方法的一个缺点是所有的击键都会被logging下来,包括input到terminal中的密码。

用于跟踪文件更改助手可以使用。 这使用校验和validation方法。 但是在文件中改变的确切的行是不可追踪的。