So installierst und konfigurierst du Fail2ban unter Alma Linux 8
Fail2ban ist ein freies und quelloffenes Intrusion Prevention System, das in Python geschrieben wurde. Es dient dazu, dein System vor Brute-Force-Angriffen zu schützen. Es überwacht die SSH-Logdateien (und andere) kontinuierlich auf Authentifizierungsversuche. Nach einer bestimmten Anzahl falscher Passwortversuche wird die IP-Adresse des Clients von Fail2Ban gesperrt. Fail2Ban kann zur Absicherung verschiedener Dienste wie SSH, vsftpd, Apache und Webmin verwendet werden.
In dieser Anleitung zeige ich dir, wie du die Fail2Ban Firewall auf Alma Linux 8 installierst.
Voraussetzungen
- Ein Server, auf dem Alma Linux 8 läuft.
- Ein Root-Passwort ist auf dem Server konfiguriert.
Überprüfe die Installation von Firewalld
Standardmäßig ist das Firewalld-Paket auf Alma Linux 8 vorinstalliert. Zuerst musst du überprüfen, ob es läuft oder nicht. Das kannst du mit dem folgenden Befehl überprüfen:
systemctl status firewalld
Wenn firewalld nicht läuft, erhältst du die folgende Ausgabe:
? firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: inactive (dead) Docs: man:firewalld(1)
Starte nun den firewalld-Dienst mit folgendem Befehl:
systemctl start firewalld
Du kannst den Status von firewalld mit dem folgenden Befehl überprüfen:
systemctl status firewalld
Du solltest die folgende Ausgabe sehen:
? firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: active (running) since Sat 2022-02-19 08:57:14 UTC; 40s ago Docs: man:firewalld(1) Main PID: 7214 (firewalld) Tasks: 2 (limit: 23696) Memory: 27.9M CGroup: /system.slice/firewalld.service ??7214 /usr/libexec/platform-python -s /usr/sbin/firewalld --nofork --nopid Feb 19 08:57:14 linux systemd[1]: Starting firewalld - dynamic firewall daemon... Feb 19 08:57:14 linux systemd[1]: Started firewalld - dynamic firewall daemon.
Nun listest du alle von firewalld konfigurierten Dienste mit folgendem Befehl auf:
firewall-cmd --list-all
Du solltest die folgende Ausgabe sehen:
public (active) target: default icmp-block-inversion: no interfaces: eth0 eth1 sources: services: cockpit dhcpv6-client ssh ports: protocols: forward: no masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
Fail2Ban installieren
Standardmäßig ist das Fail2Ban-Paket nicht im Alma Linux Standard-Repository verfügbar. Daher musst du es aus dem EPEL-Repository installieren. Du kannst das EPEL Repo mit dem folgenden Befehl installieren:
dnf install epel-release -y
Sobald das EPEL Repo installiert ist, kannst du die Fail2Ban Firewall mit folgendem Befehl installieren:
dnf install fail2ban fail2ban-firewalld -y
Wenn die Installation abgeschlossen ist, starte und aktiviere den Fail2Ban-Dienst mit dem folgenden Befehl:
systemctl start fail2ban systemctl enable fail2ban
Du kannst den Status des Fail2Ban-Dienstes überprüfen, indem du den Befehl ausführst:
systemctl status fail2ban
Du solltest die folgende Ausgabe sehen:
? fail2ban.service - Fail2Ban Service Loaded: loaded (/usr/lib/systemd/system/fail2ban.service; disabled; vendor preset: disabled) Active: active (running) since Sat 2022-02-19 08:58:34 UTC; 6s ago Docs: man:fail2ban(1) Process: 7838 ExecStartPre=/bin/mkdir -p /run/fail2ban (code=exited, status=0/SUCCESS) Main PID: 7840 (fail2ban-server) Tasks: 3 (limit: 23696) Memory: 10.8M CGroup: /system.slice/fail2ban.service ??7840 /usr/bin/python3.6 -s /usr/bin/fail2ban-server -xf start Feb 19 08:58:34 linux systemd[1]: Starting Fail2Ban Service... Feb 19 08:58:34 linux systemd[1]: Started Fail2Ban Service. Feb 19 08:58:35 linux fail2ban-server[7840]: Server ready
Fail2Ban konfigurieren
Die Hauptkonfigurationsdatei von Fail2Ban befindet sich unter /etc/fail2ban/jail.conf. Es ist ratsam, eine Kopie der Hauptkonfigurationsdatei zu erstellen. Du kannst sie mit dem folgenden Befehl erstellen:
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Standardmäßig verwendet Fail2Ban die Firewall Iptables. Um die Firewall-Unterstützung zu aktivieren, führe den folgenden Befehl aus:
mv /etc/fail2ban/jail.d/00-firewalld.conf /etc/fail2ban/jail.d/00-firewalld.local
Starte anschließend den Fail2Ban-Dienst neu, um die Änderungen zu übernehmen:
systemctl restart fail2ban
Sicheres SSH mit Fail2Ban
Standardmäßig ist Fail2Ban nicht so konfiguriert, dass entfernte IPs blockiert werden. Du musst die Fail2Ban-Jail-Konfigurationsdatei für jeden Dienst konfigurieren, den du schützen willst.
Um den SSH-Dienst zu schützen, erstellst du eine Jail-Konfigurationsdatei für SSH mit dem folgenden Befehl:
nano /etc/fail2ban/jail.d/sshd.local
Füge die folgenden Zeilen hinzu:
# This configuration will block the remote host for 2 hours after 3 failed SSH login attempts. [sshd] enabled = true bantime = 2h maxretry = 3
Speichere und schließe die Datei, wenn du fertig bist, und starte den SSH-Dienst neu, um die Änderungen zu übernehmen:
systemctl restart fail2ban
Jetzt kannst du die Jail-Konfiguration mit dem folgenden Befehl überprüfen:
fail2ban-client status
Du erhältst die konfigurierte Jail in der folgenden Ausgabe:
Status |- Number of jail: 1 `- Jail list: sshd
Um die SSH-Jail auf gesperrte IPs zu überprüfen, führe folgenden Befehl aus:
fail2ban-client status sshd
Du erhältst die Liste aller gesperrten IPs in der folgenden Ausgabe:
Status for the jail: sshd |- Filter | |- Currently failed: 6 | |- Total failed: 15 | `- Journal matches: _SYSTEMD_UNIT=sshd.service + _COMM=sshd `- Actions |- Currently banned: 2 |- Total banned: 2 `- Banned IP list: 96.9.67.48 43.154.142.8
Wenn du die gesperrte IP-Adresse manuell aufheben willst, führe folgenden Befehl aus:
fail2ban-client unban remote-ip-address
Fazit
In der obigen Anleitung haben wir erklärt, wie du Fail2Ban auf Alma Linux 8 installierst und wie du Fail2Ban zur Sicherung des SSH-Dienstes einsetzt. Jetzt kannst du Fail2Ban in der Produktionsumgebung einsetzen, um dein System vor Brute-Force-Angriffen zu schützen.