User Tools

Site Tools


Sidebar

cn:ccr:aai:howto:rhel8-ldap-auth

RHEL8 LDAP AuthN & AuthZ

Le informazioni presenti nell'infrastruttura LDAP di INFN-AAI, possono essere utilizzate anche per effettuare le operazioni di Autenticazione ed Autorizzazione da parte di sistemi UNIX. In questa guida viene descritta una possibile configurazione minimale di un sistema basato su RHEL8, che utilizza il demone SSSD.

  • Le informazioni di utenti/gruppi (attributi Posix) vengono recuperate via LDAP dal ramo di sede (nell'esempio viene utilizzato quello di Napoli: dc=na,dc=infn,dc=it).
  • L'autenticazione, via bind LDAP, viene invece effettuata sul ramo nazionale.

Installazione dei pacchetti necessari

dnf -y install curl tar openldap-clients sssd sssd-ldap oddjob-mkhomedir nss-pam-ldapd openssl-perl

Configurazione certificati CA e parametri default per openldap

I certificati dei server LDAP nazionali sono attualmente firmati da Sectigo.

Creare (se non esiste già) la directory /etc/openldap/cacerts/ ed estrarre nella stessa directory il contenuto del file sectigo-ca.tar:

 curl -s https://wiki.infn.it/_media/cn/ccr/aai/howto/sectigo-ca.tar  | tar xvf - -C /etc/openldap/cacerts/

Generare gli hash dei certificati CA con il comando:

 c_rehash /etc/openldap/cacerts/

Editare il file /etc/openldap/ldap.conf sostituendo ds1.na.infn.it / ds2.na.infn.it con l'URI del (o dei) server LDAP nella propria sede (oppure usare il server LDAP nazionale ds.infn.it):

URI    ldap://ds1.na.infn.it ldap://ds2.na.infn.it
BASE   ou=people,dc=na,dc=infn,dc=it
TLS_CACERTDIR   /etc/openldap/cacerts

Configurazione SSSD

Impostare il profilo SSSD con authselect. L'opzione with-mkhomedir fa in modo che la home directory dell'utente venga automaticamente creata al primo login. Le opzioni with-custom-* se non si vogliono risolvere i netgroup, automount e services via demone SSSD:

authselect select sssd with-mkhomedir with-custom-netgroup with-custom-automount with-custom-services --force

Creare il file /etc/sssd/sssd.conf sostituendo ds1.na.infn.it / ds2.na.infn.it con l'URI del (o dei) server LDAP nella propria sede oppure usare il server LDAP nazionale ds.infn.it:

[domain/aai-napoli]
# Le informazioni dell'utente e gli attributi posix vengono recuperati dal ramo LDAP della propria sede
id_provider = ldap
ldap_uri = ldap://ds1.na.infn.it, ldap://ds2.na.infn.it
ldap_search_base = dc=na,dc=infn,dc=it

# ATTENZIONE: In questo modo si considerano -tutti- gli utenti presenti nel ramo di sede.
# Per impostare dei filtri sugli utenti leggere il paragrafo successivo.
ldap_user_search_base = ou=people,dc=na,dc=infn,dc=it

# ATTENZIONE: I gruppi sul ramo di sede sono in "ou=group" e -non- in "ou=groups"
ldap_group_search_base = ou=group,dc=na,dc=infn,dc=it

ldap_id_use_start_tls = True
cache_credentials = True
ldap_tls_cacertdir = /etc/openldap/cacerts
ldap_tls_reqcert = demand

# L'autenticazione viene invece demandata alle PAM-LDAP sul ramo LDAP nazionale.
# SSSD può infatti utilizzare due meccanismi diversi per separare la parte di identità
# da quella di autenticazione.
auth_provider = proxy
proxy_pam_target = sssdproxyldap

# Il cambio password sul ramo LDAP nazionale è consentito solo via IdP o Kerberos, inutile configurare un chpass provider.
chpass_provider = none

# Sugli LDAP server di INFN-AAI non ci sono informazioni di questo tipo, inutile configurare i rispettivi provider.
sudo_provider = none
selinux_provider = none
subdomains_provider = none
session_provider = none
autofs_provider = none
hostid_provider = none
resolver_provider = none


[sssd]
services = nss, pam
domains = aai-napoli

Per filtrare/autorizzare gli utenti del ramo di sede in base a specifici attributi LDAP ci sono diversi metodi:

  1. Impostare un filtro LDAP direttamente nel parametro ldap_group_search_base. In questo modo soltanto le entry LDAP che soddisfano il filtro saranno considerati utenti reali dal sistema operativo. La sintassi generale è:
    ldap_user_search_base = <ramo-people-di-sede>?<scope>?<filter>

    Ad esempio, per filtrare gli utenti che hanno l'attributo isMemberOf che inizia con la stringa i:infn:na::d: (cioè: dipendenti della sezione di Napoli):

    ldap_user_search_base = ou=people,dc=na,dc=infn,dc=it?one?(isMemberOf=i:infn:na::d:*)
  2. Impostare access_provider di tipo ldap e specificare un ldap_access_filter. In questo modo soltanto gli utenti LDAP che soddisfano il filtro potranno loggarsi sul sistema. Chi non soddisfa il filtro non potrà loggarsi ma sarà comunque considerato un utente reale dal sistema operativo. La sintassi generale è:
    access_provider = ldap
    ldap_access_filter = <filter>

    Ad esempio, per filtrare gli utenti che hanno l'attributo isMemberOf che inizia con la stringa i:infn:na::d: (cioè: dipendenti della sezione di Napoli):

    access_provider = ldap
    ldap_access_filter = (isMemberOf=i:infn:na::d:*)
  3. Una combinazione dei metodi 1 e 2. Ad esempio si può impostare un filtro nella ldap_group_search_base per specificare quali sono gli utenti reali del sistema operativo e permettere il login soltanto ad alcuni di questi attraverso un secondo filtro in ldap_access_filter

Impostare i permessi del file:

chmod 600 /etc/sssd/sssd.conf

Abilitare i servizi sssd e oddjobd:

systemctl enable sssd.service
systemctl enable oddjobd.service

Configurazione PAM-LDAP

Creare il file /etc/pam.d/sssdproxyldap:

auth          required      pam_ldap.so
account       required      pam_ldap.so
password      required      pam_ldap.so
session       required      pam_ldap.so

Creare (o editare) il file /etc/nslcd.conf sostituendo ds1.na.infn.it / ds2.na.infn.it con l'URI del (o dei) server LDAP nella propria sede oppure usare il server LDAP nazionale ds.infn.it:

# L'autenticazione dell'utente viene fatta con un bind LDAP sul ramo nazionale 
uid nslcd
gid ldap
uri ldap://ds1.na.infn.it ldap://ds2.na.infn.it
base ou=people,dc=infn,dc=it
ssl start_tls
tls_cacertdir /etc/openldap/cacerts
filter passwd (objectClass=infnAccount)

Abilitare il demone nslcd:

systemctl enable nslcd.service

Restart dei servizi

systemctl restart sssd oddjobd nslcd
cn/ccr/aai/howto/rhel8-ldap-auth.txt · Last modified: 2022/04/15 10:01 by resposit@infn.it