SSH-Protokolle verstehe ich nicht: maximale Authentifizierungsversuche überschritten

9

Ich versuche, alle meine SSH-Protokolle zu entschlüsseln (um ihnen mit logstash angemessene Tags zu geben). Aber ich habe einen Fall gefunden, den ich nicht wirklich verstehe:

Oct 23 07:43:47 sshd[59830]: Connection from 74.194.6.5 port 60126 on 213.67.100.148 port 22
Oct 23 07:43:51 sshd[59830]: error: maximum authentication attempts exceeded for root from 74.194.6.5 port 60126 ssh2 [preauth]
Oct 23 07:43:51 sshd[59830]: Disconnecting authenticating user root 74.194.6.5 port 60126: Too many authentication failures [preauth]

Wie kann es die maximalen Authentifizierungsversuche erreichen, ohne Anzeichen eines Authentifizierungsversuchs zu geben?

Normalerweise bekomme ich Dinge wie bevor die Zeile "Maximum Auth ..." erscheint.

Oct 23 08:54:06 sshd[62392]: Failed keyboard-interactive/pam for [...]
Oct 23 08:52:41 sshd[49690]: Failed publickey for [...]

Aber nicht immer.

Bitte beachten Sie, dass ich keine Probleme beim Anmelden habe.

Peter
quelle
2
Dies ist nur eine Vermutung, aber vielleicht liegt das daran, dass die Root-Anmeldung deaktiviert ist? Vielleicht setzt es intern nur maximale Anmeldungen auf 0 ...
Zip
Macht Sinn! Das ist aber nicht der Fall. Andererseits habe ich dieses Protokollmuster nur mit böswilligen Verbindungen gesehen. Vielleicht ist es nur ein seltsamer Eckfall mit schlecht benommenen Kunden.
Peter
Sehen Sie diesen Zeitunterschied von 4 Sekunden zwischen der Verbindungsinitialisierung und dem ersten Fehler? Hier passiert etwas, und eine zunehmende Ausführlichkeit des Protokolls beim Debuggen zeigt Ihnen, was passiert. Setzen Sie "LogLevel", um ssh zu debuggen und neu zu starten. Versuchen Sie dann erneut, eine Verbindung herzustellen, und prüfen Sie, ob in den Protokollen nützliche Informationen enthalten sind.
Nehal Dattani
Ich bin nicht derjenige, der verbindet. Dieses Muster zeigt sich sehr selten und nur bei böswilligen Verbindungen.
Peter

Antworten:

6

Diese Fehlermeldung wird unter anderem ausgelöst, wenn der SSH-Client eine schlüsselbasierte Anmeldung versucht und mehr als MaxAuthTriesungültige Schlüssel anbietet . Der SSH-Server unterbricht dann die Verbindung. Dies kann entweder durch einen (böswilligen) Client verursacht werden, der überhaupt keine gültigen Schlüssel hat, oder durch gültige Benutzer, die einfach viele verschiedene Schlüsselpaare haben und deren MaxAuthTriesNummer erreicht ist, bevor der gültige Schlüssel ausgetauscht werden kann. In diesem Fall wird die Verbindung beendet und erreicht nicht einmal das Stadium, in dem alternative Anmeldemethoden angeboten / versucht werden.

(Auf der Standardprotokollstufe) Der SSH-Server zeichnet nicht auf, dass die fehlgeschlagenen Schlüssel ausgetauscht werden, und daher error: maximum authentication attempts exceeded for ... ssh2 [preauth]scheint die Fehlermeldung " " ohne vorherige Authentifizierungsversuche in der Protokolldatei zu erscheinen.

Sie können dies leicht simulieren mit:

for n in $(seq 1 10 ) ; do ssh-keygen -b 2048 -t rsa -f /tmp/sshkey-$n -q -N "" ; done
ssh  -v -i /tmp/sshkey-1  -i /tmp/sshkey-2  -i /tmp/sshkey-3  ... user@host

