GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Sichern Sie Ihren Linux-Server mit Fail2Ban [Anfängerleitfaden]

Was ist Fail2Ban?

Wenn Sie SSH aktiviert haben, überprüfen Sie bitte den Anmeldeverlauf Ihres Linux-Servers. Sie werden überrascht sein, eine große Anzahl von IPs zu sehen, die versuchen, sich über SSH bei Ihrem Server anzumelden.

Wenn Sie keinen Mechanismus haben, um diese Anmeldeversuche abzuwehren, ist Ihr System anfällig für Bruteforce-Angriffe. Grundsätzlich wird ein Skript/Bot weiterhin versuchen, eine SSH-Verbindung zu Ihrem System herzustellen, indem es verschiedene Kombinationen aus Benutzernamen und Passwörtern ausprobiert.

Hier kommt ein Tool wie Fail2Ban ins Spiel. Fail2Ban ist eine kostenlose Open-Source-Software, mit der Sie Ihren Linux-Server vor böswilligen Anmeldungen schützen können. Fail2Ban wird die IP (für eine bestimmte Zeit) sperren, wenn es eine bestimmte Anzahl von fehlgeschlagenen Anmeldeversuchen gibt.

Fail2Ban funktioniert sofort mit den Grundeinstellungen, ist aber auch extrem konfigurierbar. Sie können es nach Ihren Wünschen anpassen und Filter und Regeln nach Bedarf erstellen.

Hört sich interessant an? Warum nicht Fail2Ban testen? Lesen und folgen Sie dem Rest des Artikels und probieren Sie Fail2Ban selbst aus.

Fail2Ban unter Linux installieren

Sie können die Popularität von Fail2Ban aus der Tatsache erraten, dass es in den offiziellen Repositories aller großen Linux-Distributionen verfügbar ist. Dies macht die Installation von Fail2Ban zu einer einfachen Aufgabe.

Installieren Sie Fail2Ban auf CentOS und Red Hat

Sie müssen Root- oder Sudo-Benutzer sein, um neue Software auf Ihrem System zu installieren.

Sie müssen sicherstellen, dass Ihr System auf dem neuesten Stand ist und Sie das EPEL-Repository installiert haben.

sudo yum update && sudo yum install epel-release

Jetzt können Sie Fail2Ban mit dem folgenden Befehl installieren:

sudo yum install fail2ban

Installieren Sie Fail2Ban unter Ubuntu und Debian

Stellen Sie zunächst sicher, dass Ihr System aktualisiert ist:

sudo apt update && sudo apt upgrade -y

Installieren Sie nun Fail2Ban mit diesem Befehl:

sudo apt install fail2ban

Fail2Ban-Konfigurationsdatei verstehen

Es gibt zwei Hauptkonfigurationsdateien in Fail2Ban:/etc/fail2ban/fail2ban.conf und /etc/fail2ban/jail.conf. Lassen Sie mich erklären, was sie tun.

/etc/fail2ban/fail2ban.conf :Dies ist die Konfigurationsdatei für die Betriebseinstellungen des Fail2Ban-Daemons. Einstellungen wie Loglevel, Logdatei, Socket und PID-Datei werden hier definiert.

/etc/fail2ban/jail.conf :Hier passiert die ganze Magie. Dies ist die Datei, in der Sie Dinge wie die Standardsperrzeit, die Anzahl der Wiederholungen vor dem Sperren einer IP, das Whitelisting von IPs, E-Mail-Versandinformationen usw. konfigurieren können. Grundsätzlich steuern Sie das Verhalten von Fail2Ban von dieser Datei aus.

Bevor Sie diese Dateien ändern, empfiehlt Fail2Ban, eine Kopie mit der .local-Datei für diese conf-Dateien zu erstellen. Das liegt daran, dass die Standard-conf-Dateien in Updates überschrieben werden können und Sie alle Ihre Einstellungen verlieren.

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

Lassen Sie uns nun die jail.conf-Datei verstehen. Wenn Sie den Befehl less verwenden, um diese große Datei zu lesen, kann dies ziemlich verwirrend erscheinen. Die conf-Datei versucht alles mit viel zu vielen Kommentaren zu erklären. Lassen Sie mich das für Sie vereinfachen.

Die Datei jail.conf ist in Dienste unterteilt. Es gibt einen Abschnitt [Standard], der für alle Dienste gilt. Und dann können Sie verschiedene Dienste mit ihren jeweiligen Einstellungen (falls vorhanden) sehen. Alle diese Dienste stehen in Klammern. Sie sehen Abschnitte wie [sshd], [apache-auth], [squid] usw.

