Как использовать Cloudflare для блокировки ботов

  • user warning: Table './drupal/sessions' is marked as crashed and last (automatic?) repair failed query: SELECT COUNT(sid) AS count FROM sessions WHERE timestamp >= 1789141632 AND uid = 0 in /var/www/html/includes/session.inc on line 157.
  • user warning: Table './drupal/sessions' is marked as crashed and last (automatic?) repair failed query: SELECT COUNT(DISTINCT s.uid) FROM sessions s WHERE s.timestamp >= 1789141632 AND s.uid > 0 in /var/www/html/modules/user/user.module on line 808.

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

Откуда можно узнать, сколько разных ботов посещают ваши веб-сайты?

На самом деле, однозначного ответа нет. Для этого необходимо просмотреть файл access.log веб-сервера и найти столбец User-Agent. Допустим, вы хотите перечислить все боты, кроме Googlebot, тогда вы можете выполнить следующую команду на вашем веб-сервере, где существует файл access.log.

grep bot access.log |grep -v Googlebot

Вас тоже удивил результат? Вот, что выдал тот же запрос на моем сервере:

root@gf-prod:nginx# grep bot access.log |grep -v Googlebot | wc -l
616834
root@gf-prod:nginx#

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

Причина проста - бесполезные запросы вообще не должны попадать и обрабатываться веб-сервером.

А теперь, давайте узнаем, как блокировать ботов, которые вам не нужны, с помощью брандмауэра Cloudflare.

  • Заходим на панель управления Cloudflare;
  • Переходим на вкладку Firewall, затем - правила firewall и нажимаем на кнопку создать правило firewall.
правила firewall Cloudflare
  • Вводим название правила;
  • В качестве фильтра выбираем User Agent, оператор - contains, а в качестве значения - название бота, которое нужно заблокировать;
  • Чтобы добавить несколько критериев в одно правило используйте оператор OR.
Создание правила
Примечание: боты, указаны в целях демонстрации, они не обязательно вредоносные.
  • Затем в качестве действия выбираем Block и нажимаем Deploy;
  • Если умеете работать с выражениями, то тоже самое можете сделать кликнув на ссылку Edit expression. Сразу после применения, можно будет увидеть созданное правило. Чтобы данное правило применялось к трафику, переключатель состояния должен быть ON.

Легко, не так ли?


Что еще можно сделать, экспериментируя с правилами межсетевого экрана?

Для повышения безопасности можно применять указанные ниже критерии блокировки:

  • Блокировать если запрос идет с конкретного ASN или IP адреса;
  • По соответствию ключевым словам cookie, referrer, X-Forwarder-for;
  • Блокировка запросов из конкретной страны;
  • Отключение нежелательных HTTP-методов в роде PUT, DELETE, OPTIONS, PURGE и т.д.

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


Заключение

Правила брандмауэра Cloudflare - отличный способ без простоев повысить защиту веб-приложений на границе сети. Если еще не применяете данное решение, вы также можете рассмотреть возможность использования Cloud WAF для повышения безопасности приложений и защиты от DDoS и других сетевых уязвимостей.

Сейчас на сайте

Сейчас на сайте пользователей и гостей.