Как использовать ausearch для регистрации IP-адреса пользователя при изменении им файла через SSH?

Как использовать ausearch для регистрации IP-адреса пользователя при изменении им файла через SSH?

Моя команда входит на сервер разработки, используя тот же пароль root; мы не настраивали отдельные учетные записи пользователей.

Сейчас я пытаюсь создать журнал изменений файлов и хочу различать разных авторов, но ausearch всегда возвращает имя пользователя (то есть всегда «root»), даже когда я передаю правило name_format=numeric, которое должно было выдавать IP-адрес вместо «root».

решение1

ПРИМЕЧАНИЕ: Этот вопрос также задавался автором в другом онлайн-чате. Это отредактированная версия моего ответа в том другом месте. Нецелесообразность входа нескольких пользователей напрямую как root уже обсуждалась там, и нет необходимости возвращаться к этому вопросу.

Насколько я понимаю, вы спрашиваете, как заставить журналы аудита показывать, с какого IP-адреса было выполнено каждое зарегистрированное действие. Ваше разочарование в том, что большинство строк аудита даже не имеют полей hostnameи addr, а те немногие, которые имеют, в основном выглядят так:

node=192.168.33.9 type=USER_START msg=audit(1422241281.664:263): pid=5912 uid=0 auid=1001 ses=18 msg='op=PAM:session_open acct="root" exe="/usr/bin/sudo" hostname=? addr=? terminal=/dev/pts/4 [...]

т.е. с неизвестными hostnameи addrзначениями.

Подсистема аудита Linux не заполняет автоматически свои записи соответствующей информацией об имени хоста/IP; демоны, такие как sshd, должны явно предоставлять их в auditd каким-либо образом (в случае sshd — через вызовы PAM):

node=192.168.33.9 type=CRED_ACQ msg=audit(1422240837.085:202): pid=5441 uid=0 auid=501 ses=18 msg='op=PAM:setcred acct="ratb" exe="/usr/sbin/sshd" hostname=canton.local addr=192.168.33.36 terminal=ssh res=success'

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

Поскольку все входят в систему напрямую как один и тот же пользователь, вам придется записывать индивидуальные ses(«сеансовые») номера изUSER_STARTпроверяйте сообщения, которые sshd выдает через PAM, затем сопоставляйте их с sesидентификаторамиSYSCALLсообщения для активности, которую вы хотите отслеживать. Например, это был аудиторский след для echo hi > tmp/testing.txtтого же сеанса SSH, что и выше, и поэтому имеет тот же sesидентификатор (18):

node=192.168.33.9 type=PATH msg=audit(1422241924.835:341): item=1 name="tmp/testing.txt" inode=2631940 dev=08:22 mode=0100644 ouid=0 ogid=0 rdev=00:00 nametype=CREATE
node=192.168.33.9 type=PATH msg=audit(1422241924.835:341): item=0 name="tmp/" inode=2621477 dev=08:22 mode=040755 ouid=0 ogid=0 rdev=00:00 nametype=PARENT
node=192.168.33.9 type=CWD msg=audit(1422241924.835:341):  cwd="/root"
node=192.168.33.9 type=SYSCALL msg=audit(1422241924.835:341): arch=c000003e syscall=2 success=yes exit=3 a0=bc62a8 a1=241 a2=1b6 a3=10 items=2 ppid=5913 pid=5921 auid=1001 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts4 ses=18 comm="bash" exe="/bin/bash" key=(null)

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