Аудит в Linux
Я пытаюсь настроить надежный механизм аудита на своих коробках centos 6.x. Я пробовал и тестировал различные инструменты аудита, такие как
- auditd
- помощник
- psacct
Но ни одно из них не полностью отвечает моим требованиям. Мое требование довольно простое, и я знаю, что одна система аудита не будет обслуживать все, и мне, возможно, придется использовать разные системы аудита вместе. я бы хотел
- Контролировать все команды, выполняемые пользователем
psacct делает это отлично, но сообщает только команду, выполненную пользователем, а не аргументы, переданные команде. т.е. если пользователь запускает vim /erc/passwd
, затем lastcomm <username>
только скажет, что команда vim была выполнена, но не скажет, какой файл был фактически отредактирован.
И audd говорит, что, например, команда vim была запущена и конкретный файл был отредактирован, но не сообщают, кто редактировал файл.
Предположим, что я запускаю команду от имени пользователя sudo, тогда он не скажет мне, какой пользователь отредактировал конкретный файл, если в выводе команды будет 10 пользователей sudo, и gid будет иметь права суперпользователя:
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 ответ
Вы можете реализовать это, используя audd и модуль 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
Недостатком этого метода является то, что все нажатия клавиш регистрируются, включая пароли, введенные в терминале.
Для отслеживания файла может быть изменен помощник. Это использует метод проверки контрольной суммы. Но точная строка, измененная в файле, не прослеживается.