В сети существует огромное количество ботов, которые занимаются сканированием сайтов. Некоторые боты полезны и мы ждём их (например боты поисковых систем), а некоторые не несут для нас никакой пользы, а наоборот, создают ненужную нагрузку на сервер. И зачастую довольно приличную.
Естественно этих бесполезных, то есть вредных для нас ботов, лучше всего забанить для всего сервера раз и навсегда.
Если на сервере используется Nginx, оптимальный вариант — заблокировать через него по юзерагенту.
Блокируем вредных ботов при помощи Nginx с установленной панелью ISPmanager.
В каталоге /etc/nginx/vhosts-includes/ создаём файл с любым именем, но обязательно с расширением .conf, например badbot-block.conf
И в этот файл вставляем следующий код, со списком юзерагентов ботов, которых нужно заблокировать:
if ($http_user_agent ~* "(InternetMeasurement|MBCrawler|YaK|niraiya.com|Cloudfind|SafeDNSBot|SeopultContentAnalyzer|serpstatbot|LinkpadBot|DataForSeoBot|Scrapy|ZoominfoBot|semantic-visions.com crawler|Konturbot|serpstatbot|Mediatoolkitbot|DataForSeoBot|Amazonbot|Semanticbot|PetalBot|Yahoo|Seekport|Comparserbot|SemrushBot|AhrefsBot|BLEXBot|mijbot|MJ12bot|DotBot|MauiBot|NTENTbot|MegaIndex|ScooperBot|heritrix|SentiBot|Linguee|Adsbot/3.1|NetSeer|Barkrowler|Barkrowler)") { return 403; }
Список ботов редактируете по своему усмотрению, посмотреть юзерагенты можно в access.log ваших сайтов.
После создания файла, нужно чтобы nginx перечитал свои конфиги и наша блокировка заработала.
Для начала стоит проверить корректность синтаксиса, чтобы убедиться, что вы не допустили никаких ошибок. Проверяем командой:
nginx -t
Если всё ок, то выполняем:
service nginx reload
На этом всё, боты будут видеть ошибку 403, при попытке попасть на сайт.