CloudFlare: Эффективная политика для борьбы с ботами и спамом на сайте

Боты могут оуказывать различные негативные эффекты на работу сайту, в данной статье описан пример политики CloudFlare для успешной борьбы (блокировки) различных ботов, с использованием настроек CloudFlare Free.

Вред от плохих ботов

Вот несколько способов, которыми плохие боты могут навредить вашему бизнесу

  • Подбор цен. Используя плохих ботов, конкуренты соскабливают ваши цены, чтобы обойти вас на рынке. Вы теряете бизнес, потому что ваш конкурент выигрывает SEO-поиск по цене. Это наносит значительный ущерб прогнозируемой пожизненной стоимости ваших клиентов.
  • Негативно влияет на SEO - боты, занимающиеся веб-скреппингом, могут копировать и извлекать с сайтов данные, защищенные авторским правом или торговой маркой, и повторно использовать их - часто в конкурентных целях - на других сайтах. Поскольку в сети существует две версии контента, это может значительно снизить поисковый авторитет вашего сайта.
  • Захват учетных записей. Вредоносные боты крадут учетные данные законных пользователей и проверяют их на вашем сайте. В случае успеха хакеры могут привести к блокировке учетных записей, финансовым махинациям и увеличению числа жалоб клиентов, что сказывается на их лояльности и будущих доходах.
  • Снижение доверия клиентов - боты могут заполнять почтовые ящики ваших клиентов нежелательными письмами с вредоносными ссылками, писать фальшивые обзоры продуктов, создавать фальшивые аккаунты в социальных сетях для написания ложного или необъективного контента, накручивать количество просмотров или подписчиков, писать провокационные комментарии в Интернете для разжигания споров, подтасовывать голоса и многое другое. Такие действия могут разочаровать клиентов, оттолкнуть их от вашего сайта и испортить вашу репутацию.
  • Искажение аналитики - Злоумышленники могут использовать бот-сети для проведения DDoS-атак, которые делают недоступными приложения или сети, что может повлиять на показатели трафика. Кроме того, боты могут создавать несуществующие лиды, создавая и затем бросая корзины на сайте электронной коммерции. Плохие показатели могут привести к неправильным маркетинговым решениям.
  • Разрушение рентабельности инвестиций в рекламу - боты могут совершать мошенничество с кликами, автоматически нажимая на рекламу. Это искажает данные, предоставляемые рекламодателям, и обходится компаниям в кругленькую сумму, поскольку они в итоге платят за нечеловеческие клики. Еще хуже то, что эти компании не получают никакого дохода от поддельных "покупателей". Мошенничество с кликами также может использоваться компаниями для намеренного повышения стоимости рекламы своих конкурентов.
  • Потеря дохода - Вредоносные боты могут негативно повлиять на итоговую прибыль, будь то не реагирующий на запросы или помеченный сайт, посетители, перенаправленные к конкурентам, торговый персонал, преследующий ложные возможности или лиды, платящий больше за клики по рекламе, или просто принимающий неверные бизнес-решения на основе плохих данных.
  • Боты создают нагрузку на сайт и повышают требования к серсусам сервера

Настройка политики CloudFlare

Перен началом настройки убедитесь, что у вас установлена опция CloudFlare - Always Use HTTPS

SSl\TLS - Edge Certificates

CloudFlare - Always Use HTTPS Вторым шагом, переходим в раздел Security - Bots и включаем: Bot Fight Mode

Прочитайте подробное о данном функционале: Bot Fight Mode

Bot Fight Mode

Далее, переходим в раздел Security - WAF, здесь нам понадобиться создать несколько политик

Политика pre-filter

Создаем политику pre-filter она у нас будет первой в списке, с действием block. Так как CloudFlare не позволяет добавить пустые политики, добавим одно правило

Блокирующее пользователей с пустым User-Agent.

Читайте подробнее: Обязателен ли User-Agent

(http.user_agent eq "")

Исключение хороших ботов

Второе правило позволит исключить из проверки всех хороших ботов (в основном поисковые системы)
Назовем его: Known Bots

В качестве действия выбираем Skip и в разделе "WAF components to skip"  устанавливаем все галки.

(cf.client.bot) or (http.user_agent contains "Mail.RU_Bot")
Это позволит работать ботам поисковых машин без ограничений, к сожалению эта политика пропускает еще часть SEO ботов, которые нам не очень нужны, по этому мы сможем вернуться в правило pre-filter  и заблокировать их по user-agent.

Более подробно: Плохие боты и краулеры

Основной фильтр

