Защита сайта от ботов и накруток с помощью сервиса Cloudflare на бесплатном тарифе

Telegram-канал руководителя студии
Алексея Важеркина
Про увеличение продаж
с помощью SEO и контекстной рекламы
Чек-листы и инструкции
по продвижению
Полезные сервисы,
которые мы используем
перейти в канал

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

img

В определённый момент количество посещений достигло почти 50 000 в день – примерно в 100 раз больше, чем в обычные дни.

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

Кратко, принцип работы сервиса Cloudflare:

Cloudflare ведёт весь трафик через себя и отфильтровывает подозрительных посетителей по заранее установленным правилам-условиям, блокируя их, или заставляя проходить проверку.

При этом большая часть обычных пользователей этого не замечают. Для них сайт открывается как обычно.
И только небольшая часть пользователей (3-10%) пару секунд видят экран “Проверки” от сервиса, а далее сайт открывается как обычно.

Ниже пошагово рассмотрим процесс настройки сервиса.

И сразу спойлер. После подключения сайта к Cloudflare и добавления правил фильтрации количество заходов в течение нескольких дней вернулось в норму (графики ниже).

img

В итоге общая картина посещений сайта выглядит следующим образом:

img

Как добавить сайт в сервис Cloudflare

  1. Переходим в панель Cloudflare по адресу https://dash.cloudflare.com/login и регистрируемся любым удобным способом
  2. После успешной регистрации откроется панель управления сервисом. Необходимо в левом меню перейти во вкладку “websites” и в правой части экрана нажать кнопку “add a site” (добавить сайт)
img
  1. В появившемся окне необходимо ввести название сайта и нажать кнопку “Add site”
img
  1. На следующем шаге необходимо выбрать подходящий тариф.

    Существует бесплатный вариант – он позволяет настроить базовую защиту сайта и является вполне достаточным для большинства задач. После выбора тарифа следует нажать кнопку “Continue” (продолжить)

img
  1. Далее Cloudflare определит текущие DNS записи домена и выведет их в виде таблицы. Это просто уведомление.
    На данном шаге можно просто нажать кнопку “Continue”
img
  1. На следующем шаге сервис предложит заменить существующие ns-адреса домена на ns-адреса Cloudflare
img

Это необходимо, чтобы реализовать фильтрацию трафика - сначала он будет попадать на сервера cloudflare, там проверяться и фильтроваться, и лишь затем отправляться на тот сервер, где непосредственно лежит сайт.

Следует скопировать предлагаемые ns-адреса, и заменить существующие записи вашего домена на них.

img

Замена ns-записей происходит в панели регистратора домена — то есть на том сайте, или на том хостинге, где вы покупали домен для сайта. При регистрации у каждого домена есть некоторое количество “записей” - они отвечают за работу сайта и позволяют ему определить, с какого хостинга брать данные для открытия сайта.

Например, чтобы обновить записи на reg.ru необходимо кликнуть на имя аккаунта, перейти в раздел “Мои домены и услуги”.

img

Затем перейти в пункт меню “домены”, нажать кнопку с тремя точками в правой части строки и выбрать пункт “DNS-сервера и управление зоной”.

img

Нажать кнопку “изменить” и в появившемся окне вписать нужные значения.

img
img

После сохранения изменений необходимо дождаться, когда они применятся, обратите внимания на важный момент: NS-адреса могут обновляться до 72 часов. Обычно это происходит быстрее (в пределах 6-12 часов), но максимальный срок именно такой.

Пока адреса не обновились в панели Cloudflare рядом с сайтом будет отображаться иконка ожидания.

img

После успешного обновления около названия сайта появится галочка.

img

Как только появится галочка это будет означать, что сайт успешно добавлен в сервис и можно переходить непосредственно к настройке правил фильтрации.

Настройка правил фильтрации Cloudflare

У сервиса есть несколько сценариев работы со входящим трафиком: его можно полностью заблокировать, пропустить без проверки, или обязать пройти тест на робота.

В рамках бесплатной версии можно написать до 5 правил фильтрации. В общем случае нам потребуется 3-4 правила, а именно:

Правило 1. Прописываем условия беспрепятственного доступа на сайт для проверенных, “хороших” ботов (например ботов поисковых систем, Яндекс.Метрики и т.д.)

Правило 2. Проверяем всех тех, кто пытается попасть на сайт через http (намеренно вводя адрес сайта без безопасного соединения) или через IPV6 (пытаются попасть на сайт через его ip-адрес)

Правило 3. Проверяем прямые заходы и обращения с протоколом ниже HTTP/2 (специфичные заходы, чаще всего являются ботами)

Правило 4. Опциональное. Блокируем трафик из конкретных стран, или открываем трафик только для конкретных стран.

Правила записываются в разделе “Security” - “WAF”
Для того, чтобы перейти в этот раздел необходимо в панели cloudflare нажать на имя сайта, перейти в левом меню в нужный раздел и нажать кнопку “Create Rule” (создать правило)

img

Правило 1: Открываем доступ хорошим ботам

