• Форум посвящен самостоятельной (бесплатной) защите от ддос атак.
    Есть мануалы по настройке сервера от Ddos для сисадминов и готовые инструменты от ддос-атак для вебмастеров.

    Простое, эффективное, точное и проверенное бесплатное решение от мощных ддос-атак: PHP скрипт + Cloudflare, с панелью управления.

Настройка Firewall Rules в Cloudflare (фильтрация ддос ботов)

admin

admin

Администратор
Администрация
#1
В сервисе Cloudflare есть удобный инструмент для фильтрации ботов - Firewall Rules.

Firewall Rules в Cloudflare


Бот-фильтр особенно пригодится в случае, если не помогает режим Under Attack - с помощью Firewall Rules можно забанить ботов, которые обманули Javascript Challenge (например, как описано здесь).

На бесплатном тарифе дается всего 5 правил фильтрации, но на моей практике хватало 2-3 правил. К тому же, в одном правиле можно задать несколько условий и/или.


Инструмент предлагает 4 оператора:
  • equals - точное соответствие
  • does not equals - не соответствует
  • contains - содержит (никаких масок указывать не надо)
  • does not contains - не содержит.

И несколько полей для фильтрации:
  • http.cookie - содержит куки, позволяет добавить в исключение авторизованных пользователей
  • http.host - содержит хост (домен), пригодится если ддос идет на поддомен вида subdomain.domain.com
  • http.referer - содержит реферер, пригодится, если ддос идет через другие сайты (через взломанные сайты на wordpress, к примеру).
  • http.request.full_uri - содержит полную ссылку, вида https:// domain.com/articles/index.php?param1=4.
  • http.request.method - содержит метод отправки данных (GET, POST), пригодится, если ддосер субмитит форму, например.
  • http.request.uri - эквивалент серверной переменной $_SERVER['REQUEST_URI'], пригодится, если ддос идет на внутренние страницы/ресурсы сайта.
  • http.request.uri.path - ссылка без параметров GET вида /articles/index.php.
  • http.request.uri.query - параметры GET, эквивалент серверной $_SERVER['QUERY_STRING'].
  • http.user_agent - содержит информацию о клиенте
  • ip.src - ip адрес
  • ip.geoip.continent - содержит континент ip адреса: Африка, Антарктика, Азия, Европа, Южная Америка, Северная Америка, Океания.
  • ip.geoip.country - содержит страну ip адреса (2-х символьный код).
  • ip.geoip.is_in_european_union - проверяет, принадлежит ли IP-адрес к Евросоюзу (true - принадлежит).
  • ssl - true, если обращаемся к сайту по https.
  • cf.threat_score - определяет вероятность (0-100), что IP принадлежит боту (значение выше 10 могут означать ботов)
  • cf.client.bot - определяет, принадлежит ли данный IP известному боту или сканеру

Для каждого условия можно применить 4 действия: Allow (белый список), Block (банить), Challenge (показать капчу) и JS Challenge (яваскрипт капча).
Firewall Rules действие на срабатывание правила


Соответственно, для фильтрации хороших пользователей мы будем использовать Allow, а для ботов - Block и Challenge (JS Challenge не рекомендую, ненадежный метод). Рекомендую использовать Challenge вместо Block - пусть бот грузит капчу.

Поисковых ботов специально фильтровать не надо - они и так пропускаются сервисом Cloudflare.
Авторизованных пользователей можно отфильтровать по кукам, например, так (http.cookie contains "xf_session="). Назначаем для правила действие Allow - это гарантия того, что настоящий пользователь не попадет в бан.
Впрочем, боты могут подделывать куки, хотя ддосеры редко заморачиваются этим.

Ддос-ботов получится легко отфильтровать, если имеются какие-то серьезные аномалии в запросах. Например, если запросы передаются без User Agent, то их можно смело банить условием (http.user_agent eq "") .
Поле Value просто оставляем пустым.

Firewall Rules  создаем правило


Если ддосер использует сторонние сервисы, то значение User Agent может содержать дополнительную информацию.
Например, если в User Agent есть строчка FeedFetcher-Google, то создаем правило (http.user_agent contains "FeedFetcher-Google").

Куда больше возможностей дает фильтрация в сочетании с геолокацией.
Например, можно одним правилом ограничить доступ всем странам, кроме России: (ip.geoip.country ne "RU").
Если ддосят только главную страницу, то можно прописать такое правило: (ip.geoip.country ne "RU" and http.request.uri eq "/").
За поисковых ботов не переживайте - их не отфильтрует. Но все равно не забудьте через какое-то время правило отключить, чтобы не было отказов пользователей VPN.


Отдельного внимания заслуживает поле cf.threat_score (Threat Score).
Из документации:
Это поле представляет оценку риска, 0 указывает на низкий риск. Значения выше 10 могут выявлять спаммеров или ботов, а значения выше 40 почти наверняка указывают на ботов. Редко можно увидеть значения выше 60.
Если IP был раньше замечен в ддосе, соответственно, его репутация плохая. Чем чаще ддосер будет использовать одних и тех же ботов против Cloudflare, тем легче их в последствии будет отфильтровать, в т.ч. владельцам других сайтов.
Вы можете, в принципе, задать правило только для этого поля. Например, всем, у кого репутация хуже 10, подсовывать каптчу. Если боты хорошо отфильтруются (см. журнал на вкладке Overview), то больше ничего подкручивать не надо.

Пишите ваши вопросы или делитесь опытом.
 
Последнее редактирование:
M

mentor2

New Member
#2
А как там включить континент? Попробовал включить вручную, но не дает.
 
admin

admin

Администратор
Администрация
#3
На бесплатном тарифе никак, про платный - не знаю. Нигде не сказано, что данный функционал зависит от тарифа.

Как вариант, можете методом исключения, например, так: (ip.geoip.country ne "RU" and ip.geoip.country ne "UA" and ip.geoip.country ne "KZ" and ip.geoip.country ne "BY").
 
M

mentor2

New Member
#4
Нет, мне это не подходит. У меня сайт заблокирован Роскомнадзором. Африку, Южную Америку и Азию можно бы отсечь - оттуда ВПН почти не бывает. А Европу фильтровать.

Кстати, я заметил, что сайт начал подтормаживать слегка. Наверное эти правила все-таки влияют на скорость. У вас тоже медленно загружается.
 
admin

admin

Администратор
Администрация
#5
Проверьте другие сайты, может они тоже медленно загружаются )
На скорость загрузки правила не влияют.
 
Сверху