Wenn ich die Kommentare entferne, sieht der Standardabschnitt so aus:

[DEFAULT]
ignorecommand =
bantime = 10m
findtime = 10m
maxretry = 5
backend = auto
usedns = warn
logencoding = auto
enabled = false
mode = normal
filter = %(name)s[mode=%(mode)s]
destemail = [email protected]
sender = [email protected]
mta = sendmail
protocol = tcp
chain =
port = 0:65535
fail2ban_agent = Fail2Ban/%(fail2ban_version)s
banaction = iptables-multiport
banaction_allports = iptables-allports
action_abuseipdb = abuseipdb
action = %(action_)s

Lassen Sie mich Ihnen die Bedeutung einiger dieser Parameter erklären.

  • bantime:Legen Sie die Dauer des Bans fest. Standard ist 10 Minuten.
  • findtime:Das Fenster, in dem die Aktion auf einer IP ausgeführt wird. Der Standardwert ist 10 Minuten. Angenommen, eine falsche Anmeldung wurde um 10:30 Uhr von einer bestimmten IP versucht. Wenn dieselbe IP vor 10:40 die maximale Anzahl an Wiederholungen erreicht, wird sie gesperrt. Andernfalls wird der nächste Fehlversuch nach 10:40 als erster Fehlversuch gewertet.
  • maxretry:Die Anzahl der fehlgeschlagenen Wiederholungen, bevor eine Aktion ausgeführt wird
  • usedns:Die „Warn“-Einstellung versucht, Reverse-DNS zu verwenden, um den Hostnamen nachzuschlagen und ihn mit Hostname zu verbieten. Wenn Sie es auf no setzen, werden IPs gesperrt, nicht der Hostname.
  • destemail:Die E-Mail-Adresse, an die die Benachrichtigungen gesendet werden (muss konfiguriert werden)
  • sender:Der Absendername in der Benachrichtigungs-E-Mail
  • mta:Mail Transfer Agent für Benachrichtigungs-E-Mail
  • banaction:Dieser Parameter verwendet die Datei /etc/fail2ban/action.d/iptables-multiport.conf, um die Aktion nach maximal fehlgeschlagenen Wiederholungen festzulegen
  • Protokoll:Die Art des Datenverkehrs, der nach der Sperrung gelöscht wird

Wenn Sie Änderungen für ein beliebiges Gefängnis (oder für alle Gefängnisse) vornehmen möchten, wie z. B. die maximale Wiederholungsversuche, Sperrzeit, Suchzeit usw., sollten Sie die Datei jail.local bearbeiten.

So verwenden Sie Fail2Ban zum Sichern von Linux-Servern

Lassen Sie mich Ihnen einige Möglichkeiten zeigen, wie Sie Fail2Ban verwenden können, um die Linux-Sicherheit zu erhöhen.

Beachten Sie, dass Sie root-Benutzer sein oder sudo-Zugriff haben müssen, um die fail2ban-Befehle auszuführen.

Aktiviere Fail2Ban auf deinem Server und überprüfe alle laufenden Jails

Sie können systemd-Befehle verwenden, um Fail2Ban auf Ihrem Linux-Server zu starten und zu aktivieren:

systemctl start fail2ban
systemctl enable fail2ban

Sobald Fail2Ban aktiviert ist, können Sie den Status und die aktiven Jails mit dem Befehl fail2ban-client sehen:

