Тема
Режим
Язык
Тема
Режим
Язык
Консультация
FREE Бесплатный аудит сайта за 15 мин Заказать →
NEW Остановили 2 млн атак credential stuffing Кейс →
Разборы атак и инструменты Telegram →
70% трафика могут быть ботами Проверить →
SOS Сайт под атакой? Поможем за 30 мин SOS →

Инцидент-менеджмент: что делать когда сайт под атакой

Пошаговый план действий при DDoS-атаке. Как координировать команду, коммуницировать с клиентами, документировать инцидент и проводить post-mortem.

Три часа ночи. Телефон разрывается от алертов. Сайт не отвечает. Мониторинг показывает аномальный трафик. Это DDoS-атака. Что делать?

В этой статье — полный гайд по управлению инцидентами при DDoS-атаках. От первых минут паники до спокойного post-mortem на следующей неделе. Эти практики основаны на опыте Google SRE, Netflix, и других компаний, которые регулярно сталкиваются с атаками.

Почему важен процесс

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

Компании без процесса во время атаки:

  • Паникуют и делают случайные изменения
  • Не координируются — один чинит, другой ломает
  • Забывают уведомить клиентов и руководство
  • Не документируют действия — потом не могут понять что произошло
  • Повторяют одни и те же ошибки

Компании с процессом:

  • Спокойно следуют плану
  • Чётко распределяют роли
  • Коммуницируют по установленным каналам
  • Документируют каждый шаг
  • Учатся на каждом инциденте
flowchart TD
    A[Алерт: аномалия] --> B{Это атака?}
    B -->|Да| C[Активировать защиту]
    B -->|Нет| D[Мониторинг]
    
    C --> E[Включить WAF]
    E --> F[Rate limiting]
    F --> G{Продолжается?}
    
    G -->|Да| H[Under Attack Mode]
    G -->|Нет| I[Мониторинг 30 мин]
    
    H --> J{Помогло?}
    J -->|Нет| K[Провайдер]
    J -->|Да| I
    
    I --> L[Инцидент закрыт]
    K --> L
Процесс реагирования на DDoS-инцидент
01

Severity Levels

Классификация серьёзности инцидента

Не все инциденты одинаковы. Небольшой всплеск трафика и полная недоступность сайта требуют разного уровня реагирования. Определите severity levels заранее.

Level 1

Основа

30-60 минут

Level 2

Мини-защита

1 день

Level 3

Система

1-2 недели

Level 4

Устойчивость

Постоянно

Как определить severity при DDoS
SEV1: Сайт полностью недоступен более 5 минут. SEV2: Сайт работает, но время ответа > 10 секунд или > 20% ошибок. SEV3: Небольшое замедление, отдельные функции деградированы. Если сомневаетесь — выбирайте более высокий severity. Лучше перебдеть.
02

Роли в команде реагирования

Кто что делает во время инцидента

Во время инцидента люди должны знать свои роли. Без чёткого распределения — хаос: все делают одно и то же или, наоборот, важные вещи никто не делает.

💡
Совет
В маленькой команде один человек может совмещать роли. Минимум: IC + Tech Lead (один человек) и Communications (другой человек). Scribe может быть частью IC. Главное — не оставляйте клиентов без коммуникации.
03

Первые 15 минут

Критическое время реагирования

Первые минуты инцидента — самые важные. Вот чек-лист действий:

1
Подтвердите инцидент (0-2 мин)

Проверьте алерты — это реальная проблема или ложное срабатывание? Откройте сайт из разных локаций (используйте downfor.io, isitdown.site или VPN). Посмотрите метрики: RPS, error rate, response time. Убедитесь что проблема существует.

2
Объявите инцидент (2-3 мин)

