
Документация Mitigation
Mitigation защищает сайты и API, работающие по HTTP и HTTPS, от DDoS-атак и ботов. Ваш сайт остаётся на прежнем хостинге: вы направляете A-запись домена на адрес Mitigation, а мы принимаем трафик, отсеиваем атаку и передаём чистые запросы на ваш сервер (origin).
1. Быстрый старт
Подключение занимает около пяти минут: аккаунт, тариф, домен, одна DNS-запись. Сертификат выпускается автоматически.
1.1 Создайте аккаунт и выберите тариф
Зарегистрируйтесь на /register и подтвердите email по ссылке из письма. В кабинете откройте «Тарифы и оплата», пополните баланс и оплатите тариф на 30, 90 или 365 дней. Без активного тарифа домен не подключается к защите.
1.2 Добавьте домен
В разделе «Домены» укажите имя домена (например, example.com) и адрес вашего сервера — origin: https://203.0.113.10 или https://origin.example.net:8443. Требования к origin:
- публичный IP-адрес или имя, которое разрешается в публичный адрес (частные и локальные адреса запрещены);
- схема
httpилиhttps, порт любой; путь, логин и пароль в адресе не допускаются; - origin не может совпадать с защищаемым доменом.
Количество доменов зависит от тарифа: Start — 1, Plus — 3, Pro — 10.
1.3 Подтвердите владение и измените DNS
Кабинет покажет две записи:
| Запись | Имя | Значение | Зачем |
|---|---|---|---|
| A | example.com | адрес Mitigation из кабинета | направляет трафик через защиту |
| TXT | _mitigation.example.com | токен из кабинета | подтверждает владение заранее, до переключения A-записи |
Достаточно одной из двух: владение подтверждается либо TXT-записью, либо A-записью, уже указывающей на Mitigation. Проверка выполняется автоматически раз в минуту, кнопка «Проверить» в карточке домена запускает её сразу. Удалите все остальные A/AAAA-записи этого имени — иначе часть посетителей пойдёт в обход защиты (кабинет предупредит об этом). Если DNS обслуживает провайдер с собственным проксированием, включите для записи режим «только DNS».
1.4 Сертификат и проверка
Сертификат Let's Encrypt выпускается автоматически, как только домен подтверждён и A-запись указывает на Mitigation, и продлевается сам. Откройте сайт по HTTPS — он должен загрузиться как обычно. Статус домена, текущая нагрузка и атаки видны в кабинете.
1.5 Закройте прямой доступ к origin
Атакующий, который знает реальный адрес вашего сервера, может обойти защиту. После подключения разрешите входящие соединения на порты 80/443 только с адреса Mitigation (он указан в кабинете), например:
ufw allow from <адрес Mitigation> to any port 443 proto tcp
ufw allow from <адрес Mitigation> to any port 80 proto tcp
ufw deny 80/tcp
ufw deny 443/tcp
Если адрес сервера раньше был публичным, по возможности смените его. Реальный IP посетителя передаётся в заголовках X-Real-IP и X-Forwarded-For.
2. Как работает защита
Трафик проходит несколько уровней фильтрации. Режимы включаются автоматически — во время атаки ничего переключать не нужно.
2.1 Edge-узел
Посетитель подключается к edge-узлу Mitigation. TLS завершается у нас (TLS 1.2 и 1.3). Поддерживаются HTTP/1.1, HTTP/2 и WebSocket. Чистые запросы уходят на ваш origin по указанной схеме, адрес origin скрыт от посетителей. Изменения настроек домена применяются за несколько секунд без перерыва в работе.
2.2 Уровни фильтрации
- L3–L4 — постоянная защита сетевого уровня от SYN-, UDP- и других объёмных атак на стороне площадки.
- Ядро (nftables) — атакующие адреса блокируются в ядре ещё до установки соединения. Повторные нарушения увеличивают срок бана; если атака идёт с многих адресов одной подсети /24, блокируется подсеть целиком.
- Mitigation Guard — собственный модуль на Rust читает поток запросов в реальном времени и банит источник в течение секунды: за превышение частоты запросов, за продолжение атаки после отказов 429/503 и за некорректные запросы (неизвестные методы, битые заголовки).
- L7-лимиты — ограничения частоты запросов и числа одновременных соединений на каждого посетителя, ограничение размера запроса и времени ожидания, защита от медленных соединений.
- Детектор атак — следит за нагрузкой на каждый домен и сам включает проверку браузера, когда домен атакуют, и выключает её, когда нагрузка возвращается к норме.
2.3 Проверка браузера во время атаки
Проверка показывается, только когда домен находится под атакой (или включён жёсткий уровень защиты). Это невидимая проверка: браузер за 1–3 секунды решает вычислительную задачу (proof-of-work, SHA-256), без капчи и кликов. Пройдя её, браузер получает cookie-пропуск mitigation_pow на 6 часов, привязанный к IP-адресу посетителя. Скрипты и боты без полноценного браузера проверку не проходят.
Учтите: во время атаки проверку получают все запросы к домену, включая запросы программ к API. Если ваш API вызывается не из браузера, вынесите его на отдельный домен с уровнем защиты «мягкий» (см. 2.4) или сообщите нам в поддержку.
2.4 Уровни защиты домена
На тарифах Plus и Pro в карточке домена можно выбрать уровень:
- Мягкий — проверка браузера включается при вдвое большей нагрузке, чем обычно. Подходит для API и сервисов с большим числом автоматических клиентов.
- Обычный (по умолчанию) — рекомендуемый баланс.
- Жёсткий — проверка браузера включена постоянно, даже без атаки.
2.5 Лимиты тарифов
| Параметр | Start | Plus | Pro |
|---|---|---|---|
| Лимит запросов и соединений на домен | без лимита | без лимита | без лимита |
| Максимальный размер запроса | 1 ГБ | 1 ГБ | 1 ГБ |
| Порог включения проверки браузера (запросов/с на домен) | 600 | 600 | 600 |
| Кэш статики | — | да | да |
Тариф не ограничивает трафик сайта: сколько бы живых посетителей ни пришло, они проходят. Большие файлы передаются на origin потоком, без промежуточной записи. Отдельно, одинаково на всех тарифах, работает защита от флуда с одного адреса: больше 200 запросов в секунду (всплеск до 800) или 256 одновременных соединений с одного IP получают ответ 429. Если источник продолжает слать запросы после отказов, Mitigation Guard блокирует его в ядре.
3. Кэш статики
На тарифах Plus и Pro edge-узел кэширует статические файлы: CSS, JS, изображения, шрифты, видео (css, js, mjs, png, jpg, gif, svg, ico, webp, avif, woff, woff2, ttf, otf, eot, mp4, webm, map). HTML-страницы и ответы API не кэшируются. Результат виден в заголовке ответа X-Cache: HIT | MISS | EXPIRED | STALE. Если origin временно недоступен, может отдаваться последняя сохранённая копия файла. После выкладки новой версии сайта используйте версионирование имён файлов (например, app.3f2a1c.js).
4. Личный кабинет
- Обзор — состояние доменов, атаки за последние сутки.
- Домены — добавление, DNS-инструкция, статус проверки, текущая нагрузка, уровень защиты, адрес origin и его доступность.
- Тарифы и оплата — баланс, оплата на 30, 90 (−10 %) или 365 дней (−20 %), переход на тариф выше с доплатой за остаток срока, отмена с возвратом неиспользованных дней на баланс, история операций.
- Обращения — переписка с поддержкой.
- Уведомления — события по доменам, атакам и оплате.
- Профиль — имя, email, язык. Пароль меняется через «Забыли пароль?» на странице входа — это завершает все сессии.
4.1 Статусы домена
- Проверка DNS — владение ещё не подтверждено.
- Активен — домен подтверждён, тариф действует, трафик идёт через защиту.
- Отключён — нет активного тарифа или превышен лимит доменов тарифа.
- Отклонён — домен отклонён администрацией (например, по правилам использования).
4.2 Письма
Mitigation присылает письма о подтверждении домена, о начале и окончании атаки (с пиковой нагрузкой и длительностью) и о событиях оплаты. Письма приходят с адреса noreply@mitigation.pw.
5. Безопасность аккаунта
- Пароль — от 8 до 128 символов; хранится только в виде хэша PBKDF2-SHA256.
- После 5 неудачных попыток входа на один email или 20 с одного IP вход блокируется на 15 минут.
- Сессия хранится в cookie
HttpOnly; Secure; SameSite=Laxи действует 30 дней. Смена пароля завершает все сессии. - Ссылки из писем одноразовые: подтверждение email действует 24 часа, восстановление пароля — 1 час.
6. FAQ
Нужно ли включать защиту во время атаки? Нет, режимы включаются автоматически.
Есть ли бесплатный тариф или тест? Нет. Вместо этого в течение 7 дней с начала первого оплаченного периода можно отказаться с полным возвратом — см. /refund.
Можно ли загрузить свой сертификат? Пока нет, сертификаты Let's Encrypt выпускаются автоматически.
Защищаете ли вы игровые серверы и TCP/UDP-сервисы? Нет, только HTTP и HTTPS.
Есть ли WAF с сигнатурами (SQL-инъекции, XSS)? Нет. Mitigation отражает DDoS и ботов; защищать приложение от уязвимостей нужно на стороне сайта.
Сколько стоит отражение большой атаки? Ничего сверх тарифа: объём атаки не влияет на цену.
Видят ли поисковые роботы проверку браузера? Только когда домен под атакой. В обычном режиме роботы индексируют сайт как обычно.
7. Устранение неполадок
- Сайт не открывается после смены DNS. Проверьте статус домена в кабинете и A-запись. Изменения DNS распространяются с учётом TTL — до нескольких часов.
- Ошибка сертификата. Сертификат выпускается только для подтверждённого домена, A-запись которого указывает на Mitigation. Выпуск занимает до нескольких минут после проверки DNS.
- Ошибка 502 или 504. Mitigation не может достучаться до origin: проверьте, что сервер работает, порт открыт для адреса Mitigation и отвечает быстрее 60 секунд.
- Ошибка 413. Запрос больше лимита тарифа (32 / 64 / 128 МБ).
- Ошибка 429 или 503. С одного IP пришло больше 200 запросов в секунду или 256 одновременных соединений — так ведёт себя бот, а не человек.
- Посетители видят проверку браузера. Домен под атакой — это нормально. Для API и автоматических клиентов выберите мягкий уровень защиты.
- Посетители получают обрыв соединения. Их IP мог быть временно заблокирован за слишком частые запросы. Напишите в поддержку адрес и время — мы проверим.
С другими вопросами пишите в раздел «Обращения» в кабинете или на support@mitigation.pw.