В последние дни многие организации стали жертвами киберпреступности. Были разработаны более сложные ботнеты и другие методы атак, которые увеличивают скорость этих атак.
Наиболее распространенными атаками являются DDoS (распределенный отказ в обслуживании), захват учетных записей (ATO) и перехват контента с веб-сайтов.
Эти атаки имеют тяжелые последствия для целевых организаций и должны быть предотвращены любой ценой.
Обычно Bad Bots можно определить как программные приложения, которые выполняют автоматизированные задачи со злыми намерениями через Интернет.
Они маскируются в системе путем маскировки агентов пользователя.
Такими плохими ботами могут быть;
- Боты или серверы, связанные с вирусами или вредоносным ПО
- Боты для правительственного наблюдения
- Атакующие сети ботнетов (Mirai)
- Сайты азартных игр и порносайты
- Сканеры уязвимостей
- Спам-рефереры
- Браузерное рекламное и вредоносное ПО (Yontoo и т.д.)
- Инструменты для исследования ссылок и тестирования обратных ссылок
- SEO компании, которые используют ваши конкуренты для улучшения своего SEO
- Сайты хотлинк на изображения и воры изображений
- Боты для ранжирования ссылок
- Сборщики электронной почты
- Сайты, связанные с выгодными вредоносными программами, рекламным ПО и Ransomware Кампании Clickjacking
- Остановка “Ghost спама” Google Analytics
Это руководство демонстрирует, как вы можете блокировать Bad Bots, спам, User-Agents и Ransomware на Nginx.
Шаг 1 – Скачать Nginx Bad Bot Blocker
Nginx Bad Bot Blocker был разработан Митчеллом Крогом для использования в веб-сервере Nginx.
Его можно загрузить в систему Linux с помощью команды:
### С wget
wget https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/install-ngxblocker
### С curl
sudo curl -sL https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/install-ngxblocker -o install-ngxblocker
🖧 В чем разница между curl и Wget?
После загрузки файла сделайте его исполняемым.
chmod +x install-ngxblocker
На системах FreeBSD пакет доступен в репозитории по умолчанию и может быть установлен с помощью команды:
pkg install www/nginx-ultimate-bad-bot-blocker
Шаг 2 – Скачайте необходимые файлы.
В других системах Linux используйте загруженный файл в каталоге /usr/local/sbin, как показано ниже:
sudo ./install-ngxblocker
Установка будет происходить следующим образом:
Checking url: https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/include_filelist.txt
** Dry Run ** | not updating files | run as 'install-ngxblocker -x' to install files.
Creating directory: /etc/nginx/conf.d
Creating directory: /etc/nginx/bots.d
REPO = https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master
Downloading [FROM]=> [REPO]/conf.d/globalblacklist.conf [TO]=> /etc/nginx/conf.d/globalblacklist.conf
Downloading [FROM]=> [REPO]/conf.d/botblocker-nginx-settings.conf [TO]=> /etc/nginx/conf.d/botblocker-nginx-settings.conf
REPO = https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master
Downloading [FROM]=> [REPO]/bots.d/blockbots.conf [TO]=> /etc/nginx/bots.d/blockbots.conf
Downloading [FROM]=> [REPO]/bots.d/ddos.conf [TO]=> /etc/nginx/bots.d/ddos.conf
Downloading [FROM]=> [REPO]/bots.d/custom-bad-referrers.conf [TO]=> /etc/nginx/bots.d/custom-bad-referrers.conf
Downloading [FROM]=> [REPO]/bots.d/bad-referrer-words.conf [TO]=> /etc/nginx/bots.d/bad-referrer-words.conf
Downloading [FROM]=> [REPO]/bots.d/blacklist-ips.conf [TO]=> /etc/nginx/bots.d/blacklist-ips.conf
Downloading [FROM]=> [REPO]/bots.d/blacklist-user-agents.conf [TO]=> /etc/nginx/bots.d/blacklist-user-agents.conf
Downloading [FROM]=> [REPO]/bots.d/whitelist-domains.conf [TO]=> /etc/nginx/bots.d/whitelist-domains.conf
Downloading [FROM]=> [REPO]/bots.d/whitelist-ips.conf [TO]=> /etc/nginx/bots.d/whitelist-ips.conf
REPO = https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master
Downloading [FROM]=> [REPO]/setup-ngxblocker [TO]=> /usr/local/sbin/setup-ngxblocker
Downloading [FROM]=> [REPO]/update-ngxblocker [TO]=> /usr/local/sbin/update-ngxblocker
В приведенной выше команде перечислены пакеты, которые будут загружены, теперь используйте команду с параметром -x для записи этих изменений.
sudo ./install-ngxblocker -x
Вывод:
Checking url: https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/include_filelist.txt
Creating directory: /etc/nginx/conf.d
Creating directory: /etc/nginx/bots.d
REPO = https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master
Downloading [FROM]=> [REPO]/conf.d/globalblacklist.conf [TO]=> /etc/nginx/conf.d/globalblacklist.conf...OK
Downloading [FROM]=> [REPO]/conf.d/botblocker-nginx-settings.conf [TO]=> /etc/nginx/conf.d/botblocker-nginx-settings.conf...OK
REPO = https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master
Downloading [FROM]=> [REPO]/bots.d/blockbots.conf [TO]=> /etc/nginx/bots.d/blockbots.conf...OK
Downloading [FROM]=> [REPO]/bots.d/ddos.conf [TO]=> /etc/nginx/bots.d/ddos.conf...OK
Downloading [FROM]=> [REPO]/bots.d/custom-bad-referrers.conf [TO]=> /etc/nginx/bots.d/custom-bad-referrers.conf...OK
Downloading [FROM]=> [REPO]/bots.d/bad-referrer-words.conf [TO]=> /etc/nginx/bots.d/bad-referrer-words.conf...OK
Downloading [FROM]=> [REPO]/bots.d/blacklist-ips.conf [TO]=> /etc/nginx/bots.d/blacklist-ips.conf...OK
Downloading [FROM]=> [REPO]/bots.d/blacklist-user-agents.conf [TO]=> /etc/nginx/bots.d/blacklist-user-agents.conf...OK
Downloading [FROM]=> [REPO]/bots.d/whitelist-domains.conf [TO]=> /etc/nginx/bots.d/whitelist-domains.conf...OK
Downloading [FROM]=> [REPO]/bots.d/whitelist-ips.conf [TO]=> /etc/nginx/bots.d/whitelist-ips.conf...OK
REPO = https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master
Downloading [FROM]=> [REPO]/setup-ngxblocker [TO]=> /usr/local/sbin/setup-ngxblocker...OK
Downloading [FROM]=> [REPO]/update-ngxblocker [TO]=> /usr/local/sbin/update-ngxblocker...OK
Setting mode: 700 => /usr/local/sbin/install-ngxblocker
Setting mode: 700 => /usr/local/sbin/setup-ngxblocker
Setting mode: 700 => /usr/local/sbin/update-ngxblocker
После загрузки необходимых файлов в нужные папки, перейдите к выполнению скриптов установки и обновления.
sudo chmod +x /usr/local/sbin/setup-ngxblocker
sudo chmod +x /usr/local/sbin/update-ngxblocker
Шаг 3 – Установка Nginx Bad Bot Blocker
Чтобы установить Nginx Bad Bot Blocker, мы запустим скрипт установки.
Этот скрипт можно запустить в DRY-MODE, чтобы показать изменения, которые он внесет, и файлы, которые он загрузит, как показано ниже.
sudo /usr/local/sbin/setup-ngxblocker
Вывод:
/etc/nginx/sites-available/ssl.no-default.conf
/etc/nginx/sites-available/no-default.conf
/etc/nginx/sites-available/wordpress.example.com.conf
Configure every file above as a vhost ? [Y/N] : Y
Checking url: https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/include_filelist.txt
** Dry Run ** | not updating files | run as 'setup-ngxblocker -x' to setup files.
inserting: include /etc/nginx/conf.d/globalblacklist.conf; => /etc/nginx/nginx.conf
inserting: include /etc/nginx/conf.d/botblocker-nginx-settings.conf; => /etc/nginx/nginx.conf
inserting: include /etc/nginx/bots.d/blockbots.conf; => /etc/nginx/sites-available/wordpress.example.com.conf
inserting: include /etc/nginx/bots.d/ddos.conf; => /etc/nginx/sites-available/wordpress.example.com.conf
Whitelisting ip: 88.99.92.81 => /etc/nginx/bots.d/whitelist-ips.conf
Web directory not found ('/var/www'): not automatically whitelisting domains.
Checking for missing includes:
Checking url: https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/include_filelist.txt
Nothing to update for directory: /etc/nginx/conf.d
Nothing to update for directory: /etc/nginx/bots.d
Nothing to update for directory: /usr/local/sbin
Setting mode: 700 => /usr/local/sbin/install-ngxblocker
Setting mode: 700 => /usr/local/sbin/setup-ngxblocker
Setting mode: 700 => /usr/local/sbin/update-ngxblocker
Чтобы внести изменения в nginx.conf, необходимо запустить скрипт с параметром -x.
sudo ./setup-ngxblocker -x
Ввыод:
/etc/nginx/sites-available/ssl.no-default.conf
/etc/nginx/sites-available/no-default.conf
/etc/nginx/sites-available/wordpress.example.com.conf
Configure every file above as a vhost ? [Y/N] : y
Checking url: https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/include_filelist.txt
inserting: include /etc/nginx/conf.d/globalblacklist.conf; => /etc/nginx/nginx.conf
inserting: include /etc/nginx/conf.d/botblocker-nginx-settings.conf; => /etc/nginx/nginx.conf
inserting: include /etc/nginx/bots.d/blockbots.conf; => /etc/nginx/sites-available/wordpress.example.com.conf
inserting: include /etc/nginx/bots.d/ddos.conf; => /etc/nginx/sites-available/wordpress.example.com.conf
Whitelisting ip: 88.99.92.81 => /etc/nginx/bots.d/whitelist-ips.conf
Web directory not found ('/var/www'): not automatically whitelisting domains.
Checking for missing includes:
Checking url: https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/include_filelist.txt
Nothing to update for directory: /etc/nginx/conf.d
Nothing to update for directory: /etc/nginx/bots.d
Nothing to update for directory: /usr/local/sbin
Setting mode: 700 => /usr/local/sbin/install-ngxblocker
Setting mode: 700 => /usr/local/sbin/setup-ngxblocker
Setting mode: 700 => /usr/local/sbin/update-ngxblocker
Приведенная выше команда включает все файлы виртуальных хостов Nginx на сервере и вносит ваш Ip-адрес в белый список в файле whitelist-ips.conf.
Вы можете внести желаемые изменения, отредактировав файл /etc/nginx/bots.d/whitelist-ips.conf.
По сути, скрипт добавляет приведенные ниже утверждения “include” в ваши файлы виртуальных хостов Nginx:
Кроме того, вы можете установить блокировщик в нестандартную папку Nginx, указав их:
sudo ./install-ngxblocker -x -c /usr/local/nginx/conf.d -b /usr/local/nginx/bots.d
sudo ./setup-ngxblocker -x -c /usr/local/nginx/conf.d -b /usr/local/nginx/bots.d
sudo ./update-ngxblocker -c /usr/local/nginx/conf.d -b /usr/local/nginx/bots.d -e yourname@youremail.com
После завершения проверьте синтаксис конфигурации Nginx.
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Перезапустите Nginx, чтобы изменения были применены.
sudo systemctl restart nginx
Шаг 4 – Настройка автоматического обновления для блокировщика плохих ботов Nginx
Мы настроим задание Cron так, чтобы оно автоматически обновляло блокиратор, гарантируя вам последнюю версию.
Откройте файл для редактирования:
sudo crontab -e
В файле добавьте следующие строки, заменив адрес электронной почты соответствующим образом.
00 22 * * * sudo /usr/local/sbin/update-ngxblocker -e yourname@youremail.com
Эта команда будет автоматически обновлять блокировщик каждый день в 22-00 часа.
Вы также можете выполнять обновление 3-4 раза в день, установив задачу Cron на выполнение через каждые 8 часов, как показано ниже:
00 */8 * * * sudo /usr/local/sbin/update-ngxblocker -e yourname@youremail.com
Вы также можете отключить обновления по электронной почте с помощью команды:
00 */8 * * * sudo /usr/local/sbin/update-ngxblocker -n
Шаг 5 – Настройка Nginx Bad Bot Blocker
Nginx Bad Bot Blocker может быть настроен в соответствии с вашей средой путем редактирования файлов “include”.
Хорошо то, что эти файлы не перезаписываются при обновлении.
Для редактирования доступны следующие файлы:
etc/nginx/bots.d/whitelist-ips.conf
/etc/nginx/bots.d/whitelist-domains.conf
/etc/nginx/bots.d/blockbots.conf
/etc/nginx/bots.d/blacklist-domains.conf
/etc/nginx/bots.d/blacklist-user-agents.conf
/etc/nginx/bots.d/blacklist-ips.conf
/etc/nginx/bots.d/bad-referrer-words.conf
/etc/nginx/bots.d/custom-bad-referrers.conf
/etc/nginx/bots.d/ddos.conf
Например, если вы хотите заблокировать доступ GoogleBot к вашему сайту, отредактируйте файл /etc/nginx/bots.d/blacklist-user-agents.conf, который отменяет белый список по умолчанию для GoogleBot.
Это можно сделать и для любого другого бота, внесенного в белый список.
Шаг 6 – Тестирование Nginx Bad Bot Blocker
Вы можете протестировать ваш Nginx Bad Bot Blocker из терминала на другой системе, используя ваше доменное имя, как показано ниже:
curl -A "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.96 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" -I http://yourdomain.com
Вы также можете использовать:
curl -A "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" -I http://yourdomain.com
Вывод:
HTTP/1.1 200 OK
Server: nginx/1.14.1
Date: Wed, 27 Apr 2022 08:57:12 GMT
Content-Type: text/html
Content-Length: 3429
Last-Modified: Thu, 10 Jun 2021 09:09:03 GMT
Connection: keep-alive
ETag: "60c1d6af-d65"
Accept-Ranges: bytes
Приведенный ниже тест должен выдать ошибку, описанную ниже:
- curl: (52) Пустой ответ от сервера
- curl: (56) TCP-соединение сброшено сверстником
- curl: (92) HTTP/2 поток 0 не был закрыт чисто: PROTOCOL_ERROR (err 1).
Для проверки используйте команды ниже:
curl -A "Xenu Link Sleuth/1.3.8" -I http://yourdomain.com
curl -I http://yourdomain.com -e http://100dollars-seo.com
curl -I http://yourdomain.com -e http://zx6.ru
На этом мы заканчиваем данное руководство по блокированию вредоносных ботов, спама, пользовательских агентов и Ransomware на Nginx.
Вы можете внести необходимые изменения в файлы “include” для разрешения/блокирования ботов.