Bad Bots aussperren mit Nginx

Lesedauer 2 Minuten
5
(2)

Wenn man seinen Server absichern möchte, will man auch seine Webseiten absichern. Um das umzusetzen, habe ich kurz das Internet bemüht und folgende schlichte Anleitung gefunden.

Folgende Anleitung habe ich gefunden von Sergej Müller. Hier beschreibt er, wie man sogenannte Badbots aussperren kann. Github

Im ersten Schritt wird eine Map Datei angelegt, wo alle Bots definiert werden. Diese kann natürlich jederzeit erweitert werden.

sudo vi /etc/nginx/conf.d/bots.map
map $http_user_agent $is_bot {
    default 0;

    ~Sogou 1;
    ~Abonti 1;
    ~Pixray 1;
    ~Python 1;
    ~Spinn3r 1;
    ~libwww-perl 1;
    ~Wget 1;
    ~Curl 1;
    ~Ezooms 1;
    ~mShots 1;
    ~SemrushBot 1;
    ~Exabot 1;
    ~ZmEu 1;
    ~iCjobs 1;
    ~QuerySeekerSpider 1;
    ~Baiduspider 1;
    ~AhrefsBot 1;
    ~CareerBot 1;
    ~coccoc 1;
    ~MJ12bot 1;
    ~SeznamBot 1;
    ~spbot 1;
    ~ShowyouBot 1;
    ~adressendeutschland 1;
    ~PagesInventory 1;
    ~aboutWebSearch 1;
    ~Java 1;
    ~JCE 1;
    ~bitlybot 1;
    ~WeSEE 1;
    ~updown_tester 1;
    ~200PleaseBot 1;
    ~Nutch 1;
    ~HTTP_Request 1;
    ~AnyOther 1;
    ~Crawler 1;
    ~BLEXBot 1;
    ~yacybot 1;
    ~Cliqzbot 1;
}

Anschließend muss Nginx mitgeteilt werden welche Bots ausgeschlossen werden sollen. Das geht so; innerhalb des Serverblocks wird die Dateien, die oben bearbeitet wurde, angegeben:

sudo vi /etc/nginx/nginx.conf
 server { 
 
 [...]
 
 # load configs
        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;
        include /etc/nginx/conf.d/bots.map;
 }

Dann wird die Konfiguration der Webseite angepasst. Dies muss natürlich mit jeder Webseite geschehen die vor Badbots geschützt werden soll.

sudo vi /etc/nginx/sites-available/domain.tld.conf
server {
    ###

    if ( $is_bot ) {
        return 444;
    }
}

Damit werden alle Badbots lokalisiert und mit dem Error Code 444 versehen und vom Server abgewiesen. Mit Fail2ban können diese dann gänzlich vom Server ausgeschlossen werden.
Dazu wird ein Filter angelegt.

sudo vi /etc/fail2ban/filter.d/nginx-bots.conf
# Fail2Ban configuration file
#
# List of bad requests
#
# Server: Nginx
# Author: Sergej Müller
#

[Definition]

# Option:  failregex
# Notes :  Detection of 444 requests.
# Values:  TEXT
#

failregex = ^<HOST> - .+ 444 0 ".+"$

# Option:  ignoreregex
# Notes :  Regex to ignore.
# Values:  TEXT
#

ignoreregex =

Und ein entsprechendes Jail, damit Fail2ban weiß, wo es nach den Fehler-Codes schauen soll.

sudo vi /etc/fail2ban/jail.local
[nginx-bots]

enabled  = true
port = http
filter = nginx-bots
logpath = /var/log/nginx/access.log
maxretry = 0
findtime = 86400
bantime  = -1

anschließend alles neu  starten

sudo nginx -t && sudo service nginx reload
sudo service fail2ban restart

Alternative

Ich habe eine weitere Möglichkeit entdeckt, wie man einen Bad-Bot Filter einrichten kann. Die Anleitung ist umfassend, aber auf Englisch.

Quelle: github

Wie fandest du den Post?

Auf einen Stern klicken zum bewerten

durchschnittlich 5 / 5. bereits abgestimmt haben: 2

Keine Bewertungen bisher, sei der erste

As you found this post useful...

Follow us on social media!

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?

Schreibe einen Kommentar

Consent Management Platform von Real Cookie Banner
0 Shares
Share via
Copy link
Powered by Social Snap