Benutzerdefinierte Fehlermeldung für sshd

8

Ist es möglich, eine benutzerdefinierte Fehlermeldung für Benutzer festzulegen, denen der Zugriff auf einen Server verweigert wurde? Tatsächlich möchte ich diese Nachricht nur anzeigen, wenn ein Benutzer aufgrund eines eingestellten IP-Filters abgelehnt wurde sshd_config. Eine globale Fehlermeldung würde jedoch ausreichen.

Mikulas Dite
quelle

Antworten:

6

Mit "Fehlermeldung" meinen Sie eine Textzeichenfolge, die vom Client-Programm angezeigt wird. Das Wort "Nachricht" hat einen Kontext im RFC des SSH-Authentifizierungsprotokolls, auf den ich später verweisen werde, aber ich glaube nicht, dass dies die Konnotation ist, in der Sie es verwenden.

Ich glaube, Sie denken, dass SSH so etwas wie TELNET ist, bei dem vom Client gesendete beliebige Textzeichenfolgen vom Client angezeigt werden. SSH verwendet ein Authentifizierungsprotokoll , das tokenisierte Nachrichten in Form von Binärwerten zwischen Client und Server hin und her leitet. Eine dieser tokenisierten Nachrichten, "SSH_MSG_USERAUTH_BANNER", kann verwendet werden, um den Client anzuweisen, beliebige Textzeichenfolgen anzuzeigen (falls dies gewünscht wird), aber Sie müssten Ihren SSH-Dämon ändern, um diese zum richtigen Zeitpunkt zu senden. Ich glaube nicht, dass OpenSSH über integrierte Funktionen zum Senden von SSH_MSG_USERAUTH_BANNER-Nachrichten an beliebigen Punkten des Authentifizierungsprozesses verfügt.

Ich würde fragen, warum Sie einem Angreifer zusätzliche Informationen darüber geben möchten, warum seine Authentifizierung fehlgeschlagen ist. Sie wissen, dass dies fehlgeschlagen ist, da ihr SSH-Client die Token-Nachricht vom SSH-Daemon empfängt und darauf reagiert, die den Fehler signalisiert.

Evan Anderson
quelle
1

BEARBEITEN: Evan Anderson tippt schneller als ich und scheint zu bestätigen, dass die Nachricht nicht an die Servergröße anpassbar ist.

Sie können eine Bannerdatei in der Datei sshd_config angeben. Das Banner wird allen Benutzern vor der Anmeldeaufforderung angezeigt und gibt an, dass nur Anmeldungen von bestimmten Domänen und Adressen zulässig sind.

SSH kann die Anmeldung an den Befehl unix / bin / login weitergeben. Abhängig von Ihrem Betriebssystem haben Sie möglicherweise eine Option, um die Eingabeaufforderungen und Fehler anzupassen.

Alles andere, was mir einfällt, würde wahrscheinlich bedeuten, Code zu bearbeiten und neu zu kompilieren. Und es ist möglich, dass die Fehlermeldung nicht als Zeichenfolge, sondern als Code vom Server an den Client gesendet wird, um zu verhindern, dass ein Angreifer Informationen sammelt. (Wenn es sich um eine Zeichenfolge handelt, die anpassbar ist, wird sie von jemandem auf "Anmeldung fehlgeschlagen. OpenSSH_3.7_p2 21032004" gesetzt.)

Bill Gates
quelle
0

Dies würde nicht speziell für den IP-Filter in sshd_configfunktionieren, aber es würde für alle Zugriffskontrollen funktionieren, die von PAM mithilfe von implementiert werden pam_echo.so.

Zum Beispiel:

account [success=2 default=ignore] pam_lastlog.so inactive=30
account optional pam_echo.so file=/path/to/lastlog_error_message.txt
account requisite pam_deny.so
account ...

Wenn sich in diesem Szenario ein authentifizierter Benutzer in den letzten dreißig Tagen nicht angemeldet hat, wird der Inhalt von /path/to/lastlog_error_message.txtvor dem Schließen der SSH-Verbindung auf Standard-Out zurückgesendet. Wenn sie die Prüfung von pam_lastlogdann bestanden haben, würden die Auswertungen pam_echound pam_denyAufrufe überspringen , um die Auswertung der verbleibenden PAM-Module fortzusetzen.

jgibson
quelle