Online-Dienste, bei denen der Benutzer einen Benutzernamen und ein Passwort angeben muss, können zu einem leichten Ziel für Internet-Bots oder Personen werden, die versuchen, in das System einzudringen. . Dies ist normalerweise ein Wörterbuchangriff. Der Angreifer überschwemmt den Server mit Anmeldeversuchen bei einem bestimmten Dienst, indem er Passwörter aus einem Wörterbuch häufig verwendeter Passwörter abruft. Daher ist es wichtig, Passwörter zu verwenden, die aus zufälligen alphanumerischen Zeichen und Sonderzeichen bestehen.
Um den Angreifer vom System fernzuhalten, erstellt man am besten eine entsprechende Regel auf der Firewall. Erfolgt der Angriff über ein Botnetz, ist es nahezu unmöglich, Sperrregeln manuell einzugeben. Deshalb kommt uns das Fail2Ban-Programm zu Hilfe.
Unter Ubuntu/Debian installieren Sie es mit dem Befehl:
$ sudo apt-get install fail2ban
Auf Fedora
$ sudo dnf install fail2ban
Auf Centos/Redhat müssen wir das Fedora-Repository im Voraus hinzufügen, um Fail2Ban installieren zu können.
$ rpm -Uvh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-1.noarch.rpm
$ lecker, Check-Update
$ yum install fail2ban
Die oben genannten Befehle installieren einen Server und einen Client, die zum Anzeigen des Fail2Ban-Status und zum Vornehmen von Änderungen im laufenden Betrieb verwendet werden.
Die Fail2Ban-Konfiguration ist auf viele verschiedene Konfigurationsdateien verteilt. Die Hauptdatei /etc/fail2ban/fail2ban.conf enthält den Ort, an dem Protokolle des Programms gespeichert werden sollen, die Protokollierungsstufe und den Ort, an dem die PID- und Socket-Dateien gespeichert werden.
Das Verzeichnis /etc/fail2ban/action.d enthält Konfigurationsdateien, die die Aktionen angeben, die ausgeführt werden sollen, wenn eine fehlgeschlagene Anmeldung erkannt wird. Es gibt bereits vordefinierte Konfigurationen für iptables und seine verschiedenen Overlays (Shorewall, APF, BSD-ipfw, OSX-Firewall). Es ist auch möglich, E-Mail-Benachrichtigungen über einen fehlerhaften Anmeldeversuch und eine Sperrung der IP-Adresse zu versenden.
Das Verzeichnis /etc/fail2ban/filter.d enthält Dateien, die für die Suche nach Informationen zu Anmeldeversuchen in System- und Anwendungsprotokollen verantwortlich sind. Sie basieren auf übereinstimmenden regulären Ausdrücken in Protokollen. Wie bei den Aktionsdateien gibt es auch hier vorgefertigte Filter, die für Dienste wie SSH, Apache, Asterisk, verschiedene FTP-Daemons, Mail oder Webanwendungen (Roundcube) verwendet werden können. Ihre Syntax ist recht einfach und ermöglicht es uns, eigene Filter zu schreiben.
In der Datei /etc/fail2ban/jail.conf können wir einzelne Aktionen und Filter aktivieren und das Verhalten von Fail2Ban konfigurieren. Mit dem Parameter „ignoreip“ können wir entscheiden, welche IP-Adressen von Fail2Ban ignoriert werden sollen. Standardmäßig ist es nur 127.0.0.1. Der Parameter bantime gibt die Anzahl der Sekunden an, für die ein verdächtiger Host blockiert wird. Wenn wir berechtigten Benutzern, die versehentlich das falsche Passwort eingegeben haben, mehrere Anmeldeversuche ermöglichen möchten, nutzen wir die Optionen maxretry und findtime . Der erste bestimmt die Anzahl der Versuche, bevor der Host blockiert wird, und der zweite bestimmt die Zeit, die für die Untersuchung nachfolgender fehlgeschlagener Anmeldeversuche benötigt wird. Die Standardwerte sind maxretry=3 und findtime=600 , d. h. bei 3 falschen Anmeldeversuchen innerhalb von 10 Minuten wird der Host blockiert.
Die Option destemail gibt die E-Mail-Adresse für Benachrichtigungen an und sendername gibt den Namen des Absenders gesendeter Benachrichtigungen an. Sie sind nützlich, wenn wir E-Mail-Client-Regeln so konfigurieren möchten, dass Benachrichtigungen an die entsprechenden Ordner gesendet werden.
Die Standardaktion besteht darin, die IP-Adresse über den Befehl iptables zu blockieren. Wenn wir es ändern möchten, setzen wir den Banaction- Parameter . Es entspricht den Dateinamen im Verzeichnis /etc/fail2ban/action.d.
Die Datei /etc/fail2ban/jail.conf kann durch ein Systemupdate geändert werden, daher empfehlen die Autoren, eine Kopie davon in die Datei /etc/fail2ban/jail.local zu erstellen.
$ cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Um die Erkennung verdächtiger Aktionen in einem bestimmten Dienst, z. B. SSH, zu ermöglichen, suchen wir den Abschnitt, der für einen bestimmten Dienst verantwortlich ist.
[ssh]
aktiviert = wahr
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 6
Die aktivierte Option gibt an, ob der Dienst überwacht werden soll. Der Port- Parameter gibt die TCP-Portnummer an (die Portnummer wird aus /etc/services übernommen). Filter wiederum gibt den Namen der Filterdatei an, die sich im Verzeichnis /etc/fail2ban/filter.d befindet. Logpath ist natürlich der Zugriffspfad auf die System- oder Anwendungsprotokolldatei, die auf verdächtiges Verhalten untersucht werden soll.
Die Service-Watch-Konfiguration kann allgemeine Einstellungen außer Kraft setzen. Wir können die Anzahl der erlaubten Anmeldeversuche über die Option maxretry ändern oder die von Fail2Ban durchgeführte Aktion ändern. Auf diese Weise können wir Fail2Ban so konfigurieren, dass es Verbindungen nicht blockiert, sondern Benachrichtigungen über fehlgeschlagene Versuche sendet.
Eine interessante Konfigurationsoption ist die Rückfalloption.
[wiederkehrend]
aktiviert = wahr
Filter = rezidivierend
logpath = /var/log/fail2ban.log
action = iptables-allports[name=recidive]
sendmail-whois-lines[name=recidive, logpath=/var/log/fail2ban.log]
Bantime = 604800 ; 1 Woche
findtime = 86400 ; 1 Tag
maxretry = 5
Fail2Ban überwacht sein eigenes Protokoll und wenn Fail2Ban 5 Aktionen ausgeführt hat, wird der Host eine Woche lang blockiert.
Der Fail2Ban-Status kann über das Client-Programm eingesehen werden.
$fail2ban-clientstatus
Status
|- Anzahl der Gefängnisse: 3
`- Gefängnisliste: Apache, SSH, SSH-DDos
Wenn wir den Status eines bestimmten Dienstes anzeigen möchten, geben Sie den Befehl ein:
$ fail2ban-client ssh-status
Status für das Gefängnis: ssh
|-Filter
| |- Dateiliste: /var/log/auth.log
| |- Derzeit fehlgeschlagen: 1
| `- Insgesamt fehlgeschlagen: 7
`- Aktion
|- Derzeit verboten: 1
| `- IP-Liste: 62.244.147.78
`- Insgesamt gesperrt: 1
Manchmal kann es vorkommen, dass ein Benutzer, der einfach sein Passwort vergessen und mehrmals das falsche eingegeben hat, gesperrt wird. In diesem Fall verwenden wir den Client auch zum Entsperren des Hosts.
$ fail2ban-client set ssh unbanip 62.244.147.78
Dank des modularen Aufbaus von Fail2Ban können wir neue Filter und Aktionen hinzufügen. Ein gutes Beispiel ist das Plugin wp-fail2ban, das wir unter https://wordpress.org/plugins/wp-fail2ban/ herunterladen können .
Wir kopieren die Datei wp-fail2ban.php in das Verzeichnis (WordPress-Hauptverzeichnis)/wp-content/plugins/wp-fail2ban/. Wir aktivieren das Plugin im WordPress-Dashboard.
![WordPress-Plugins](https://www.support-online.at/wp-content/uploads/2020/11/6009_1-fail2ban.png)
Kopieren Sie die Datei wordpress.conf in das Filterverzeichnis /etc/fail2ban/filter.d/
Dann fügen wir in der Datei /etc/fail2ban/jail.local die folgenden Zeilen hinzu:
[wordpress]
aktiviert = wahr
Filter = WordPress
logpath = /var/log/auth.log
maxretry = 3
Nach drei fehlerhaften Anmeldeversuchen am WordPress-Dashboard wird der Host gesperrt.
Fail2Ban schützt nicht nur vor Versuchen, Passwörter zu erraten, sondern auch vor DDoS-Angriffen. Indem wir verdächtigen Netzwerkverkehr blockieren, sparen wir Rechenleistung und Speicher. Mit Ihrer eigenen Aktionsprotokolldatei können Sie Bedrohungen leicht erkennen. Wie sichert man eine Website? Durch den modularen Aufbau und die Möglichkeit, reguläre Ausdrücke in Filtern zu verwenden, können wir eigene Filter erstellen, z.B. für Online-Shops oder Content-Management-Systeme.
Unser Unternehmen kümmert sich seit 2002 um die technologische Entwicklung und die Sicherheit unserer Kunden. Wir bieten umfassende IT-Dienstleistungen basierend auf langjähriger Erfahrung und Wissen. Wir führen ein Sicherheitsaudit durch und schlagen eine individuelle Lösung für Ihr Unternehmen vor. IT-Support ist unsere Spezialität!
Marcin Kukiełka
Marcin Giziński
Leiter der Vertriebsabteilung bei Support Online
Marcin Giziński
Vertriebsabteilungsleiter bei Support Online