Логирование и реагирование на инциденты

Нельзя защититься от того, чего не видишь. Логи — это глаза системы, а план реагирования — её рефлексы.

Логирование для безопасности — запись событий так, чтобы можно было заметить атаку, расследовать инцидент и восстановить картину произошедшего.

Почему это критично

Многие взломы остаются незамеченными неделями именно потому, что их нечем заметить: нет логов или их никто не смотрит. Хорошее логирование решает три задачи: обнаружить подозрительную активность, расследовать инцидент постфактум и подтвердить, что (или что не) произошло.

Что логировать

  • Входы и выходы, особенно неудачные попытки входа (всплеск — признак перебора).
  • Изменения прав и важные действия (смена пароля, email, удаление данных).
  • Ошибки и отказы доступа.
  • Доступ к чувствительным ресурсам.

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

Чего НИКОГДА не логировать

Логи сами становятся целью, если в них лежит лишнее. Никогда не пишите в логи:

Нельзя логироватьПочему
Пароли (даже неверные)утечка логов = утечка паролей
Токены, ключи, секретыдают прямой доступ
Полные номера картчувствительные финансовые данные
Лишние персональные данныеприватность и требования закона

Простое правило: лог должен помогать понять, что произошло, не раскрывая секретов. Покажем безопасную запись события входа:

import hashlib
from datetime import datetime, timezone

def log_login(username, ip, success):
    # маскируем имя: храним только короткий хэш, не сам логин и не пароль
    user_ref = hashlib.sha256(username.encode()).hexdigest()[:10]
    ts = datetime(2026, 6, 14, 12, 0, tzinfo=timezone.utc).isoformat()
    status = "OK" if success else "FAIL"
    print(f"{ts} login {status} user={user_ref} ip={ip}")

log_login("alice", "203.0.113.5", True)
log_login("alice", "203.0.113.5", False)

Вывод:

2026-06-14T12:00:00+00:00 login OK user=2bd806c97f ip=203.0.113.5
2026-06-14T12:00:00+00:00 login FAIL user=2bd806c97f ip=203.0.113.5

В логе есть время, исход, источник и ссылка на пользователя — но нет ни пароля, ни самого логина в открытом виде.

Реагирование на инцидент

Когда инцидент случился, паника — худший советчик. Помогает заранее продуманный план. Классические этапы:

  1. Подготовка. Контакты, доступы, инструкции готовы заранее.
  2. Обнаружение. Заметили аномалию (по логам, алертам, жалобам).
  3. Сдерживание. Ограничить распространение: отключить скомпрометированный ключ, изолировать сервер.
  4. Устранение. Убрать причину: закрыть уязвимость, сменить секреты.
  5. Восстановление. Вернуть сервис в норму, проверить, что чисто.
  6. Выводы. Разобрать без поиска виновных: что улучшить, чтобы не повторилось.

Алерты, а не только логи

Логи, которые никто не читает, не спасают. Поэтому на важные события (всплеск неудачных входов, появление прав администратора) настраивают автоматические оповещения. Цель — сократить время от события до реакции.

Итог

  • Логи позволяют обнаружить, расследовать и подтвердить инциденты — без них взлом не виден.
  • Логируйте кто/что/когда/откуда; никогда — пароли, токены и лишние персональные данные.
  • Реагирование идёт по плану: подготовка, обнаружение, сдерживание, устранение, восстановление, выводы.
  • Настраивайте алерты — логи бесполезны, если их никто не смотрит.
Проверьте себя
1. Зачем логирование важно для безопасности?
AЧтобы ускорить приложение
BЧтобы обнаружить, расследовать и подтвердить инциденты
CЧтобы хранить пароли пользователей
DЧтобы заменить firewall
2. Что НИКОГДА нельзя писать в логи?
AВремя события
BПароли, токены и секреты
CIP-адрес источника
DИсход операции (успех/ошибка)
3. Что относится к этапу сдерживания при реагировании на инцидент?
AНаписать пост-мортем
BОграничить распространение: отключить скомпрометированный ключ, изолировать сервер
CЗакрыть компанию
DУдалить все логи
4. Почему одних логов недостаточно?
AЛоги занимают много места
BЕсли их никто не читает, нужны автоматические алерты на важные события
CЛоги всегда содержат пароли
DЛоги нельзя хранить по закону
Поддержать проект