Come negare l'accesso agli account AD disabilitati tramite Kerberos in pam_krb5?


10

Ho una directory AD / Linux / LDAP / KRB5 funzionante e una configurazione di autenticazione, con un piccolo problema. Quando un account è disabilitato, l'autenticazione con chiave pubblica SSH consente comunque l'accesso dell'utente.

È chiaro che i client Kerberos possono identificare un account disabilitato, poiché kinit e kpasswd restituiscono "Le credenziali dei clienti sono state revocate" senza ulteriori password / interazioni.

PAM può essere configurato (con "UsePAM yes" in sshd_config) per non consentire accessi per account disabilitati, dove l'autenticazione viene eseguita da publickey? Questo non sembra funzionare:

account     [default=bad success=ok user_unknown=ignore] pam_krb5.so

Per favore non introdurre winbind nella tua risposta - non lo usiamo.

Risposte:


4

Ho letto altrove altre persone che chiedevano che SSH fosse "riparato" in modo che gli account bloccati non potessero accedere tramite SSH. (vedi Debian bug 219377) Questa richiesta è stata respinta come patch "perché infrange alcune aspettative degli utenti [che erano] usati per passwd -l bloccando solo passwd." (vedi Debian bug 389183) ad es. alcune persone VOGLIONO poter bloccare gli account dagli accessi con password, ma consentire comunque l'accesso alla 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 attenzione al campo della password, che è da dove gli account sono generalmente bloccati.)

Comprendo che la voce dell'hash della password viene controllata implicitamente al momento di pam_authenicate (), non al momento 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 essere in grado di disabilitare centralmente gli account dall'accesso, ci sono altre possibili soluzioni alternative, tra cui:

Modifica della shell di accesso.

(ri) spostando il loro file authorized_keys.

Un'altra opzione per negare l'accesso potrebbe essere un certo uso di DenyGroups o AllowGroups in sshd_config. (quindi aggiungendo l'utente a un gruppo "sshdeny" o rimuovendolo da un gruppo "sshlogin" per impedire loro di accedere.) (leggi qui: https://help.ubuntu.com/8.04/serverguide/user-management .html )

Da http://web.archiveorange.com/archive/v/67CtqEoe5MhDqkDmUMuL ho letto: "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, scadere l'account anziché bloccarlo farebbe ciò di cui hai bisogno?

La risposta alla tua domanda è probabilmente "sì, se li stai disabilitando in un posto diverso dal campo password"


4

Ho fatto altri compiti e sto rispondendo alla mia domanda.

In pam_krb5 ( pam_krb5-2.3.14-1/src/acct.c) di RedHat , 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; usare gli attributi "proxy" per trasmettere lo stesso significato, come rompere la shell o aggiungere a un gruppo di "utenti disabili".

Un'altra soluzione alternativa (parzialmente testata) consiste nell'impostare una data di scadenza dell'account in passato e utilizzare un modulo come pam_unix per non superare i controlli dell'account. Questo utilizza LDAP, anziché KRB5, ma esegue una query sulla stessa directory utente gestita centralmente.


2

L'autenticazione basata su chiave SSH è indipendente da PAM. Hai le seguenti soluzioni:

  • disabilita l'autenticazione basata su chiave in sshd_config
  • cambia e ricompila sshd e aggiungi un hook in modo tale che l'autent basata su chiave controllerà anche se l'account è valido tramite pam.

Se si desidera utilizzare l'accesso senza password tramite Kerberos, è necessario assicurarsi che:

  • non stai usando pam per sshd
  • avete Kerberos correttamente configurato. Ad esempio puoi farlokinit -k host/server1.example.com@DOMAIN
  • sshd è configurato per usare gssapi:

    KerberosAutenticazione sì GSSAPIAautenticazione sì GSSAPICleanupCredentials sì UtilizzoPAM no

  • si utilizza un client SSH kerberized come PuTTY v0.61 o più recente.


1
Non sono d'accordo sul fatto che l'autent di chiave pubblica SSH sia indipendente da PAM. L'aggiunta account optional pam_echo.so file=/etc/redhat-releasea /etc/pam.d/sshd provoca la stampa del contenuto del file durante l'utilizzo degli accessi con autenticazione basati su chiave (provalo).
Phil

Penso che pam sia usato solo per l'account (es. Per creare la cartella home) e non per auth. Sto controllando questo caso ora.
Mircea Vutcovici,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.