/
/
Методы блокирования ботов

Методы блокирования ботов

Чтобы уменьшить нагрузку на сервер, сканирование уязвимостей извне и ограничить другие автоматические запросы, используйте предложенные нами решения для блокирования ботов через веб-серверы Apache и Nginx, через веб-приложение WAF или сервис Fail2ban.

Способы блокирования ботов

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

  1. Авторизуйтесь в ispmanager под учетной записью с правами суперпользователя.
  2. Выберите подходящее решение для настройки:

Через Nginx

На системах с установленным веб-сервером Nginx:

  1. Перейдите в раздел Сайты.
  2. В списке выберите нужный сайт.
  3. На панели инструментов нажмите Конфиг.файлы.
  4. В блоке Конфигурационный файл 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; 
    }
    
  5. В том же файле укажите или дополните две секции server { ... } (для HTTP и HTTPS) содержимым:
        # Проверка запроса и вывод ошибки 403
      if ($block_request = 1) {
          return 403;
      }
    
  6. Сохраните изменения.
  7. Сделайте три проверки настроек:
    1. Подключитесь к серверу с панелью ispmanager по SSH.
    2. Введите команду в терминале:
    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
    
    1. Подключитесь к серверу с панелью ispmanager по SSH.
    2. Введите команду в терминале:
    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
    
    1. Подключитесь к серверу с панелью ispmanager по SSH.
    2. Введите команду в терминале:
    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 и использует его конфигурации.

В конфигурациях сайта

  1. Перейдите в раздел Сайты.
  2. В списке выберите нужный сайт.
  3. На панели инструментов нажмите Конфиг.файлы.
  4. В блоке Конфигурационный файл 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>
    
  5. В том же файле найдите секцию <Directory> ... </Directory>. Внутрь секции вставьте содержимое:
    <IfModule mod_authz_core.c>
    	<RequireAll>
    		Require all granted
    		Require not env bad_bot
    	</RequireAll>
    </IfModule>
    
  6. Сохраните изменения.
  7. Сделайте три проверки настроек:
    1. Подключитесь к панели ispmanager по SSH.
    2. Введите команду в терминале:
    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
    
    1. Подключитесь к панели ispmanager по SSH.
    2. Введите команду в терминале:
    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
    
    1. Подключитесь к панели ispmanager по SSH.
    2. Введите команду в терминале:
    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 сайта

  1. Перейдите в раздел Сайты.
  2. В списке выберите нужный сайт.
  3. На панели инструментов нажмите Файлы сайта.
  4. Создайте или откройте существующий файл .htaccess.
  5. С первой строки перед содержимым файла (если есть) вставьте фрагмент:
    <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>
    
  6. Сохраните изменения.
  7. Сделайте три проверки настроек:
    1. Подключитесь к панели ispmanager по SSH.
    2. Введите команду в терминале:
    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
    
    1. Подключитесь к панели ispmanager по SSH.
    2. Введите команду в терминале:
    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
    
    1. Подключитесь к панели ispmanager по SSH.
    2. Введите команду в терминале:
    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 — блокировка ботов из списка

Для проверки правил:

  1. Подключитесь к панели ispmanager по SSH.
  2. В терминале поэтапно используйте пять команд проверки
    • 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.

Если Fail2ban не установлен:
  1. Авторизуйтесь в ispmanager под учетной записью с правами суперпользователя.
  2. Перейдите в раздел Конфигурация ПО.
  3. В списке ПО выберите Fail2ban.
  4. На панели инструментов нажмите .
  5. Дождитесь установки программы.

При необходимости настройте Fail2ban.

Для Apache

Решение подходит для LiteSpeed, если веб-сервер использует тот же формат лог-файлов, что и Apache. Настраивайте блокировку ботов только при полной уверенности в своих действиях.

  1. Создайте файл 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
    
  2. Сохраните изменения.
  3. Затем создайте файл apache-botsearch.local в той же директории. Добавьте в него содержимое:
    [apache-botsearch]
    enabled = true
    backend = polling
    logpath = /var/www/httpd-logs/*.error.log
    maxretry = 2
    findtime = 3600
    bantime = 1h
    
  4. Сохраните изменения.
  5. Перейдите в директорию /etc/fail2ban/filter.d/.
  6. Отредактируйте или создайте файл 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&#44; \+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}
    
  7. Сохраните изменения.

Далее сделайте проверку новых правил в терминале. Для этого:

  1. Подключитесь к панели ispmanager по SSH.
  2. Проверьте корректность настроенного фильтра:
    fail2ban-regex /var/www/httpd-logs/<имя_сайта>.access.log /etc/fail2ban/filter.d/apache-badbots.conf
    
    Если синтаксис выражений правильный и боты атаковали сайт, в журнале появятся совпадения с именами ботов. В ином случае нужные записи не отобразятся.
  3. Проверьте синтаксис конфигурации Fail2ban:
    fail2ban-server -t
    
  4. Перезагрузите Fail2ban:
    fail2ban-client reload
    
  5. Проверьте статус работы jail:
    fail2ban-client status apache-badbots
    
    В терминале выведется количество лог-файлов в обработке, количество заблокированных IP-адресов и их список.
  6. Сделайте общую проверку работы Fail2ban по журналу:
    tail -f /var/log/fail2ban.log
    

Через несколько часов повторно используйте команду из 5 пункта, чтобы спустя время работы правил сверить списки заблокированных IP-адресов.

Для Nginx

  1. Создайте файл 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 =
    
  2. Сохраните изменения.
  3. Перейдите в файл 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]
    
  4. Сохраните изменения.

Далее сделайте проверку новых правил в терминале. Для этого:

  1. Подключитесь к панели ispmanager по SSH.
  2. Проверьте корректность настроенного фильтра:
    fail2ban-regex /var/www/httpd-logs/<имя_сайта>.access.log /etc/fail2ban/filter.d/nginx-badbots.conf
    
    Если синтаксис выражений правильный и боты атаковали сайт, в журнале появятся совпадения с именами ботов. В ином случае нужные записи не отобразятся.
  3. Проверьте синтаксис конфигурации Fail2ban:
    fail2ban-server -t
    
  4. Перезагрузите службу:
    systemctl restart fail2ban
    
  5. Проверьте статус работы jail:
    fail2ban-client status nginx-badbots
    
    В терминале выведется количество лог-файлов в обработке, количество заблокированных IP-адресов и их список.
  6. Сделайте общую проверку работы Fail2ban по журналу:
    tail -f /var/log/fail2ban.log
    

Через несколько часов повторно используйте команду из 5 пункта, чтобы спустя время работы правил сверить списки заблокированных IP-адресов.