User Tools

Site Tools


cn:ccr:aai:howto:389ds-1.x-install

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:389ds-1.x-install [2017/03/23 14:36] – [Configurazione plugin Kerberos Password back-end] dmaselli@infn.itcn:ccr:aai:howto:389ds-1.x-install [2019/03/07 10:27] (current) enrico@infn.it
Line 1: Line 1:
 +====== RHEL5/6: Installazione di 389 Directory Server 1.x======
  
 +
 +** NOTA BENE **
 +Gli esempi citati in questa guida si intendono per 389 Directory Server 1.x su Scientific Linux 5 o 6
 +
 +In caso di installazione con diverse versioni alcuni path o nomi dei pacchetti potrebbero differire.
 +
 +// E’ inoltre vivamente consigliato che IP address, IP Name e Hostname della macchina siano coerenti. //
 +
 +
 +===== Preparazione del sistema =====
 +
 +
 +Modificare i parametri kernel in /etc/sysctl.conf:
 +
 +  echo "fs.file-max = 256000" >> /etc/sysctl.conf
 +  echo "net.ipv4.ip_local_port_range = 1024 65000" >> /etc/sysctl.conf
 +  echo "net.ipv4.tcp_keepalive_time = 300" >> /etc/sysctl.conf
 +  echo "vm.swappiness = 10" >> /etc/sysctl.conf
 +
 +Ricaricare sysctl:
 +
 +  sysctl -p
 +
 +Modificare i limits in /etc/security/limits.conf inserendo la linea:
 +
 +  echo "* soft nofile 32768" >> /etc/security/limits.conf      
 +  echo "* hard nofile 63536" >> /etc/security/limits.conf
 +
 +  echo "* soft nproc  4096" >> /etc/security/limits.conf     
 +  echo "* hard nproc 16384" >> /etc/security/limits.conf     
 +
 +Effettuare log-out e log-in in modo da ricaricare i limits.
 +
 +**Solo per macchine 64bit**, eliminare le librerie SASL a 32bit. // In questa fase potrebbe essere richiesto di eliminare come dipendenza molti pacchetti, si consiglia di accettare ed eliminarli. Sono solo delle copie con librerie a 32bit di software che rimarrà comunque nella versione a 64bit. //
 +
 +  yum remove cyrus-sasl.i386 cyrus-sasl-devel.i386 cyrus-sasl-gssapi.i386 cyrus-sasl-plain.i386 cyrus-sasl-lib.i386
 +
 +
 +Installazione del client LDAP standard di Linux:
 +  yum install openldap-clients
 +
 +
 +===== Installazione 389-ds =====
 +
 +
 +Impostare i repository YUM EPEL ([[https://fedoraproject.org/wiki/EPEL]]).
 +
 +  yum install yum-conf-epel
 +
 +Installare 389-ds:
 +
 +  yum install 389-ds
 +  
 +  yum install java-1.7.0-openjdk.x86_64
 +
 +===== Setup di 389-ds =====
 +
 +Creare l’utente ds:
 +
 +  useradd -r -s /bin/false ds
 +
 +
 +Lanciare il setup di 389-ds
 +
 +  /usr/sbin/setup-ds-admin.pl
 +
 +Scegliere l’opzione 3 in modo da personalizzare l’installazione:
 +  * Configurare come utente/gruppo "ds";
 +  * Controllare il root suffix;
 +  * Tutto il resto può essere lasciato al default.
 +
 +** Attenzione **: In questa fase verra' chiesto il nome dell'istanza del DS, di default corrisponde all'hostname senza dominio. // Si consiglia di lasciare il default e impostare la variabile DSUID in ~/.bash_profile. // Di seguito si farà infatti riferimento a tale valore con $DSUID.
 +
 +<code>
 +echo 'export DSUID=nome.istanza.ds' >> ~/.bash_profile
 +source ~/.bash_profile
 +</code>
 +
 +Impostare la partenza dei servizi di 389-ds al boot
 +
 +  chkconfig dirsrv on
 +  chkconfig dirsrv-admin on
 +
 +Fermare 389ds
 +
 +  /etc/init.d/dirsrv stop
 +
 +
 +Per migliorare le performance di 389ds incrementare il massimo numero di file descriptor a disposizione del server modificando il file ''/etc/dirsrv/slapd-$DSUID/dse.ldif'' e ''/etc/sysconfig/dirsrv''
 +
 +<code>
 +sed -i 's/^nsslapd-maxdescriptors: .*$/nsslapd-maxdescriptors: 16384\nnsslapd-reservedescriptors: 8192/' /etc/dirsrv/slapd-$DSUID/dse.ldif
 +sed -i 's/^#* *ulimit -n.*$/ulimit -n 16384/' /etc/sysconfig/dirsrv
 +</code>
 +
 +
 +Eliminare il limite di entry nelle ricerche
 +
 +<code>
 +sed -i 's/^nsslapd-sizelimit: .*$/nsslapd-sizelimit: -1/' /etc/dirsrv/slapd-$DSUID/dse.ldif
 +sed -i 's/^nsslapd-lookthroughlimit: .*$/nsslapd-lookthroughlimit: -1/' /etc/dirsrv/slapd-$DSUID/dse.ldif
 +</code>
 +
 +
 +Far ripartire 389ds
 +  /etc/init.d/dirsrv start
 +
 +Controllare che il limite "Max open files" sia effettivo:
 +  cat /proc/`pidof ns-slapd`/limits
 +
 +
 +
 +===== 389 Directory Server Console =====
 +
 +Da questo momento e' possibile lanciare la console di gestione del Directory Server, attraverso la quale e' possibile fare ogni tipo di configurazione e gestire i dati della Directory.
 +
 +Per eseguire la console:
 +
 +  389-console -x nologo -a http://localhost:9830/ -u "cn=Directory Manager"
 +
 +E possibile connettersi all'administration server da remoto installando sul proprio client la Management Console.
 +
 +L'unico requisito e' la presenza di una JRE. Puo' essere installata tramite yum su linux. Dal sito http://directory.fedoraproject.org/ e' disponibile anche un msi per Windows.
 +
 +
 +===== Pulizia DIT =====
 +
 +<del>Pulire il Directory Information Tree come segue:
 +
 +  * Nella console nel primo tab "Servers and Applications" espandere l’albero di sinistra, cliccare con il tasto destro su "Directory Server" e scegliere "Open"
 +  * Scegliere il tab "Configuration"
 +
 +  * Sotto "Data" cliccare con il tasto sinistro e poi con il destro sul suffix esistente "dc=dN,dc=example,dc=com" ed eliminarlo</del>
 +
 +
 +
 +===== Schema per supporto autofs =====
 +
 +Fermare 389-ds:
 +
 +  /etc/init.d/dirsrv stop
 +
 +Attivare lo schema rfc2307bis
 +
 +  cd /etc/dirsrv/slapd-$DSUID/schema
 +  cp /usr/share/dirsrv/data/10rfc2307bis.ldif .
 +  chown ds:ds 10rfc2307bis.ldif
 +  chmod 440 10rfc2307bis.ldif
 +  echo > 10rfc2307.ldif
 +  echo > 60autofs.ldif
 +
 +Far ripartire 389-ds:
 +
 +  /etc/init.d/dirsrv restart
 +
 +===== Estensione schema per INFN-AAI e federazioni =====
 +
 +Fermare 389-ds:
 +
 +  /etc/init.d/dirsrv stop
 +
 +Scaricare gli schema personalizzati INFN-AAI:
 +
 +  cd /etc/dirsrv/slapd-$DSUID/schema
 +  wget -O 97schac.ldif http://wiki.infn.it/_media/cn/ccr/aai/doc/97schac.ldif
 +  wget -O 98infn.ldif http://wiki.infn.it/_media/cn/ccr/aai/doc/98infn.ldif
 +  wget -O 61edumember.ldif http://wiki.infn.it/_media/cn/ccr/aai/doc/61edumember.ldif
 +  chown ds:ds 98infn.ldif 97schac.ldif 61edumember.ldif
 +  chmod 440 98infn.ldif 97schac.ldif 61edumember.ldif
 +
 +Far ripartire 389-ds:
 +
 +  /etc/init.d/dirsrv restart
 +
 +===== Configurazione SSL/TLS per il Directory Server =====
 +
 +
 +Configurare il client ldap di default di linux (openldap) inserendo la chiave pubblica della CA nella directory /etc/pki/CA/certs/ e creare gli hash link eseguendo:
 +
 +  cacertdir_rehash /etc/pki/CA/certs/
 +
 +Impostare la directory anche nella configurazione del client ldap:
 +
 +  echo "TLS_CACERTDIR /etc/pki/CA/certs/" >> /etc/openldap/ldap.conf
 +
 +Convertire il certificato con chiave privata del server in formato pkcs12 in un file temporaneo. Non è necessario impostare un password.
 +
 +  openssl pkcs12 -export -inkey ds_server_key.pem -in ds_server_crt.pem -out /tmp/crt.p12 -nodes -name 'Server-Cert'
 +
 +Importare il certificato con chiave privata del server nel DB di 389-ds. E’ necessario impostare una password per il DB e ricordarla. La prima password (più conferma) che viene chiesta è quella del DB di 389-ds, la seconda è invece quella eventualmente impostata nell’export.
 +
 +  cd /etc/dirsrv/slapd-$DSUID
 +  pk12util -i /tmp/crt.p12 -d .
 +  rm /tmp/crt.p12
 +
 +
 +
 +**NOTA**: Se si vuole impostare o cambiare la password del DB dei certificati di 389-ds:
 +
 +  cd /etc/dirsrv/slapd-$DSUID
 +  modutil -dbdir . -changepw "NSS Certificate DB"
 +
 +
 +Creare un il file con la password del DB dei certificati:
 +
 +  cd /etc/dirsrv/slapd-$DSUID
 +  vi pin.txt
 +
 +Inserire:
 +
 +  Internal (Software) Token:PASSWORD
 +
 +Impostare i permessi:
 +
 +  chown ds:ds pin.txt
 +  chmod 600 pin.txt
 +
 +Far partire la console
 +
 +  389-console -x nologo -a http://localhost:9830/ -u "cn=Directory Manager"
 +
 +Nel primo tab "Servers and Applications" espandere l’albero di sinistra, cliccare con il tasto destro su "Directory Server" e scegliere "Open"
 +
 +Andare in Console -> tab Tasks -> Manager Certificates -> tab CA Certs
 +Tramite il tasto "Install" installare il certificato della CA che ha rilasciato il certificato server, di tutta la chain e delle CA che si vuole autorizzare.
 +
 +**NOTA:** E' necessario importare nel DB dei certificati **TUTTI** i certificati delle CA dalle quali ci serviamo. Le istruzioni sono in [[cn:ccr:aai:howto:389ds-certificates|]]
 +
 +Per importare nel db in /etc/dirsrv/slapd-$DSUID tutte le ca inserite in /etc/pki/CA/certs:
 +
 +  cd /etc/dirsrv/slapd-$DSUID
 +  for f in /etc/pki/CA/certs/*.0 ; do echo certutil -d. -A -t 'CT,,' -i $f -n \"`openssl x509 -in $f -noout -subject -nameopt multiline | grep commonName | sed 's/.* = //'`\" ; done | sh
 +  
 +
 +Andare in Console -> tab Configuration -> Encryption
 +Abilitare le opzioni "Enable SSL for this server" e "Use this Cipher Family: RSA"
 +Assicurarsi che in Certificate ci sia "Server-Cert", altrimenti uscire e rientrare nella console.
 +
 +<del>
 +**Abilitare l'opzione "Use SSL in Console"**
 +Cliccare su "Save" e confermare i messaggi.
 +
 +Chiudere la finestra e **nell'albero di sinistra cliccare con il tasto destro su "Administration Server" e scegliere "Open"
 +Andare nel tab Configuration -> Configuration DS
 +Abilitare l'opzione "Secure Connection"**
 +
 +
 +Fermare 389-ds:
 +
 +  /etc/init.d/dirsrv stop
 +
 +**Modificare il parametro che consente l'accesso al DS solo con connessione cifrata:**
 +
 +  sed -i 's/^nsslapd-minssf: .*$/nsslapd-minssf: 56/' /etc/dirsrv/slapd-$DSUID/dse.ldif
 +
 +</del>
 +
 +Far ripartire 389-ds:
 +
 +  /etc/init.d/dirsrv restart
 +
 +===== Configurazione Mapping dei certificati x509 =====
 +
 +Per consentire l’autenticazione con certificati x509 è necessario configurare un mapping tra i subject dei certificati e le entry del DS.
 +
 +Nel file /etc/dirsrv/slapd-$DSUID/certmap.conf troviamo la possibilità di impostare l’attributo del DS in cui 389-ds troverà il subject x509. Le sole righe non commentate dovranno essere:
 +
 +  certmap default         default
 +  default:CmapLdapAttr    infnCertSubjectDN
 +
 +Far ripartire 389-ds:
 +
 +  /etc/init.d/dirsrv restart
 +
 +
 +===== Configurazione SASL / GSSAPI =====
 +
 +Installare il pacchetto che permette l'autenticazione gssapi con 389ds:
 +  yum install cyrus-sasl-gssapi.x86_64
 +
 +Per configurare l’autenticazione GSSAPI su 389-ds è necessario creare un K5 keytab per il ticket di servizio "ldap":
 +
 +  kadmin: addprinc -randkey ldap/fqdn.ds.server
 +  kadmin: ktadd -k /etc/dirsrv/slapd-$DSUID/keytab ldap/fqdn.ds.server
 +
 +Posizionato il keytab in /etc/dirsrv/slapd-$DSUID/keytab assicurarsi che solo l’utente ds possa accedervi:
 +
 +  chown ds /etc/dirsrv/slapd-$DSUID/keytab
 +  chmod 400 /etc/dirsrv/slapd-$DSUID/keytab
 +
 +Aggiungere al file /etc/sysconfig/dirsrv il path al keytab:
 +
 +  echo "KRB5_KTNAME=/etc/dirsrv/slapd-$DSUID/keytab ; export KRB5_KTNAME" >> /etc/sysconfig/dirsrv
 +
 +Nella Management Console definire i SASL Mapping:
 +  * Nel primo tab "Servers and Applications" espandere l’albero di sinistra e cliccare con il tasto destro su "Directory Server"
 +  * Si aprirà la Management Console
 +  * Cliccare sul tab "Configuration"
 +  * Cliccare sul nome del server a sinistra e a destra scegliere il tab "SASL Mapping"
 +  * Selezionare e cancellare (tasto Delete) le regole esistenti.
 +
 +**Fermare** 389-ds
 +
 +  /etc/init.d/dirsrv stop
 +
 +
 +Aggiungere le seguenti righe al file ''/etc/dirsrv/slapd-$DSUID/dse.ldif'', **sostituendo tutte le occorrenze di DEFAULT.REALM** con il realm di default indicato nel file /etc/krb5.conf (grep default_realm /etc/krb5.conf). 
 +
 +<code>
 +dn: cn=20-krb5_people_default_realm,cn=mapping,cn=sasl,cn=config
 +objectClass: top
 +objectClass: nsSaslMapping
 +cn: 20-krb5_people_default_realm
 +nsSaslMapRegexString: ^[^@]+$
 +nsSaslMapBaseDNTemplate: ou=people, dc=infn, dc=it
 +nsSaslMapFilterTemplate: (infnKerberosPrincipal=&@DEFAULT.REALM)
 +
 +dn: cn=20-krb5_people_other_realm,cn=mapping,cn=sasl,cn=config
 +objectClass: top
 +objectClass: nsSaslMapping
 +cn: 20-krb5_people_other_realm
 +nsSaslMapRegexString: ^.+@.+$
 +nsSaslMapBaseDNTemplate: ou=people, dc=infn, dc=it
 +nsSaslMapFilterTemplate: (infnKerberosPrincipal=&)
 +
 +dn: cn=30-krb5_services_default,cn=mapping,cn=sasl,cn=config
 +objectClass: top
 +objectClass: nsSaslMapping
 +cn: 30-krb5_services_default_realm
 +nsSaslMapRegexString: ^[^@]+/[^@+]+$
 +nsSaslMapBaseDNTemplate: ou=services, dc=infn, dc=it
 +nsSaslMapFilterTemplate: (infnKerberosPrincipal=&@DEFAULT.REALM)
 +
 +dn: cn=30-krb5_services_other_realm,cn=mapping,cn=sasl,cn=config
 +objectClass: top
 +objectClass: nsSaslMapping
 +cn: 30-krb5_services_other_realm
 +nsSaslMapRegexString: ^.+/.+@.+$
 +nsSaslMapBaseDNTemplate: ou=services, dc=infn, dc=it
 +nsSaslMapFilterTemplate: (infnKerberosPrincipal=&)
 +
 +dn: cn=40-krb5_hosts_default_realm,cn=mapping,cn=sasl,cn=config
 +objectClass: top
 +objectClass: nsSaslMapping
 +cn: 40-krb5_hosts_default_realm
 +nsSaslMapRegexString: ^host/[^@]+$
 +nsSaslMapBaseDNTemplate: ou=hosts, dc=infn, dc=it
 +nsSaslMapFilterTemplate: (infnKerberosPrincipal=&@DEFAULT.REALM)
 +
 +dn: cn=40-krb5_hosts_other_realm,cn=mapping,cn=sasl,cn=config
 +objectClass: top
 +objectClass: nsSaslMapping
 +cn: 40-krb5_hosts_other_realm
 +nsSaslMapRegexString: ^host/.+@.+$
 +nsSaslMapBaseDNTemplate: ou=hosts, dc=infn, dc=it
 +nsSaslMapFilterTemplate: (infnKerberosPrincipal=&)
 +
 +</code>
 +
 +**Fare attenzione a lasciare una riga vuota alla fine del file**
 +
 +Far ripartire 389-ds.
 +
 +  /etc/init.d/dirsrv start
 +
 +===== Configurazione plugin Kerberos Password back-end =====
 +
 +
 +Per compilare e configurare il plugin Kerberos5 per 389-ds eseguire le seguenti operazioni:
 +
 +Installare il compilatore, i sorgenti di Kerberos e di openldap:
 +
 +  yum install gcc krb5-devel 389-ds-base-devel libss-devel git
 +
 +  * Ottenere il codice sorgente
 +
 +  git clone https://baltig.infn.it/dmaselli/389ds-krb5-plugin.git
 +
 +  * Compilare ed installare
 +
 +  cd 389ds-krb5-plugin
 +  make clean
 +  make
 +  make install
 +
 +  * Spegnere 389ds
 +
 +  service dirsrv stop
 +
 +  * Modificare il file ///etc/dirsrv/slapd-$DSUID/dse.ldif// aggiungendo:
 +
 +<code>
 +dn: cn=KRB5 Bind,cn=plugins,cn=config
 +objectClass: top
 +objectClass: nsSlapdPlugin
 +objectClass: extensibleObject
 +cn: KRB5 Bind
 +nsslapd-pluginPath: /usr/lib64/dirsrv/plugins/libkrb5-plugin.so
 +nsslapd-pluginInitfunc: krb5plugin_init
 +nsslapd-pluginType: preoperation
 +nsslapd-pluginEnabled: on
 +nsslapd-plugin-depends-on-type: database
 +nsslapd-pluginId: none
 +nsslapd-pluginVersion: none
 +nsslapd-pluginVendor: none
 +nsslapd-pluginDescription: none
 +
 +</code>
 +
 +Ricordarsi che **l'ultima linea del file dse.ldif deve essere vuota**.
 +
 +  * far ripartire il Directory Service
 +
 +  service dirsrv start
 +
 +
 +<del>
 +Affinche' il plugin crei il principal specificato in infnKerberosPrincipal in fase di bind e aggiorni la chiave Kerberos qualora venga cambiato l'attributo LDAP userPassword e' necessario per ogni REALM creare la keytable
 +
 +/etc/dirsrv/kadmin.keys/kadmin-REALM.keytab
 +
 +contenente il principal di servizio 389/admin@REALM. Tale file deve essere leggibile dall'utente ds.
 +
 +I messaggi di debug vengono loggati in /var/log/dirsrv/slapd-$DSUID/errors.
 +</del>
 +
 +===== INFN-AAI =====
 +
 +Pe poter ricevere la replica del ramo nazionale DC=INFN,DC=IT e del ramo locale DC=<sede>,DC=INFN,DC=IT dai master di INFN-AAI è necessario inviare al supporto di INFN-AAI <aai-support@lists.infn.it> un mail contenente 
 +  * il FQDN del vostro nuovo server LDAP 
 +  * la password dell'utente CN="Directory Manager" che sarà utilizzata per la configurazione delle repliche. 
 +
 +Una volta configurate, le repliche saranno effettuate con autenticazione via Certificato X.509 e quindi a configurazione effettuata potrete modificare la password di CN="Directory Manager".
 +
 +**NOTA BENE:** Per modificare la password di CN="Directory Manager" seguire le istruzioni presenti nel [[http://directory.fedoraproject.org/wiki/Howto:ResetDirMgrPassword| wiki del 389-ds]]
 +===== FAQ =====
 +
 +==== ERRORE "attrcrypt_unwrap_key" ====
 +
 +attrcrypt_unwrap_key: failed to unwrap key for cipher AES:
 +
 +https://access.redhat.com/knowledge/docs/en-US/Red_Hat_Directory_Server/8.1/html/Administration_Guide/ssl-and-attr-encryption.html
 +
 +==== "BRASARE" 389-ds ====
 +
 +  cd ~
 +  yum remove "389*"
 +  rm -rf /etc/dirsrv /var/lib/dirsrv /var/log/dirsrv /usr/lib64/dirsrv /usr/share/dirsrv /var/lock/dirsrv /etc/sysconfig/dirsrv* /etc/tmpfiles.d/dirsrv*

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki