Message d'erreur personnalisé pour sshd

8

Est-il possible de définir un message d'erreur personnalisé pour les utilisateurs refusés d'accéder à un serveur? En fait, je voudrais afficher ce message uniquement si un utilisateur a été rejeté en raison d'un filtre IP défini sshd_config. Mais un message d'erreur global suffirait.

Mikulas Dite
la source

Réponses:

6

Par "message d'erreur", je pense que vous entendez une chaîne de texte affichée par le programme client. Le mot «message» a un certain contexte dans le protocole d'authentification SSH RFC que je mentionnerai plus tard, mais je ne pense pas que ce soit la connotation dans laquelle vous l'utilisez.

Je pense que vous pensez que SSH est quelque chose comme TELNET, où des chaînes de texte arbitraires envoyées par le démon du serveur seront affichées par le client. SSH utilise un protocole d'authentification qui transmet des messages à jetons sous forme de valeurs binaires dans les deux sens entre le client et le serveur. L'un de ces messages à jetons, "SSH_MSG_USERAUTH_BANNER", peut être utilisé pour demander au client d'afficher des chaînes de texte arbitraires (s'il le souhaite), mais vous devrez modifier votre démon SSH pour les envoyer au moment approprié. Je ne pense pas qu'OpenSSH ait une fonctionnalité intégrée pour envoyer des messages SSH_MSG_USERAUTH_BANNER pendant des points arbitraires dans le processus d'authentification.

Je me demande pourquoi vous souhaitez fournir à un attaquant distant des informations supplémentaires sur les raisons de l'échec de son authentification. Ils savent qu'il a échoué car leur client SSH reçoit et réagit au message à jeton du démon SSH signalant l'échec.

Evan Anderson
la source
1

EDIT: Evan Anderson tape plus vite que moi et semble confirmer que le message n'est pas personnalisable sur la taille du serveur.

Vous pouvez spécifier un fichier de bannière dans sshd_config. La bannière serait affichée à tous les utilisateurs avant l'invite de connexion et indiquerait que seules les connexions à partir de certains domaines et adresses sont autorisées.

SSH peut transmettre la connexion à la commande unix / bin / login. Selon votre système d'exploitation, vous pouvez avoir une option pour personnaliser les invites et les erreurs?

Tout ce à quoi je peux penser signifierait probablement éditer du code et recompiler. Et il est possible que le message d'échec ne soit pas envoyé du serveur au client sous forme de chaîne, mais sous forme de code, afin d'empêcher un attaquant de collecter des informations. (S'il s'agit d'une chaîne et personnalisable, quelqu'un la définira sur "Échec de la connexion. OpenSSH_3.7_p2 21032004")

Bill Gates
la source
0

Cela ne fonctionnerait pas spécifiquement pour le filtre ip dans sshd_config, mais cela fonctionnerait pour tous les contrôles d'accès implémentés par PAM à l'aide de pam_echo.so.

Par exemple:

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 ...

Dans ce scénario, si un utilisateur authentifié ne s'était pas connecté au cours des trente derniers jours, le contenu de /path/to/lastlog_error_message.txtserait renvoyé à la sortie standard avant la fermeture de la connexion SSH. S'ils réussissaient la vérification, l' pam_lastlogévaluation ignorerait les invocations pam_echoet pam_denycontinuerait d'évaluer les modules PAM restants.

jgibson
la source