debug1: Nächste Authentifizierungsmethode: publickey
debug1: Bietet öffentlichen RSA-Schlüssel: / tmp / sshkey- 1
debug2: Wir haben ein publickey-Paket gesendet. Warten Sie auf die Antwort.
debug1: Authentifizierungen, die fortgesetzt werden können: publickey, gssapi-keyex, gssapi-with-mic
debug1 : Bietet öffentlichen RSA-Schlüssel: / tmp / sshkey- 2
debug2: Wir haben ein publickey-Paket gesendet und warten auf die Antwort
debug1: Authentifizierungen, die fortgesetzt werden können: publickey, gssapi-keyex, gssapi-with-mic
debug1: Bieten öffentlichen RSA-Schlüssel: / tmp / sshkey- 3
debug2: Wir haben ein publickey-Paket gesendet und auf die Antwort
gewartet. debug1: Authentifizierungen, die fortgesetzt werden können: publickey, gssapi-keyex, gssapi-with-mic
debug1: Öffentlicher RSA-Schlüssel: / tmp / sshkey- 4
debug2: wir haben ein publickey-Paket gesendet, warten auf Antwort
debug1: Authentifizierungen, die fortgesetzt werden können: publickey, gssapi-keyex, gssapi-with-mic
debug1: Angebot von RSA public key: / tmp / sshkey- 5
debug2: wir haben ein publickey-Paket gesendet, Warten auf Antwort
debug1: Authentifizierungen, die fortgesetzt werden können: publickey, gssapi-keyex, gssapi-with-mic
debug1: Anbieten eines öffentlichen RSA-Schlüssels: / tmp / sshkey- 6
debug2: Wir haben ein öffentliches Schlüsselpaket gesendet. Warten auf Antwort. Verbindung
vom Host-Port getrennt 22: 2: Zu viele Authentifizierungsfehler Die
Authentifizierung ist fehlgeschlagen

Der Standardwert für MaxAuthTriesist 6 .

sshd [19032]: Fehler: Maximale Authentifizierungsversuche für die Anmeldung von 10.9.8.7 Port 54956 überschritten ssh2 [preauth]
sshd [19032]: Verbindung trennen: Zu viele Authentifizierungsfehler [preauth]

Wenn Sie sshd_config LogLevelauf erhöhen , VERBOSEwerden die zusätzlichen Protokollereignisse generiert, die etwas sinnvoller sind:

sshd [19271]: Verbindung von 10.9.8.7 Port 58823 auf 10.9.8.8 Port 22
sshd [19271]: Öffentlicher Schlüssel für die Anmeldung von 10.9.8.7 Port 58823 fehlgeschlagen. ssh2: RSA SHA256: QGnu ... fpY
sshd [19271]: Öffentlicher Schlüssel fehlgeschlagen für die Anmeldung von 10.9.8.7 Port 58823 ssh2: RSA SHA256: cjje ... dDo
sshd [19271]: publickey fehlgeschlagen für die Anmeldung von 10.9.8.7 Port 58823 ssh2: RSA SHA256: IIWe ... d1M
sshd [19271]: publickey fehlgeschlagen für die Anmeldung von 10.9.8.7 Port 58823 ssh2: RSA SHA256: xrQs ... Et0
sshd [19271]: Fehlgeschlagener öffentlicher Schlüssel für die Anmeldung von 10.9.8.7 Port 58823 ssh2: RSA SHA256: 0Zln ... UI4
sshd [19271]: Fehlgeschlagener öffentlicher Schlüssel für die Anmeldung von 10.9.8.7 Port 58823 ssh2: RSA SHA256: hhsj ... 7Q4
sshd [19271]: Fehler: Maximale Authentifizierungsversuche für die Anmeldung von 10.9.8.7 Port 58823 ssh2 [preauth] überschritten
sshd [19271]: Verbindung trennen: Zu viele Authentifizierungsfehler [preauth]

HBruijn
quelle
1
Ich habe loglevel ausführlich und ich bekomme keine [...] fehlgeschlagenen Zeilen für. (manchmal)
Peter
1

Laut der Manpage sshd config

MaxAuthTries
Gibt die maximale Anzahl von Authentifizierungsversuchen an, die pro Verbindung zulässig sind. Sobald die Anzahl der Fehler die Hälfte dieses Werts erreicht, werden zusätzliche Fehler protokolliert. Der Standardwert ist 6.