fail2ban-client status
Status
|- Number of jail: 1
`- Jail list: sshd

Falls Sie sich fragen, ist sshd Jail standardmäßig aktiviert.

Siehe Fail2Ban-Protokoll

Das Fail2Ban-Protokoll befindet sich unter /var/log/fail2ban.log. Die Protokolldateien haben folgendes Format:

2019-03-25 07:09:08,004 fail2ban.filter [25630]: INFO [sshd] Found 139.59.69.76 – 2019-03-25 07:09:07
2019-03-25 07:09:36,756 fail2ban.filter [25630]: INFO [sshd] Found 159.89.205.213 – 2019-03-25 07:09:36
2019-03-25 07:09:36,757 fail2ban.filter [25630]: INFO [sshd] Found 159.89.205.213 – 2019-03-25 07:09:36
2019-03-25 07:09:36,774 fail2ban.actions [25630]: NOTICE [sshd] Ban 159.89.205.213
2019-03-25 07:09:36,956 fail2ban.filter [25630]: INFO [sshd] Found 182.70.253.202 – 2019-03-25 07:09:36
2019-03-25 07:09:36,957 fail2ban.filter [25630]: INFO [sshd] Found 182.70.253.202 – 2019-03-25 07:09:36
2019-03-25 07:09:36,981 fail2ban.actions [25630]: NOTICE [sshd] Ban 182.70.253.202
2019-03-25 07:09:37,247 fail2ban.filter [25630]: INFO [sshd] Found 112.64.214.90 – 2019-03-25 07:09:37
2019-03-25 07:09:37,248 fail2ban.filter [25630]: INFO [sshd] Found 112.64.214.90 – 2019-03-25 07:09:37
2019-03-25 07:09:37,589 fail2ban.actions [25630]: NOTICE [sshd] Ban 112.64.214.90

Sie können sehen, dass es die IPs identifiziert und sie sperrt, wenn sie die Schwelle der maximalen Wiederholungsversuche überschreiten.

Siehe gesperrte IPs von Fail2Ban

Eine Möglichkeit besteht darin, den Status eines bestimmten Gefängnisses zu überprüfen. Zu diesem Zweck können Sie den Fail2Ban-Client verwenden.

fail2ban-client status <jail_name>

Wenn Sie beispielsweise alle von Fail2Ban gesperrten fehlerhaften SSH-Anmeldungen sehen müssen, können Sie dies auf folgende Weise verwenden. Die Ausgabe würde die Gesamtzahl der fehlgeschlagenen Versuche und die Gesamtzahl der gesperrten IPs anzeigen.

[email protected]:~# fail2ban-client status sshd
Status for the jail: sshd
|- Filter
| |- Currently failed: 14
| |- Total failed: 715
| `- File list: /var/log/auth.log
`- Actions
|- Currently banned: 7
|- Total banned: 17
`- Banned IP list: 177.47.115.67 118.130.133.110 68.183.62.73 202.65.154.110 106.12.102.114 61.184.247.3 218.92.1.150

Das System, das versucht, sich nach der fehlgeschlagenen Anmeldung über SSH anzumelden, sollte eine Fehlermeldung wie diese erhalten

ssh: connect to host 93.233.73.133 port 22: Connection refused

So sperren Sie eine IP dauerhaft mit Fail2Ban

Inzwischen wissen Sie, dass das Verbot, das Fail2Ban einer IP auferlegt hat, nur vorübergehend ist. Standardmäßig sind es 10 Minuten und der Angreifer kann nach 10 Minuten erneut versuchen, sich anzumelden.

Dies stellt ein Sicherheitsrisiko dar, da Angreifer ein Skript verwenden könnten, das nach einem Intervall von 10 Minuten versucht, sich anzumelden.

Also, wie setzt man mit Fail2Ban einen permanenten Bann? Darauf gibt es keine eindeutige Antwort.

Ab Fail2Ban Version 0.11 wird die Sperrzeit automatisch berechnet und die Sperrzeit der persistenten IPs wird exponentiell erhöht.

Aber wenn Sie Ihre Fail2Ban-Version überprüfen, verwenden Sie wahrscheinlich die Version 0.10.

fail2ban-server --version 
Fail2Ban v0.10.2
Copyright (c) 2004-2008 Cyril Jaquier, 2008- Fail2Ban Contributors
Copyright of modifications held by their respective authors.
Licensed under the GNU General Public License v2 (GPL).

In früheren Versionen konnten Sie eine negative Bantime (bantime =-1) verwenden, was einem permanenten Bann entsprochen hätte, aber wenn Sie diese Methode ausprobieren, sehen Sie wahrscheinlich einen Fehler wie 'Starting fail2ban:ERROR NOK:(' Datenbank-Disk-Image ist fehlerhaft',)'.

Eine nicht so saubere Problemumgehung wäre, die Bantime auf etwa 1 Tag, 1 Woche, 1 Monat oder 1 Jahr zu erhöhen. Dies könnte das Problem umgehen, bis die neue Version auf Ihrem System verfügbar ist.

So entsperren Sie von Fail2Ban blockierte IP-Adressen

Überprüfen Sie zuerst, ob die IP blockiert wird oder nicht. Da Fail2Ban auf den iptables arbeitet, können Sie in die iptable schauen, um die von Ihrem Server gesperrten IPs anzuzeigen:

iptables -n -L

Möglicherweise müssen Sie den grep-Befehl verwenden, wenn viel zu viele IPs gesperrt sind.

Wenn Sie die angegebene IP-Adresse in der Ausgabe finden, wird sie gesperrt:

Der nächste Schritt besteht also darin, herauszufinden, welches „Gefängnis“ die besagte IP verbietet. Sie müssen hier den Grep-Befehl mit den fail2ban-Protokollen verwenden.

