Recentemente ci sono state segnalazioni di problemi di accesso di nuovi utenti registrati quando si utilizza SSH. Il SysAdmin registra Alice e poi fa provare ad Alice ad effettuare il login tramite SSH. Alice segnala un errore di autenticazione.
I messaggi syserr_log sembrano indicare che Alice non è registrata.
05:04:02 Processo 1111812D, root.root (sshd), creato.
05:04:02 root (sshd) : [AUTH] [INFO] sshd [PID=0x1111812D]: Alice utente non valida
+ da 127.0.0.1
05:04:02 root (sshd) : [AUTH] [INFO] sshd [PID=0x1111812D]: input_userauth_req
+uest: alice utente non valido
05:04:02 root (sshd) : [AUTH] [INFO] sshd [PID=0x1111812D]: Fallito nessuno per in
+valida alice utente da 127.0.0.1 porta 54869 ssh2
05:04:06 root (sshd) : [AUTH] [ERR] sshd [PID=0x1111812D]: errore: Impossibile ge
+t informazioni ombra per NOUSER
05:04:06 root (sshd) : [AUTH] [INFO] sshd [PID=0x1111812D]: Password fallita per
+r alice utente non valido da 127.0.0.1 porta 54869 ssh2
|
Ma se Alice utilizza un client Telnet invece di un client SSH può effettuare il login senza problemi.
05:04:23 Processo 1111812E, PreLogin.System (pre-login), creato.
05:04:38 Processo 1111812E passare ad alice.CAC (login).
|
Inoltre se invece di provare ad effettuare il login subito dopo la registrazione Alice aspetta qualche minuto può effettuare il login senza problemi.
05:12:51 Processo 11118130, root.root (sshd), creato.
05:12:55 root (sshd) : [AUTH] [INFO] sshd [PID=0x11118130]: Password accettata
+per alice da 127.0.0.0.1 porta 54909 ssh2
05:12:55 Processo 11118131, root.root (sshd), creato.
05:12:55 Processo 11118131 passato ad alice.CAC (login).
|
La cosa davvero frustrante è che a volte il primo utente appena registrato non ha problemi ad autenticarsi con SSH, ma il secondo sì.
Allora, cosa sta succedendo?
Ci sono alcuni problemi nell'avere programmi POSIX come SSH che fanno riferimento direttamente al database di registrazione. Le loro chiamate di autenticazione sono invece servite dal processo posix_regdb_server. Il processo posix_regdb_server mantiene una copia del database di registrazione a cui fa riferimento per determinare se un utente è valido. Ogni volta che il posix_regdb_server cerca un ID utente, confronta l'ora corrente con l'ora in cui ha letto l'ultima volta il database di registrazione e se tale ora è superiore a 5 minuti nel passato rilegge il database. Quindi è possibile che un utente appena registrato debba attendere fino a 5 minuti prima di poter effettuare il login con SSH.
Per lo scenario in cui il primo utente appena registrato non ha problemi ma il secondo fa quello che succede è che il SysAdmin registra Bob e fa provare a Bob a fare il login. Poiché sono passati più di 5 minuti dall'ultima richiesta di autenticazione il server posix_regdb_server aggiorna la sua copia del database, vede Bob come un utente valido e Bob può effettuare il login. Ora il SysAdmin registra Alice e fa provare il login ad Alice. Tuttavia, dato che è passato solo un minuto o due da quando Bob ha effettuato il login nel servizio posix_regdb_server non aggiorna la sua copia del database e Alice non viene trovata, quindi non può effettuare il login.
Non c'è modo di cambiare la finestra di 5 minuti. Se si interrompe il processo posix_regdb_server, al suo riavvio la copia del database di registrazione verrà aggiornata. Di solito, viene riavviato automaticamente entro un minuto, ma può richiedere fino a 2 minuti, quindi mentre si possono accelerare le cose non si può accelerare di molto.
Una strategia migliore è quella di registrare tutti i nuovi utenti contemporaneamente, prima di provarne uno qualsiasi. Anche per registrarli in un momento in cui nessuno sta cercando di effettuare il login via SSH, in questo modo quando il primo nuovo utente cerca di effettuare il login il server posix_regdb_server aggiorna il suo database e ottiene tutti i nuovi utenti allo stesso tempo.
Naturalmente trovare un momento in cui nessuno sta cercando di effettuare il login tramite SSH può essere difficile, quindi la strategia migliore è quella di registrare tutti i nuovi utenti allo stesso tempo e poi andare a prendere una tazza di caffè prima di dire loro che possono effettuare il login.