Ho letto altrove altre persone che chiedono che SSH venga "riparato" in modo che gli account bloccati non possano essere registrati tramite SSH. (vedi Debian bug 219377) Questa richiesta è stata respinta come patch "perché infrange alcune aspettative degli utenti [che erano] abituati a passwd -l bloccando solo passwd." (vedi bug Debian 389183) ad es. alcune persone DESIDERANO essere in grado di bloccare gli account dagli accessi con password, ma consentire comunque l'accesso tramite chiave SSH.
PAM non negherà l'autenticazione della chiave SSH agli account che sono stati appena bloccati (ad es. a causa di tentativi di password non validi, poiché l'autenticazione della chiave SSH è progettata per non prestare alcuna attenzione al campo della password, che è da dove gli account vengono solitamente bloccati.)
Comprendo che la voce dell'hash della password viene controllata implicitamente all'ora di pam_authenicate(), non all'ora di pam_acct_mgmt(). pam_unix.so pam_sm_acct_mgmt() non controlla affatto l'hash della password e pam_authenticate() non viene chiamato durante l'autenticazione con chiave pubblica.
Se la tua intenzione è quella di poter disabilitare centralmente l'accesso agli account, ci sono altre possibili soluzioni alternative, tra cui:
Cambiare la shell di login.
(ri) spostando il loro file authorized_keys.
Un'altra opzione per negare l'accesso potrebbe essere l'uso di DenyGroups o AllowGroups in sshd_config. (quindi aggiungendo l'utente a un gruppo "sshdeny" o rimuovendolo da un gruppo "sshlogin" per disabilitarne l'accesso.) (leggi qui:https://help.ubuntu.com/8.04/serverguide/user-management.html )
Da http://web.archiveorange.com/archive/v/67CtqEoe5MhDqkDmUMuLI leggi:"Il problema è che pam_unix controlla solo le date di scadenza della voce shadow, non il contenuto del campo hash della password." Se questo è vero, sarebbe in scadenza l'account invece di bloccarlo cosa ti serve?
La risposta alla tua domanda è probabilmente "sì, se li stai disabilitando in un punto diverso dal campo della password"
Ho fatto altri compiti e sto rispondendo alla mia stessa domanda.
In pam_krb5 (pam_krb5-2.3.14-1/src/acct.c
), a meno che il modulo non abbia partecipato alla fase di autenticazione, la funzione pam_sm_acct_mgmt() restituisce PAM_IGNORE o PAM_USER_UNKNOWN a seconda della configurazione del modulo. Richiederebbe quindi modifiche al codice pam_krb5 per fare quello che voglio.
La risposta di JohnGH è una buona soluzione alternativa; utilizzando gli attributi "proxy" per trasmettere lo stesso significato, come rompere la shell o aggiungersi a un gruppo di "utenti disabili".
Un'altra soluzione alternativa (parzialmente testata) consiste nell'impostare una data di scadenza dell'account nel passato e utilizzare un modulo come pam_unix per fallire i controlli dell'account. Questo utilizza LDAP, piuttosto che KRB5, ma interroga la stessa directory utente gestita centralmente.
L'autenticazione basata su chiave SSH è indipendente da PAM. Hai le seguenti soluzioni:
- disattiva l'autenticazione basata su chiave in sshd_config
- cambia e ricompila sshd e aggiungi un hook in modo che l'autenticazione basata su chiave controlli anche se l'account è valido tramite pam.
Se desideri utilizzare l'accesso senza password tramite kerberos, devi assicurarti che:
- non stai usando pam per sshd
- kerberos è configurato correttamente. Per esempio. puoi fare
kinit -k host/[email protected]
-
you sshd è configurato per usare gssapi:
KerberosAuthentication yesGSSAPIAuthentication yesGSSAPICleanupCredentials yesUsePAM no
-
usi un client ssh kerberizzato come PuTTY v0.61 o più recente.