Skip to main content

Récemment, des problèmes ont été signalés concernant la connexion d'utilisateurs nouvellement enregistrés lors de l'utilisation de SSH. Le SysAdmin enregistre Alice et demande ensuite à Alice d'essayer de se connecter via SSH. Alice signale une erreur d'authentification.

Les messages de syserr_log semblent indiquer qu'Alice n'est pas enregistrée.

05:04:02 Processus 1111812D, root.root (sshd), créé. 
05:04:02 racine (sshd) : [AUTH] [INFO] sshd [PID=0x1111812D] : Utilisateur non valide alice 
+ de 127.0.0.1 
05:04:02 racine (sshd) : [AUTH] [INFO] sshd [PID=0x1111812D] : input_userauth_req 
+uest : utilisateur invalide alice 
05:04:02 racine (sshd) : [AUTH] [INFO] sshd [PID=0x1111812D] : Aucun échec pour en 
+l'utilisateur valide alice de 127.0.0.1 port 54869 ssh2 
05:04:06 racine (sshd) : [AUTH] [ERR] sshd [PID=0x1111812D] : erreur : Impossible de ge 
+t shadow information for NOUSER 
05:04:06 racine (sshd) : [AUTH] [INFO] sshd [PID=0x1111812D] : Echec du mot de passe pour 
+r invalid user alice from 127.0.0.1 port 54869 ssh2

 

Mais si Alice utilise un client Telnet au lieu d'un client SSH, elle peut se connecter sans problème.

05:04:23 Processus 1111812F, système de préloginage (pre-login), créé. 
05:04:38 Processus 1111812E est passé à alice.CAC (login).

 

En outre, si, au lieu d'essayer de se connecter immédiatement après avoir été enregistrée, Alice attend quelques minutes, elle peut se connecter sans problème.

05:12:51 Processus 11118130, root.root (sshd), créé. 
05:12:55 racine (sshd) : [AUTH] [INFO] sshd [PID=0x11118130] : Mot de passe accepté 
+pour alice à partir de 127.0.0.1 port 54909 ssh2 
05:12:55 Processus 11118131, root.root (sshd), créé. 
05:12:55 Processus 11118131 est passé à alice.CAC (login).

 

Ce qui est vraiment frustrant, c'est que parfois le premier utilisateur nouvellement enregistré n'a aucun problème pour s'authentifier avec les sciences humaines, mais qu'un deuxième le fait.

Que se passe-t-il alors ?

Le fait que des programmes POSIX comme SSH fassent directement référence à la base de données d'enregistrement pose certains problèmes. Au lieu de cela, leurs appels d'authentification sont pris en charge par le processus posix_regdb_server. Le processus posix_regdb_server conserve une copie de la base de données d'enregistrement qu'il référence pour déterminer si un utilisateur est valide. Chaque fois que le processus posix_regdb_server recherche un identifiant d'utilisateur, il compare l'heure actuelle avec l'heure de la dernière lecture de la base de données d'enregistrement et si cette heure se situe à plus de 5 minutes dans le passé, il relit la base de données. Il est donc possible qu'un utilisateur nouvellement enregistré doive attendre jusqu'à 5 minutes avant de pouvoir se connecter en utilisant SSH.

Dans le cas où le premier utilisateur nouvellement enregistré n'a pas de problème mais que le second fait ce qui se passe, le SysAdmin enregistre Bob et lui fait essayer de se connecter. Comme il s'est écoulé plus de 5 minutes depuis la dernière demande d'authentification, le serveur posix_regdb_server rafraîchit sa copie de la base de données, considère Bob comme un utilisateur valide et Bob peut se connecter. Maintenant, le SysAdmin enregistre Alice et demande à Alice d'essayer de se connecter. Cependant, comme cela ne fait qu'une minute ou deux que Bob s'est connecté au service posix_regdb_service, il ne rafraîchit pas sa copie de la base de données et Alice n'est pas trouvée, donc n'est pas autorisée à se connecter.

Il n'y a pas moyen de modifier la fenêtre de 5 minutes. Si vous arrêtez le processus posix_regdb_server, il rafraîchira sa copie de la base de données d'enregistrement lorsqu'il sera redémarré. En règle générale, il sera automatiquement redémarré dans la minute qui suit, mais cela peut prendre jusqu'à 2 minutes, de sorte que si vous pouvez accélérer les choses, vous ne pouvez pas les accélérer de beaucoup.

Une meilleure stratégie consiste à enregistrer tous les nouveaux utilisateurs en même temps, avant d'essayer l'un d'entre eux. Il faut également les enregistrer à un moment où personne n'essaie de se connecter via SSH, de sorte que lorsque le premier nouvel utilisateur essaie de se connecter, le posix_regdb_server actualise sa base de données et récupère tous les nouveaux utilisateurs en même temps.

Bien sûr, il peut être difficile de trouver un moment où personne n'essaie de se connecter via les sciences humaines. La meilleure stratégie consiste donc à enregistrer tous les nouveaux utilisateurs en même temps, puis à aller prendre un café avant de leur dire qu'ils peuvent se connecter.

 

2020 Stratus Technologies.