История изменений
Исправление tiandrey, (текущая версия) :
Вообще говоря, события аудита могут состоять из нескольких записей. В логе auditd в каждой строке в параметре msg как раз указан идентификатор события, к которому относится данная запись (т.е. строка).
Каждая запись описывает какую-то часть события. Например, если мониторить системные вызовы, то в одной записи будет указано, какой, собственно, системный вызов был вызван (пардон за каламбур), в других записях - с какими параметрами он был вызван, ещё может быть указано, какая текущая директория у программы, которая его вызвала, и так далее.
Со всеми типами записей можешь ознакомиться здесь.
Скорее всего, из-за твоего фильтра в лог попадают не все нужные записи. Сказать, почему у пользователей записи USER_CMD, а у рута только PATH, точно не могу. Возможно, дело в разных шеллах, или как там пользователи работают. Делай такие фильтры, чтобы попадало больше записей, анализируй события целиком, а не по одной записи.
P.S. вот, например, событие, которое записал мой аудит на запуск less /var/log/audit/audit.log, зацени, сколько записей:
type=SYSCALL msg=audit(1469352548.364:2621009): arch=c000003e syscall=59 success=yes exit=0 a0=7ffd5ab7f850 a1=7f5eb4ae0168 a2=c769c0 a3=7ffd5ab7f140 items=2 ppid=10476 pid=14489 auid=1234 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts1 ses=14297 comm="less" exe="/bin/less" key=(null)
type=EXECVE msg=audit(1469352548.364:2621009): argc=2 a0="less" a1="/var/log/audit/audit.log"
type=CWD msg=audit(1469352548.364:2621009): cwd="/root"
type=PATH msg=audit(1469352548.364:2621009): item=0 name="/usr/bin/less" inode=392618 dev=08:01 mode=0100755 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL
type=PATH msg=audit(1469352548.364:2621009): item=1 name="/lib64/ld-linux-x86-64.so.2" inode=917351 dev=08:01 mode=0100755 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL
type=PROCTITLE msg=audit(1469352548.364:2621009): proctitle=6C657373002F7661722F6C6F672F61756469742F61756469742E6C6F67
P.P.S. если ты определяешь IP пользователя по терминалу/номеру сессии, лучше обрабатывать лог в потоковом режиме и писать сразу в каком-то своём формате, удобном тебе - если искать потом, есть ненулевая вероятность, что на каком-то терминале сидит уже другой пользователь, либо номер сессии продолбался (хотя, возможно, я неправильно тебя понял, и этой проблемы у тебя нет). Посмотри в сторону audisp для этого, я таким образом записывал, в каком lxc-контейнере событие происходит.
Исправление tiandrey, :
Вообще говоря, события аудита могут состоять из нескольких записей. В логе auditd в каждой строке в параметре msg как раз указан идентификатор события, к которому относится данная запись (т.е. строка).
Каждая запись описывает какую-то часть события. Например, если мониторить системные вызовы, то в одной записи будет указано, какой, собственно, системный вызов был вызван (пардон за каламбур), в других записях - с какими параметрами он был вызван, ещё может быть указано, какая текущая директория у программы, которая его вызвала, и так далее.
Со всеми типами записей можешь ознакомиться здесь.
Скорее всего, из-за твоего фильтра в лог попадают не все нужные записи. Сказать, почему у пользователей записи USER_CMD, а у рута только PATH, точно не могу. Возможно, дело в разных шеллах, или как там пользователи работают. Делай такие фильтры, чтобы попадало больше записей, анализируй события целиком, а не по одной записи.
P.S. вот, например, событие, которое записал мой аудит на запуск less /var/log/audit/audit.log, зацени, сколько записей:
type=SYSCALL msg=audit(1469352548.364:2621009): arch=c000003e syscall=59 success=yes exit=0 a0=7ffd5ab7f850 a1=7f5eb4ae0168 a2=c769c0 a3=7ffd5ab7f140 items=2 ppid=10476 pid=14489 auid=1234 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts1 ses=14297 comm="less" exe="/bin/less" key=(null)
type=EXECVE msg=audit(1469352548.364:2621009): argc=2 a0="less" a1="/var/log/audit/audit.log"
type=CWD msg=audit(1469352548.364:2621009): cwd="/root"
type=PATH msg=audit(1469352548.364:2621009): item=0 name="/usr/bin/less" inode=392618 dev=08:01 mode=0100755 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL
type=PATH msg=audit(1469352548.364:2621009): item=1 name="/lib64/ld-linux-x86-64.so.2" inode=917351 dev=08:01 mode=0100755 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL
type=PROCTITLE msg=audit(1469352548.364:2621009): proctitle=6C657373002F7661722F6C6F672F61756469742F61756469742E6C6F67
P.P.S. если ты определяешь IP пользователя по терминалу, лучше обрабатывать лог в потоковом режиме и писать сразу в каком-то своём формате, удобном тебе - если искать потом, есть ненулевая вероятность, что на каком-то терминале сидит уже другой пользователь. Посмотри в сторону audisp для этого, я таким образом записывал, в каком lxc-контейнере событие происходит.
Исходная версия tiandrey, :
Вообще говоря, события аудита могут состоять из нескольких записей. В логе auditd в каждой строке в параметре msg как раз указан идентификатор события, к которому относится данная запись (т.е. строка).
Каждая запись описывает какую-то часть события. Например, если мониторить системные вызовы, то в одной записи будет указано, какой, собственно, системный вызов был вызван (пардон за каламбур), в других записях - с какими параметрами он был вызван, ещё может быть указано, какая текущая директория у программы, которая его вызвала, и так далее.
Со всеми типами записей можешь ознакомиться здесь.
Скорее всего, из-за твоего фильтра в лог попадают не все нужные записи. Сказать, почему у пользователей записи USER_CMD, а у рута только PATH, точно не могу. Возможно, дело в разных шеллах, или как там пользователи работают. Делай такие фильтры, чтобы попадало больше записей, анализируй события целиком, а не по одной записи.
P.S. вот, например, событие, которое записал мой аудит на запуск less /var/log/audit/audit.log, зацени, сколько записей:
type=SYSCALL msg=audit(1469352548.364:2621009): arch=c000003e syscall=59 success=yes exit=0 a0=7ffd5ab7f850 a1=7f5eb4ae0168 a2=c769c0 a3=7ffd5ab7f140 items=2 ppid=10476 pid=14489 auid=1234 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts1 ses=14297 comm="less" exe="/bin/less" key=(null)
type=EXECVE msg=audit(1469352548.364:2621009): argc=2 a0="less" a1="/var/log/audit/audit.log"
type=CWD msg=audit(1469352548.364:2621009): cwd="/root"
type=PATH msg=audit(1469352548.364:2621009): item=0 name="/usr/bin/less" inode=392618 dev=08:01 mode=0100755 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL
type=PATH msg=audit(1469352548.364:2621009): item=1 name="/lib64/ld-linux-x86-64.so.2" inode=917351 dev=08:01 mode=0100755 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL
type=PROCTITLE msg=audit(1469352548.364:2621009): proctitle=6C657373002F7661722F6C6F672F61756469742F61756469742E6C6F67