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

Cloudflare: полный гайд по настройке защиты от DDoS

Пошаговая инструкция по настройке Cloudflare для защиты сайта. От регистрации до продвинутых WAF-правил.

Cloudflare — самый популярный сервис защиты от DDoS в мире. Бесплатный план закрывает 90% потребностей малого и среднего бизнеса. В этом гайде разберём всё: от первичной настройки до продвинутых правил WAF.

Почему именно Cloudflare?

Прежде чем погружаться в настройки, давайте разберёмся, почему Cloudflare стал стандартом де-факто для защиты сайтов. Во-первых, это глобальная сеть — более 300 дата-центров по всему миру. Трафик фильтруется максимально близко к источнику атаки, что минимизирует задержки для легитимных пользователей.

Во-вторых, бесплатный план включает базовую защиту от DDoS, SSL-сертификаты, CDN для ускорения загрузки. Для большинства небольших и средних сайтов этого более чем достаточно. В-третьих, простота настройки — это DNS-based protection, не нужно менять инфраструктуру сервера. Просто меняете NS-записи, и всё работает.

Cloudflare видит около 20% всего интернет-трафика. Это даёт им уникальную возможность быстро обнаруживать новые типы атак и обновлять правила защиты. Когда появляется новая уязвимость или паттерн атаки — Cloudflare часто первым добавляет защиту.

Альтернативы

Конечно, есть альтернативы: Fastly предлагает мощный VCL для кастомизации, Akamai — enterprise-решение с максимальными возможностями, AWS CloudFront + Shield — хороший выбор если вы уже в экосистеме AWS. Но по соотношению цена/качество/простота Cloudflare вне конкуренции для большинства проектов. Подробнее о выборе провайдера — в статье как выбрать защиту от DDoS.

flowchart LR
    subgraph Internet
        User[Пользователь]
        Attacker[Атакующий]
    end
    
    subgraph CF["Cloudflare Edge"]
        DNS[DNS] --> Edge[Edge]
        Edge --> WAF2[WAF]
        WAF2 --> Cache[Cache]
        WAF2 --> Bot[Bot Mgmt]
    end
    
    subgraph Origin["Origin"]
        Server[Сервер]
    end
    
    User --> DNS
    Attacker --> DNS
    Cache --> |"OK"| User
    Bot --> |"Block"| Attacker
    Edge --> Server
Как Cloudflare защищает ваш сайт
Для кого этот гайд
Статья рассчитана на владельцев сайтов, системных администраторов и DevOps-инженеров, которые хотят настроить защиту самостоятельно. Предполагается базовое понимание DNS и HTTP-протокола. Если вы совсем новичок — не переживайте, каждый шаг объясняется подробно с примерами.
01

Регистрация и добавление сайта

Первые шаги за 10-15 минут

Начнём с нуля. Если у вас уже есть аккаунт Cloudflare — переходите к следующей секции.

Создание аккаунта

Перейдите на страницу регистрации Cloudflare и зарегистрируйтесь. Используйте рабочую почту — на неё будут приходить важные уведомления о безопасности и статусе домена. Обязательно включите двухфакторную аутентификацию (2FA) сразу после регистрации через приложение-аутентификатор (Google Authenticator, Authy, 1Password). Аккаунт Cloudflare — это ключ ко всей вашей инфраструктуре, его взлом может привести к полной потере контроля над сайтом.

Добавление домена

После регистрации нажмите «Add a Site» и введите ваш домен (например, example.com — без www и без https). Cloudflare автоматически просканирует текущие DNS-записи через публичные DNS-серверы. Это занимает около минуты.

Внимательно проверьте, что все записи импортировались корректно — особенно A-записи (указывают на IP сервера), AAAA (IPv6), CNAME (алиасы), MX-записи (почта) и TXT-записи (SPF, DKIM для почты). Если чего-то не хватает — добавьте вручную. Ошибка в DNS-записях может сделать сайт или почту недоступными.

1
Выберите план

Для начала выберите Free план — он включает всё необходимое для базовой защиты. Вы всегда можете обновиться позже без даунтайма. Free план включает: защиту от DDoS на L3/L4, бесплатный SSL-сертификат, CDN с кэшированием статики, базовые Page Rules (3 штуки), базовую аналитику трафика.