Wie Sie sehen, ist das Limit pro Verbindung gültig und nicht alle Versuche werden protokolliert. Sie können auch auswählen, wie viele Informationen in Protokollen angezeigt werden sollen

LogLevel
Gibt die Ausführlichkeitsstufe an, die beim Protokollieren von Nachrichten von sshd (8) verwendet wird. Die möglichen Werte sind: QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2 und DEBUG3. Der Standardwert ist INFO. DEBUG und DEBUG1 sind gleichwertig. DEBUG2 und DEBUG3 geben jeweils höhere Debugging-Ausgabestufen an. Die Protokollierung mit einer DEBUG-Stufe verletzt die Privatsphäre der Benutzer und wird nicht empfohlen.

In OpenSSH / Protokollierung und Fehlerbehebung sehen Sie Beispiele für Protokolle, in denen Sie sehen können, dass der ablehnende Teil dem von Ihnen gezeigten ähnlich ist:

...
Mar 19 11:11:10 server sshd[54798]: Failed password for root from 122.121.51.193 port 59928 ssh2
Mar 19 11:11:10 server sshd[54798]: error: maximum authentication attempts exceeded for root from 122.121.51.193 port 59928 ssh2 [preauth]
Mar 19 11:11:10 server sshd[54798]: Disconnecting authenticating user root 122.121.51.193 port 59928: Too many authentication failures [preauth]

Zusammenfassend lässt sich sagen, dass fehlgeschlagene Authentifizierungsversuche nicht immer an Protokolle gesendet werden. Das Verhalten kann in der conf-Datei für httpd konfiguriert werden.

Und jetzt, nach meiner nicht sehr glücklichen Erfahrung, ssh dem Internet zugänglich zu machen, möchte ich einige allgemeine Empfehlungen geben:

  • Bitte erlauben Sie keinen Benutzer- / Passwortzugriff. Sie sollten nur private / öffentliche Schlüsselpaare verwenden. Es gibt viele böse Jungs da draußen.
  • In jedem Fall sollte root nicht über SSH eintreten dürfen.
  • Denken Sie daran, fail2ban oder ähnliches zu installieren, das IPs für den Zugriff auf Ihr System verbieten kann
JM Robles
quelle
Hallo! Ich bin auch nicht sehr zufrieden mit dieser Antwort. Weil ich in meinem ursprünglichen Beitrag angegeben habe, dass JEDER Versuch bei fast allen Verbindungen angemeldet ist. In dem von Ihnen geposteten Link steht außerdem eindeutig "Jeder fehlgeschlagene Anmeldeversuch wird aufgezeichnet". Auch in dem genauen Beispiel, das Sie veröffentlichen. Meine Frage ist, WARUM mein Server diese Versuche nicht protokolliert. Zu Ihren Empfehlungen. Ich akzeptiere nur SSH-Schlüssel + ZERTIFIKATE, die von einer vertrauenswürdigen Zertifizierungsstelle signiert wurden. Über root ist das eine Frage der Debatte. Facebook erlaubt zum Beispiel Root-Logins über ssh. Ich habe Überlastungsregeln in meiner Firewall. Bitte versuchen Sie stattdessen, die Frage zu beantworten.
Peter
@Peter Es scheint etwas hart zu sein, jemandem zu sagen, der sich bemüht, Ihnen zu helfen.
Mircea Vutcovici
Aber was nützt eine Antwort, die sich selbst widerspricht?
Peter
Mircea, vielen Dank für deine freundlichen Worte. @ Peter Viel Glück. Ich wünschte aufrichtig, Sie hätten alle Ihre Probleme gelöst, einschließlich der Ablaufverfolgungsprotokolle
JM Robles
0

Eine andere Sache ist, wenn Sie sich mit ssh mit einem Passwort beim Root-Benutzer anmelden möchten und Ihre Konfiguration so eingestellt ist, dass PermitRootLogin prohibit-passwordsie mit einem Fehler endeterror: maximum authentication attempts exceeded for root from 10.0.12.12 port 58656 ssh2 [preauth]

QkiZ
quelle