если сайт позволяет, настройте более агрессивное кэширование. Отдавайте все как статику хотя бы во время атак.
Это можно сделать как плагинами (например тот же Wp Super Cache), так настройками nginx.
Ниже советы, как если б вы уже настроили все на отдачу статикой.
1) Начинает долбить рандомные запросы к несуществующим страницам в WordPress, а так как это не дает 404 ошибок (WordPress пытается найти такие статьи и генерирует свою 404 страницу), то никакой кеш тут не помогает - каждый запрос генерирует новое кеширование. Пример запросов (десятки в секунду):
domain.com/DSADAJKFJASFJASFLKJ
а зачем вы кэшируете такие страницы по отдельности?
отдавайте одну статическую 404ю страницу для всех несуществующих страниц
5) Долбят /wp-admin/admin-ajax.php POST/GET запросами - это сильно вешает сервер. Заблокировать полностью файл не могу, так как frontend использует запросы на него от реальных посетителей. Получается заблочить через .htaccess если используют пустой реферер. Если нет - непонятно как отличий от нормальных пользователей.
несколько вариантов:
1 добавить
nounce (и сделать, чтоб оно работало корректно с кэшированными страницами)
2 перестать использовать admin-ajax.php на фронте. заменить на REST API/кастомный эндпоинт.
да это будет не по стандартам WP и потребует некоторой переделки кода/плагиов, но это будет более производительно, хотя бы за счет срабатывания несколько другого набора хуков у рест апи (
rest api vs ajax). Плюс запросы к стандартному admin-ajax слабо кэшируются
а с кастомным эндпоинтом вообще можно только нужные части движка подгружать
6) Домен подключен к Cloudflare, но как я понял с такими типами атак (где все ip разные и определить что действия сомнительные трудно) он не особо поможет.
как минимум, оставьте только нужные вам страны, остальные блокируйте.
во время атаки выкрутите Basic Protection Level в максимальный режим (не помню, с какого тарифного плана это доступно)