User Tools

Site Tools


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

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
cn:ccr:aai:howto:rhel8-ldap-auth [2022/04/07 09:18] – [Configurazione SSSD] resposit@infn.itcn:ccr:aai:howto:rhel8-ldap-auth [2022/04/15 10:01] (current) – [Configurazione SSSD] resposit@infn.it
Line 1: Line 1:
 +====== 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 [[https://sssd.io|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 {{ :cn:ccr:aai:howto:sectigo-ca.tar|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):
 +<code>
 +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
 +</code>
 +===== 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**:
 +<code>
 +[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
 +</code>
 +Per filtrare/autorizzare gli utenti del ramo di sede in base a specifici attributi LDAP ci sono diversi metodi:
 +  - 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 è:<code>ldap_user_search_base = <ramo-people-di-sede>?<scope>?<filter></code>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):<code>ldap_user_search_base = ou=people,dc=na,dc=infn,dc=it?one?(isMemberOf=i:infn:na::d:*)</code>
 +  - 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 è:<code>access_provider = ldap
 +ldap_access_filter = <filter></code>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):<code>access_provider = ldap
 +ldap_access_filter = (isMemberOf=i:infn:na::d:*)</code>
 +  - 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**:
 +<code>
 +auth          required      pam_ldap.so
 +account       required      pam_ldap.so
 +password      required      pam_ldap.so
 +session       required      pam_ldap.so
 +</code>
 +
 +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**: 
 +<code>
 +# 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)
 +</code>
 +
 +Abilitare il demone nslcd:
 +  systemctl enable nslcd.service
 +  
 +===== Restart dei servizi =====
 +
 +  systemctl restart sssd oddjobd nslcd

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki