Как снизить нагрузку на хостинг до 90% с помощью Cloudflare

Блокировка страны в Clouflare

Если у вас растет нагрузка на сайт, т.е. вы видите большое количество запросов в панели управления Cloudflare например так

Как снизить нагрузку на хостинг до 90% с помощью Cloudflare

Это означает что на ваш сайт шла либо DOS атака, либо что чаще бывает большое количество ботов перебирали скрипты, и делали запросы(можно сказать что это тоже DOS атака), но с помощью фаервола и правил можно существенно обезопасить ваш сайт. Расскажу подробнее, что применимо именно для виртуального хостинга.

Переходите в панель управления и выбирайте вкладку FireWall, дальше вкладку Firewall Rules, и добавить новое правило Create Firewall Rule

Как снизить нагрузку на хостинг до 90% с помощью Cloudflare1

Напишите название, к примеру вы хотите заблокировать страны, и создать правило чтобы полезные боты делали свое дело, их знает Clouflare (все вы можете посмотреть на странице поддержки) первое правило будет называться Блок стран. Нажмите Edit expression поле в которое вы введете код, позже он преобразуется в список, когда вы в следующий раз зайдете в правило.

Как снизить нагрузку на хостинг до 90% с помощью Cloudflare2
(not ip.geoip.country in {"RU"} and not cf.client.bot and ip.src ne 2a0a:2b42:d:ca21:: and ip.geoip.asnum ne 35278 and ip.geoip.asnum ne 15169 and ip.src ne 66.102.9.222)
Правила блокировки ботов в Cloudflare

Самая верхняя строка Is not in означает что все что не входит в список стран, будет применено правило. Если выбрать Is in, то наоборот. Далее идет правило известных ботов, и ниже добавлены мои собственные исключения, так как почему-то мой хостинг не смог достучаться и запустить Cron. Дальше Google бот который меряет скорость в пэдж спид, почему-то его нет в известных ботах, хотя может оно и к лучшему. Все теперь из других стран к вам будут заходить только по правилу. Создать их разнообразных можно великое множество). Я применяю Managed Challenge (Recommended), можно выбрать Block, чтобы вообще ни кто не мог войти на сайт.

Как обезопасить ваш сайт на WordPress, создаем правила и применяем к ним Managed Challenge (Recommended)

Безопасность WP в Cloudflare
(http.request.uri.path contains "/wp-login.php") or (http.request.uri.path contains "/xmlrpc.php") or (http.request.uri.path contains "/wp-admin/" and http.request.uri.query contains "?mdrv=" and not http.request.uri.path contains "/wp-admin/admin-ajax.php" and not http.request.uri.path contains "/wp-admin/theme-editor.php") or (http.request.uri.path contains "/wp-content/plugins/" and ip.geoip.asnum ne 35278 and ip.src ne 2a0a:2b42:d:ca21:: and not http.referer contains "handmadebuy.ru" and not cf.client.bot) or (http.request.uri.path eq "/wp-comments-post.php" and http.request.method eq "POST" and not http.referer contains "handmadebuy.ru") or (cf.threat_score gt 10 and not cf.client.bot)

Смотрите внимательно где handmadebuy.ru, выставляйте ваш сайт, это исключение важно чтобы все было корректно. Добавлен так же хостинг. По тому что вам нужно будет добавить, смотрите список заблокированных, последите за ним какое-то время, и выберите что нужно. Добавляйте применяя AND, в том месте где есть мои правила, иначе может не делать то что задумано. Если будете добавлять например новый блок правил применяйте OR.

Блокировка опасных ботов в Cloudflare.

Блокировка опасных ботов в Cloudflare
(http.user_agent contains "Yandex" and not cf.client.bot and ip.src ne 2a0a:2b42:d:ca21:: and ip.geoip.asnum ne 35278) or (http.user_agent contains "muckrack") or (http.user_agent contains "Qwantify") or (http.user_agent contains "Sogou") or (http.user_agent contains "BUbiNG") or (http.user_agent contains "knowledge") or (http.user_agent contains "CFNetwork") or (http.user_agent contains "Scrapy") or (http.user_agent contains "SemrushBot") or (http.user_agent contains "AhrefsBot") or (http.user_agent contains "Baiduspider") or (http.user_agent contains "python-requests") or (http.user_agent contains "crawl" and not cf.client.bot) or (http.user_agent contains "Crawl" and not cf.client.bot) or (http.user_agent contains "bot" and not http.user_agent contains "bingbot" and not http.user_agent contains "Google" and not http.user_agent contains "Twitter" and not cf.client.bot) or (http.user_agent contains "Bot" and not http.user_agent contains "Google" and not cf.client.bot) or (http.user_agent contains "Spider" and not cf.client.bot) or (http.user_agent contains "spider" and not cf.client.bot)

Здесь применяется правило Block, остальное по аналогии. * в связи с последними событиями, это правило пришлось отключить, так как оно стало блокировать доступ на сайты. Надо как-нибудь посидеть создать и затестить новые, но пока остальных 4х с лихвой хватает.

Блокировка пользователей в Cloudflare с показателем угрозы больше или равным 20.

Эти правила Cloudflare, не менее важны, и легко применимы.

 Блокировка-пользователей-в-Cloudflare-с-показателем-угрозы-больше-или-равным-20
(cf.threat_score ge 20)

JS Challenge пользователям с показателем угрозы, равным или превышающим 10.

JS Challenge пользователям с показателем угрозы, равным или превышающим 10.
(cf.threat_score ge 10)

Итого 5 правил на бесплатном тарифе, думаю последние 2 можно объединить в одно, сделать через OR, в общем попробую как нибудь).

Нагрузка на хостинг снизилась 85-90% реально, список заблокированных ботов впечатляет, я все тщательно просматривал, чтобы не заблокировать нужные, но нужных среди них не нашел.

Список заблокированных ботов в Cloudflare

На это все, всего наилучшего!