И создаем третье правило: Score
Это основное правило блокировки ботов, нам понадобиться несколько полей.
Первым в списке выбираем [Country] - TOR
Вторым [Threat Score ] Greater than 0 - Для всех адресов у которых есть не положительная репутация.
Далее, необходимо создать  список IP адресов и добавить его в правило
Следующие параметр [SSL/HTTPS] в режиме OFF - что пользователь к нам пришел по HTTP, так как сайт настроен на работу по HTTPS по HTTP к нам будут приходить боты.
Так же добавляем [HTTP Version] в формате is not in и перечисляем "HTTP/2" "HTTP/3" "SPDY/3.1" "HTTP/1.2" - боты в большинстве случаев, используют HTTP 1.1 и соответственно не смогут пройти дальше
И бонусом настраиваем поле URL, где добавляем URL страницы авторизации вашей CMS, к примеру для WordPress это будет /wp-login.php
Полностью правило выглядит следующим образом
(ip.geoip.country eq "T1") or (cf.threat_score gt 0) or (ip.src in $bad_ip) or (not ssl) or (not http.request.version in {"HTTP/2" "HTTP/3" "SPDY/3.1" "HTTP/1.2"}) or (http.request.uri contains "/wp-login.php")
В качестве действия выбираем Manage Challenge это позволит легитимным пользователям пройти проверку и получить доступ к сайту.
Общий список политик
Пример работы подобной политики
Пример работы подобной политики
В результате на сайте пропал спам, совсем и значительно сократилось количество 404 ошибок, теперь они только от легитимных ботов.
Понравилась статья? Поделиться с друзьями:
Комментарии: 14
  1. Avatar for Роман
    Роман

    Список то где dpznm с IP адресами?

    1. Avatar for Gnostis
      Gnostis (автор)

      Составить самостоятельно, можно анализировать 404 ошибки.

      Можно тут: https://myip.ms/files/blacklist/general/latest_blacklist.txt
      проявите фантазию)

  2. Avatar for Роман
    Роман

    Ну в общем спасибо за материал.
    Их в сети есть, но ваш оказался самый понятный.
    Единственный вопрос, почему не блокируем тех, кто пришел с IPV6 и как это сделать?

    1. Avatar for Gnostis
      Gnostis (автор)

      Спасибо за обратную связь.

      В список можно добавлять IPv6, но с ним есть определенные проблемы.

      "Отдельные адреса не поддерживаются в контексте списков, можно настроить только весь диапазон /64"

      т.е. нельзя добавить один адрес, только предварительно преобразовав в подсеть указав ее всю.

    2. Avatar for Gnostis
      Gnostis (автор)

      В крайнем случае, IPv6 можно заблокировать или направить на принудительную проверку через капчу

      https://g-soft.info/articles/9852/cloudflare-blokirovka-podklyucheniy-s-ipv6/

  3. Avatar for Роман
    Роман

    А базу IP я собрал из логов сервера.
    Взял всех, у кого нет refer.

    1. Avatar for Gnostis
      Gnostis (автор)

      Смелое решение, можно заблокировать всех кто напрямую заходит на сайт, к примеру из закладок.

    2. Avatar for Gnostis
      Gnostis (автор)

      Если веб сервер стоит за Cloudflare, то не все запросы будут доходить до него, если требуется отправлять все прямые заходы на капчу, то использует следующую конструкцию

      (http.referer eq "")

      (http.referer eq

  4. Avatar for Роман
    Роман

    >> Смелое решение, можно заблокировать всех кто напрямую заходит на сайт, к примеру из закладок
    Стоп. Vs же не блокируем, а отправляем на капчу. Я внес себя в список и проверил.
    Даже галочку не нужно нажимать. CF крутит пару секунд колесо проверки и пускает на сайт.

    >> В крайнем случае, IPv6 можно заблокировать или направить на принудительную проверку через капчу

    Да, на капчу. Но не подумал про поисковые системы, которые могут использовать IPv6...

    Ладно, завтра проверим ботность.
    Вообще интересная проблема. Наплыв ботов начался у сразу нескольких сайтов. И все они были в Cloudflare. Вернул DNS своего сервера - и боты отвалились.
    Спустя лето по неким причинам перенес сайт с Cloudflare на сторонний хостинг. Трафик с 15к упал до 1.5к, то есть до своей нормы.
    Вывод: На некоторые сайты, работающие на Cloudflare происходит дикий набег ботов.
    Написал пост об этом в комьюнити сервиса, показал график роботности с метрики. Сказали, красивый график ))), но разбирайтесь с метрикой. Проверил данные с Google Analitycs - все совпадает. Но выводить сайты из Cloudflare не вариант. Поэтому пробую вашу настройку.
    Но факт подтвержден инструментально: некоторые сайты под Cloudflare страдают от аномальных набегов ботов (время сессии 1 секунда).

    1. Avatar for Gnostis
      Gnostis (автор)

      >>Да, на капчу. Но не подумал про поисковые системы, которые могут использовать IPv6...

      на это можно не обращать внимаение, так как поисковых ботов мы уже разрешили политикой "Исключение хороших ботов"

      >>Вообще интересная проблема. Наплыв ботов начался у сразу нескольких сайтов. И все они были в Cloudflare. Вернул DNS своего сервера - и боты отвалились.

      Подозреваю что это прямую никак не связано, сайты за Cloudflare лучше ранжируються у поисковых системы, так как отвечают и работают быстрее.

  5. Avatar for Роман
    Роман

    Ну в общем правила работают, вижу статистику.
    pre-filter 49
    Known Bots 4.33k
    Managed Challenge 2.13k
    Это за сутки при трафике 6.5к
    Но! Количество ботов в метрике не изменилось.
    Это как так?

    1. Avatar for Gnostis
      Gnostis (автор)

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

      (http.referer eq "")

  6. Avatar for Роман
    Роман

    >> отдельной политикой

    Создать отельное правило или можно включить ее в набор Score ?

    1. Avatar for Gnostis
      Gnostis (автор)

      Можно и туда, просто для отслеживания работы политики.
      Так проще отлаживать на первом этапе, так как можно прямо по ней посмотреть как она работает и внести необходимые белые списки.

Добавить комментарий