Installieren Sie Fail2ban und verknüpfen Sie es mit SSH und Nginx

failban.jpg

Wenn wir einen Server mit Linux gemountet haben und ihn über die SSH-Fernbedienung vom Internet aus verwalten möchten , kann es vorkommen, dass wir Angriffe mit dem Ziel erhalten, in das System einzudringen und es für seine Zwecke steuern zu können. Diese Angriffe werden in der Regel von Computerprogrammen (Bots) ausgeführt, die lange Zeit versuchen, mit brachialer Gewalt auf das System zuzugreifen.

In früheren Beiträgen habe ich darüber gesprochen, wie man den SSH-Dienst konfiguriert, aber einige fortgeschrittene Bots treten nicht in den Dienst ein, sondern können den SSH-Dienst auf dem Server herunterfahren, indem sie den Fernzugriff deaktivieren.

Vollständiges SSH-Handbuch (Secure Shell)

Wir können dies vermeiden, indem wir das fail2ban-Tool verwenden . Es ist sehr praktisch und bietet einen großen Sicherheitsspielraum. Um seine Funktionsweise ein wenig zu erläutern. Kann iptables vor jedem erfolglosen Anmeldeversuch mehr als fünf Mal hintereinander erstellen und jede Art von Verbindung ablehnen, sobald sie gesperrt ist.

Installieren Sie Fail2ban

Die Installation kann direkt von apt aus erfolgen. Zuerst haben wir das System aktualisiert und dann Fail2ban installiert.

 apt-get update && apt-get -y upgrade 
 apt-get install fail2ban 

Dies installiert nicht nur das Programm, sondern lässt es auch laufen und startet mit dem System.

Fail2ban konfigurieren

Der Fail2ban-Dienst hat seine Einstellungen im Verzeichnis / etc / fail2ban . Sie haben einige Optionen in der jail.conf vorkonfiguriert. In diesem Fall ist es am besten, die Datei zu kopieren und die Änderungen nicht direkt darin vorzunehmen. Wenn Sie fail2ban aktualisieren, werden diese Dateien überschrieben und Sie können alle zuvor vorgenommenen Änderungen verlieren.

In diesem Fall kopieren wir die Datei und geben den Namen jail.local ein, damit Sie sie finden können.

 sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local 

Nach dem Kopieren können wir es öffnen und sehen, wie es funktioniert.

 vim /etc/fail2ban/jail.local 

Innerhalb der Datei haben wir mehrere Parameter, die wir anpassen können. Jeder Parameter, der sich unter dem Tag [DEFAULT] befindet, wird auf alle von Fail2ban aktivierten Dienste wie SSH, NGINX, APACHE angewendet. Diese werden als global bezeichnet. Dann haben wir für jeden Dienst spezifische Abschnitte.

Wir werden beginnen, dem globalen Abschnitt Parameter hinzuzufügen.

 ignoreip = 127.0.0.1 

Wir fügen unseren localhost auf diese Weise hinzu und ignorieren den gesamten lokalen Datenverkehr. Wir können zusätzliche Adressen hinzufügen, indem wir sie durch ein Leerzeichen trennen.

 Bantime = 600 

Die Bantime ist der Zeitraum, in dem der Client gesperrt wird, nachdem er gesperrt wurde. Die Einheit ist in Sekunden, 600 Sekunden wären 10 Minuten der Standardwert.

 findtime = 600 Maxretry = 3 

Dann haben wir Zeit und Maxretry. Sie sind dafür verantwortlich, die Bedingungen festzulegen, unter denen ein Client standardmäßig gesperrt wird. Sie können lesen, dass jeder Benutzer mit mehr als 3 fehlgeschlagenen Versuchen in weniger als 10 Minuten gesperrt wird.

 destemail = root @ localhost sendername = Fail2Ban mta = sendmail 

Wenn wir Benachrichtigungen für die gesperrten Benutzer erstellen möchten, sind diese 3 Parameter erforderlich. Wir definieren das Ziel, an das die Benachrichtigungsmail gesendet werden soll, wer für das Senden verantwortlich ist, und schließlich die MTA, um zu definieren, welchen Mail-Service wir verwenden werden.

 action = $ (action_) s 

