Аудит в Linux

Аудит в Linux

Я пытаюсь настроить надежный механизм аудита на моих коробках Centos 6.x. Я пробовал и тестировал различные инструменты аудита, такие как

  • аудитд
  • помощник
  • 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)
  • Хотелось бы отслеживать фактические изменения, внесенные в файл

Инструмент Aide сообщает, что файл был изменен, но как я могу получить подробную информацию о содержимом, которое фактически было изменено, и о том, какой пользователь внес изменения?

решение1

Вы можете реализовать это с помощью auditd и модуля pam. Вам нужно загрузить модуль 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.

и тогда нажатия клавиш включенных пользователей будут регистрироваться в журнале аудита.

При создании отчета по аудиту используйте опцию -i с aureport, чтобы точно получить имя пользователя.

например:aureport --tty -i -ts today

Одним из недостатков этого метода является то, что будут регистрироваться все нажатия клавиш, включая пароли, введенные в терминале.

Для отслеживания измененного файла можно использовать помощник. Он использует метод проверки контрольной суммы. Но точная измененная строка в файле не отслеживается.

Связанный контент