Der Schutz Ihres Webservers vor verschiedenen Arten von Angriffen ist eine entscheidende Verantwortung für jeden Systemadministrator. ModEvasive ist ein Apache-Webservermodul, das Ihnen hilft, Ihren Webserver im Falle von DoS-, DDoS- und Brute-Force-Angriffen zu schützen. Diese Arten von Angriffen führen dazu, dass dem Server der Arbeitsspeicher ausgeht und Ihre Website abstürzt.
Das mod_evasive-Modul funktioniert, indem es eine Hash-Tabelle von IP-Adressen und URIs erstellt und auf verdächtige eingehende Serveranfragen überwacht, wie zum Beispiel:
- Mehr als 100 gleichzeitige Verbindungen pro Sekunde herstellen.
- Mehrmals pro Sekunde dieselbe Seite anfordern.
Wenn eine solche verdächtige Anfrage auftritt, sendet das Modul mod_evasive einen 403-Fehler und blockiert die IP-Adresse.
In diesem Tutorial zeigen wir Ihnen, wie Sie mod_evasive mit Apache auf einem Ubuntu 18.04-Server installieren und konfigurieren.
Voraussetzungen
- Ein frisches Ubuntu 18.04 VPS auf der Atlantic.Net Cloud Platform.
- Eine statische IP-Adresse, die auf Ihrem Server konfiguriert ist.
Schritt 1 – Atlantic.Net Cloud-Server erstellen
Melden Sie sich zunächst bei Ihrem Atlantic.Net Cloud Server an. Erstellen Sie einen neuen Server und wählen Sie Ubuntu 18.04 als Betriebssystem mit mindestens 1 GB RAM. Stellen Sie über SSH eine Verbindung zu Ihrem Cloud-Server her und melden Sie sich mit den oben auf der Seite hervorgehobenen Anmeldeinformationen an.
Sobald Sie sich bei Ihrem Ubuntu 18.04-Server angemeldet haben, führen Sie den folgenden Befehl aus, um Ihr Basissystem mit den neuesten verfügbaren Paketen zu aktualisieren.
apt-get update -y
Schritt 2 – Installiere mod_evasive
Bevor Sie beginnen, muss der Apache-Webserver auf Ihrem Server installiert werden. Wenn es nicht installiert ist, können Sie es mit dem folgenden Befehl installieren:
apt-get install apache2 apache2-utils -y
Sobald der Apache-Webserver installiert ist, können Sie mod_evasive mit dem folgenden Befehl installieren:
apt-get install libapache2-mod-evasive -y
Während der Installation werden Sie aufgefordert, einen Postfix-Mailserver für die E-Mail-Benachrichtigung zu konfigurieren. Sie können die gewünschte Option auswählen, um die Installation abzuschließen. Wenn Sie sich nicht sicher sind, wählen Sie einfach Nur lokal aus oder keine Konfiguration .
Nach der Installation von mod_evasive können Sie überprüfen, ob das Modul mod_evasive aktiviert ist, indem Sie den folgenden Befehl ausführen:
apachectl -M | grep evasive
Sie sollten die folgende Ausgabe erhalten:
[Mon Jan 27 13:55:35.707317 2020] [so:warn] [pid 29031] AH01574: module dav_module is already loaded, skipping evasive20_module (shared)
An diesem Punkt ist das Modul mod_evasive installiert und aktiviert. Sie können jetzt mit dem nächsten Schritt fortfahren.
Schritt 3 – mod_evasive konfigurieren
Die Standardkonfigurationsdatei von mod_evasive befindet sich unter /etc/apache2/mods-enabled/evasive.conf. Sie müssen diese Datei gemäß Ihren Anforderungen konfigurieren.
Sie können diese Datei wie unten gezeigt mit dem Nano-Editor öffnen:
nano /etc/apache2/mods-enabled/evasive.conf
Ändern Sie die Datei wie unten gezeigt. Wir empfehlen, DOSEmailNotify an die Adresse zu ändern, an die die E-Mail gesendet werden soll (falls konfiguriert) und DOSSystemCommand – zum Beispiel „su – richard -c ‘/sbin… %s …’“
<IfModule mod_evasive20.c> DOSHashTableSize 3097 DOSPageCount 2 DOSSiteCount 50 DOSPageInterval 1 DOSSiteInterval 1 DOSBlockingPeriod 100 DOSEmailNotify [email protected] DOSSystemCommand "su - someuser -c '/sbin/... %s ...'" DOSLogDir "/var/log/mod_evasive" </IfModule>
Speichern und schließen Sie die Datei, wenn Sie fertig sind.
Eine kurze Erklärung jeder Option finden Sie unten:
- DOSHashTableSize :mod_evasive verwendet diese Option, um die Hash-Tabellengröße zu steuern. Es wird empfohlen, dies zu erhöhen, wenn Sie einen ausgelasteten Webserver haben.
- DOSPageCount :Diese Option gibt den Schwellenwert für die Anzahl der zulässigen Anfragen an denselben URI pro Sekunde an. Sobald der Schwellenwert überschritten wurde, wird die IP-Adresse des Clients auf die schwarze Liste gesetzt.
- DOSSiteCount :Diese Option gibt die Grenze für die Gesamtzahl der zulässigen Anfragen an dieselbe IP-Adresse an.
- DOSPageInterval :Diese Option gibt das Seitenzählintervall an.
- DOSSiteInterval :Diese Option gibt das Site-Zählintervall an.
- DOSBlockingPeriode :Diese Option definiert die Zeitspanne in Sekunden, die ein Client blockiert wird.
- DOSEmailNotify :Diese Option sendet eine E-Mail an die angegebene Adresse, wenn eine IP-Adresse auf die schwarze Liste gesetzt wurde.
- DOSSystemCommand :Immer wenn eine IP-Adresse auf die schwarze Liste gesetzt wurde, wird der angegebene Systembefehl ausgeführt.
- DOSLogDir :Diese Option definiert das Protokollverzeichnis von mod_evasive.
Erstellen Sie als Nächstes ein Verzeichnis zum Speichern des mod_evasive-Protokolls und ändern Sie seinen Besitz mit dem folgenden Befehl in www-data:
mkdir /var/log/mod_evasive chown -R www-data:www-data /var/log/mod_evasive
Starten Sie abschließend den Apache-Dienst neu, um die Änderungen zu implementieren:
systemctl restart apache2
Schritt 4 – mod_evasive testen
An dieser Stelle wird das Modul mod_evasive installiert und konfiguriert. Es ist an der Zeit zu testen, ob das Modul richtig funktioniert.
Gehen Sie zum Remote-System und senden Sie mit dem ab-Befehl eine Bulk-Page-Anfrage an den Server:
ab -n 1000 -c 20 http://your-server-ip/
Dieser Befehl verursacht das Äquivalent eines DoS-Angriffs, indem er 1000 Seitenanforderungen in 10 gleichzeitigen Verbindungen sendet.
Überprüfen Sie auf dem Server das E-Mail-Protokoll, indem Sie den folgenden Befehl ausführen:
tail -15 /var/mail/root
Sie sollten sehen, dass die Client-IP-Adresse von mod_evasive auf die schwarze Liste gesetzt wurde:
Received: by ubuntu1804 (Postfix, from userid 33) id B0C3EC1753; Mon, 27 Jan 2020 14:15:09 +0000 (UTC) To: [email protected] MIME-Version: 1.0 Content-Type: text/plain; charset="ANSI_X3.4-1968" Content-Transfer-Encoding: 8bit Message-Id: <[email protected]> Date: Mon, 27 Jan 2020 14:15:09 +0000 (UTC) From: www-data <[email protected]> To: [email protected] Subject: HTTP BLACKLIST 103.250.161.100 mod_evasive HTTP Blacklisted 103.250.161.100
Sie können mod_evasive auch mit dem eingebauten Skript test.pl testen. Sie müssen dieses Skript ändern, damit es funktioniert.
Sie können das Skript wie folgt bearbeiten:
nano /usr/share/doc/libapache2-mod-evasive/examples/test.pl
Suchen Sie die folgende Zeile:
print $SOCKET "GET /?$_ HTTP/1.0\n\n";
Ersetzen Sie es durch Folgendes:
print $SOCKET "GET /?$_ HTTP/1.0\r\nHost: 127.0.0.1\r\n\r\n";
Speichern und schließen Sie die Datei, wenn Sie fertig sind. Führen Sie dann das Skript mit dem Perl-Befehl aus:
perl /usr/share/doc/libapache2-mod-evasive/examples/test.pl
Wenn alles korrekt funktioniert, sollten Sie die folgende Ausgabe erhalten:
HTTP/1.1 403 Forbidden HTTP/1.1 403 Forbidden HTTP/1.1 403 Forbidden HTTP/1.1 403 Forbidden HTTP/1.1 403 Forbidden HTTP/1.1 403 Forbidden HTTP/1.1 403 Forbidden HTTP/1.1 403 Forbidden HTTP/1.1 403 Forbidden HTTP/1.1 403 Forbidden HTTP/1.1 403 Forbidden HTTP/1.1 403 Forbidden HTTP/1.1 403 Forbidden HTTP/1.1 403 Forbidden HTTP/1.1 403 Forbidden HTTP/1.1 403 Forbidden
Schlussfolgerung
Herzliche Glückwünsche! Das Modul mod_evasive ist jetzt so konfiguriert, dass es Ihren Server vor DDoS- und Brute-Force-Angriffen schützt.