Методы блокирования ботов
Чтобы уменьшить нагрузку на сервер, сканирование уязвимостей извне и ограничить другие автоматические запросы, используйте предложенные нами решения для блокирования ботов через веб-серверы Apache и Nginx, через веб-приложение WAF или сервис Fail2ban.
Способы блокирования ботов
Настройки работают отдельно друг от друга. Комбинации могут привести к непредсказуемым последствиям. Используйте несколько решений только если полностью уверены в своих действиях.
- Авторизуйтесь в ispmanager под учетной записью с правами суперпользователя.
- Выберите подходящее решение для настройки:
Через Nginx
На системах с установленным веб-сервером Nginx:
- Перейдите в раздел Сайты.
- В списке выберите нужный сайт.
- На панели инструментов нажмите
Конфиг.файлы. - В блоке Конфигурационный файл nginx с первой строки перед содержимым файла вставьте фрагмент:
# Проверка на бота map $http_user_agent $is_bad_bot { default 0; "~*SputnikBot|omgili|socialmediascanner|Jooblebot|SeznamBot|Scrapy|CCBot|linkfluence|veoozbot|Leikibot|Seopult|Faraday|hybrid|Go-http-client|SMUrlExpander|SNAPSHOT|getintent|ltx71|Nuzzel|SMTBot|Laserlikebot|facebookexternalhit|mfibot|OptimizationCrawler|crazy|Dispatch|ubermetrics|HTMLParser|musobot|filterdb|InfoSeek|omgilibot|DomainSigma|SafeSearch|CommentReader|meanpathbot|statdom|proximic|spredbot|StatOnlineRuBot|openstat|DeuSu|semantic|postano|masscan|Embedly|NewShareCounts|linkdexbot|GrapeshotCrawler|Digincore|NetSeer|help.jp|PaperLiBot|getprismatic|360Spider|Ahrefs|ApacheBench|Aport|Applebot|archive|BaiduBot|Baiduspider|Birubot|BLEXBot|bsalsa|Butterfly|Buzzbot|BuzzSumo|CamontSpider|dataminr|discobot|DomainTools|DotBot|Exabot|Ezooms|FairShare|FeedFetcher|FlaxCrawler|FlightDeckReportsBot|FlipboardProxy|FyberSpider|Gigabot|HTTrack|ia_archiver|InternetSeer|Jakarta|Java|JS-Kit|km.ru|kmSearchBot|Kraken|larbin|libwww|Lightspeedsystems|Linguee|LinkBot|LinkExchanger|LinkpadBot|LivelapBot|LoadImpactPageAnalyzer|lwp-trivial|majestic|Mediatoolkitbot|MegaIndex|MetaURI|MJ12bot|MLBot|NerdByNature|NING|NjuiceBot|Nutch|OpenHoseBot|Panopta|pflab|pirst|PostRank|crawler|ptd-crawler|Purebot|PycURL|Python|QuerySeekerSpider|rogerbot|Ruby|SearchBot|SemrushBot|SISTRIX|SiteBot|Slurp|Sogou|solomono|Soup|spbot|suggybot|Superfeedr|SurveyBot|SWeb|trendictionbot|TSearcher|ttCrawler|TurnitinBot|TweetmemeBot|UnwindFetchor|urllib|uTorrent|Voyager|WBSearchBot|Wget|WordPress|woriobot|Yeti|YottosBot|Zeus|zitebot|ZmEu|Crowsnest|PaperLiBot|peerindex|Twiceler|BTWebClient|Tagoobot|igdeSpyder|Copier|netvampire|Offline|Teleport|WebCopier" 1; } # Проверка на cURL map $http_user_agent $is_curl { default 0; "~*curl" 1; } # Комбинирование результатов: если «плохой бот» и не cURL — блокирование map "$is_bad_bot:$is_curl" $block_request { default 0; "1:0" 1; } - В том же файле укажите или дополните две секции
server { ... }(для HTTP и HTTPS) содержимым:# Проверка запроса и вывод ошибки 403 if ($block_request = 1) { return 403; } - Сохраните изменения.
- Сделайте три проверки настроек:
- Подключитесь к серверу с панелью ispmanager по SSH.
- Введите команду в терминале:
curl -I https://<имя_сайта>Пример вывода:
HTTP/1.1 200 OK Server: nginx/1.26.3 Date: Tue, 28 Jul 2026 01:55:03 GMT Content-Type: text/html Content-Length: 12129 Connection: keep-alive Last-Modified: Wed, 22 Apr 2026 03:56:12 GMT ETag: "2f61-65004833b5970" Accept-Ranges: bytes Vary: Accept-Encodi- Подключитесь к серверу с панелью ispmanager по SSH.
- Введите команду в терминале:
curl -I -A "Mozilla/5.0 (compatible; AhrefsBot/7.0; +http://ahrefs.com/robot/)" https://<имя_сайта>Пример вывода:
HTTP/1.1 403 Forbidden Server: nginx/1.26.3 Date: Tue, 28 Jul 2026 01:55:21 GMT Content-Type: text/html Content-Length: 153 Connection: keep-alive- Подключитесь к серверу с панелью ispmanager по SSH.
- Введите команду в терминале:
curl -I -A "SemrushBot" https://<имя_сайта>Пример вывода:
HTTP/2 403 server: nginx/1.26.3 date: Tue, 28 Jul 2026 01:55:50 GMT content-type: text/html content-length: 153
Через Apache
На системах с установленным веб-сервером Apache (MPM-Prefork или MPM-ITK) выберите подходящий для вас способ блокирования ботов: через конфигурационный файл сайта или файл .htaccess.
Эти способы подходят и для LiteSpeed, так как веб-сервер совместим с директивами Apache и использует его конфигурации.
В конфигурациях сайта
- Перейдите в раздел Сайты.
- В списке выберите нужный сайт.
- На панели инструментов нажмите
Конфиг.файлы. - В блоке Конфигурационный файл Apache с первой строки перед содержимым файла вставьте фрагмент:
<IfModule mod_setenvif.c> # Пометка на «плохого бота» SetEnvIfNoCase User-Agent "SputnikBot|omgili|socialmediascanner|Jooblebot|SeznamBot|Scrapy|CCBot|linkfluence|veoozbot|Leikibot|Seopult|Faraday|hybrid|Go-http-client|SMUrlExpander|SNAPSHOT|getintent|ltx71|Nuzzel|SMTBot|Laserlikebot|facebookexternalhit|mfibot|OptimizationCrawler|crazy|Dispatch|ubermetrics|HTMLParser|musobot|filterdb|InfoSeek|omgilibot|DomainSigma|SafeSearch|CommentReader|meanpathbot|statdom|proximic|spredbot|StatOnlineRuBot|openstat|DeuSu|semantic|postano|masscan|Embedly|NewShareCounts|linkdexbot|GrapeshotCrawler|Digincore|NetSeer|help.jp|PaperLiBot|getprismatic|360Spider|Ahrefs|ApacheBench|Aport|Applebot|archive|BaiduBot|Baiduspider|Birubot|BLEXBot|bsalsa|Butterfly|Buzzbot|BuzzSumo|CamontSpider|dataminr|discobot|DomainTools|DotBot|Exabot|Ezooms|FairShare|FeedFetcher|FlaxCrawler|FlightDeckReportsBot|FlipboardProxy|FyberSpider|Gigabot|HTTrack|ia_archiver|InternetSeer|Jakarta|Java|JS-Kit|km.ru|kmSearchBot|Kraken|larbin|libwww|Lightspeedsystems|Linguee|LinkBot|LinkExchanger|LinkpadBot|LivelapBot|LoadImpactPageAnalyzer|lwp-trivial|majestic|Mediatoolkitbot|MegaIndex|MetaURI|MJ12bot|MLBot|NerdByNature|NING|NjuiceBot|Nutch|OpenHoseBot|Panopta|pflab|pirst|PostRank|crawler|ptd-crawler|Purebot|PycURL|Python|QuerySeekerSpider|rogerbot|Ruby|SearchBot|SemrushBot|SISTRIX|SiteBot|Slurp|Sogou|solomono|Soup|spbot|suggybot|Superfeedr|SurveyBot|SWeb|trendictionbot|TSearcher|ttCrawler|TurnitinBot|TweetmemeBot|UnwindFetchor|urllib|uTorrent|Voyager|WBSearchBot|Wget|WordPress|woriobot|Yeti|YottosBot|Zeus|zitebot|ZmEu|Crowsnest|PaperLiBot|peerindex|Twiceler|BTWebClient|Tagoobot|igdeSpyder|Copier|netvampire|Offline|Teleport|WebCopier" bad_bot=1 # Если User-Agent содержит cURL — сброс флага bad_bot (!bad_bot) SetEnvIfNoCase User-Agent "curl" !bad_bot </IfModule> - В том же файле найдите секцию
<Directory>...</Directory>. Внутрь секции вставьте содержимое:<IfModule mod_authz_core.c> <RequireAll> Require all granted Require not env bad_bot </RequireAll> </IfModule> - Сохраните изменения.
- Сделайте три проверки настроек:
- Подключитесь к панели ispmanager по SSH.
- Введите команду в терминале:
curl -I https://<имя_сайта>Пример вывода:
HTTP/1.1 200 OK Server: nginx/1.26.3 Date: Tue, 28 Jul 2026 01:55:03 GMT Content-Type: text/html Content-Length: 12129 Connection: keep-alive Last-Modified: Wed, 22 Apr 2026 03:56:12 GMT ETag: "2f61-65004833b5970" Accept-Ranges: bytes Vary: Accept-Encodi- Подключитесь к панели ispmanager по SSH.
- Введите команду в терминале:
curl -I -A "Mozilla/5.0 (compatible; AhrefsBot/7.0; +http://ahrefs.com/robot/)" https://<имя_сайта>Пример вывода:
HTTP/1.1 403 Forbidden Server: nginx/1.26.3 Date: Tue, 28 Jul 2026 01:55:21 GMT Content-Type: text/html Content-Length: 153 Connection: keep-alive- Подключитесь к панели ispmanager по SSH.
- Введите команду в терминале:
curl -I -A "SemrushBot" https://<имя_сайта>Пример вывода:
HTTP/2 403 server: nginx/1.26.3 date: Tue, 28 Jul 2026 01:55:50 GMT content-type: text/html content-length: 153
В .htaccess сайта
- Перейдите в раздел Сайты.
- В списке выберите нужный сайт.
- На панели инструментов нажмите
Файлы сайта. - Создайте или откройте существующий файл
.htaccess. - С первой строки перед содержимым файла (если есть) вставьте фрагмент:
<IfModule mod_rewrite.c> RewriteEngine On # Разрешение cURL (пропуск без блокировки) RewriteCond %{HTTP_USER_AGENT} "curl" [NC] RewriteRule .* - [S=1] # Пропуск следующего правила # Блокировка остальных ботов RewriteCond %{HTTP_USER_AGENT} "SputnikBot|omgili|socialmediascanner|Jooblebot|SeznamBot|Scrapy|CCBot|linkfluence|veoozbot|Leikibot|Seopult|Faraday|hybrid|Go-http-client|SMUrlExpander|SNAPSHOT|getintent|ltx71|Nuzzel|SMTBot|Laserlikebot|facebookexternalhit|mfibot|OptimizationCrawler|crazy|Dispatch|ubermetrics|HTMLParser|musobot|filterdb|InfoSeek|omgilibot|DomainSigma|SafeSearch|CommentReader|meanpathbot|statdom|proximic|spredbot|StatOnlineRuBot|openstat|DeuSu|semantic|postano|masscan|Embedly|NewShareCounts|linkdexbot|GrapeshotCrawler|Digincore|NetSeer|help.jp|PaperLiBot|getprismatic|360Spider|Ahrefs|ApacheBench|Aport|Applebot|archive|BaiduBot|Baiduspider|Birubot|BLEXBot|bsalsa|Butterfly|Buzzbot|BuzzSumo|CamontSpider|dataminr|discobot|DomainTools|DotBot|Exabot|Ezooms|FairShare|FeedFetcher|FlaxCrawler|FlightDeckReportsBot|FlipboardProxy|FyberSpider|Gigabot|HTTrack|ia_archiver|InternetSeer|Jakarta|Java|JS-Kit|km.ru|kmSearchBot|Kraken|larbin|libwww|Lightspeedsystems|Linguee|LinkBot|LinkExchanger|LinkpadBot|LivelapBot|LoadImpactPageAnalyzer|lwp-trivial|majestic|Mediatoolkitbot|MegaIndex|MetaURI|MJ12bot|MLBot|NerdByNature|NING|NjuiceBot|Nutch|OpenHoseBot|Panopta|pflab|pirst|PostRank|crawler|ptd-crawler|Purebot|PycURL|Python|QuerySeekerSpider|rogerbot|Ruby|SearchBot|SemrushBot|SISTRIX|SiteBot|Slurp|Sogou|solomono|Soup|spbot|suggybot|Superfeedr|SurveyBot|SWeb|trendictionbot|TSearcher|ttCrawler|TurnitinBot|TweetmemeBot|UnwindFetchor|urllib|uTorrent|Voyager|WBSearchBot|Wget|WordPress|woriobot|Yeti|YottosBot|Zeus|zitebot|ZmEu|Crowsnest|PaperLiBot|peerindex|Twiceler|BTWebClient|Tagoobot|igdeSpyder|Copier|netvampire|Offline|Teleport|WebCopier" [NC] RewriteRule .* - [F,L] </IfModule> - Сохраните изменения.
- Сделайте три проверки настроек:
- Подключитесь к панели ispmanager по SSH.
- Введите команду в терминале:
curl -I http://<имя_сайта>Пример вывода:
HTTP/1.1 200 OK Server: nginx/1.26.3 Date: Tue, 28 Jul 2026 01:55:03 GMT Content-Type: text/html Content-Length: 12129 Connection: keep-alive Last-Modified: Wed, 22 Apr 2026 03:56:12 GMT ETag: "2f61-65004833b5970" Accept-Ranges: bytes Vary: Accept-Encodi- Подключитесь к панели ispmanager по SSH.
- Введите команду в терминале:
curl -I -A "Mozilla/5.0 (compatible; AhrefsBot/7.0; +http://ahrefs.com/robot/)" http://<имя_сайта>Пример вывода:
HTTP/1.1 403 Forbidden Server: nginx/1.26.3 Date: Tue, 28 Jul 2026 01:55:21 GMT Content-Type: text/html Content-Length: 153 Connection: keep-alive- Подключитесь к панели ispmanager по SSH.
- Введите команду в терминале:
curl -I -A "SemrushBot" http://<имя_сайта>Пример вывода:
HTTP/2 403 server: nginx/1.26.3 date: Tue, 28 Jul 2026 01:55:50 GMT content-type: text/html content-length: 153
Через WAF
Если в вашей системе установлен и включен WAF (ModSecurity) для сайтов и пользователей: на уровнях сервера или сайта загрузите конфигурационный файл из внешнего или локального источника. После загрузки в настройках веб-сервера и сайта добавятся правила:
- 100000 — разрешение cURL-запросов
- 100001 Missing User-Agent Blocked и 100002 Empty User-Agent Blocked — блокировка запросов с пустым User-Agent
- 100003 Bad Bot Blocked — блокировка ботов из списка
Для проверки правил:
- Подключитесь к панели ispmanager по SSH.
- В терминале поэтапно используйте пять команд проверки
-
curl -I https://<имя_сайта>Пример выводаHTTP/1.1 200 OK Date: Thu, 13 Aug 2026 12:59:51 GMT Server: Apache/2.4.58 (Ubuntu) Last-Modified: Wed, 13 Aug 2026 12:38:05 GMT ETag: "2f3d-6595d22c3ef0c" Accept-Ranges: bytes content-length: 114 Vary: Accept-Encoding Content-Type: text/html -
curl -I -A "" https://<имя_сайта>Пример выводаHTTP/1.1 403 Forbidden content-type: text/html date: Thu, 13 Aug 2026 13:03:14 GMT content-length: 114 -
curl -I -H "User-Agent:" https://<имя_сайта>Пример выводаHTTP/1.1 403 Forbidden content-type: text/html date: Thu, 13 Aug 2026 13:06:07 GMT content-length: 114 -
curl -I -A "SemrushBot/7.0" https://<имя_сайта>Пример выводаHTTP/1.1 403 Forbidden content-type: text/html date: Thu, 13 Aug 2026 13:08:37 GMT content-length: 114 -
curl -I -A "MyCustomClient/1.0" https://<имя_сайта>Пример выводаHTTP/1.1 200 OK Date: Thu, 13 Aug 2026 13:15:24 GMT Server: Apache/2.4.58 (Ubuntu) Last-Modified: Wed, 13 Aug 2026 12:50:17 GMT ETag: "2f3d-6595d22c3ef0c" Accept-Ranges: bytes content-length: 114 Vary: Accept-Encoding Content-Type: text/html
-
Через Fail2ban
Используйте это решение, если на сервере с Nginx или Apache установлен Fail2ban.
- Авторизуйтесь в ispmanager под учетной записью с правами суперпользователя.
- Перейдите в раздел Конфигурация ПО.
- В списке ПО выберите Fail2ban.
- На панели инструментов нажмите
. - Дождитесь установки программы.
При необходимости настройте Fail2ban.
Для Apache
Решение подходит для LiteSpeed, если веб-сервер использует тот же формат лог-файлов, что и Apache. Настраивайте блокировку ботов только при полной уверенности в своих действиях.
- Создайте файл
apache-badbots.localв директории/etc/fail2ban/jail.d/. Добавьте в него содержимое:[apache-badbots] enabled = true backend = polling logpath = /var/www/httpd-logs/*.access.log maxretry = 2 findtime = 3600 bantime = 1h - Сохраните изменения.
- Затем создайте файл
apache-botsearch.localв той же директории. Добавьте в него содержимое:[apache-botsearch] enabled = true backend = polling logpath = /var/www/httpd-logs/*.error.log maxretry = 2 findtime = 3600 bantime = 1h - Сохраните изменения.
- Перейдите в директорию
/etc/fail2ban/filter.d/. - Отредактируйте или создайте файл
apache-badbots.conf. Дополните в нем секциюbadbotscustomили полностью добавьте содержимое:# Fail2Ban configuration file # # Regexp to catch known spambots and software alike. Please verify # that it is your intent to block IPs which were driven by # above mentioned bots. [Definition] badbotscustom = EmailCollector|WebEMailExtrac|TrackBack/1\.02|sogou music spider|(?:Mozilla/\d+\.\d+ )?Jorgee|SputnikBot|omgili|socialmediascanner|Jooblebot|SeznamBot|Scrapy|CCBot|linkfluence|veoozbot|Leikibot|Seopult|Faraday|hybrid|Go-http-client|SMUrlExpander|SNEXTbot|AhrefsBot|SemrushBot|DotBot|PaloAltoNetworks badbots = Atomic_Email_Hunter/4\.0|atSpider/1\.0|autoemailspider|bwh3_user_agent|China Local Browse 2\.6|ContactBot/0\.2|ContentSmartz|DataCha0s/2\.0|DBrowse 1\.4b|DBrowse 1\.4d|Demo Bot DOT 16b|Demo Bot Z 16b|DSurf15a 01|DSurf15a 71|DSurf15a 81|DSurf15a VA|EBrowse 1\.4b|Educate Search VxB|EmailSiphon|EmailSpider|EmailWolf 1\.00|ESurf15a 15|ExtractorPro|Franklin Locator 1\.8|FSurf15a 01|Full Web Bot 0416B|Full Web Bot 0516B|Full Web Bot 2816B|Guestbook Auto Submitter|Industry Program 1\.0\.x|ISC Systems iRc Search 2\.1|IUPUI Research Bot v 1\.9a|LARBIN-EXPERIMENTAL \(efp@gmx\.net\)|LetsCrawl\.com/1\.0 \+http\://letscrawl\.com/|Lincoln State Web Browser|LMQueueBot/0\.2|LWP\:\:Simple/5\.803|Mac Finder 1\.0\.xx|MFC Foundation Class Library 4\.0|Microsoft URL Control - 6\.00\.8xxx|Missauga Locate 1\.0\.0|Missigua Locator 1\.9|Missouri College Browse|Mizzu Labs 2\.2|Mo College 1\.9|MVAClient|Mozilla/2\.0 \(compatible; NEWT ActiveX; Win32\)|Mozilla/3\.0 \(compatible; Indy Library\)|Mozilla/3\.0 \(compatible; scan4mail \(advanced version\) http\://www\.peterspages\.net/\?scan4mail\)|Mozilla/4\.0 \(compatible; Advanced Email Extractor v2\.xx\)|Mozilla/4\.0 \(compatible; Iplexx Spider/1\.0 http\://www\.iplexx\.at\)|Mozilla/4\.0 \(compatible; MSIE 5\.0; Windows NT; DigExt; DTS Agent|Mozilla/4\.0 efp@gmx\.net|Mozilla/5\.0 \(Version\: xxxx Type\:xx\)|NameOfAgent \(CMS Spider\)|NASA Search 1\.0|Nsauditor/1\.x|PBrowse 1\.4b|PEval 1\.4b|Poirot|Port Huron Labs|Production Bot 0116B|Production Bot 2016B|Production Bot DOT 3016B|Program Shareware 1\.0\.2|PSurf15a 11|PSurf15a 51|PSurf15a VA|psycheclone|RSurf15a 41|RSurf15a 51|RSurf15a 81|searchbot admin@google\.com|ShablastBot 1\.0|snap\.com beta crawler v0|Snapbot/1\.0|Snapbot/1\.0 \(Snap Shots, \+http\://www\.snap\.com\)|sogou develop spider|Sogou Orion spider/3\.0\(\+http\://www\.sogou\.com/docs/help/webmasters\.htm#07\)|sogou spider|Sogou web spider/3\.0\(\+http\://www\.sogou\.com/docs/help/webmasters\.htm#07\)|sohu agent|SSurf15a 11 |TSurf15a 11|Under the Rainbow 2\.2|User-Agent\: Mozilla/4\.0 \(compatible; MSIE 6\.0; Windows NT 5\.1\)|VadixBot|WebVulnCrawl\.unknown/1\.0 libwww-perl/5\.803|Wells Search II|WEP Search 00 failregex = .*<HOST> -.*"(GET|POST|HEAD).*HTTP.*".*"[^"]*(?:%(badbots)s|%(badbotscustom)s)[^"]*".*$ ignoreregex = datepattern = ^[^\[]*\[{DATE}\] {^LN-BEG} - Сохраните изменения.
Далее сделайте проверку новых правил в терминале. Для этого:
- Подключитесь к панели ispmanager по SSH.
- Проверьте корректность настроенного фильтра:
Если синтаксис выражений правильный и боты атаковали сайт, в журнале появятся совпадения с именами ботов. В ином случае нужные записи не отобразятся.fail2ban-regex /var/www/httpd-logs/<имя_сайта>.access.log /etc/fail2ban/filter.d/apache-badbots.conf - Проверьте синтаксис конфигурации Fail2ban:
fail2ban-server -t - Перезагрузите Fail2ban:
fail2ban-client reload - Проверьте статус работы
jail:
В терминале выведется количество лог-файлов в обработке, количество заблокированных IP-адресов и их список.fail2ban-client status apache-badbots - Сделайте общую проверку работы Fail2ban по журналу:
tail -f /var/log/fail2ban.log
Через несколько часов повторно используйте команду из 5 пункта, чтобы спустя время работы правил сверить списки заблокированных IP-адресов.
Для Nginx
- Создайте файл
nginx-badbots.confв директории/etc/fail2ban/filter.d/. Добавьте в него содержимое:[Definition] failregex = ^(?:\S+ )?<HOST> - - \[.*\] "GET .*(wp-login|wp-admin|xmlrpc|setup|config|\.env|\.git|sslvpn).* HTTP/.*" \d{3} ^(?:\S+ )?<HOST> - - \[.*\] ".*" (400|444|403|405|502) ^(?:\S+ )?<HOST> - - \[.*\] ".*" .* "(AhrefsBot|SemrushBot|DotBot|YandexBot|PaloAltoNetworks|omgili|socialmediascanner|Jooblebot|SeznamBot|Scrapy|CCBot|linkfluence|veoozbot|Leikibot|Seopult|Faraday|hybrid|Go-http-client|SMUrlExpander|SNAPSHOT|getintent|ltx71|Nuzzel|SMTBot|Laserlikebot|facebookexternalhit|mfibot|OptimizationCrawler|crazy|Dispatch|ubermetrics|HTMLParser|musobot|filterdb|InfoSeek|omgilibot|DomainSigma|SafeSearch|CommentReader|meanpathbot|statdom|proximic|spredbot|StatOnlineRuBot|openstat|DeuSu|semantic|postano|masscan|Embedly|NewShareCounts|linkdexbot|GrapeshotCrawler|Digincore|NetSeer|help.jp|PaperLiBot|getprismatic|360Spider|Ahrefs|ApacheBench|Aport|Applebot|archive|BaiduBot|Baiduspider|Birubot|BLEXBot|bsalsa|Butterfly|Buzzbot|BuzzSumo|CamontSpider|dataminr|discobot|DomainTools|DotBot|Exabot|Ezooms|FairShare|FeedFetcher|FlaxCrawler|FlightDeckReportsBot|FlipboardProxy|FyberSpider|Gigabot|HTTrack|ia_archiver|InternetSeer|Jakarta|Java|JS-Kit|km.ru|kmSearchBot|Kraken|larbin|libwww|Lightspeedsystems|Linguee|LinkBot|LinkExchanger|LinkpadBot|LivelapBot|LoadImpactPageAnalyzer|lwp-trivial|majestic|Mediatoolkitbot|MegaIndex|MetaURI|MJ12bot|MLBot|NerdByNature|NING|NjuiceBot|Nutch|OpenHoseBot|Panopta|pflab|pirst|PostRank|crawler|ptd-crawler|Purebot|PycURL|Python|QuerySeekerSpider|rogerbot|Ruby|SearchBot|SemrushBot|SISTRIX|SiteBot|Slurp|Sogou|solomono|Soup|spbot|suggybot|Superfeedr|SurveyBot|SWeb|trendictionbot|TSearcher|ttCrawler|TurnitinBot|TweetmemeBot|UnwindFetchor|urllib|uTorrent|Voyager|WBSearchBot|Wget|WordPress|woriobot|Yeti|YottosBot|Zeus|zitebot|ZmEu|Crowsnest|PaperLiBot|peerindex|Twiceler|BTWebClient|Tagoobot|igdeSpyder|Copier|netvampire|Offline|Teleport|WebCopier)" ignoreregex = - Сохраните изменения.
- Перейдите в файл
jail.confдиректории/etc/fail2ban/. В конце файла оставьте одну пустую строку и добавьте секцию для блокировки ботов:#Block bad bots [nginx-badbots] enabled = true port = http,https filter = nginx-badbots logpath = /var/log/nginx/*access.log /var/www/httpd-logs/*access.log maxretry = 5 findtime = 60 bantime = 1h action = iptables-multiport[name=BadBots, port="http,https", protocol=tcp] - Сохраните изменения.
Далее сделайте проверку новых правил в терминале. Для этого:
- Подключитесь к панели ispmanager по SSH.
- Проверьте корректность настроенного фильтра:
Если синтаксис выражений правильный и боты атаковали сайт, в журнале появятся совпадения с именами ботов. В ином случае нужные записи не отобразятся.fail2ban-regex /var/www/httpd-logs/<имя_сайта>.access.log /etc/fail2ban/filter.d/nginx-badbots.conf - Проверьте синтаксис конфигурации Fail2ban:
fail2ban-server -t - Перезагрузите службу:
systemctl restart fail2ban - Проверьте статус работы
jail:
В терминале выведется количество лог-файлов в обработке, количество заблокированных IP-адресов и их список.fail2ban-client status nginx-badbots - Сделайте общую проверку работы Fail2ban по журналу:
tail -f /var/log/fail2ban.log
Через несколько часов повторно используйте команду из 5 пункта, чтобы спустя время работы правил сверить списки заблокированных IP-адресов.