Sicherheit ist für Systemadministratoren ein ständiger Kampf, da Sie Ihre Systeme ausreichend sichern müssen, um sie vor unerwünschten Angriffen zu schützen, aber nicht so sehr, dass die Benutzerproduktivität behindert wird. Es ist schwierig, das Gleichgewicht zu halten. Es gibt immer Beschwerden über "zu viel" Sicherheit, aber wenn ein System kompromittiert wird, reichen die Beschwerden von "Es gab nicht genug Sicherheit" bis zu "Warum haben Sie keine besseren Sicherheitskontrollen verwendet?" Der Kampf ist echt. Es gibt Kontrollen, die Sie einrichten können, die sowohl wirksam gegen Eindringlinge sind als auch heimlich genug, um Benutzern zu ermöglichen, auf allgemein uneingeschränkte Weise zu arbeiten. Fail2ban ist die Antwort, um Dienste vor Brute-Force- und anderen automatisierten Angriffen zu schützen.
Hinweis:Fail2ban kann nur zum Schutz von Diensten verwendet werden, die eine Benutzername/Kennwort-Authentifizierung erfordern. Beispielsweise können Sie Ping nicht mit fail2ban schützen.
In diesem Artikel zeige ich, wie man den SSH-Daemon (SSHD) vor einem Brute-Force-Angriff schützt. Sie können Filter einrichten, wie fail2ban
ruft sie auf, um fast jeden Abhördienst auf Ihrem System zu schützen.
Installation und Ersteinrichtung
Glücklicherweise gibt es ein fertiges Paket für fail2ban
das beinhaltet alle Abhängigkeiten, falls vorhanden, für Ihr System.
$ sudo dnf -y install fail2ban
Aktivieren und starten Sie fail2ban
.
$ sudo systemctl enable fail2ban
$ sudo systemctl start fail2ban
Es sei denn, Sie haben ein Syntaxproblem in Ihrem fail2ban
Konfiguration, werden Sie keine Standard-Ausgabemeldungen sehen.
Nun, um ein paar grundlegende Dinge in fail2ban
zu konfigurieren um das System zu schützen, ohne dass es sich selbst stört. Kopieren Sie die /etc/fail2ban/jail.conf
Datei nach /etc/fail2ban/jail.local
. Die jail.local
file ist die für uns interessante Konfigurationsdatei.
$ sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Öffnen Sie /etc/fail2van/jail.local
in Ihrem bevorzugten Editor und nehmen Sie die folgenden Änderungen vor oder überprüfen Sie, ob diese wenigen Parameter gesetzt sind. Suchen Sie nach der Einstellung ignoreip
und fügen Sie alle IP-Adressen zu dieser Zeile hinzu, die Zugriff haben müssen, ohne dass die Möglichkeit einer Sperrung besteht. Standardmäßig sollten Sie die Loopback-Adresse und alle lokalen IP-Adressen des geschützten Systems hinzufügen.
ignoreip = 127.0.0.1/8 192.168.1.10 192.168.1.20
Sie können auch ganze Netzwerke von IP-Adressen hinzufügen, aber das nimmt Ihnen viel von dem Schutz, den Sie mit fail2ban
wünschen zum. Halten Sie es vorerst einfach und lokal. Speichern Sie jail.local
Datei und starten Sie fail2ban
neu Dienst.
$ sudo systemctl restart fail2ban
Sie müssen fail2ban
neu starten jedes Mal, wenn Sie eine Konfigurationsänderung vornehmen.
Gefilterten Dienst einrichten
Eine Neuinstallation von fail2ban
bringt dir nicht wirklich viel. Sie müssen für jeden Dienst, den Sie schützen möchten, sogenannte Filter einrichten. Nahezu jedes Linux-System muss per SSH erreichbar sein. Es gibt einige Umstände, unter denen Sie SSHD mit Sicherheit stoppen und deaktivieren würden, um Ihr System besser zu sichern, aber ich gehe davon aus, dass jedes Linux-System SSH-Verbindungen zulässt.
Passwörter sind bekanntlich keine gute Sicherheitslösung. Es ist jedoch oft der Standard, nach dem wir leben. Wenn also der Benutzer- oder Administratorzugriff auf SSH beschränkt ist, sollten Sie Maßnahmen ergreifen, um ihn zu schützen. Verwenden von fail2ban
SSHD auf fehlgeschlagene Zugriffsversuche mit anschließendem Bann zu "beobachten" ist ein guter Anfang.
Hinweis:Bevor Sie eine Sicherheitskontrolle implementieren, die den Zugriff eines Benutzers auf ein System behindern könnte, informieren Sie die Benutzer darüber, dass diese neue Kontrolle sie für zehn Minuten (oder wie lange Sie entscheiden) von einem System ausschließen kann, wenn ihre fehlgeschlagenen Anmeldeversuche Ihre Schwellenwerteinstellung überschreiten .
Um gefilterte Dienste einzurichten, müssen Sie eine entsprechende "Jail"-Datei unter /etc/fail2ban/jail.d
erstellen Verzeichnis. Erstellen Sie für SSHD eine neue Datei namens sshd.local
und geben Sie Anweisungen zur Dienstfilterung ein.
[sshd]
enabled = true
port = ssh
action = iptables-multiport
logpath = /var/log/secure
maxretry = 3
bantime = 600
Erstellen Sie die [sshd] Überschrift und geben Sie die Einstellung, die Sie oben sehen, als Startpunkt ein. Die meisten Einstellungen sind selbsterklärend. Für die beiden, die nicht intuitiv offensichtlich sind, beschreibt die Einstellung "Aktion" die gewünschte Aktion fail2ban
im Falle eines Verstoßes zu übernehmen. Für uns fail2ban
verwendet iptables
die IP-Adresse des angreifenden Systems für eine „Bantime“ von 600 Sekunden (10 Minuten) zu sperren.
Sie können natürlich jede dieser Einstellungen ändern, um sie Ihren Bedürfnissen anzupassen. Zehn Minuten scheinen lang genug zu sein, um einen Bot oder ein Skript dazu zu bringen, zu weniger sicheren Hosts „weiterzuwandern“. Zehn Minuten reichen jedoch nicht aus, um Benutzer vor den Kopf zu stoßen, die ihr Passwort mehr als dreimal falsch eingeben.
Wenn Sie mit den Einstellungen zufrieden sind, starten Sie fail2ban
neu Dienst.
So sieht ein Bann aus
Auf dem geschützten System (192.168.1.83), tail
die /var/log/fail2ban.log
um aktuelle Sperraktionen anzuzeigen.
2020-05-15 09:12:06,722 fail2ban.filter [25417]: INFO [sshd] Found 192.168.1.69 - 2020-05-15 09:12:06
2020-05-15 09:12:07,018 fail2ban.filter [25417]: INFO [sshd] Found 192.168.1.69 - 2020-05-15 09:12:07
2020-05-15 09:12:07,286 fail2ban.actions [25417]: NOTICE [sshd] Ban 192.168.1.69
2020-05-15 09:22:08,931 fail2ban.actions [25417]: NOTICE [sshd] Unban 192.168.1.69
Sie können sehen, dass die IP-Adresse 192.168.1.69 um 09:12 Uhr gesperrt und zehn Minuten später um 09:22 Uhr wieder freigegeben wurde.
Auf dem entfernten System 192.168.1.69 sieht eine Sperraktion wie folgt aus:
$ ssh 192.168.1.83
[email protected]'s password:
Permission denied, please try again.
[email protected]'s password:
Permission denied, please try again.
[email protected]'s password:
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
$ ssh 192.168.1.83
ssh: connect to host 192.168.1.83 port 22: Connection refused
Sie können sehen, dass ich mein Passwort dreimal falsch eingegeben habe, bevor ich gesperrt wurde. Der gesperrte Benutzer weiß nicht, warum er das Zielsystem nicht mehr erreichen kann, es sei denn, er wird ausdrücklich darauf hingewiesen. Der fail2ban
Filter führt eine Silent-Ban-Aktion durch. Es gibt dem entfernten Benutzer keine Erklärung, noch wird der Benutzer benachrichtigt, wenn die Sperre aufgehoben wird.
Ein System entsperren
Es kommt zwangsläufig vor, dass ein System gebannt wird, das schnell wieder entbannt werden muss. Mit anderen Worten, Sie können oder wollen nicht warten, bis die Sperrfrist abgelaufen ist. Der folgende Befehl entbannt ein System sofort.
$ sudo fail2ban-client set sshd unbanip 192.168.1.69
Sie müssen den fail2ban-Daemon nicht neu starten, nachdem Sie diesen Befehl ausgegeben haben.
Abschluss
So funktioniert fail2ban
funktioniert. Sie richten einen Filter ein, und wenn die Bedingungen erfüllt sind, wird das Remote-System gesperrt. Sie können für längere Zeit sperren und mehrere Filter einrichten, um Ihr System zu schützen. Denken Sie daran, dass fail2ban
ist eine Einzellösung und schützt Ihr System nicht vor anderen Schwachstellen. Ein mehrschichtiger, facettenreicher Sicherheitsansatz ist die Strategie, die Sie verfolgen möchten. Keine einzelne Lösung bietet genügend Sicherheit.
Sie können Beispiele für andere Filter und einige erweiterte fail2ban
finden Implementierungen beschrieben unter fail2ban.org.
[ Möchten Sie mehr über Sicherheit erfahren? Schauen Sie sich die Checkliste für IT-Sicherheit und Compliance an. ]