Централизованное ведение журналов аудита
Единая система сбора, хранения и анализа событий безопасности из распределённой инфраструктуры. От настройки агентов до корреляции событий и соответствия требованиям регуляторов.
Зачем собирать логи в одном месте
Локальные журналы на каждом сервере создают фрагментированную картину происходящего. Когда инцидент затрагивает несколько систем, аналитик тратит часы на сбор данных из разных источников. Централизация решает эту проблему: все события поступают в единое хранилище с согласованным форматом и временными метками.
Я начинаю проектирование с определения источников данных. Это операционные системы, сетевое оборудование, приложения, базы данных, системы аутентификации. Каждый источник генерирует события в своём формате, и задача централизованной системы — нормализовать эти данные для последующего анализа.
Важный момент: время событий должно быть синхронизировано. Без NTP-сервера с единым источником времени корреляция событий из разных систем становится невозможной. Разница в несколько минут между логами firewall и application server может скрыть цепочку атаки.
схема архитектуры
централизованного логирования]
Архитектура системы сбора логов
| Компонент | Функция | Технические особенности |
|---|---|---|
| Агенты сбора | Чтение локальных логов, фильтрация, буферизация, отправка на сервер | Filebeat, Fluentd, rsyslog с TLS, queue на диске при потере связи |
| Шлюзы приёма | Приём данных от агентов, валидация, балансировка нагрузки | Load balancer, rate limiting, аутентификация по сертификатам |
| Парсеры и нормализация | Преобразование сырых логов в структурированный формат | Grok-паттерны, regex, JSON-схемы, mapping полей к общей модели |
| Хранилище | Долгосрочное хранение, индексация, поиск по событиям | Elasticsearch, ClickHouse, hot/warm/cold архитектура, компрессия |
| Движок корреляции | Выявление связей между событиями из разных источников | Правила CEP, временные окна, графовые запросы, ML-аномалии |
| Интерфейс и API | Визуализация, поиск, экспорт данных, интеграция с другими системами | Kibana, Grafana, REST API, webhooks для SIEM/SOAR |
Настройка агентов сбора логов
Агент — это первый компонент в цепочке доставки логов. Его задача надёжно доставить события от источника до централизованного хранилища, даже при нестабильном сетевом соединении.
Пример конфигурации Filebeat для Linux
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/auth.log
- /var/log/syslog
fields:
log_type: system
environment: production
multiline.pattern: '^d{4}-d{2}-d{2}'
multiline.negate: true
multiline.match: after
output.elasticsearch:
hosts: ["log-server.local:9200"]
protocol: https
username: "filebeat_writer"
password: "${ES_PASSWORD}"
ssl.certificate_authorities: ["/etc/pki/root-ca.pem"]
ssl.certificate: "/etc/pki/filebeat.pem"
ssl.key: "/etc/pki/filebeat-key.pem"
queue.mem:
events: 4096
flush.min_events: 512
flush.timeout: 10s
Ключевые параметры надёжности
Буферизация на диске — при потере связи агент сохраняет события локально и отправляет после восстановления канала. Это предотвращает потерю данных во время сетевых сбоев.
Таймауты и повторные попытки — настройка backoff strategy позволяет избежать перегрузки сервера при массовом восстановлении соединения после простоя.
Фильтрация на источнике — исключение шумных событий (health checks, debug-логи) снижает нагрузку на канал и хранилище без потери критичных данных.
Нормализация и парсинг логов
Сырые логи содержат информацию в разном формате. Задача нормализации — привести их к единой структуре, где каждое событие имеет одинаковый набор полей: timestamp, source, event_type, severity, user, action, result.
| Источник | Пример сырого лога | Нормализованные поля |
|---|---|---|
| Linux auth.log | Feb 15 14:23:01 server sshd[12345]: Failed password for admin from 192.168.1.100 port 22 | event:auth_failure, protocol:ssh, user:admin, src_ip:192.168.1.100, port:22 |
| Windows Security | 4625: An account failed to log on. Account Name: admin, Logon Type: 3, IpAddress: 192.168.1.100 | event:auth_failure, protocol:rdp, user:admin, src_ip:192.168.1.100, logon_type:network |
| Web server access.log | 192.168.1.50 — — [15/Feb/2026:14:25:33 +0300] «GET /admin HTTP/1.1» 403 1234 | event:http_request, method:GET, path:/admin, status:403, src_ip:192.168.1.50 |
| Database audit | 2026-02-15T14:26:01Z AUDIT: user=app_user action=SELECT table=users rows=150 | event:db_query, user:app_user, action:read, object:users, rows_affected:150 |
Парсинг реализуется через Grok-паттерны или регулярные выражения. Я рекомендую тестировать паттерны на реальных логах перед развёртыванием — малейшая ошибка в regex может привести к потере событий или некорректной нормализации.
Корреляция событий для обнаружения инцидентов
Отдельное событие редко указывает на атаку. Корреляция объединяет события из разных источников во временном окне, выявляя паттерны, характерные для злонамеренной активности.
Пример правила корреляции
rule: brute_force_detection
description: Обнаружение подбора учётных данных
conditions:
- event_type: auth_failure
- count >= 10
- time_window: 5m
- group_by: [user, src_ip]
actions:
- severity: high
- alert: true
- enrich:
- geoip: src_ip
- user_risk_score
- notify: soc_team
Это правило срабатывает при 10+ неудачных попытках входа с одного IP для одного пользователя за 5 минут. Система автоматически добавляет геолокацию IP и рассчитывает риск пользователя.
Сценарии для корреляции
[✓] Последовательность: auth_success → privilege_escalation → sensitive_data_access — почему: выявляет компрометацию учётной записи с последующим доступом к критичным ресурсам
[✓] Распределённая атака: auth_failure с 50+ разных IP для одного пользователя за 1 минуту — почему: признак credential stuffing или DDoS на аутентификацию
[✓] Lateral movement: успешный вход → подключение к внутреннему ресурсу → выполнение команд — почему: обнаруживает перемещение злоумышленника внутри сети
[ ] Data exfiltration: большой объём исходящего трафика после доступа к базе данных — почему: требует настройки порогов под конкретную инфраструктуру
Хранение и ротация логов
Объём логов растёт экспоненциально. Без стратегии хранения хранилище быстро переполнится, а поиск замедлится. Я применяю многоуровневую архитектуру hot/warm/cold для баланса между производительностью и стоимостью.
| Уровень | Срок хранения | Характеристики | Использование |
|---|---|---|---|
| Hot | 1-7 дней | SSD, репликация 3x, быстрый поиск | Расследование текущих инцидентов, real-time мониторинг |
| Warm | 8-30 дней | HDD, репликация 2x, сжатие, поиск с задержкой | Ретроспективный анализ, расследование инцидентов прошлых недель |
| Cold | 31-365 дней | Объектное хранилище, компрессия, архивный доступ | Соответствие требованиям, долгосрочный аудит, судебные запросы |
| Archive | >1 года | Ленточные накопители или cold storage, извлечение по запросу | Юридические требования, исторический анализ трендов |
Ротация между уровнями автоматизируется через ILM-политики. Я настраиваю правила перехода на основе возраста индекса, размера и частоты доступа. Это снижает стоимость хранения без потери возможности расследования.
Защита журналов аудита от модификации
Логи — это доказательная база при расследовании инцидентов. Если злоумышленник может изменить или удалить записи, система аудита теряет ценность. Я применяю многоуровневую защиту целостности.
Механизмы защиты
WORM-хранилище — Write Once Read Many предотвращает изменение или удаление записей после записи. Реализуется через S3 Object Lock или специализированные СХД.
Цифровая подпись — каждый пакет логов подписывается криптографически при отправке. Приёмник проверяет подпись, отклоняя неподписанные или изменённые данные.
Хеширование цепочек — хеш каждого блока включает хеш предыдущего, создавая неизменяемую цепочку. Любое изменение разрывает цепь и детектируется при верификации.
Контроль доступа
[✓] Разделение ролей: сбор, анализ и администрирование — разные учётные записи — почему: предотвращает злоупотребление привилегиями одним пользователем
[✓] MFA для доступа к интерфейсу и API — почему: блокирует использование украденных учётных данных
[✓] Аудит действий администраторов самой системы логирования — почему: обеспечивает подотчётность тех, кто имеет доступ к доказательной базе
[ ] Шифрование данных в покое и при передаче — почему: защищает от утечки при компрометации хранилища или перехвате трафика
Соответствие требованиям регуляторов
Многие стандарты требуют централизованного сбора и хранения логов. Правильно настроенная система не только улучшает безопасность, но и упрощает прохождение аудитов.
| Требование | Реализация в системе логирования | Доказательство при аудите |
|---|---|---|
| Сбор событий безопасности | Агенты на всех критичных системах, нормализация событий аутентификации и доступа | Отчёт о покрытии источников, список нормализованных event_type |
| Хранение не менее 6 месяцев | ILM-политика с cold-уровнем на 180+ дней, мониторинг срока хранения | Скриншот конфигурации ILM, отчёт о возрасте старейших записей |
| Неизменяемость записей | WORM-хранилище, цифровые подписи, аудит изменений конфигурации | Сертификат WORM, логи подписи/верификации, отчёт аудита действий админов |
| Быстрый поиск и экспорт | Индексация полей, pre-built дашборды, API для экспорта в машиночитаемом формате | Демонстрация поиска по критериям аудита, пример экспортированного отчёта |
Мониторинг самой системы логирования
Система сбора логов — критичный компонент инфраструктуры. Её отказ означает слепоту при инциденте. Я отслеживаю метрики доступности, задержки и целостности данных.
| Метрика | Порог предупреждения | Действие при превышении | Инструмент мониторинга |
|---|---|---|---|
| Задержка доставки логов | > 5 минут от источника до хранилища | Проверка очереди агентов, пропускной способности канала | Prometheus + Grafana, метрики filebeat_output |
| Потеря событий | Любая потеря подтверждённых событий | Анализ логов агентов, проверка целостности буферов | Встроенные счётчики events_lost, алертинг в SIEM |
| Загрузка хранилища | > 80% дискового пространства hot-уровня | Ускорение ротации в warm, очистка старых индексов | Node exporter, Elasticsearch cluster health API |
| Недоступность агентов | > 5% агентов offline более 15 минут | Проверка сетевого подключения, перезапуск служб, эскалация | Heartbeat, статус последних событий от каждого агента |
Централизованное ведение журналов аудита превращает разрозненные записи в единую доказательную базу. Ключ к успеху — надёжная доставка, согласованная нормализация, защищённое хранение и автоматизированная корреляция. Система должна работать незаметно, пока не потребуется расследование инцидента.