Разворачиваем защиту сайта KillBot на своём сервере в Google Cloud

О сервере на Google Cloud с поддержкой KillBot

Все запросы на сайт будут проходить через защищенный сервер KillBot. То есть визит бота может быть заблокирован еще до попадания на сайт. Это защитит от воровства телефонов, цен, скликивания смс баланса, сканирования на уязвимости и т.п. По умолчанию будут блокироваться все простые http боты без поддержки JavaScript. Высокоуровневых JS ботов можно будет заблокировать вручную. В личном кабинете на https://killbot.ru можно выставить какой трафик блокировать, какому показывать капчу а какой пропускать без ограничения. 

Кроме того можно:

  1. Фильтровать ботов в Google Ads. Боты из google ads собираются в аудиторию, строится look-alike аудитория и на неё делается корректировка ставок -100% - т.е. ботам вашего сайта и похожим на них не будет показываться реклама
  2. Защитить сайт от DDoS L7 - быстроработающий экран KillBot по умолчанию не пропускает простых http ботов которые массовыми запросами перегружают сервер и делают сайт не доступным. В реальной жизни достаточно 100-500 одновременных запросов чтобы убить сайт, экран KillBot может дерзать тысячи таких запросов.
  3. Вносить изменения в KillBot. Так как KillBot развернут на своем сервере , то вы можете полностью управлять трафиком: дописать свой код в страницу верификации килбота: поменять дизайн, интегрировать свою капчу, получать результат проверки на бота в режиме реального времени и использовать это в своих алгоритмах.

Если вы НЕ хотите привязываться к Google Cloud

То как развернуть KillBot на своем сервере Ubuntu написано здесь: https://killbot.ru/node/31

Как создать виртуальную машину на Google Cloud с поддержкой KillBot:

  1. В Google Cloud уже загружен образ с поддержкой KillBot - его просто нужно установить.

  2. Cоздаем проект (нажимаем на Create Project): https://console.cloud.google.com/cloud-resource-manager

    создаем проект в google search console

  3. Вводим название проекта, например "killbot", и тут же нужно запомнить значение Project Id = killbot-457713 - у вас это значение будет своё:

    вводим имя проекта

  4. Нужно выбрать созданный проект (сделать его активным). После создания проекта появится нотификация, нажимаем "Select Project": 

    выбираем проект KillBot

  5. Включаем 'Compute Engine API' (может потребовать ввести платежную информацию): https://console.cloud.google.com/apis/library/compute.googleapis.com 

    compute engine api

  6. Заходим в Cloud Shell Editorhttps://console.cloud.google.com/cloudshelleditor (тут нужно убедится что в браузере включены сторонние куки)

  7. Нажимаем "Open terminal" открытие терминала в google shell editor

  8. Переключаемся на проект killbot в котором будет работать (тут как раз нам понадобился наш Project Id из пункта 3 : killbot-457713), выполянем команду: 

    gcloud config set project killbot-457713

  9. Разворачиваем образ килбота (выполняем три эти командыпоследовательно ): 

    gsutil cp gs://kill-bot-net-deployments/kill-bot-net-deployment.zip .

    unzip kill-bot-net-deployment.zip

    gcloud deployment-manager deployments create killbot --config compute.yaml
    команды для установки образа килбота

  10. Смотрим на созданную виртуальную машину с предустановленным Killbot. Переходим в инстансы: https://console.cloud.google.com/compute/instances и убеждаемся что там выбран проект KillBot и там развернута виртуальная машина: 
    Виртуальная машина на GooGle Cloud с развернутым KillBot

  11. Подключаем сайты к серверу KllBot через командную строку. Заходим на сервер по SSH и выполняем команды подключения, они расписаны ниже.

Шаги выше развернули образ страницы верификации KillBot на своем сервере.

В вашем Google Cloud, развернулся образ сервера Ubuntu с предустановленным apache2, который сконфигурирован для режима работы в реверс прокси через экран защиты KillBot. При подключении сайта к экрану будет установлен letsencript сертификат для поддержки закрытого https соединения.

Экран защиты KillBot будет перенаправлять тарфик на сервер (хостинг) вашего сайта. Поэтому для подключения вашего сайта к экрану  KillBot DNS А запись вашего домена должна указывать на только что развернутый сервер KillBot, и KillBot будет проксировать запросы на сервер вашего сайта, только если страница верификации пройдена.

Размещение файлов KillBot

В образе на Google Cloud файлы KillBot размещены в каталоге /opt/killbot.

Основные файлы:

  • Страница верификации: /opt/killbot/html/verification.php (можно изменять, но важно ничего не сломать).

  • Белый список IP: /opt/killbot/wl-ip (список IP-адресов, для которых экран KillBot отключен).

  • Белый список User-Agent'ов: /opt/killbot/wl-ua (список user-agent'ов, для которых экран KillBot отключен).

Формат белого списка IP wl-ip: 

  • Каждый IP адрес с новой строки (файл /opt/killbot/wl-ip).
  • Диапазон разрешенных адресов можно задать так: "23.134.45." - эта запись означает, что разрешены визиты с ip которые начинаются с "23.134.45.". То же верно если задать "23.134.".

