Limitazione degli accessi agli account tramite LDAP e PAM


14

Speravo che alcuni guru PAM / LDAP potessero aiutarmi qui. Di recente ho impostato una directory LDAP su Ubuntu Server per contenere account sia per i miei clienti (per l'uso con sistemi basati sul web) sia per il personale (che dovranno accedere tramite SSH.)

L'autenticazione LDAP funziona perfettamente. Tuttavia, non riesco a far funzionare le restrizioni dell'account: gli account del personale avranno ID tra 2001e 2999e saranno membri del ssh-usersgruppo per consentire loro di accedere ai server.

Le restrizioni in questione sono in /etc/ldap.conf, e sono pam_min_uid, pam_max_uide pam_groupdn.

pam_groupdncontiene il DN completo per il mio ssh-usersgruppo. pam_min_uid= 2000e pam_max_uid= 2999.

Ora sono riuscito a farli funzionare aggiungendo:

account [success=1 default=ignore] pam_ldap.so

sopra la pam_unix.solinea in /etc/pam.d/common-account. Tuttavia, gli account Unix locali NON possono quindi accedere: il server SSH interrompe la connessione non appena provano.

Ho impostato il pam_ldap.somodulo sufficientnel file sopra, ma poi gli utenti non validi ricevono un messaggio che dice che non possono accedere, ma li accede comunque.

Quindi, come posso impostare queste restrizioni dell'account per gli utenti LDAP, pur consentendo agli utenti UNIX di accedere?

Come probabilmente intuirai, sono un principiante di PAM, anche se sono riuscito a far funzionare il modulo "Crea automaticamente home directory" :-)

Mille grazie, Andy

Risposte:


11

PAM ha la capacità di limitare l'accesso in base a un elenco di controllo degli accessi (almeno su Ubuntu) che, come la risposta di kubanskamac (+1) considera i gruppi come gruppi posix, siano essi archiviati in LDAP /etc/groupo NIS.

/etc/security/access.confè il file dell'elenco di accesso. Nel mio file, ho inserito alla fine:

-:ALL EXCEPT root sysadmin (ssh-users):ALL

Questo nega a tutti tranne root, sysadmin e nel gruppo ssh-users (che si trova in LDAP) da dove effettuano il login (il secondo ALL).

Quindi nel mio file di account PAM (questo è un modulo account), aggiungo alla fine:

account required pam_access.so

che dice a PAM di usare questo file. Funziona a meraviglia :-)


Vale la pena notare che potrebbe essere necessario inserire pam_access.so all'inizio del file dell'account PAM per renderlo effettivo.
crb,

5

Vorrei semplicemente usare

auth required    pam_listfile.so   sense=accept item=group file=/etc/groups.allow onerr=fail

per consentire solo gruppi specifici (sia per gruppi locali che LDAP). In questo modo non è necessario specificare nulla in ldap.conf.

Se vuoi mantenere l'autorizzazione a modo tuo, non dovresti filtrare gli utenti sul passaggio "account". Credo che dovresti piuttosto farlo con il pass "auth". In secondo luogo, come puoi vedere, pam_unix elabora sia gli account locali che LDAP (almeno sul passaggio "account"), quindi sembra che non sia affatto necessario che pam_ldap.

EDIT: In terzo luogo, se insisti ad avere roba sul passaggio "account" (che credo possa avere strani effetti collaterali), la tua sequenza dovrebbe terminare con: ..., "pam_ldap sufficiente", "richiesto pam_localuser", "richiesto pam_unix" . Voglio dire, se hai altri moduli, spostali prima di pam_ldap, altrimenti verrebbero ignorati per gli account LDAP a causa della clausola "sufficiente".


Penso che pam_unix stia usando le chiamate getent per recuperare le informazioni sull'account - che usa LDAP come in /etc/nsswitch.conf. Queste linee sono state aggiunte ai file di configurazione PAM dal programma di installazione del pacchetto libpam-ldap. L'azione predefinita di pam_groupdn non stava facendo nulla e, durante la ricerca di risposte, qualcuno ha detto che non avrebbe avuto effetto se il modulo pam_ldap.so non fosse stato utilizzato durante il passaggio "account". Se possibile, preferirei mantenere le impostazioni in ldap.conf in quanto è specificamente correlato a LDAP.
Andy Shellam,

(1) Hai ragione su pam_unix. (2) Sto aggiornando la mia risposta con i consigli di pam_localuser.
kubanczyk,

Tutto ciò che ho letto su PAM indica che l'account è la sezione giusta per questo. auth - Identifica l'utente e autentica l'account dell'account - Verifica le caratteristiche dell'account utente, come l'invecchiamento della password, le restrizioni sui tempi di accesso e le restrizioni di accesso remoto Questo non è un problema di autenticazione - perché il nome utente / password sono corretti e l'utente può essere identificato. È una limitazione dell'account perché non desidero che alcuni account siano in grado di accedere.
Andy Shellam,

0

Solo per aggiungere a @ andy-shellam, ecco il mio common-accountfile:

account [success=2 new_authtok_reqd=done default=ignore] pam_unix.so
account [success=1 default=ignore]            pam_ldap.so
account requisite                     pam_deny.so
account required                      pam_access.so
account required                      pam_permit.so
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.