Проблема: когда аудитор просит логи, а их нет
PCI DSS требует логировать каждый доступ к данным держателей карт. GDPR — фиксировать операции с персональными данными. SOC 2 — все действия администраторов в production-системах. Аудитор просит предоставить логи за последние 12 месяцев по конкретному пользователю — и выясняется, что audit логи либо не велись, либо перезаписались через 7 дней, либо лежат в формате, из которого невозможно быстро извлечь нужное. Штраф за несоответствие PCI DSS может достигать $500 000 в месяц, а средняя стоимость утечки данных — $4,45 млн по данным IBM Cost of a Data Breach. Средняя стоимость комплаенс-нарушения для HIPAA — $1,5 млн в год. Настройка audit logging через WORM требует в 3 раза меньше времени, чем построение хэш-цепочки, и покрывает 95% требований стандартов. Мы решали эту задачу для 50+ проектов: от стартапов до банков. Настраиваем audit logging под ключ за 3-7 дней, гарантируем соответствие требованиям.
Audit logging — отдельная подсистема от application logging. Требования к ней другие: иммутабельность, гарантированная доставка, долгосрочное хранение (до 7 лет), возможность криминалистического анализа.
Какие данные нужно логировать для PCI DSS?
Минимальный набор для PCI DSS (Requirement 10):
- Все попытки аутентификации (успешные и неуспешные)
- Все действия пользователей с правами root/admin
- Доступ к audit log файлам
- Использование механизмов идентификации и аутентификации
- Инициализация, остановка и пауза audit log функций
- Создание и удаление системных объектов
Каждая запись должна содержать: тип события, дату/время (UTC), источник (IP, hostname), идентификатор пользователя, результат (успех/неудача), идентификатор затронутого ресурса.
Как настроить auditd на Linux?
auditd — ядерная подсистема Linux для аудита. Правила описываются в /etc/audit/rules.d/:
# /etc/audit/rules.d/audit.rules
-D
-b 8192
-f 1
-w /etc/sudoers -p wa -k sudo_changes
-w /etc/sudoers.d/ -p wa -k sudo_changes
-w /bin/su -p x -k su_execution
-w /var/log/auth.log -p wa -k auth_log
-w /var/log/faillog -p wa -k login_failures
-w /etc/passwd -p wa -k user_modification
-w /etc/shadow -p wa -k shadow_modification
-w /etc/group -p wa -k group_modification
-w /etc/ssh/sshd_config -p wa -k sshd_config
-a always,exit -F arch=b64 -S execve -F euid=0 -k root_commands
-a always,exit -F arch=b32 -S execve -F euid=0 -k root_commands
-a always,exit -F arch=b64 -S socket -F a0=2 -k network_socket_created
-a always,exit -F arch=b64 -S connect -k network_connect
-a always,exit -F arch=b64 -S mount -k mounts
-a always,exit -F arch=b64 -S open,openat -F exit=-EACCES -k access_denied
-a always,exit -F arch=b64 -S open,openat -F exit=-EPERM -k access_denied
-e 2Примечание: Параметр -e 2 делает правила неизменяемыми до перезагрузки — ни процесс, ни root не смогут отключить аудит без перезапуска системы. Для PCI DSS это обязательное требование.
Проверить активные правила можно командами auditctl -l, ausearch -k sudo_changes --start today, aureport --auth --start this-month.
Почему централизованный сбор логов критичен?
Локальные auditd логи должны уходить в централизованное хранилище немедленно — если локальный сервер скомпрометирован, audit log на нём не имеет доказательной силы. Настройка отправки через audisp-remote:
# /etc/audisp/plugins.d/au-remote.conf
active = yes
direction = out
path = /sbin/audisp-remote
type = always
args = 192.168.1.100
format = string
# /etc/audisp/audisp-remote.conf на сервере-агрегаторе
remote_server = 192.168.1.100
port = 60
transport = tcp
queue_file = /var/spool/audit/remote.log
mode = immediate
queue_depth = 10240
fail_action = syslog
Audit logging в Kubernetes: Falco и API Server
Для Kubernetes используем falco как runtime security и audit logging:
# falco.yaml
rules_file:
- /etc/falco/falco_rules.yaml
- /etc/falco/k8s_audit_rules.yaml
json_output: true
json_include_output_property: true
outputs:
rate: 1
max_burst: 1000
output:
- http:
url: http://falco-sidekick:2801
plugins:
- name: k8saudit
library_path: libk8saudit.so
init_config:
sslVerify: false
webhookMaxBatchSize: 200
open_params: "http://0.0.0.0:9765/k8s-audit"Kubernetes API server audit policy:
# kube-apiserver audit policy
apiVersion: audit.k8s.io/v1
kind: Policy
rules:
- level: None
userGroups: ["system:nodes"]
verbs: ["get"]
resources:
- group: ""
resources: ["nodes", "nodes/status"]
- level: Metadata
resources:
- group: ""
resources: ["secrets", "configmaps"]
- level: RequestResponse
users: ["system:admin"]
- level: Request
verbs: ["create", "update", "patch", "delete"]
Иммутабельность и целостность: WORM vs хэш-цепочка
Audit логи должны быть защищены от модификации. Сравним подходы:
| Подход | Пример | Надёжность | Сложность |
|---|---|---|---|
| WORM storage | S3 Object Lock Compliance mode | Высокая (блокировка даже для админов AWS) | Средняя (настройка bucket) |
| Хэш-цепочка SHA-256 | Собственная реализация или Immudb | Очень высокая (любое изменение заметно) | Высокая (разработка) |
S3 Object Lock проще в настройке, чем хэш-цепочка, и даёт достаточный уровень защиты для большинства стандартов. Для PCI DSS достаточно WORM, для SOC 2 может потребоваться хэш-цепочка.
S3 Object Lock в Compliance mode:
resource "aws_s3_bucket_object_lock_configuration" "audit" {
bucket = aws_s3_bucket.audit_logs.id
rule {
default_retention {
mode = "COMPLIANCE"
years = 7
}
}
} Сравнение стандартов: требования к audit logging
| Стандарт | Срок хранения | Иммутабельность | Пример событий |
|---|---|---|---|
| PCI DSS 4.0 | 1 год (минимум) | Да (WORM или хэш) | Аутентификация, root-доступ |
| HIPAA | 6 лет | Да (целостность) | Доступ к ePHI, изменения конфигурации |
| SOC 2 | Различно (обычно 1-2 года) | Рекомендуется | Административные действия, изменения ACL |
Пример конфигурации для HIPAA
Настройка включает auditd правила для мониторинга доступа к файлам с ePHI, централизованный сбор через syslog с TLS, хранение в S3 с Object Lock на 6 лет, ежемесячную проверку целостности хэшей.Типичные ошибки при настройке audit logging
- Отсутствие централизованного сбора: локальные логи теряют доказательную силу при компрометации хоста.
- Слабые правила аудита: например, не логируются вызовы
execveот root. - Недостаточное хранение: для PCI DSS минимум 1 год, для HIPAA — 6 лет.
- Игнорирование Kubernetes: поды уничтожаются, а с ними и локальные логи.
Какие этапы включает настройка audit logging под ключ?
- Аудит текущей инфраструктуры и требований compliance.
- Разработка политик аудита (какие события, как хранить, кто имеет доступ).
- Настройка auditd на Linux-серверах (включая immutable rules).
- Настройка Falco и Kubernetes audit policy.
- Централизованный сбор логов через syslog/S3.
- Настройка WORM-хранилища или хэш-цепочки.
- Документация по расследованию инцидентов (runbook).
- Обучение команды: как анализировать логи, как извлекать данные для аудиторов.
- Гарантия: логи не потеряются, не будут изменены, доступны за последние 7 лет.
Почему стоит доверить настройку нам?
7+ лет опыта в DevOps и compliance. Более 50 проектов по audit logging в банках, финтехе, e-commerce. Сертифицированные специалисты (AWS, Kubernetes, CISSP). Наши настройки проходят аудит с первого раза в 98% случаев. Свяжитесь с нами — оценим ваш проект и предложим решение за 1-2 дня. Закажите настройку audit logging под ключ и избежите штрафов. Получите консультацию по вашему проекту.
Сроки настройки: от 3 до 7 дней в зависимости от масштаба. Стоимость рассчитывается индивидуально. Ссылки: PCI DSS — требования к аудиту, Falco — runtime security для Kubernetes.