Формат белого списка UserAgent wl-ua: 

  • каждая запись с новой строки. (файл /opt/killbot/wl-ua)
  • пример: "yandex.bot" - если user-agent содержит строку "yandex" и строку "bot" - то доступ пользователям с этим user agent без ограничений.

Перед подключением экрана KillBot к вашему домену нужно:

  1. Изменить А запись домена на IP вашего сервера KillBot
  2. Удалить АААА запись, так как KillBot на текущий момент не работает с ipv6

Подключение сайта к экрану KillBot

Сайты к экрану можно подключать сайты командой kb install. На один сервер можно подключать различное число сайтов.

Пример команды для подключения сайта к экрану:

sudo kb install -e grigoriy.mmelnikov@gmail.com -ip 31.31.198.173 -le 1 -d g-video.ru -t 3Fgewe3Zzn0

В командной строке:

-e: ваш email - на него будет создан аккаунт на killbot.ru - если у вас его нет. если аккаунт на killbot.ru есть - нужно использовать именно его email.
-d: домен сайта который подключается к KillBot
-ip: IP адрес сервера сайта -d
-le: выпустить letsencript сертификат или нет. если сайт за cloudflare, то le=0, иначе le=1 (по умолчанию)
-t: токен для доступа к аккаунту килбот, нужно залогинится на killbot.ru и скопировать токен со страницы: https://killbot.ru/api-key

Эта команда (kb install) создаст конфигурационные файлы Apache которые подключат экран килбот и будут проксировать трафик на ваш сайт:

  • /etc/apache2/sites-available/domain-killbot.conf — конфигурация с подключенным экраном KillBot.

  • /etc/apache2/sites-available/domain.conf — конфигурация реверс-прокси без KillBot - если экран килбот нужно отключить.

Вы можете изменять эти конфигурации, но будьте осторожны: повторное выполнение kb install для того же домена перезапишет файлы.

ВНИМАНИЕ!!!

Экран KillBot можно подключить к сайту только после того, как IP-адрес подключаемого домена уже разрешается (резолвится) на сервер KillBot. До этого момента выпуск SSL-сертификата от Let's Encrypt невозможен.

Поэтому после изменения A-записи домена на IP-адрес сервера KillBot необходимо подождать, пока обновление DNS вступит в силу. Обычно это занимает от 5 до 30 минут.

Если ваш сайт уже работает за защитой (например, через Cloudflare), то A-запись домена изменяется непосредственно в настройках Cloudflare. В этом случае выпуск Let's Encrypt сертификата не требуется, и экран KillBot подключается сразу.

Команды подключения сайта к KillBot [Быстрый старт]

  1. Если у вас нет аккаунта на killbot.ru и подключаемый сайт не подключен к сервису защиты типа CloudFlare, то подключение экрана осуществляется по команде (значения параметров командной строки -e -t -ip -d замените на ваши, актуальные):
    sudo kb install -e grigoriy.mmelnikov@gmail.com -ip 31.31.198.173 -d g-video.ru
    Эта команда создаст аккаунт на killbot.ru (на почту -e придет письмо с данными для входа на killbot.ru), и сконфигурирует сервер для подключения экрана KillBot к сайту
  2. Если подключаемый к KillBot сайт на CloudFlare или аналоге, то нужно отключить генерацию letsencript сертификата (-le 0), команда подключения будет такой:
    sudo kb install -e grigoriy.mmelnikov@gmail.com -ip 31.31.198.173 -d g-video.ru -le 0
    Тут le=0 - это значит, что для домена будет выпущен самоподписанный сертификат. letsencript сертификат выпустить нельзя, так как А запись вашего сайта будет отлична от сервера экрана верификации KillBot.
  3. Если у вас уже есть аккаунт на killbot.ru, то для доступа к вашему аккаунту нужно использовать ваш токен -t со страницы https://killbot.ru/api-key :
    sudo kb install -e grigoriy.mmelnikov@gmail.com -ip 31.31.198.173 -d g-video.ru -t 3Fgerwe3Zzn0
    В этом случае скрипт страницы верификации будет создан в вашем существующем аккаунте.

Управление экраном KillBot

Далее можно включать и отключать экран килбот для каждого подключенного домена.  domain.com замените на домен вашего сайта:

  • Включить экран KillBot:

    sudo kb ensite domain.com
  • Отключить KillBot (включится режим полного проксирования всего трафика на сайт без экрана KillBot):

    sudo kb dissite domain.com
  • Перезапустить сервер apache2 c экраном KillBot

    sudo kb reload

Обновление белых списков IP и user-agent

После внесения изменений в /opt/killbot/wl-ip или /opt/killbot/wl-ua, чтобы изменения вступили в силу выполните команду (но с вашими параметрами командной строки):

kb install -e grigoriy.mmelnikov@gmail.com -ip 31.31.198.173 -d g-video.ru

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