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?

John Himmelman
quelle
@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.

Kromey
quelle
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
Mein Name ist
quelle
2
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.

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.

  • 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:

  • Standardeinstellung : LoginGraceTime 2m
  • LoginGraceTime 30
Brendan
quelle
3

Ich verwende diese IPTables-Regeln dafür:

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.

timkofu
quelle
Was musste bearbeitet werden?
Timkofu
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.
mdpc
quelle
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.
Kromey