Логирование безопасности: что записывать и на что настраивать алерты
Практика4 минРедакция Innovialabs
Коротко
Записывайте, кто, что, когда, откуда и с каким результатом сделал при входах, смене прав, действиях админов и отказах в доступе; никогда не пишите пароли, токены и данные карт; храните логи централизованно и настройте алерты на перебор, новых админов и массовые выгрузки.
Коротко
Логи безопасности нужны, чтобы после инцидента ответить на три вопроса: кто это сделал, что именно произошло и когда началось. Для этого нужны:
- фиксированный список событий безопасности, которые пишет само приложение;
- структурированные записи с одинаковыми полями;
- централизованное хранилище, которое атакующий или обычный админ не может тихо отредактировать;
- небольшой набор алертов, которые кто-то действительно читает.
События, которые стоит логировать
Аутентификация
- успешные и неудачные входы, выходы;
- включение и отключение 2FA, неверные коды;
- смена пароля и запросы сброса;
- блокировки и разблокировки аккаунтов.
Авторизация и доступ
- отказ в доступе (403) к эндпоинтам или объектам;
- попытки открыть чужие записи;
- создание API-ключей, их использование из нового места, отзыв.
Действия администраторов
- выдача и снятие ролей и прав;
- создание, блокировка, удаление пользователей;
- изменение настроек оплаты, безопасности, интеграций;
- вход «под пользователем» сотрудниками поддержки.
Операции с чувствительными данными
- массовые выгрузки и экспорт;
- массовый просмотр персональных данных;
- удаление большого числа записей.
Системные сигналы
- необычно частые ошибки валидации;
- ошибки проверки подписи вебхуков;
- ошибки приложения в проверках безопасности.
Как выглядит хорошая запись
Используйте структурированные логи (JSON) с одинаковыми полями:
{
"ts": "2026-03-14T09:21:07Z",
"event": "auth.login_failed",
"actor_id": null,
"target": "user:4812",
"ip": "203.0.113.17",
"user_agent": "Mozilla/5.0 ...",
"request_id": "a1b2c3",
"result": "failure",
"reason": "bad_password"
}
Ключевые поля: время в UTC, название события, кто (пользователь или сервис), над чем, IP-адрес, результат и request ID, чтобы связать лог с трейсами приложения.
Что нельзя писать в логи
- Пароли, в том числе неверные из неудачных попыток — часто это настоящий пароль с опечаткой.
- Токены сессий, JWT, API-ключи, ссылки сброса, OTP-коды, заголовки
Authorizationи cookies. - Полные номера карт и CVV. Если нужно — только маскированный вид.
- Секреты из переменных окружения и конфигов.
- Лишние персональные данные: паспортные номера, полные тела запросов с личными полями.
Практическая защита: список разрешённых полей вместо записи целых объектов запроса и автоматическое маскирование известных чувствительных ключей в логгере.
Хранение и сроки
- Отправляйте логи в центральную систему вне сервера приложения, чтобы взломанный сервер не мог стереть следы.
- Ограничьте доступ к логам и логируйте сам доступ к ним.
- Синхронизируйте время (NTP) на всех серверах.
- Срок хранения зависит от законов, договоров и отраслевых стандартов, которые к вам применимы (например, PCI DSS для карточных платежей), а также от того, сколько атака может оставаться незамеченной. В логах есть персональные данные, поэтому законы о персональных данных тоже ограничивают, как долго и где их хранить. Свежие логи держите в быстром поиске, старые — в дешёвом архиве.
Алерты, которые ловят атаки рано
| Правило | Что может означать |
|---|---|
| Много неудачных входов в один аккаунт или с одного IP за короткое время | Перебор паролей или credential stuffing |
| Успешный вход после серии неудач | Подобранный пароль |
| Вход админа из новой страны или с нового устройства | Украденные учётные данные |
| Новый администратор или повышение роли | Закрепление после взлома |
| Отключение 2FA у привилегированного аккаунта | Подготовка к захвату |
| Необычный объём выгрузок или просмотров | Кража данных |
| Всплеск ответов 403 у одного пользователя | Поиск IDOR или ошибок в правах |
| Много ошибок подписи вебхуков | Попытки подделки |
Правила настройки:
- Мало и по делу: у каждого алерта есть ответственный и короткая инструкция «что делать».
- Подстраивайте пороги под нормальный трафик: шумные алерты сначала глушат, потом игнорируют.
- Критичные алерты — в канал, который читают люди, а не только в папку почты.
- Регулярно проверяйте алерты, вызывая их намеренно.
Частые ошибки
- Логируются только ошибки, а не успешные значимые действия.
- Логи лежат только на том же сервере, что и приложение.
- Свободный текст, по которому нельзя искать и агрегировать.
- В продакшене оставлен debug-режим с полными телами запросов.