Prawidłowym sposobem radzenia sobie z irytującymi botami jest zablokowanie ich w pliku „robots.txt”. Ale twoje komentarze wskazują, że ignorują tę dyrektywę. Blokowanie przez użytkownika użytkownika będzie ostatecznie grą w kotka i myszkę, ale jeśli chcesz to zrobić, musisz wykonać następujące czynności.
Musisz więc włączyć więzienie apache-badbots, które czyta dziennik dostępu Apache, jeśli jeszcze tego nie zrobiłeś. Utwórz plik /etc/fail2ban/jail.d/apache-badbots.local
z zawartością:
[apache-badbots]
enabled = true
Główna część więzienia apache-badbots jest zdefiniowana, /etc/fail2ban/jail.conf
więc wszystko, co musisz zrobić, to włączyć ją.
Następnie zmodyfikuj filtr apache-badbots, aby uwzględnić boty. Edit /etc/fail2ban/filter.d/apache-badbots.conf
. W nim jest szczególna linia dla niestandardowych botów:
badbotscustom = EmailCollector|WebEMailExtrac|TrackBack/1\.02|sogou music spider
Boty są określane za pomocą wyrażeń regularnych. Wymień je lub sczep swoje na końcu oddzielone |
s.
badbotscustom = EmailCollector|WebEMailExtrac|TrackBack/1\.02|sogou music spider|BLEXBot|ltx71|DotBot|Barkrowler
# OR
badbotscustom = BLEXBot|ltx71|DotBot|Barkrowler
Następnie będziesz chciał zmodyfikować failregex
linię, aby wyrażenie regularne pasowało do dowolnej części agenta użytkownika, a nie tylko do całości. Zmień linię:
failregex = ^<HOST> -.*"(GET|POST).*HTTP.*"(?:%(badbots)s|%(badbotscustom)s)"$
do (zwróć uwagę na dwa dodatkowe .*
):
failregex = ^<HOST> -.*"(GET|POST).*HTTP.*".*(?:%(badbots)s|%(badbotscustom)s).*"$
Na koniec załaduj ponownie konfiguracje fail2ban.
sudo fail2ban-client reload
Informacje te mogą być pomocne w celach informacyjnych.
Patrząc /etc/fail2ban/filter.d/apache-badbots.conf
na aktualizację serwera Ubuntu 16.04, który mam, wygląda na przestarzały. W szczególności jest ten komentarz:
# DEV Notes:
# List of bad bots fetched from http://www.user-agents.org
# Generated on Thu Nov 7 14:23:35 PST 2013 by files/gen_badbots.
Wygenerowałem nowy z repozytorium git fail2ban , ale nadal nie zawierał tych botów (być może źródło jest nieaktualne lub niekompletne). Jeśli jesteś ciekawy, możesz wygenerować nowy z następującymi.
git clone https://github.com/fail2ban/fail2ban
cd fail2ban/
./files/gen_badbots
Nowy plik będzie dostępny pod adresem config/filter.d/apache-badbots.conf
. Jeśli chcesz go użyć, zastąp /etc/fail2ban/filter.d/apache-badbots.conf
go.
Dla porównania jest to definicja apache-badbots z /etc/fail2ban/jail.conf
.
[apache-badbots]
# Ban hosts which agent identifies spammer robots crawling the web
# for email addresses. The mail outputs are buffered.
port = http,https
logpath = %(apache_access_log)s
bantime = 172800
maxretry = 1
%(apache_access_log)s
Zmienna pochodzi /etc/fail2ban/paths-debian.conf
i jest zdefiniowany jako /var/log/apache2/*access.log
.
Dla odniesienia, oto to, apache-badbots.conf
które wygenerowałem (bez modyfikacji).
# 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
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|8484 Boston Project v 1\.0|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|8484 Boston Project v 1\.0|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|8484 Boston Project v 1\.0|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|8484 Boston Project v 1\.0|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
failregex = ^<HOST> -.*"(GET|POST).*HTTP.*"(?:%(badbots)s|%(badbotscustom)s)"$
ignoreregex =
# DEV Notes:
# List of bad bots fetched from http://www.user-agents.org
# Generated on Sat Feb 9 12:59:57 EST 2019 by ./files/gen_badbots.
#
# Author: Yaroslav Halchenko
Disallow
wyjdzie na nie dyrektywa. ltx71 ignoruje plik robots.txt i musiałem zablokować wszystkie ich adresy IP (w tym czasie: 54.174.24.200, 54.175.147.90, 54.175.196.96) za pomocą (w moim przypadku) reguł iptables.