Создайте incident channel в Slack/Teams (например #incident-2024-01-15-ddos). Напишите первое сообщение: что происходит, severity, кто IC. Призовите нужных людей (@oncall, @security). С этого момента всё обсуждение — только в incident channel.

3
Первичная митигация (3-10 мин)

Включите экстренную защиту: Cloudflare Under Attack Mode, блокировка подозрительных IP/стран, увеличьте rate limits. Цель — стабилизировать сервис, даже если не идеально. Полное решение — потом.

4
Уведомите стейкхолдеров (10-15 мин)

Обновите status page (StatusPage, Cachet, Instatus). Отправьте первое сообщение клиентам: 'Мы обнаружили проблему, работаем над решением'. Уведомите руководство через заранее согласованный канал. Не ждите полной информации — коммуницируйте что знаете.

Шаблон первого сообщения в incident channel
INCIDENT DECLARED
━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Severity: SEV1 (Critical)
Started: 2024-01-15 03:42 UTC
Status: Investigating

What's happening:
- Main website returning 503 errors
- Abnormal traffic spike detected (10x normal)
- Suspected DDoS attack

Incident Commander: @alice
Tech Lead: @bob  
Comms Lead: @carol

Current actions:
- Enabling Cloudflare Under Attack mode
- Analyzing traffic patterns

Next update: in 15 minutes

All discussion in this channel only.
04

Диагностика атаки

Понимаем что происходит

После первичной митигации нужно понять характер атаки. Это поможет выбрать правильную стратегию защиты.

Вопросы для диагностики

  • Какой тип атаки?L3/L4 (volumetric — много трафика) или L7 (application — много запросов к динамике)? Подробнее: виды атак L3/L4/L7.
  • Откуда идёт трафик? — Один IP, подсеть, страна или распределённый botnet?
  • Какие URL атакуют? — Главная страница, API, поиск, login?
  • Какие паттерны? — Одинаковые User-Agent, специфичные заголовки, характерные payload'ы?
  • Когда началось? — Резко или постепенно нарастало? (как отличить от поломки)

Команды для анализа

Экстренный анализ атаки
05

Стратегии митигации

Как остановить атаку

В зависимости от типа атаки применяются разные стратегии. Часто нужна комбинация нескольких подходов.

Экстренная блокировка
Документируйте все изменения!
Каждое изменение конфигурации записывайте в incident channel с timestamp. После инцидента нужно будет откатить временные меры. Если не помните что меняли — рискуете оставить aggressive rate limits навсегда и потерять пользователей.
06

Коммуникация во время инцидента

Как общаться с клиентами и руководством

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

Принципы коммуникации

  • Коммуницируйте рано — первое сообщение через 15 минут после начала инцидента, даже если не знаете деталей.
  • Коммуницируйте часто — обновления каждые 30-60 минут для SEV1, каждые 2 часа для SEV2.
  • Будьте честны — не преуменьшайте проблему, не обещайте то, что не можете гарантировать.
  • Признавайте влияние — покажите что понимаете как это влияет на клиентов.
  • Давайте ETA осторожно — лучше "работаем над решением" чем "починим через час" (и не починить).

Status Page

Status page (Statuspage, Cachet, Instatus и др.) — главный канал коммуникации с клиентами. Убедитесь что:

  • Он хостится отдельно от основного сайта (иначе упадёт вместе с ним)
  • Вы можете обновлять его из любой сети (не требует VPN в офис)
  • Клиенты знают о его существовании (ссылка в футере, в документации)
Шаблоны сообщений для status page
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
INITIAL (Investigating)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
We are investigating reports of degraded performance 
on [service name]. Some users may experience slow 
load times or errors.

Our team is actively working to identify and resolve 
the issue. We will provide updates as we learn more.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
UPDATE (Identified)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
We have identified the cause of the issue affecting 
[service name]. Our infrastructure is experiencing 
a high volume of malicious traffic (DDoS attack).

We have engaged our DDoS mitigation systems and are 
working to filter malicious traffic while preserving 
access for legitimate users.

We apologize for the disruption and appreciate your 
patience.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
UPDATE (Monitoring)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
We have implemented mitigation measures and are seeing 
improvement in service availability. 

Some users may still experience brief delays while we 
fine-tune our filters.

We are continuing to monitor the situation closely.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
RESOLVED
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
The issue has been resolved. [Service name] is now 
operating normally.

Our security team successfully mitigated a DDoS attack 
that began at [time] and lasted approximately [duration].

We apologize for any inconvenience caused. A detailed 
incident report will be published within 48 hours.
07

Завершение инцидента

Когда и как закрывать инцидент

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

Критерии завершения

  • Сервис полностью функционален минимум 30 минут
  • Метрики вернулись к нормальным значениям
  • Нет признаков продолжающейся атаки
  • Все временные митигации задокументированы

Действия после восстановления

  1. Monitoring period — наблюдайте 1-2 часа перед снятием усиленной защиты
  2. Постепенный откат — снимайте защитные меры по одной, наблюдая за метриками
  3. Финальное обновление — сообщите клиентам что инцидент закрыт
  4. Сохраните логи — убедитесь что логи периода атаки сохранены для анализа
  5. Назначьте post-mortem — запланируйте встречу на ближайшие 24-48 часов
08

Post-Mortem

Учимся на инцидентах

Post-mortem (или incident review) — это разбор инцидента с целью извлечь уроки и предотвратить повторение. Это НЕ поиск виноватых — это анализ системы.

Blameless Culture

Ключевой принцип эффективных post-mortem — blameless culture. Мы анализируем системы и процессы, не людей. Если человек сделал ошибку — значит система позволила эту ошибку сделать. Как изменить систему, чтобы ошибка стала невозможной?

Почему это важно:

  • Люди честно рассказывают что произошло, не боясь наказания
  • Находятся реальные причины, а не козлы отпущения
  • Команда учится, а не прячет проблемы

Структура post-mortem документа

Шаблон Post-Mortem документа
# Incident Post-Mortem: DDoS Attack on 2024-01-15

## Summary
Brief description of the incident in 2-3 sentences.

## Impact
- Duration: 2 hours 15 minutes
- User impact: 100% users unable to access service
- Revenue impact: ~$X,XXX in lost transactions
- SLA impact: Monthly uptime dropped to 99.7%

## Timeline (all times UTC)
- 03:42 - First alerts triggered (high error rate)
- 03:45 - On-call engineer acknowledges alert
- 03:48 - Incident declared, SEV1
- 03:52 - Cloudflare Under Attack mode enabled
- 04:15 - Traffic pattern analyzed, geo-blocking CN enabled
- 04:45 - Service partially restored
- 05:30 - Custom WAF rules deployed
- 05:57 - Full service restored
- 06:30 - Incident closed

## Root Cause
What actually caused the problem?

A volumetric L7 DDoS attack targeting /api/search endpoint. 
Attack originated from ~50,000 IPs, primarily from CN region. 
Peak traffic: 500k RPS (normal: 5k RPS).

The /api/search endpoint was not rate-limited and performed 
expensive database queries, making it an attractive target.

## What Went Well
- Alerting detected the issue within 3 minutes
- Team assembled quickly despite 3am time
- Cloudflare mitigation was effective once enabled
- Communication to customers was timely

## What Went Wrong
- No rate limiting on /api/search
- On-call runbook did not include DDoS response
- Took 30 minutes to identify attack pattern
- Geo-blocking decision delayed due to uncertainty

## Action Items
| Action | Owner | Due Date | Status |
|--------|-------|----------|--------|
| Add rate limiting to /api/search | @bob | 2024-01-22 | TODO |
| Update runbook with DDoS section | @alice | 2024-01-20 | TODO |
| Add traffic anomaly detection alerts | @carol | 2024-01-25 | TODO |
| Conduct DDoS response drill | @alice | 2024-02-01 | TODO |

## Lessons Learned
1. Every public API endpoint needs rate limiting
2. Runbooks should cover DDoS scenarios specifically
3. Consider always-on bot protection, not just reactive

Для SEV1/SEV2 — в течение 24-48 часов после инцидента. Пока детали свежи в памяти. Не откладывайте — через неделю люди забудут важные нюансы. Для SEV3 — можно в течение недели или объединить несколько мелких инцидентов.

Все кто был вовлечён в инцидент: IC, tech leads, communications, on-call. Опционально: руководитель (для понимания context), представитель support (знает реакцию клиентов). Не нужно приглашать весь отдел — только тех кто может дать информацию или принять решения по action items.

Action items должны быть конкретными, с owner и due date. Заведите их как задачи в трекере (Jira, Linear). Отслеживайте выполнение на weekly sync. Action items без follow-up бесполезны — инцидент повторится.

09

Чек-лист готовности

Подготовьтесь до инцидента

Чек-лист готовности к инцидентам

0 / 10
Используйте Let's Encrypt или Cloudflare для бесплатных сертификатов
Лимитируйте /login, /api, /search — основные точки атак
Cloudflare WAF, ModSecurity или аналоги
Снижает нагрузку на origin в 5-10 раз
Grafana + Prometheus или встроенный в CDN
Быстрое переключение при атаке на основной
Телефон техподдержки для экстренных случаев
Блокировка регионов откуда не ждёте трафик
hCaptcha или Cloudflare Turnstile
Telegram/Slack уведомления при аномалиях
Резюме
Инцидент-менеджмент — это не импровизация, а отработанный процесс. Определите severity levels, назначьте роли, подготовьте runbooks и шаблоны коммуникации заранее. Во время инцидента следуйте процессу, документируйте всё, коммуницируйте с клиентами. После — обязательный blameless post-mortem с конкретными action items. Каждый инцидент делает вас сильнее, если вы учитесь.

Тест: Инцидент-менеджмент: что делать когда сайт под ата

Вопрос 1 из 4
Почему важен заранее подготовленный процесс (runbook)?
В стрессе креативность падает, нужен механический план.
Что делают компании БЕЗ процесса во время атаки?
Без процесса — паника и хаотичные действия.
Какой первый вопрос для диагностики атаки?
Сначала нужно понять тип атаки для выбора защиты.
Что важно делать во время инцидента?
Документирование помогает понять что произошло.
0 / 4

Получите план защиты под ваш сайт

Оставьте контакт и адрес сайта — пришлём план защиты и список приоритетных шагов.

  • Приоритетные шаги на 7 дней
  • Быстрая обратная связь
  • План в удобном формате
Без спама. Можно указать Telegram (@username) или email.
Написать в Telegram