Linux 中的审计

Linux 中的审计

我正在尝试在我的 centos 6.x 机器上设置一个强大的审计机制。我尝试并测试了各种审计工具,例如

  • 审计
  • 助手
  • 陣容

但没有一个能完全满足我的需求。我的需求很简单,我知道一个审计系统不能满足所有人的需求,我可能不得不一起使用不同的审计系统。我想

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

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)
  • 想要跟踪对文件所做的实际更改

助手工具告诉文件已被修改,但我如何才能获得实际修改的内容以及哪个用户执行了修改的详细信息?

答案1

您可以使用 auditd 和 pam 模块来实现这一点。您需要pam_tty_audit在会话下加载 pam 模块,例如

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

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

然后,启用用户的按键将被记录到审计日志中。

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

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

这种方法的一个缺点是所有击键都将被记录,包括在终端中输入的密码。

可以使用助手来跟踪文件更改。它使用校验和验证方法。但无法跟踪文件中更改的具体行。

相关内容