2
Измените NS-записи

Cloudflare покажет два nameserver-а (например, anna.ns.cloudflare.com и bob.ns.cloudflare.com). Зайдите в панель вашего регистратора домена (Namecheap, GoDaddy, REG.RU, Beget и т.д.) и замените текущие NS-записи на указанные Cloudflare. Удалите старые NS-записи полностью. Пропагация DNS может занять до 24-48 часов, но обычно происходит за 1-4 часа.

3
Дождитесь активации

Cloudflare отправит email когда домен будет активирован. После этого весь трафик начнёт проходить через сеть Cloudflare. Статус домена в дашборде изменится на Active. Обязательно проверьте работу сайта после активации — откройте в браузере, проверьте все основные страницы, формы, функционал.

4
Проверьте SSL-режим

Перейдите в SSL/TLS и проверьте режим шифрования. Рекомендуется Full (strict) если у вас есть валидный SSL-сертификат на origin-сервере. Если сертификата нет — используйте Full или Flexible, но лучше установите бесплатный сертификат через Let's Encrypt. Режим Off категорически не рекомендуется.

🔥
Внимание
После смены NS-записей все DNS-изменения нужно делать исключительно через панель Cloudflare, а не у регистратора домена. Это самая частая ошибка новичков — они пытаются менять DNS у регистратора, но записи не применяются, потому что NS указывают на Cloudflare.
02

Базовые настройки безопасности

Минимум, который должен быть у всех сайтов

После активации домена настройте базовую защиту. Все эти настройки бесплатны и значительно повышают безопасность вашего сайта.

SSL/TLS настройки

Перейдите в раздел SSL/TLS → Overview и Edge Certificates:

  • Encryption mode — выберите Full (strict) если на сервере установлен валидный SSL-сертификат. Это обеспечит сквозное шифрование: посетитель → Cloudflare → ваш сервер.
  • Always Use HTTPS — обязательно включите. Все HTTP-запросы будут автоматически перенаправляться на HTTPS через 301-редирект.
  • Minimum TLS Version — установите TLS 1.2. Версии 1.0 и 1.1 содержат известные уязвимости и не должны использоваться.
  • TLS 1.3 — включите. Это самая быстрая и безопасная версия протокола, поддерживается всеми современными браузерами.
  • Automatic HTTPS Rewrites — включите. Cloudflare автоматически изменит HTTP-ссылки на HTTPS в HTML-коде страниц, предотвращая mixed content warnings.
  • Certificate Transparency Monitoring — включите для мониторинга выпуска сертификатов на ваш домен.

Настройки безопасности

Перейдите в раздел Security → Settings:

  • Security Level — начните с Medium. Этот уровень применяет проверки к посетителям с подозрительной репутацией IP-адреса. Если много ложных срабатываний (жалобы от пользователей на CAPTCHA) — понизьте до Low. При атаке — повышайте до High или I'm Under Attack.
  • Challenge Passage — оставьте 30 минут. Это время, на которое посетитель «запоминается» после успешного прохождения проверки. Слишком короткое время раздражает пользователей, слишком длинное — снижает защиту.
  • Browser Integrity Check — включите. Эта функция проверяет HTTP-заголовки и блокирует запросы с заголовками, характерными для ботов и автоматизированных скриптов.
  • Privacy Pass Support — включите для улучшения UX пользователей Tor и VPN.

Чек-лист базовых настроек Cloudflare

0 / 10
Используйте Let's Encrypt или Cloudflare для бесплатных сертификатов
Лимитируйте /login, /api, /search — основные точки атак
Cloudflare WAF, ModSecurity или аналоги
Снижает нагрузку на origin в 5-10 раз
Grafana + Prometheus или встроенный в CDN
Быстрое переключение при атаке на основной
Телефон техподдержки для экстренных случаев
Блокировка регионов откуда не ждёте трафик
hCaptcha или Cloudflare Turnstile
Telegram/Slack уведомления при аномалиях
03

Rate Limiting и защита от брутфорса

Ограничение частоты запросов

Rate Limiting — критически важная настройка для защиты от брутфорса паролей, парсинга контента и простых L7 DDoS-атак. Суть проста: ограничиваем количество запросов с одного IP-адреса за определённый период времени. Базовые принципы rate-limit также можно реализовать на уровне nginx.

Где настраивать

Перейдите в Security → WAF → Rate limiting rules (или Custom rules в новом интерфейсе). На Free плане доступно ограниченное количество правил, на Pro и выше — больше возможностей.

Какие endpoint'ы защищать

В первую очередь настройте лимиты для:

  • Страницы логина — /login, /wp-login.php, /admin/login, /user/login. Это главная цель брутфорс-атак.
  • API-endpoint'ы — особенно публичные API без аутентификации. Парсеры и боты могут генерировать огромное количество запросов.
  • Страницы поиска — /search, /?s=. Тяжёлые для базы данных запросы, часто используются для L7 DDoS.
  • Формы регистрации — /register, /signup. Защита от массовой регистрации ботов.
  • Формы обратной связи — /contact, /feedback. Защита от спама.
Пример правила: защита страницы логина
Rule name: Protect Login Page
If incoming requests match...
  URI Path equals "/wp-login.php"
  OR URI Path equals "/login"
  OR URI Path equals "/admin"
  OR URI Path starts with "/wp-admin"

When rate exceeds...
  5 requests per 10 seconds

Then...
  Action: Block
  Duration: 1 hour
  Response: Default Cloudflare rate limit page
Пример правила: защита API
Rule name: API Rate Limit
If incoming requests match...
  URI Path starts with "/api/"
  AND Request Method is not "OPTIONS"

Counting expression (advanced):
  Count requests per: IP Address + URI Path

When rate exceeds...
  100 requests per 1 minute

Then...
  Action: Block  
  Duration: 10 minutes
  With response type: Custom JSON
  Response body: {"error": "rate_limit", "retry_after": 600}
💡
Совет
Начните с мягких лимитов и постепенно ужесточайте на основе данных. Слишком строгие правила заблокируют реальных пользователей. Используйте действие Log для тестирования — оно записывает срабатывания без блокировки.
04

Custom Firewall Rules

Продвинутая фильтрация трафика

Custom Rules (в старом интерфейсе — Firewall Rules) позволяют создавать сложные правила фильтрации на основе множества параметров запроса. Это мощный инструмент для точечной защиты.

Доступные поля для правил

В выражениях можно использовать:

  • ip.src — IP-адрес посетителя
  • ip.geoip.country — страна по IP (двухбуквенный код: RU, US, CN)
  • ip.geoip.asnum — номер автономной системы (AS)
  • http.request.uri.path — путь URL
  • http.request.uri.query — query string
  • http.user_agent — User-Agent браузера
  • http.referer — заголовок Referer
  • http.request.method — метод (GET, POST, etc.)
  • cf.threat_score — оценка угрозы IP (0-100)
  • cf.bot_management.score — оценка «человечности» (требует Enterprise)

Примеры полезных правил

Блокировка по странам (геоблокировка)
# Блокировать трафик из определённых стран
# Используйте осторожно — можете заблокировать клиентов
(ip.geoip.country in {"CN" "RU" "KP" "IR"})
Action: Block

# Или наоборот — разрешить только определённые страны
(not ip.geoip.country in {"RU" "UA" "BY" "KZ"})
Action: Block
Блокировка подозрительных User-Agent
# Блокировать пустой User-Agent
(http.user_agent eq "")
Action: Block

# Блокировать известные инструменты парсинга
(http.user_agent contains "python") or
(http.user_agent contains "curl") or
(http.user_agent contains "wget") or
(http.user_agent contains "scrapy") or
(http.user_agent contains "httpclient") or
(http.user_agent contains "Go-http-client")
Action: Block

# Но! Добавьте исключения для своих скриптов по IP
(http.user_agent contains "python") and 
(not ip.src in {1.2.3.4 5.6.7.8})
Action: Block
Защита админки по IP whitelist
# Доступ к админке только с определённых IP
(http.request.uri.path contains "/wp-admin" or
 http.request.uri.path contains "/admin" or
 http.request.uri.path eq "/wp-login.php") and
(not ip.src in {1.2.3.4 5.6.7.8 10.0.0.0/8})
Action: Block

# Или мягче — показывать CAPTCHA вместо блокировки
Action: Managed Challenge
05

Режим Under Attack и экстренные меры

Когда сайт под активной атакой

I'm Under Attack Mode — экстренный режим защиты для ситуаций, когда сайт находится под активной DDoS-атакой. При его включении все посетители должны пройти JavaScript-challenge (интерстициальную страницу проверки) перед доступом к сайту.

Как это работает

Когда посетитель заходит на сайт в режиме Under Attack:

  1. Cloudflare показывает страницу «Checking your browser...» на 5-10 секунд
  2. В это время выполняется JavaScript-проверка, которую не могут пройти простые боты
  3. После успешной проверки посетитель получает cookie и может пользоваться сайтом
  4. Cookie действует указанное в Challenge Passage время (по умолчанию 30 минут)

Когда включать Under Attack Mode

  • Сайт недоступен или сильно тормозит из-за перегрузки
  • В логах или аналитике видны тысячи запросов в секунду
  • Обычные rate-limit правила не справляются с объёмом атаки
  • Нужно срочно стабилизировать сайт, пока разбираетесь с причиной

Способы включения

Способ 1 (самый быстрый): На главной странице домена в дашборде Cloudflare есть большой переключатель «Under Attack Mode» — просто нажмите на него.

Способ 2 (через настройки): Security → Settings → Security Level → I'm Under Attack.

Способ 3 (через API): Для автоматизации можно использовать Cloudflare API. Это полезно для автоматического включения при обнаружении аномалий системой мониторинга.

Управление Under Attack через API
# Включить Under Attack Mode
curl -X PATCH "https://api.cloudflare.com/client/v4/zones/YOUR_ZONE_ID/settings/security_level" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{"value":"under_attack"}'

# Вернуть в обычный режим (Medium)
curl -X PATCH "https://api.cloudflare.com/client/v4/zones/YOUR_ZONE_ID/settings/security_level" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{"value":"medium"}'

# Проверить текущий статус
curl -X GET "https://api.cloudflare.com/client/v4/zones/YOUR_ZONE_ID/settings/security_level" \
  -H "Authorization: Bearer YOUR_API_TOKEN"

# YOUR_ZONE_ID — найдите в Overview вашего домена (справа внизу)
# YOUR_API_TOKEN — создайте в My Profile → API Tokens
Не оставляйте Under Attack Mode навсегда
Режим Under Attack создаёт плохой пользовательский опыт — каждый посетитель видит страницу проверки 5-10 секунд. Это может отпугнуть клиентов и ухудшить SEO (поисковые боты тоже будут испытывать проблемы). Как только атака закончилась — обязательно верните Security Level в Medium или High.
06

Кэширование и оптимизация

Ускорение + дополнительная защита

Правильно настроенное кэширование не только ускоряет сайт, но и служит дополнительным уровнем защиты. Когда контент отдаётся из кэша Cloudflare, запросы не доходят до вашего сервера — он не нагружается.

Уровни кэширования

  • Standard — кэшируется только статика (CSS, JS, изображения, шрифты)
  • Cache Everything — кэшируется вообще всё, включая HTML. Используйте осторожно!
  • Bypass — кэширование отключено полностью

Рекомендации по кэшированию

Статические файлы (CSS, JS, изображения): Кэшируйте агрессивно. Edge Cache TTL = 1 месяц, Browser Cache TTL = 1 год. Используйте версионирование файлов (style.css?v=1.2.3) для инвалидации.

HTML-страницы: Для динамических сайтов (WordPress, интернет-магазины) НЕ кэшируйте HTML — иначе все пользователи увидят одинаковый контент, включая корзину и профиль. Для статических сайтов или лендингов можно кэшировать HTML с коротким TTL (1-5 минут).

API: Обычно не кэшируется, но для read-only публичных endpoint'ов можно включить кэширование с коротким TTL.

Cache Rules (новый способ)

Cloudflare переходит от Page Rules к Cache Rules. Они дают более гибкий контроль:

  • Разные правила для разных URL-паттернов
  • Кэширование с учётом cookie (bypass для залогиненных)
  • Кэширование с учётом query string
  • Разные TTL для разных типов контента

Перейдите в Caching → Configuration → Purge Cache. Можно очистить весь кэш (Purge Everything) или только конкретные URL (Custom Purge). При деплое рекомендуется очищать кэш автоматически через API. Также есть опция Purge by prefix и Purge by tag (на платных планах).

Скорее всего контент закэширован. Попробуйте: 1) Очистить кэш Cloudflare; 2) Открыть сайт в режиме инкогнито; 3) Добавить ?nocache к URL для тестирования. Если после этого изменения видны — проблема в кэшировании. Настройте правильные Cache-Control заголовки на сервере.

Можно, но с осторожностью. Используйте плагин типа WP Super Cache или W3 Total Cache на сервере, а Cloudflare настройте на Respect Origin Cache-Control. Или используйте APO (Automatic Platform Optimization) для WordPress — это платная функция Cloudflare ($5/мес), которая корректно кэширует WordPress с учётом залогиненных пользователей и динамического контента.

07

Мониторинг и аналитика

Как понять что происходит с сайтом

Cloudflare предоставляет детальную аналитику трафика и событий безопасности. Регулярный мониторинг поможет обнаружить атаку на ранней стадии и оптимизировать защиту.

Security Events

Security → Events — главный инструмент для анализа безопасности. Здесь видно:

  • Все срабатывания правил (WAF, Rate Limiting, Custom Rules)
  • IP-адреса заблокированных или challenged посетителей
  • Страны происхождения подозрительного трафика
  • User-Agent и другие заголовки
  • URI, на которые были направлены запросы
  • Временная шкала событий

Рекомендуем проверять Security Events минимум раз в день, а при подозрении на атаку — в реальном времени.

Traffic Analytics

Analytics → Traffic показывает общую картину:

  • Количество запросов (total, cached, uncached)
  • Bandwidth (total, saved — экономия благодаря CDN)
  • Уникальные посетители
  • Географическое распределение
  • Статус-коды ответов (200, 404, 500, etc.)
  • Threats stopped

Настройка уведомлений

Обязательно настройте алерты в Notifications → Create:

  • DDoS Attack Alerts — уведомление при обнаружении и митигации DDoS-атаки
  • WAF Alerts — при массовых срабатываниях WAF-правил
  • Health Check Alerts — если origin-сервер недоступен
  • Passive Origin Monitoring — при увеличении 5xx ошибок
  • Certificate Expiration — за 30 дней до истечения SSL

Тест: насколько хорошо вы настроили Cloudflare?

Вопрос 1 из 6
Какой SSL-режим обеспечивает полное шифрование до сервера?
Full (Strict) проверяет подлинность сертификата на origin-сервере и шифрует весь трафик
Что делает режим Under Attack Mode?
Under Attack Mode добавляет JavaScript-проверку для каждого посетителя, отсеивая ботов
Какое действие Rate Limiting лучше для тестирования правил?
Log только записывает срабатывания без блокировки — позволяет настроить пороги без риска
Какой заголовок нужен для получения реального IP за Cloudflare?
CF-Connecting-IP содержит IP конечного посетителя и не может быть подделан через прокси-цепочки
Где нужно управлять DNS после подключения Cloudflare?
После смены NS-записей все DNS-изменения делаются только через Cloudflare
Какой Cache-Control рекомендуется для статических ресурсов?
Статические ресурсы с хешами в именах можно кешировать на год с immutable
0 / 6
Итого: что мы настроили
После выполнения всех шагов этого гайда у вас будет: DNS через Cloudflare, SSL/TLS шифрование, базовая защита от DDoS и ботов, Rate Limiting для критичных endpoint'ов, Custom Rules для блокировки подозрительного трафика, настроенное кэширование, мониторинг и алерты. Этого достаточно для защиты большинства сайтов. При росте нагрузки или усложнении атак — рассмотрите переход на платные планы.

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

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

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