
Лучшие практики настройки Auditd
___ ___ __ __
/ | __ ______/ (_) /_____/ /
/ /| |/ / / / __ / / __/ __ /
/ ___ / /_/ / /_/ / / /_/ /_/ /
/_/ |_\__,_/\__,_/_/\__/\__,_/
Лучшая практика конфигурации auditd
Идея данной конфигурации auditd — предоставить базовый набор лучших практик, который:
Упрощённый набор правил намеренно сохраняет некоторые ценные, но потенциально высокообъёмные виды телеметрии, особенно события создания процессов, создания сокетов и сбои доступа к файлам. При необходимости настройте эти разделы под свою среду.
Текущая конфигурация охватывает следующие области:
ptrace, memfd_create, bpf, пространства имён, io_uring и userfaultfdexecve, execveat, создание сокетов, удаление файлов и использование 32-битного ABIДанный набор правил намеренно остаётся не привязанным к конкретной логике обнаружения. Он ориентирован на сбор широко полезной телеметрии аудита, которая затем может быть проанализирована различными способами — например, с помощью инструментов на базе Sigma или запросов SIEM.
Один из проектов с открытым исходным кодом, который может использовать эти данные аудита — Aurora Linux, лёгкий и настраиваемый Sigma-агент для Linux, объединяющий телеметрию на основе eBPF с обогащением на уровне пользовательского пространства и сопоставлением правил Sigma.
Данный набор правил намеренно включает флаг -i, чтобы отсутствие опциональных путей, специфичных для дистрибутива, не приводило к аварийному завершению загрузки правил на системах, где отсутствуют некоторые бинарные файлы или каталоги. Это упрощает развёртывание по умолчанию, но означает, что ошибки загрузки правил игнорируются.
Если вы хотите выполнить строгую проверку перед развёртыванием, протестируйте временную копию, удалив строку с -i, например:
grep -v '^-i$' audit.rules > /tmp/audit.rules.strict
auditctl -R /tmp/audit.rules.strict
Репозиторий также включает проверки GitHub Actions, которые проверяют синтаксис правил и удостоверяют, что переносимая CI-копия и строгая копия могут быть загружены на Ubuntu.
Некоторые правила в audit.rules используют auid>=1000 -F auid!=unset, чтобы сосредоточиться на активности интерактивных пользователей и исключить незаданные сеансы входа.
1000 является распространённым UID_MIN во многих дистрибутивах Linux, но не универсальным. Если на вашем хосте используется другое значение UID_MIN, проверьте /etc/login.defs и замените 1000 в audit.rules перед развёртыванием:
awk '$1=="UID_MIN" { print $2 }' /etc/login.defs
29 апреля 2026 года Xint опубликовал Copy Fail (CVE-2026-31431) — метод локального повышения привилегий, который злоупотребляет криптографическим пользовательским интерфейсом ядра (AF_ALG) совместно с splice() для повреждения файлов, поддерживаемых страничным кешем, в памяти.
Этот набор правил включает небольшой блок af_alg для сбора стабильных низкошумовых компонентов этой настройки от идентифицируемых пользовательских сеансов:
socket(AF_ALG, ...)bind() с использованием стандартной struct sockaddr_alg фиксированного размераsetsockopt(..., SOL_ALG, ...)Это намеренно более общий подход, чем одноразовая сигнатура для authencesn(hmac(sha256),cbc(aes)), поскольку фильтры системных вызовов audit не могут сопоставлять строковые аргументы. На практике имя алгоритма содержится в записи SOCKADDR, выдаваемой bind(), поэтому рекомендуемое обнаружение на нижнем уровне:
key=af_algSOCKADDR.saddr / SADDR={ saddr_fam=alg ... }salg_type=aead с salg_name, содержащим authencesn(pid, exe или auid генерирует много таких bind-вызовов за короткий промежуток времениДоказательство концепции, описанное Xint, также использует повторяющиеся операции splice(). Эти системные вызовы слишком шумны для набора правил по умолчанию на многих системах, поэтому репозиторий содержит только закомментированное наложение splice_user в audit.rules. Включайте его только в том случае, если splice / vmsplice редко встречаются в вашей среде, и коррелируйте с недавней активностью af_alg того же процесса или пользовательского сеанса.
Конфигурация основана на следующих источниках и годах внесённых улучшений в набор правил по умолчанию:
Правила auditd Gov.uk https://github.com/gds-operations/puppet-auditd/pull/1
Укрепление CentOS 7 https://highon.coffee/blog/security-harden-centos-7/#auditd---audit-daemon
Репозиторий Linux audit https://github.com/linux-audit/audit-userspace/tree/master/rules
Auditd high performance linux auditing https://linux-audit.com/tuning-auditd-high-performance-linux-auditing/
Copy Fail: 732 байта до root в каждом крупном дистрибутиве Linux. https://xint.io/blog/copy-fail-linux-distributions
Пользовательский интерфейс криптографии ядра Linux (AF_ALG) https://docs.kernel.org/crypto/userspace-if.html
Не все эти правила были включены.
Для соответствия PCI DSS см.: https://github.com/linux-audit/audit-userspace/blob/master/rules/30-pci-dss-v31.rules
Для соответствия NISPOM см.: https://github.com/linux-audit/audit-userspace/blob/master/rules/30-nispom.rules
IppSec записал видео, в котором объясняется, как обнаружить эксплуатацию уязвимости OMIGOD с помощью auditd. Основные концепции auditd из этого видео по-прежнему полезны, но с тех пор набор правил в этом репозитории был значительно упрощён. Рассматривайте видео как исторический контекст и введение в идеи обнаружения на базе auditd, а не как построчную документацию текущего audit.rules.
https://www.youtube.com/watch?v=lc1i9h1GyMA
Пожалуйста, вносите свои изменения в виде pull request'ов.