Защита WordPress от DDoS-атак с помощью Cloudflare
Cloudflare принимает соединение с посетителем и передаёт запрос серверу только после проверки. При сетевой DDoS-атаке часть вредоносного трафика отсеивается на инфраструктуре Cloudflare, а статические файлы и разрешённые страницы отдаются из кэша. WordPress при этом остаётся на прежнем хостинге, но защищённый слой располагается ближе к пользователю. Подробнее о Vstプラグイン Exciter で高域に倍音を加えて音にキラリ感を出す調整.
Одного переключения прокси в Cloudflare недостаточно. Если исходный IP-адрес сервера доступен напрямую, злоумышленник может отправить трафик в обход Cloudflare. Поэтому защиту строят в несколько слоёв: проксирование DNS, ограничение доступа к серверу, правила WAF, лимиты запросов, мониторинг и проверенные резервные копии.
| Механизм | Что он защищает | Ограничение | Роль в схеме WordPress |
|---|---|---|---|
| Прокси и кэш Cloudflare | Сетевой трафик и повторные обращения к статике | Динамические запросы всё равно достигают PHP | Основной внешний слой |
| WAF и лимиты запросов | Подозрительные HTTP-запросы и всплески частоты | Возможны ложные срабатывания | Защита входа, API и XML-RPC |
| Брандмауэр сервера | Прямой доступ к исходному серверу | Не анализирует содержимое HTTP | Разрешает соединения только от Cloudflare |
| Защита хостинга | Объёмные атаки до пределов тарифа | Возможности зависят от провайдера | Резервная граница инфраструктуры |
Как Cloudflare перехватывает трафик
Сетевые DDoS-атаки перегружают каналы, а прикладные атаки имитируют обычные обращения к WordPress. В первом случае помогают распределённая сеть Cloudflare и поглощение трафика. Во втором важны WAF, ограничение частоты запросов и проверка логики плагинов. Эти меры закрывают разные части атаки, поэтому их применяют вместе.
Защищённый маршрут выглядит так: посетитель обращается к адресу Cloudflare, DNS возвращает адреса его сети, а соединение с хостингом устанавливается оттуда. В панели домена запись со значком оранжевого облака передаёт трафик через прокси. Сервер должен принимать эти соединения и не отвечать посторонним посетителям.
Кэш уменьшает число обращений к PHP и базе данных, но не устраняет вредоносные запросы к динамическим адресам. Страницы входа, поиска, оформления заказа и административные панели обычно не кэшируют. Для них нужны отдельные правила, иначе защита кэша создаст лишь иллюзию безопасности.
Подготовка WordPress и инфраструктуры
Сначала составьте карту домена, блога и связанных сервисов: где размещены файлы и база данных, какие CDN, почтовые и внешние API используются, какие плагины постоянно выполняют запросы. Для проверки внешних зависимостей полезен отдельный разбор звукового плагина Exciter: перед переносом стоит убедиться, что медиамодуль не удерживает ресурсы и не создаёт лишних обращений.
Затем усильте WordPress: обновите ядро, тему и плагины, включите двухфакторную аутентификацию, выдавайте учётным записям минимальные права и запретите редактирование файлов из панели. Удалите неиспользуемые расширения. Каждая лишняя точка входа увеличивает поверхность атаки и усложняет диагностику необычного трафика.
Зафиксируйте нормальный режим: среднее число запросов, время ответа PHP, долю ошибок 5xx и нагрузку на базу данных. Эти значения станут базой сравнения во время инцидента. Также проверьте, можно ли быстро отключить дорогие поисковые запросы, массовые уведомления и задачи по расписанию.
Перенос DNS и настройка брандмауэра сервера
Перевод DNS на серверы Cloudflare обычно выполняют после создания зоны и проверки имён. В разделе DNS включите проксирование для записей A и AAAA, если они должны получать защищённый трафик. После проверки замените серверы имён у регистратора на назначенные Cloudflare. Не оставляйте одну запись с прокси, а другую открытой: обход по прямому адресу вернёт уязвимость.
На сервере включите брандмауэр и разрешите соединения только с актуальными диапазонами IP-адресов Cloudflare для IPv4 и IPv6. Управление через SSH и панель хостинга должно иметь отдельный список разрешённых адресов. Если почта должна отправляться напрямую, её маршрут следует отделить от маршрута сайта, а не открывать весь сервер.
Для HTTPS используйте сертификат на стороне Cloudflare и режим с полной проверкой сертификата источника. DNSSEC включайте только при поддержке со стороны регистратора и тестируйте после изменения. Заранее снижайте TTL у критических записей, если в плане есть быстрое переключение DNS; во время атаки частные изменения могут ухудшить управление.
Правила WAF и лимиты запросов
WAF Cloudflare анализирует HTTP-запросы и может блокировать очевидные признаки сканирования, внедрения и неправомерного использования API. В зависимости от тарифа доступны управляемые и пользовательские правила. Начните с управляемых правил, затем добавляйте собственные условия для редких методов, необычных параметров и обращений к несуществующим адресам. Сначала тестируйте их в режиме наблюдения, чтобы не отсечь мобильных посетителей и автоматических публикаций.
Лимит частоты полезнее настроить для wp-login.php, xmlrpc.php, wp-admin и тяжёлых маршрутов REST API. При превышении ограничения сервер может вернуть код 429. Если XML-RPC не нужен для pingback и внешних приложений, его лучше отключить. Не закрывайте API целиком без проверки: обновления, плагины и вебхуки могут перестать работать.
Для восстановления после инцидента заранее проверяйте резервные копии WordPress: нужны согласованные копии файлов и базы данных, отдельные учётные данные и проверка восстановления в чистое окружение. Храните архивы вне публичной директории и ограничивайте доступ. Резервная копия не остановит атаку, но сократит время возврата сайта в рабочее состояние.
Мониторинг и разбор инцидентов
Во время событий смотрите графики запросов, уникальных адресов, скорости ответов, кодов ошибок и трафика в панели Cloudflare. Сопоставляйте их с журналами WordPress, PHP-FPM, MySQL и брандмауэра. Резкий рост одинаковых маршрутов с одного адреса указывает на автоматизацию; широкий всплеск на разных адресах может быть органической популярностью или распределённой атакой.
Сохраняйте временной отрезок, источник, URL, код ответа и сработавшее правило. Полные журналы с персональными данными лучше не выгружать без необходимости. Если логи показывают тысячи запросов к дорогой функции, исправляйте её логику и кэширование. Если запросы не достигают WordPress, защита уже работает на границе Cloudflare.
Понимание устройства WordPress-сайта помогает определить, какой компонент отвечает за всплеск: DNS, кэш, PHP, база данных, задачи по расписанию или внешний API. Отметьте критические зависимости и владельцев их настроек. Особое внимание уделите процессам, которые запускаются автоматически и способны внезапно создавать тысячи одинаковых запросов.
Проверка защиты и план реагирования
Проверяйте защиту без риска для пользователей. Сначала повторите маршрут через тестовый домен и убедитесь, что сервер напрямую не отвечает извне. Затем включите правила в режиме наблюдения, проверьте обновление кэша, вход в административную панель и работу API. Нагрузочный тест согласуйте с хостингом и проводите в ограниченном диапазоне, а не на основном домене во время активной атаки.
Подготовьте порядок действий: кто переводит сайт в режим ограничений, кто проверяет журналы, кто разрешает смену DNS и кто связывается с провайдером. Зафиксируйте контакты и доступы, но храните их отдельно от публичных страниц. Во время инцидента не внедряйте новые плагины и не очищайте весь кэш: массовая очистка может направить поток одновременно на исходный сервер.
Начните с безопасного набора действий: переведите записи сайта на прокси Cloudflare, закройте прямой доступ к серверу, включите двухфакторную аутентификацию, настройте лимиты для входа и XML-RPC, а также создайте внешнюю проверенную резервную копию. Затем включите наблюдение за WAF и сохраните это состояние как базовый режим.
Защиту считайте работающей только после проверки маршрута, тестового домена и плана реагирования. Настройте предупреждения о резком росте трафика, назначьте ответственных и обновляйте конфигурацию после каждого обновления WordPress. Начните эти шаги сегодня, чтобы во время реального инцидента действовать по проверенной процедуре, а не импровизировать.