Как проверить все команды, выполняемые в системе Linux, с помощью auditd |

Как проверить все команды, выполняемые в системе Linux, с помощью auditd

Мануал

Пакет аудита связан с подсистемой аудита ядра Linux.

Система аудита проверяет системные вызовы и другие события уровня ядра, а не события пользовательского пространства, поэтому нам необходимо провести аудит системного вызова execve (), который начинает выполнять новые программы.

В качестве примера в этом руководстве мы взяли систему CentOS / RHEL, но шаги остаются более или менее такими же для других дистрибутивов * NIX.

Для CentOS / RHEL 7

Применение правил аудита в системе

1. Чтобы сохранить правила постоянными после перезагрузки или перезапуска службы, добавьте следующие правила в файл /etc/audit/rules.d/audit.rules:

# vi /etc/audit/rules.d/audit.rules
-a exit,always -F arch=b32 -S execve -k auditcmd
-a exit,always -F arch=b64 -S execve -k auditcmd

2. Запустите команду «augenrules», чтобы воссоздать /etc/audit/audit.rules из всех файлов конфигурации в /etc/audit/rules.d/audit.rules и перезапустить auditd.

3. Если вы хотите временно применить правила, выполните следующие команды от имени пользователя root:

# auditctl -a exit,always -F arch=b32 -S execve -k auditcmd
# auditctl -a exit,always -F arch=b64 -S execve -k auditcmd

Проверьте текущие правила

Чтобы проверить текущие правила, запустите:

# auditctl -l

Проверьте журналы аудита

Чтобы проверить журналы аудита для определенного ключевого слова, выполните:

# ausearch -k auditcmd

Примечание. В CentOS / RHEL 7, чтобы остановить / запустить / перезапустить службу Audit, запустите службу AuditD Stop | Start | Restart.

Для CentOS / RHEL 6

Чтобы записывать в логи все команды

1. Сначала должен быть запущен audd.

Он должен быть запущен по умолчанию, но если это не так, запустите его:

# chkconfig auditd on
# service auditd start

2. Если это 64-битная архитектура, вам нужно добавить два правила для перехвата как 32-битных, так и 64-битных системных вызовов.

От имени пользователя root запустите:

# auditctl -a exit,always -F arch=b32 -S execve
# auditctl -a exit,always -F arch=b64 -S execve

3. Запустите ls / tmp, эти 3 события появятся в /var/log/audit/audit.log.

Строки разделены, чтобы их было легче читать, но обычно это одна длинная строка в реальном файле.

# tail -f /var/log/audit/audit.log
type=SYSCALL msg=audit(1296773801.756:35241): arch=c000003e syscall=59 
    success=yes exit=0 a0=cf2d10 a1=9da530 a2=cd4e20 a3=8 items=2 
    ppid=4146 pid=11827 auid=500 uid=500 gid=500 euid=500 
    suid=500 fsuid=500 egid=500 sgid=500 fsgid=500 tty=pts7 
    ses=3 comm="ls" exe="/bin/ls"
    subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key=(null)
type=EXECVE msg=audit(1296773801.756:35241): argc=3 a0="ls"
    a1="--color=auto" a2="/tmp" type=CWD msg=audit(1296773801.756:35241):
    cwd="/home/username"
type=PATH msg=audit(1296773801.756:35241): item=0 name="/bin/ls" 
    inode=14418043 dev=fd:01 mode=0100755 ouid=0 ogid=0 rdev=00:00 
    obj=system_u:object_r:bin_t:s0 type=PATH 
    msg=audit(1296773801.756:35241): item=1 name=(null) inode=20447259
    dev=fd:01 mode=0100755 ouid=0 ogid=0 rdev=00:00
    obj=system_u:object_r:ld_so_t:s0

Журналы аудита довольно многословны, но содержат полную команду, в том числе тот факт, что ls был псевдонимом оболочки для ls –color = auto.

Первое число в скобках – это отметка времени.

Это может быть преобразовано в удобочитаемое время с Perl:

$ perl -e 'print scalar(localtime(1296773801.756)) . "\n";'
Thu Feb  3 16:56:41 2011

exit = 0 в строке SYSCALL выше касается системного вызова execve (), а не всей программы.

Для регистрации всех команд для конкретного пользователя

1. Запустите службу Audit:

# chkconfig auditd on
# service auditd start

2. Добавьте правило аудита:

Для 64-битной архитектуры:

# auditctl -a exit,always -F arch=b64 -F uid=500 -S execve -k auditcmd

Для 32-битной архитектуры:

# auditctl -a exit,always -F arch=b32 -F uid=500 -S execve -k auditcmd

Здесь uid пользователя, для которого включен аудит всех команд.

Запустите команду audctl от имени пользователя root, чтобы добавить правила.

3. Убедитесь, что журналы создаются, проверив файл /var/log/audit/audit.log.

Как только пользователь начнет выполнять команды, журналы появятся как показано ниже:

# tail -f /var/log/audit/audit.log
type=SYSCALL msg=audit(1393407885.099:8614): arch=c000003e syscall=59 success=yes exit=0 a0=158c9b0 a1=1588f10 a2=15a7ae0 a3=18 items=2 ppid=3123 pid=3307 auid=0 uid=500 gid=500 euid=500 suid=500 fsuid=500 egid=500 sgid=500 fsgid=500 tty=pts1 ses=1 comm="ls" exe="/bin/ls" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key=(null)
type=EXECVE msg=audit(1393407885.099:8614): argc=2 a0="ls" a1="--color=auto"
type=CWD msg=audit(1393407885.099:8614):  cwd="/home/sadaf"
type=PATH msg=audit(1393407885.099:8614): item=0 name="/bin/ls" inode=408600 dev=fc:02 mode=0100755 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:bin_t:s0
type=PATH msg=audit(1393407885.099:8614): item=1 name=(null) inode=429303 dev=fc:02 mode=0100755 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:ld_so_t:s0

type=SYSCALL msg=audit(1393407910.242:8615): arch=c000003e syscall=59 success=yes exit=0 a0=15971e0 a1=158c9b0 a2=15a7ae0 a3=18 items=2 ppid=3123 pid=3310 auid=0 uid=500 gid=500 euid=500 suid=500 fsuid=500 egid=500 sgid=500 fsgid=500 tty=pts1 ses=1 comm="rmdir" exe="/bin/rmdir" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key=(null)
type=EXECVE msg=audit(1393407910.242:8615): argc=2 a0="rmdir" a1="data"

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

 

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий