Итак, вы видите детализацию статистики сайта, на который обычно заходят около 500 — 550 человек в день, несколько дней назад обнаружилось, как вы видите резкий рост посещений (изображение ниже).
В какой-то момент количество обращений достигло почти 40 тыс. в день, что примерно в 100 раз больше, чем ранее в обычный день. Чтобы решить эту проблему, устранить ботов и убрать накрутки, мы воспользовались услугами сервиса Cloudflare. Для решения этой проблемы оказалось достаточно бесплатного тарифа Cloudflare.
Принцип работы сервиса Cloudflare:
Cloudflare управляет всем трафиком внутри компании и фильтрует, блокирует или разрешает проверку подозрительных посетителей в соответствии с заранее установленными правилами и условиями. Большинство обычных пользователей этого не ощущают. Для них сайт открывается нормально. И лишь небольшой процент пользователей (3-10%) видят экран «проверки» от сервиса всего несколько секунд и затем нормально открывают сайт. Ниже, шаг за шагом, мы рассмотрим процесс настройки сервиса. После этого сразу же отображаются результаты. После подключения сайта к Cloudflare и добавления правил фильтрации количество посещений вернулось к норме в течение нескольких дней (см. график ниже).
В итоге общая картина посещений сайта выглядит следующим образом:
Добавляем сайт в сервис Cloudflare
- Переходим в панель Cloudflare по адресу https://dash.cloudflare.com/login и регистрируемся любым удобным способом
- После успешной регистрации откроется панель управления сервисом. Необходимо перейти на вкладку «Сайты» в левом меню и нажать на кнопку «Добавить сайт» в правой части экрана.
- В появившемся окне необходимо ввести название сайта и нажать кнопку “Add site”
- Следующий шаг — выбор подходящего тарифного плана. Существует бесплатный вариант, который позволяет установить базовую защиту сайта и является достаточным для решения большинства задач. После выбора тарифа нажмите кнопку «Продолжить».
- Затем Cloudflare определяет действительные DNS-записи для доменного имени и отображает их в таблице. Это всего лишь уведомление. Для этого шага просто нажмите кнопку Continue (Продолжить).
- На следующем шаге сервис предложит заменить существующие ns-адреса домена на ns-адреса Cloudflare
Это необходимо для реализации фильтрации трафика. Сначала трафик отправляется на сервер cloudflare, где он проверяется и фильтруется, а затем направляется непосредственно на сервер, где расположен сайт. Необходимо скопировать предложенные ns-адреса и заменить ими существующие записи для доменного имени.
Замена ns-записей происходит на панели регистратора доменов — то есть на том сайте или на том хостинге, где было приобретено доменное имя сайта. При регистрации каждого домена у вас появляется определенное количество «записей» — они отвечают за работу сайта и могут решать с хостинга, откуда брать данные для открытия сайта. Например, чтобы обновить записи reg.ru, необходимо щелкнуть на имени своей учетной записи и перейти в раздел «Мои домены и сервисы».
Затем перейти в пункт меню “домены”, нажать кнопку с тремя точками в правой части строки и выбрать пункт “DNS-сервера и управление зоной”.
Нажать кнопку “изменить” и в появившемся окне вписать нужные значения.
NS-адреса могут обновляться до 72 часов. Обычно это происходит быстрее (6-12 часов), но это максимальное время. Пока адрес не будет обновлен, рядом с сайтом в панели Cloudflare будет отображаться значок ожидания.
После успешного обновления около названия сайта появится галочка.
Отметка означает, что сайт успешно добавлен в службу и можно переходить непосредственно к настройке правил фильтрации.
Настройка правил фильтрации Cloudflare
У сервиса есть несколько сценариев работы со входящим трафиком: его можно полностью заблокировать, пропустить без проверки, или обязать пройти тест на робота.
В рамках бесплатной версии можно написать до 5 правил фильтрации. В общем случае нам потребуется 3-4 правила, а именно:
Правило 1. Прописываем условия беспрепятственного доступа на сайт для проверенных, “хороших” ботов (например ботов поисковых систем, Яндекс.Метрики и т.д.)
Правило 2. Проверяем всех тех, кто пытается попасть на сайт через http (намеренно вводя адрес сайта без безопасного соединения) или через IPV6 (пытаются попасть на сайт через его ip-адрес)
Правило 3. Проверяем прямые заходы и обращения с протоколом ниже HTTP/2 (специфичные заходы, чаще всего являются ботами)
Правило 4. Опциональное. Блокируем трафик из конкретных стран, или открываем трафик только для конкретных стран.
Правила записываются в разделе “Security” — “WAF”
Для того, чтобы перейти в этот раздел необходимо в панели cloudflare нажать на имя сайта, перейти в левом меню в нужный раздел и нажать кнопку “Create Rule” (создать правило)
Правило 1: Открываем доступ хорошим ботам
В верхней части экрана пишем название правила (произвольное, но понятное и однозначное для нас)
Далее прописываем условия:
Во-первых, пропустите всех ботов, известных Cloudflare (для этого в поле «Известные боты» установите зеленый флажок, как показано на скриншоте ниже). Это хорошие боты, такие как боты поисковых систем Google и Yandex. Обязательно установите это правило так, чтобы оно не мешало поисковым системам индексировать ваш сайт. Вторая часть правила добавляет специального бота Mail.ru. Он проверен и безопасен, но не включен в белый список Cloudflare. Важно настроить его так, как показано на скриншоте ниже. Обратите внимание, что между двумя частями правила стоит знак «Or». Это означает, что для выполнения правила должно сработать хотя бы одно из двух условий. Проще говоря, либо Cloudflare знает о боте, либо, если это бот Mail.Ru, он может попасть на сайт без проверки.
В разделе Rules автоматически появится ExpressionPreview — это как раз те условия, которые мы выбрали выше в виде кода, в этой строке ничего менять не нужно. Далее ниже мы выбираем, что делать с посещениями, которые попадают под эти условия: в данном случае пропускать (skip), ничего не проверяя, и проверять все проверки, которые эти боты пройти не могут. Проще говоря, проверенные боты типа Яндекс Google только позволяют сайтам пропускать их, а не блокируют их работу). После завершения написания каждого правила нажмите кнопку «Сохранить».
Правило 2: Проверяем всех тех, кто пытается попасть на сайт через http или через IPV6
В данном правиле условие будет выглядеть следующим образом:
То есть мы предлагаем пройти проверку всем сомнительным заходам, которые пытаются попасть на сайт по IP (первая строчка правила) или же не используют https.
Правило 3: Проверяем прямые заходы и обращения с протоколом ниже HTTP/2
Данное правило чуть более жёсткое чем предыдущее, и направлено на случаи, которые с большой вероятностью являются нежелательными для сайта.
Правило 4: Открываем доступ только конкретным странам
ВЭто правило блокирует весь трафик из стран, которые нас не интересуют. Например, у нас есть сайт на русском языке, и мы не планируем продавать его в другие страны. Но большая часть спамерского трафика приходит из-за рубежа. Тогда мы можем без проблем его блокировать. Например, на нашем сайте мы заинтересованы только в посетителях из России, Казахстана, Белоруссии и Черногории. Поэтому все остальное можно смело блокировать. Среди правил необходимо использовать оператор AND. Он блокирует всех, чья страна не Россия, а также не Казахстан и не Беларусь. Добавляются страны через поле Country (“страна”) does not equal (“не равна”) Russian Federaion (“РФ”).
Порядок срабатывания правил, работа с поддоменами и SSL
После успешного добавления всех правил они появятся в списке в разделе “security” — “waf”
Чем выше правило, тем быстрее оно срабатывает. Стрелки слева от линии могут использоваться для установки правила выше или ниже. Если правило написано правильно, то через 15-20 минут справа от него появится график, показывающий, что часть трафика уже была обработана этим правилом. В данном примере за время работы правило заблокировало 321 450 обращений. И только 0,18% из них (т.е. менее 1%) прошли проверку и попали на сайт.
Если Cloudflare работает на поддомене, то поддомен может не открываться. Кроме того, основной домен может отображаться некорректно из-за проблемы с SSL-сертификатом.
В подобных случаях рекомендуется перейти в раздел “SSL/TLS” -> “Overview” и включить настройку SSL-сертификата Full (strict), как выбрано на картинке ниже.
Как всё вернуть назад, если что-то получилось не так?
Если у вас вдруг возникли проблемы с установкой или необходимо вернуть сайт в исходное состояние, вы можете сделать следующее
- Отключить все правила, просто убрав галочку активности в списке правил
- Отмените ns-регистрации на стороне регистратора, которые были изменены на одном из первых шагов, — это полностью заблокирует работу Cloudflare с сайтом. Обратите внимание, что изменение ns-записей также может занять до 72 часов. Но как правило это бывает быстрее, от нескольких часов.