Hier legen wir fest, welche Maßnahmen zu ergreifen sind, wenn ein Verbot erforderlich ist. Der Wert action_ ist die Standardaktion, die auf der Zurückweisung des Kundenverkehrs bis zum Ablauf der Sperrzeit basiert.

See also  Installieren Sie den PSP-Emulator auf dem iPhone oder iPad ohne Jailbreak Windows 10

Wenn wir eine Warnung per E-Mail senden möchten, müssen wir den Wert in action_mw ändern. Wenn wir jedoch auch Zeilen des Protokolls in den E-Mail-Text einfügen möchten, verwenden wir action_mwl. Wir müssen sicherstellen, dass die E-Mail-Einstellungen korrekt sind, bevor Sie diesen Wert ändern.

Konfigurationen nach Service

Sobald die globalen Konfigurationen abgeschlossen sind, fügen wir die Parameter hinzu, die ausschließlich auf die angewendet werden

Beim SSH-Dienst haben wir darauf geachtet, die Optionen unter dem Tag [SSH] hinzuzufügen.

 enabled = true 

Standardmäßig ist der SSH-Dienst aktiviert, wir können ihn jedoch bei Bedarf in dieser Option ändern.

Dieser ganze Abschnitt könnte mit den Werten arbeiten, die ich unten erläutere, aber Sie können ihn ändern, um ihn an Ihre Bedürfnisse anzupassen, oder sie alle standardmäßig belassen.

Eine andere Konfiguration sind die Filter, die angeben, ob die Anmeldung korrekt war oder nicht und für andere Dienste hinzugefügt werden können. Wir haben beispielsweise einen Server mit nginx und ein Teil der Seite ist passwortgeschützt, aber ein Client greift mit brachialer Gewalt an Beenden Sie dies, indem Sie Folgendes unter dem Tag [nginx-http-auth] hinzufügen.

 [nginx-http-auth] enabled = true filter = nginx-http-auth port = http, https logpath = /var/log/nginx/error.log 

Wenn ein Benutzer mehr als 3 erfolglose Anmeldeversuche hat, wird dies in den Protokollen widergespiegelt und fail2ban wird aktiv und blockiert den gesamten Benutzerverkehr.

Testumgebung

Nachdem wir die Grundlagen verstanden haben, werden wir eine kleine Testumgebung erstellen, in der wir SSH und Nginx durch Fail2ban schützen und eine Richtlinie zum Sperren erstellen, die uns über die gesperrte IP informiert.

Zuerst installieren wir Nginx, falls es nicht installiert ist

 Apt-Get installieren Nginx 

Wir werden einen Mail-Dienst installieren, über den Benachrichtigungen an sendmail gesendet werden können

 apt-get install sendmail 

Als letztes möchten wir, dass unsere iptables nach einem Boot persistent sind. Wir können entweder ein rc.0-Skript erstellen oder das iptables-persistent-Paket installieren.

 apt-get install iptables-persistent 

Es wird installiert.

Einrichtung unserer Firewall

Nach der Installation müssen wir eine Firewall implementieren, damit Sie den Datenverkehr blockieren können. Ich werde in späteren Einträgen eine grundlegende Firewall erstellen, ich werde mehr über die Iptables sprechen.

See also  Erhalten Sie Besuche auf Ihrer Website mit Twitter Ads

Wir erlauben bestehende Verbindungen, Serververkehr als Updates und Verkehr für SSH- und Nginx-Ports. Der gesamte verbleibende Datenverkehr wird abgelehnt.

 sudo iptables -A INPUT -i lo -j ACCEPT sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED, RELATED -j ACCEPT sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT sudo iptables -A INPUT -j DROP 

Wir können die Änderungen sehen mit:

 iptables -S 

Es sollte ein ähnliches Ergebnis geben.

 -P EINGABE AKZEPTIEREN -P FORWARD ACCEPT -P AUSGABE AKZEPTIEREN -N fail2ban-ssh - EINGABE - p tcp - m Multiport - Ports 22 - j fail2ban-ssh -A INPUT -i lo -j ACCEPT - EINGABE - M CONNTRACK - CTSTATE RELATED, ESTABLISHED - J ACCEPT -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT -EINGABE -p tcp -m tcp --dport 80 -j AKZEPTIEREN -EINGABE -j TROPFEN -A fail2ban-ssh -j RETURN 

