SSH / SSHD - Wie lege ich die maximale Anzahl von Anmeldeversuchen fest?
17
Was ist der einfachste Weg, um maximale Anmeldeversuche in einer LAMP-Umgebung einzurichten (sshd über yum installiert)? Gibt es ein Paket oder eine einfache Firewall-Regel?
@Hyppy Danke, ich habe versucht zu suchen, aber leider gibt es viele schlecht benannte Fragen / Threads.
John Himmelman
Antworten:
11
Ich benutze Fail2ban ; Ich habe Denyhosts in der Vergangenheit benutzt und es funktioniert auch ganz gut. Ich bevorzuge Fail2ban jetzt, weil es konfigurierbarer ist und die Überwachung mehrerer verschiedener Dienste besser beherrscht - zum Beispiel die Anmeldeseite von sshd und Ihrer Web-App gleichzeitig (vorausgesetzt, Sie protokollieren Fehler).
Eine andere Methode, die Sie in Betracht ziehen könnten, ist die Implementierung einer LIMIT-Regel in iptables; Ich kann Ihnen leider nicht dabei helfen, es sei denn, Sie möchten Shorewall installieren , und dann verweise ich Sie einfach auf die ausgezeichnete Dokumentation auf dieser Site , um herauszufinden , wie Sie eine LIMIT-Regel konfigurieren, um die Brute-Fähigkeit von Personen einzuschränken -zwingen Sie Ihren Server.
Ich sollte hinzufügen, dass Fail2ban in vielen Distributions-Repositories verfügbar ist, so dass die Installation ein Kinderspiel ist. Ich habe Denyhosts in keinem gesehen, aber das heißt nicht, dass es in irgendeinem nicht vorhanden ist oder dass es seit dem letzten Mal, als ich es überprüft habe, nicht hinzugefügt wurde.
Kromey
Ich habe das Problem, dass fail2ban von v0.8.14 mit dem Befehl iptables-multiport nicht richtig funktioniert hat. Und dies ist bekannt Problem mit fail2ban Dienstprogramm in frischen Versionen behoben ... Hier ist Beschreibung: github.com/fail2ban/fail2ban/issues/798 Also habe ich nur in Sicherheitsmechanismen entwickelten in der Serversoftware glaube, noch 3rd - Party - Dienstprogramme ...
George Gaál
44
Ich verwende keine Tools von Drittanbietern. Daher habe ich eine Kombination aus SSH-Konfiguration und Firewall-Einstellungen verwendet. Mit der folgenden Lösung kann ein Angreifer in 2 Minuten genau 3 Fehler-Logins erstellen, oder er wird für 120 Sekunden blockiert.
1) Fügen Sie die folgende Zeile hinzu /etc/ssh/sshd_config
MaxAuthTries 1
Dies ermöglicht nur einen Anmeldeversuch pro Verbindung. Starten Sie den SSH-Server neu.
2) Fügen Sie die folgenden Firewall-Regeln hinzu
Erstellen Sie eine neue Kette
iptables -N SSHATTACK
iptables -A SSHATTACK -j LOG --log-prefix "Possible SSH attack! " --log-level 7
iptables -A SSHATTACK -j DROP
Blockieren Sie jede IP-Adresse für 120 Sekunden, wodurch innerhalb von 120 Sekunden mehr als drei Verbindungen hergestellt werden. Beim vierten Verbindungsversuch wird die Anforderung an die SSHATTACKKette delegiert , die für die Protokollierung des möglichen SSH-Angriffs verantwortlich ist und die Anforderung schließlich löscht.
iptables -A INPUT -i eth0 -p tcp -m state --dport 22 --state NEW -m recent --set
iptables -A INPUT -i eth0 -p tcp -m state --dport 22 --state NEW -m recent --update --seconds 120 --hitcount 4 -j SSHATTACK
3) Siehe Protokolleinträge möglicher ssh-Angriffe in /var/log/syslog
Dec 27 18:01:58 ubuntu kernel: [ 510.007570] Possible SSH attack! IN=eth0 OUT= MAC=01:2c:18:47:43:2d:10:c0:31:4d:11:ac:f8:01 SRC=192.168.203.129 DST=192.168.203.128 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=30948 DF PROTO=TCP SPT=53272 DPT=1785 WINDOW=14600 RES=0x00 SYN URGP=0
Genial! Aber ich habe ein Problem, ein Typ / Bot in Frankreich hat seine Hacker-Tools nicht richtig konfiguriert, also loggt er sich weiter ein, obwohl sein Datenverkehr abfällt. Das Ergebnis ist, dass meine Protokolle jede Sekunde mit Daten von diesem Kerl gefüllt werden. Irgendwie darum herum?
Smarties89
2
Für weniger erfahrene Leute wie mich: Die iptables-Zeilen werden an der Bash-Eingabeaufforderung eingegeben und nicht irgendwo in eine Datei eingegeben.
Andrew Swift
4
SSH ist kein bestimmtes Paket zugeordnet, um dies einzurichten. Sie können jedoch CSF (ConfigServer & Firewall) installieren.
Zwei Konfigurationsänderungen, die ich vorschlagen würde, würden in der Datei vorgenommen: / etc / ssh / sshd_config
Begrenzen Sie die maximale Anzahl nicht authentifizierter Verbindungen, die der SSH-Server gleichzeitig verarbeiten kann. Je kleiner dieser Wert ist, desto schwieriger ist es für Skriptkinder, parallele, koordinierte Crackversuche mit mehreren Verbindungen durchzuführen. bearbeite sshd_config und ändere MaxStartups von "10" auf "3:50:10". Die durch Doppelpunkte getrennten Werte weisen den ssh-Server an, "3 Benutzern zu erlauben, sich gleichzeitig anzumelden und Verbindungsversuche zwischen 3 und maximal 10 zufällig und zunehmend zu unterbrechen". Hinweis: Dies sollte auf Servern mit einer beträchtlichen Anzahl gültiger SSH-Benutzer, die sich anmelden, erhöht werden.
Standardeinstellung : MaxStartups 10
MaxStartups 3:50:10
Reduzieren Sie die maximale Zeit, die für die erfolgreiche Anmeldung erforderlich ist, bevor Sie die Verbindung trennen. Die Standardeinstellung von 2 Minuten ist zu viel Zeit, um einen nicht authentifizierten Verbindungsversuch offen zu halten (siehe oben). 30 Sekunden sind mehr als genug Zeit, um sich einzuloggen:
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 300 --hitcount 4 --rttl --name SSH -j DROP
Dadurch können innerhalb von 5 Minuten nur 4 TCP / SYN-Pakete von einer IP-Adresse an Port 22 gesendet werden. Bei mehreren Versuchen wird die Tür geschlossen, bis 5 Minuten vergangen sind.
So ziemlich das gleiche wie: -A INPUT -p tcp -m tcp --dport 22 -m limit --limit 48/hour -j ACCEPT.
Alix Axel
Ich habe diese beiden iptables-Befehle in Debian Jessie ausgeführt, kann jedoch weiterhin alle 2 Sekunden SSH-Anmeldeversuche von derselben IP-Adresse aus sehen. Irgendwelche Ideen?
Alexey Ozerov
1
Es gibt eine Option, die Sie in Ihre sshd_config-Datei für den Server einfügen können:
MaxAuthTries
Specifies the maximum number of authentication attempts permitted per
connection. Once the number of failures reaches half this value, additional
failures are logged. The default is 6.
Nützlich (insbesondere in Kombination mit anderen bereits gemachten Vorschlägen), löst das Problem jedoch nicht wirklich von selbst, da es für jemanden trivial ist, einfach die Verbindung wiederherzustellen.
Antworten:
Ich benutze Fail2ban ; Ich habe Denyhosts in der Vergangenheit benutzt und es funktioniert auch ganz gut. Ich bevorzuge Fail2ban jetzt, weil es konfigurierbarer ist und die Überwachung mehrerer verschiedener Dienste besser beherrscht - zum Beispiel die Anmeldeseite von sshd und Ihrer Web-App gleichzeitig (vorausgesetzt, Sie protokollieren Fehler).
Eine andere Methode, die Sie in Betracht ziehen könnten, ist die Implementierung einer LIMIT-Regel in
iptables
; Ich kann Ihnen leider nicht dabei helfen, es sei denn, Sie möchten Shorewall installieren , und dann verweise ich Sie einfach auf die ausgezeichnete Dokumentation auf dieser Site , um herauszufinden , wie Sie eine LIMIT-Regel konfigurieren, um die Brute-Fähigkeit von Personen einzuschränken -zwingen Sie Ihren Server.quelle
Ich verwende keine Tools von Drittanbietern. Daher habe ich eine Kombination aus SSH-Konfiguration und Firewall-Einstellungen verwendet. Mit der folgenden Lösung kann ein Angreifer in 2 Minuten genau 3 Fehler-Logins erstellen, oder er wird für 120 Sekunden blockiert.
1) Fügen Sie die folgende Zeile hinzu
/etc/ssh/sshd_config
Dies ermöglicht nur einen Anmeldeversuch pro Verbindung. Starten Sie den SSH-Server neu.
2) Fügen Sie die folgenden Firewall-Regeln hinzu
Erstellen Sie eine neue Kette
Blockieren Sie jede IP-Adresse für 120 Sekunden, wodurch innerhalb von 120 Sekunden mehr als drei Verbindungen hergestellt werden. Beim vierten Verbindungsversuch wird die Anforderung an die
SSHATTACK
Kette delegiert , die für die Protokollierung des möglichen SSH-Angriffs verantwortlich ist und die Anforderung schließlich löscht.3) Siehe Protokolleinträge möglicher ssh-Angriffe in
/var/log/syslog
quelle
SSH ist kein bestimmtes Paket zugeordnet, um dies einzurichten. Sie können jedoch CSF (ConfigServer & Firewall) installieren.
CSF
Zwei Konfigurationsänderungen, die ich vorschlagen würde, würden in der Datei vorgenommen: / etc / ssh / sshd_config
Begrenzen Sie die maximale Anzahl nicht authentifizierter Verbindungen, die der SSH-Server gleichzeitig verarbeiten kann. Je kleiner dieser Wert ist, desto schwieriger ist es für Skriptkinder, parallele, koordinierte Crackversuche mit mehreren Verbindungen durchzuführen. bearbeite sshd_config und ändere MaxStartups von "10" auf "3:50:10". Die durch Doppelpunkte getrennten Werte weisen den ssh-Server an, "3 Benutzern zu erlauben, sich gleichzeitig anzumelden und Verbindungsversuche zwischen 3 und maximal 10 zufällig und zunehmend zu unterbrechen". Hinweis: Dies sollte auf Servern mit einer beträchtlichen Anzahl gültiger SSH-Benutzer, die sich anmelden, erhöht werden.
Reduzieren Sie die maximale Zeit, die für die erfolgreiche Anmeldung erforderlich ist, bevor Sie die Verbindung trennen. Die Standardeinstellung von 2 Minuten ist zu viel Zeit, um einen nicht authentifizierten Verbindungsversuch offen zu halten (siehe oben). 30 Sekunden sind mehr als genug Zeit, um sich einzuloggen:
quelle
Ich verwende diese IPTables-Regeln dafür:
Dadurch können innerhalb von 5 Minuten nur 4 TCP / SYN-Pakete von einer IP-Adresse an Port 22 gesendet werden. Bei mehreren Versuchen wird die Tür geschlossen, bis 5 Minuten vergangen sind.
quelle
-A INPUT -p tcp -m tcp --dport 22 -m limit --limit 48/hour -j ACCEPT
.Es gibt eine Option, die Sie in Ihre sshd_config-Datei für den Server einfügen können:
quelle