Wie Sie in der Ausgabe unten sehen können, wird die IP durch das sshd-Gefängnis gesperrt.

[email protected]:~# grep -E ‘Ban.*61.184.247.3’ /var/log/fail2ban.log
2019-03-14 13:09:25,029 fail2ban.actions [25630]: NOTICE [sshd] Ban 61.184.247.3
2019-03-14 13:52:56,745 fail2ban.actions [25630]: NOTICE [sshd] Ban 61.184.247.3

Jetzt, da Sie den Namen des Gefängnisses kennen, das die IP blockiert, können Sie die IP mit dem fail2ban-Client entsperren:

fail2ban-client set <jail_name> unbanip <ip_address>

Wie man IP in Fail2Ban auf die weiße Liste setzt

Es wird nicht gut sein, wenn Sie sich selbst verbieten, oder? Um zu ignorieren, dass eine IP-Adresse von der aktuellen Sitzung von Fail2Ban gesperrt wird, können Sie die IP mit einem Befehl wie diesem auf die Whitelist setzen:

fail2ban-client set <JAIL_NAME> addignoreip <IP_Address>

Sie können Ihre IP-Adresse in Linux leicht finden. In meinem Fall war es

sudo fail2ban-client set sshd addignoreip 203.93.83.113
These IP addresses/networks are ignored:
`- 203.93.83.113

Wenn Sie die IP dauerhaft auf die Whitelist setzen möchten, sollten Sie die Jail-Konfigurationsdatei bearbeiten. Gehen Sie zum besagten Gefängnisabschnitt und fügen Sie die Ignoreip-Zeile wie folgt hinzu:

ignoreip = 127.0.0.1/8 <IP_TO_BE_WHITELISTED>

Wenn Sie eine IP aus allen Jails auf Ihrem System auf die Whitelist setzen möchten, wäre es eine bessere Idee, die Datei /etc/fail2ban/jail.local zu bearbeiten und eine Zeile unter dem DEFAULT-Abschnitt hinzuzufügen, wie wir es oben gesehen haben.

Sie müssen Fail2Ban neu starten, damit diese Änderung wirksam wird.

Wie man die IP-Whitelist von einem Jail sieht

Mit diesem Befehl können Sie alle IPs sehen, die von einem Jail auf die weiße Liste gesetzt wurden:

fail2ban-client get <JAIL_NAME> ignoreip

Es sollte alle IPs zeigen, die von Fail2Ban für dieses Jail ignoriert werden:

sudo fail2ban-client set sshd addignoreip 203.93.83.113
These IP addresses/networks are ignored:
|- 127.0.0.0/8
|- ::1
`- 203.93.83.113

So entfernen Sie eine IP von der Fail2Ban-Whitelist

Wenn Sie die IP von der Whitelist eines bestimmten Gefängnisses entfernen, können Sie diesen Befehl verwenden:

fail2ban-client set <JAIL_NAME> delignoreip <IP_Address>

Wenn Sie die IP dauerhaft entfernen möchten, sollten Sie die Datei /etc/fail2ban/jail.local bearbeiten.

Was noch?

Mit Fail2Ban können Sie noch viel mehr tun. Dieser Leitfaden vermittelt Ihnen die Grundlagen für den Einstieg in Fail2Ban. Ich habe Themen wie Aktionen, E-Mail-Benachrichtigungen, Filter usw. nicht berührt.

Sobald Sie sich der Grundlagen von Fail2Ban bewusst sind, können Sie damit beginnen, mehr darüber zu erfahren. Spielen Sie vorerst einfach damit herum und fügen Sie SSH auf Ihrem Linux-Server eine zusätzliche Sicherheitsebene hinzu.


Linux
  1. So sichern Sie Ihre Linux-E-Mail-Dienste mit SSL/TLS

  2. Erstellen Sie Ihren Cloud-Speicher mit ownCloud 6 auf Linux Mint 17

  3. So installieren Sie Nextcloud mit Docker auf Ihrem Linux-Server

  4. 6 unverzichtbare Open-Source-Tools zur Sicherung Ihres Linux-Servers

  5. So sichern Sie Ihren Ubuntu-Server mit der CSF-Firewall

Schützen Sie Ihre Online-Privatsphäre mit diesen Linux-Distributionen

Sichern Sie Ihr Linux-Netzwerk mit firewall-cmd

ReaR:Sichern und stellen Sie Ihren Linux-Server vertrauensvoll wieder her

So sichern Sie Linux-Server mit SE Linux

10 umsetzbare SSH-Härtungstipps zur Sicherung Ihres Linux-Servers

So sichern Sie SSH mit Fail2Ban