Linux + autenticazione Active Directory + che consente l'accesso solo a determinati gruppi


14

Ho alcune scatole di Linux che usano l'autenticazione di Windows Active Directory, che funziona perfettamente (Samba + Winbind).

Quello che vorrei fare ora è consentire solo a determinate persone o determinati gruppi di accedere utilizzando le credenziali di Active Directory. Attualmente chiunque abbia un account AD valido può effettuare l'accesso. Voglio limitare questo solo a pochi gruppi. È fattibile?

Risposte:


6

Supponendo che i gruppi siano disponibili per il sistema Linux, raccomando l'editing /etc/security/access.confper Ubuntu, le distribuzioni RedHat (e le loro forcelle) e probabilmente molti altri. Ciò non richiede la modifica dei file PAM ed è un posto ben standard per farlo. Di solito ci sono esempi nel file, commentati.


Grazie, questo è quello che ho finito per fare quello che volevo fare, tutte le risposte sopra erano grandiose, ma questa è quella che ha funzionato meglio per me. Uso il file Samba per bloccare Samba e ora sto usando questo file access.conf per bloccare gli accessi SSH.
Luma,

4

(Sto parlando di samba 3 qui, nessuna esperienza su samba 4 ora.)

Non è necessario modificare quei file /etc/pam.d/xxx. pam_winbind.conf è il file desiderato, in genere si trova in /etc/security/pam_winbind.conf .

È il file di configurazione del modulo pam_winbind e funziona sia per CentOS / Redhat che per Debian / Ubuntu. Puoi leggere la pagina man di pam_winbind.conf come riferimento.

Ecco un file di esempio.

#
# pam_winbind configuration file
#
# /etc/security/pam_winbind.conf
#

[global]

# turn on debugging
;debug = no

# turn on extended PAM state debugging
;debug_state = no

# request a cached login if possible
# (needs "winbind offline logon = yes" in smb.conf)
cached_login = yes

# authenticate using kerberos
;krb5_auth = no

# when using kerberos, request a "FILE" krb5 credential cache type
# (leave empty to just do krb5 authentication but not have a ticket
# afterwards)
;krb5_ccache_type =

# make successful authentication dependend on membership of one SID
# (can also take a name)
# require_membership_of = SID,SID,SID
require_membership_of = S-1-5-21-4255311587-2195296704-2687208041-1794

# password expiry warning period in days
;warn_pwd_expire = 14

# omit pam conversations
;silent = no

# create homedirectory on the fly
mkhomedir = yes

3

Attualmente uso la AllowGroupsdirettiva /etc/ssh/sshd_configper limitare chi è in grado di accedere. Specificare uno o più gruppi AD su quella linea e quelle persone saranno le uniche in grado di accedere.

Tenete a mente che questo funziona solo se gli utenti sono solo accedono al server remoto tramite SSH. Se cantano localmente, dovrai trovare un'altra soluzione.


3

Sì, ci sono alcuni modi per farlo a seconda di ciò che stai cercando di realizzare esattamente.

Il primo metodo può essere eseguito tramite la configurazione di samba. Ciò consentirà solo a questi utenti di connettersi a Samba, altri utenti potranno comunque accedere tramite altri servizi (ssh, termine locale, ecc.). Con questo, ti consigliamo di aggiungere una riga alla tua sezione [globale] in smb.conf:

valid users = @groupA @groupB

L'altro metodo è modificando le regole PAM. Diverse distribuzioni hanno lievi differenze qui, ma in generale ci sono regole PAM per servizio e regole comuni, puoi decidere cosa è meglio. Ti consigliamo di aggiungere una restrizione dell'account utilizzando il modulo pam_require. Un esempio sul mio laptop (Fedora 13) sarebbe quello di modificare la sezione dell'account in /etc/pam.d/system-auth in:

account     required      pam_unix.so
account     required      pam_require.so @groupA @groupB
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 500 quiet
account     required      pam_permit.so

Per semplificare l'amministrazione, potresti voler creare un nuovo gruppo in Active Directory allo scopo di tracciare gli utenti che possono accedere a questo server.


1

Ho faticato a far funzionare una delle cose sopra per me in RHEL 7. Di seguito è quello che sono stato in grado di lavorare.

/etc/sssd/sssd.conf

Cambia access_provider = ad in access_provider = simple +simple_allow_groups = @group1-admins@xxx.xxx.com, @group2@xxx.xxx.com

visudo

  • %group1-admins@xxx.xxx.com ALL=(ALL) ALL

riavviare il servizio sssd.


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.