Мои правила auditd и мои потребности довольно просты, я хочу регистрировать только действия root.
# auditctl -l
-a always,exit -S all -F euid=0 -F perm=x -F key=ROOT_ACTION
Это единственное правило, и оно работает:
type=SYSCALL msg=audit(1550318220.514:11479): arch=c000003e syscall=59 success=yes exit=0 a0=56002fde79a8 a1=56002fdeffc8 a2=56002fdee3a0 a3=0 items=2 ppid=7250 pid=7251 auid=1000 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts6 ses=1 comm="tail" exe="/usr/bin/tail" key="ROOT_ACTION"
Однако у меня также есть профили apparmor, чтобы явно запретить определенные привилегии приложений, которые им не нужны. Это сделано специально и работает, как ожидалось. Однако они приводят к тому, что мой auditd.log забивается такими вещами, как:
type=AVC msg=audit(1550309442.438:207): apparmor="DENIED" operation="exec" profile="/usr/lib/slack/slack" name="/bin/dash" pid=2893 comm="slack" requested_mask="x" denied_mask="x" fsuid=1000 ouid=0
Как вы видите, это выполняется Slack, работающим от имени пользователя без полномочий root, и мое правило аудита ROOT_ACTION не перехватывает.
Это делает МНОГО:
# cat /var/log/audit/*| egrep apparmor | wc -l
40574
Это менее чем за 24 часа.
Я понимаю, что могу использовать aureport и ausearch или множество других методов для фильтрации того, что я вижу. Однако я бы предпочел не вводить предвзятость только нахождения странностей, которыми я был ожидая, потому что меня беспокоит непредвиденное.
Итак, как я могу:
Помогите!
Просматривая документы, мне кажется, что это нужно настроить в соответствующем профиле apparmor.
http://manpages.ubuntu.com/manpages/cosmic/man5/apparmor.d.5.html
Цитата из справочной страницы:
Rule Qualifiers
There are several rule qualifiers that can be applied to permission rules. Rule qualifiers can modify the rule and/or permissions within the rule.
allow
Specifies that permissions requests that match the rule are allowed. This is the default value for rules and does not need to be specified. Conflicts with the deny qualifier.
audit
Specifies that permissions requests that match the rule should be recorded to the audit log.
deny
Specifies that permissions requests that match the rule should be denied without logging. Can be combined with 'audit' to enable logging. Conflicts with the allow qualifier.
После более подробного ознакомления с деталями есть также способы настроить ваши требования на auditd
уровень. Есть список с названием exclude
где вы можете добавить правила для фильтрации.
В качестве примера следующая команда исключает любые сообщения AVC:
auditctl -a never,exclude -F msgtype=AVC
В этом случае событие аудита генерируется apparmor
и управляется заряженным apparmor
конфигурация. Нет соответствующего правила, которое можно было бы контролировать / удалять с помощью auditctl
в подсистеме аудита ядер.
Явный auditctl
правило фильтрации можно создать с помощью exclude
список с соответствующими правилами сопоставления.
Лично я бы предпочел способ даже не генерировать событие аудита, если оно не требуется, путем настройки apparmor
к deny
только.
AVC также называют кэшем вектора доступа. Этот кеш используется SELinux / Apparmor для регистрации решений о доступе, и похоже, что этот тип сообщения по умолчанию записывается с помощью auditd и должен быть явно запрещен, если пользователь этого не хочет. В auditctl
справочная страница перечисляет это как пример в exclude
раздел. Кроме того, в SELinux есть механизм, который записывает журналы AVC на диск, когда auditd не запущен.