В верхней части экрана пишем название правила (произвольное, но понятное и однозначное для нас)

img

Далее прописываем условия:

Сначала просто пропускаем всех ботов, которые являются известными для Cloudflare (Для этого в записи Known Bots ставим зелёную галочку, как на скриншоте ниже)

Это хорошие боты, например, боты поисковых систем Google и Яндекс. Обязательно устанавливаем эту настройку, чтобы не мешать поисковикам индексировать сайт.

Во второй части правила мы добавляем конкретного бота Mail.ru - он является проверенным и безопасным, но не входит в белый список Cloudflare.
Важно поставить настройки, как на скриншоте ниже.

Обратите внимание, что между двумя частями правила стоит “Or”, что значит “Или”.
Т.е. для выполнения правила, нужно чтобы сработало хотя бы одно из двух условий.

Проще говоря, если Cloudflare знает этого бота или если это бот Mail.Ru, то пропускаем его на сайт без проверок.

img

Сразу под правилами автоматически появится надпись Expression Preview - это просто оформленные в виде кода выбранные нами выше условия, в этой строчке ничего менять не нужно.

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

Проще говоря, проверенных ботов Яндекса Google и т.п. мы просто пропускаем на сайт и не мешаем им работать :)

После написания каждого правила необходимо нажать “Save” (сохранить).

img

Правило 2: Проверяем всех тех, кто пытается попасть на сайт через http или через IPV6

В данном правиле условие будет выглядеть следующим образом:

img

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

Правило 3: Проверяем прямые заходы и обращения с протоколом ниже HTTP/2

Данное правило чуть более жёсткое чем предыдущее, и направлено на случаи, которые с большой вероятностью являются нежелательными для сайта.

img

Правило 4: Открываем доступ только конкретным странам

В данном правиле мы блокируем весь трафик, который попадает из неинтересных нам стран.
Например, у нас сайт на русском языке и в другие страны мы продавать не планируем.

А большая часть спамного трафика как раз идёт из-за границы. Тогда мы можем его безболезненно заблокировать.

Например, для нашего сайта, нам интересны посетители только из России, Казахстана, Белоруссии и Черногории (Montenegro). Поэтому всех остальных мы смело блокируем.

Нам необходимо использовать оператор AND (“и”) между правилами, так как мы блокируем всех, у кого страна НЕ Россия, и одновременно НЕ Казахстан и одновременно НЕ Беларусь и т.д.

Добавлятся страны через поле Country (“страна”) does not equal (“не равна”) Russian Federaion (“РФ”).

img

Порядок срабатывания правил, работа с поддоменами и SSL

После успешного добавления всех правил они появятся в списке в разделе “security” - “waf”

img

Чем выше правило - тем раньше оно срабатывает. Чтобы переместить правило выше-ниже можно использовать стрелки в левой части строки.

Если правило написано корректно, то уже через 15-20 минут справа от него появится график, на котором будет видно, что какую-то часть трафика это правило уже обработало.

В нашем примере есть правило, которое за время работы заблокировало 321 000 заходов. И из этого количества лишь 0.18% (то есть менее одного процента) были посетители, которые смогли пройти проверку и дальше перейти на сайт.

img

При работе Cloudflare с поддоменами может возникать ситуация, когда они перестают открываться. Или основной домен начинает некорректно отображаться из-за проблем с SSL-сертификатом.

В подобных случаях рекомендуется перейти в раздел “SSL/TLS” -> “Overview” и включить настройку SSL-сертификата Full (strict), как выбрано на картинке ниже.

img

А как всё вернуть, если что-то пошло не так?

Если вдруг настройка прошла некорректно, или возникли любые проблемы, которые требуют возвращения сайта к исходному состоянию, можно сделать следующее:

  1. Отключить все правила, просто убрав галочку активности в списке правил
img
  1. Вернуть обратно ns-записи на стороне регистратора, которые меняли на одном из первых шагов - это позволит полностью исключить Cloudflare из работы с сайтом. Обратите внимание, что в этом случае смена ns-записей также займет до 72 часов.

Успехов в победе над ботами!


Источники

  1. Интервью Артёма Акулова Михаилу Шакину - https://www.youtube.com/watch?v=wmu6LNOg-Sc
  2. Статья Ивана Зимина о настройках CloudFlare - https://vc.ru/seo/477451-nastraivaem-cloudflare-dlya-filtracii-botov
  3. Документация CloudFlare для разработчиков - https://developers.cloudflare.com/
  4. Статья "Cloudflare: what is it? And what can you do with it?" - https://www.hipex.io/en/cloudflare/
  5. Статья "The Definitive Guide For Cloudflare Free And Page Rules" - https://technoogies.com/the-definitive-guide-for-cloudflare-free-and-page-rules/

Раскрываем наши фишки
по SEO, сайтам и контексту
Выкладываем чек-листы, инструкции, полезные сервисы
перейти в канал
Поделиться:
Автор:  Алексей Важеркин, Роман Кондрашов
Категория:  Поддержка сайтов