Anpassen der Fail2Ban-Einstellungen

Jetzt müssen wir die Datei jail.local nach Belieben konfigurieren.

 vi /etc/fail2ban/jail.local 

Wir können die Zeitspanne, in der ein Benutzer gesperrt ist, um mindestens 30 Minuten verlängern. Denken Sie daran, den Wert in Sekunden anzugeben.

 Bantime = 1800 

Wir müssen eine Mail konfigurieren, die alle Bail-Warnungen von fail2ban empfängt, in der Datei nach dem Wert destemail suchen und die Mail platzieren.

 destemail = [email protected] 

Wir können den Absender ändern, der die übliche Benachrichtigung mit dem Namen fail2ban sendet, damit wir besser zwischen allen Protokollen filtern können.

Nachdem wir den Wert der Aktion ändern müssen, haben wir zwei Möglichkeiten:

  • action_mw: Sende eine Warnung mit einem ähnlichen Bericht an den whois-Befehl des gesperrten Clients.
  • action_mwl: Sendet eine viel detailliertere Warnung, einschließlich eines Protokolls im Hauptteil der Nachricht.
See also  Umgang mit der Farbpalette in Gimp

In diesem Fall verwenden wir die zweite Option:

 action =% (action_mwl) s 

Dann gehen wir zur Sektion [SSH] und wir können die maximale Anzahl von Versuchen vor dem Verbot bearbeiten. Wir lassen es in 5:

 Maxretry = 5 

Wenn wir den SSH-Dienst in einem anderen Port als 22 haben, was sehr zu empfehlen ist, sollten wir dessen Port erwähnen.

 port = 45024 

Dann werden wir nach dem Label [nginx-http-auth] suchen und es so belassen, wie es ist.

 [nginx-http-auth] enabled = true 

Wir haben fertig und können die Datei speichern und schließen.

Neustart des Fail2ban-Dienstes

Ich empfehle, den Dienst zu beenden, damit alle Änderungen übernommen werden.

 Service fail2ban zu stoppen 

Dann können wir sie wieder starten

 service fail2ban start 

Dies wird etwas dauern, nach ca. 5 Minuten können wir unsere Regeln wieder mit sehen

 iptables -S 
 -P EINGABE AKZEPTIEREN -P FORWARD ACCEPT -P AUSGABE AKZEPTIEREN -N fail2ban-nginx-http-auth -N fail2ban-ssh -A INPUT -p tcp -m Multiport --dports 80.443 -j fail2ban-nginx-http-auth - EINGABE - p tcp - m Multiport - Ports 22 - j fail2ban-ssh -A INPUT -i lo -j ACCEPT - EINGABE - M CONNTRACK - CTSTATE RELATED, ESTABLISHED - J ACCEPT -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT -EINGABE -p tcp -m tcp --dport 80 -j AKZEPTIEREN -EINGABE -j TROPFEN -A fail2ban-nginx-http-auth -j RETURN -A fail2ban-ssh -j RETURN 

Wir sehen, wie fail2ban neue Richtlinien hinzugefügt hat, abhängig von der Konfiguration, die Sie in /etc/fail2ban/jail.local definiert haben.

Schlussfolgerungen
Wir haben fail2ban installiert und für die Arbeit mit SSH und NGINX konfiguriert. Im Falle von APACHE müssen wir die Tags und das Verzeichnis der Protokolle ändern, aber es ist sehr ähnlich zu nginx. Wir haben nur die Grundlagen konfiguriert, mit denen Sie Filter erstellen können, und viele weitere Regeln. Ich empfehle, Ihre Manpage ein wenig durchzulesen. Die Konfigurationsdateien sind gut kommentiert. Ich empfehle, nach und nach alle ihre Funktionen zu entdecken.

administrator

Leave a Reply

Your email address will not be published. Required fields are marked *