Fare riferimento a http://wiki.infn.it/cn/ccr/aai/howto/389ds-1.x-install
NOTA BENE Gli esempi citati in questa guida si intendono per 389 Directory Server 1.x su Scientific Linux 5.x.
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.
Modificare i parametri kernel in /etc/sysctl.conf:
echo "fs.file-max = 128000" >> /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
Ricaricare sysctl:
sysctl -p
Modificare i limits in /etc/security/limits.conf inserendo la linea:
echo "* soft nofile 8192" >> /etc/security/limits.conf echo "* hard nofile 8192" >> /etc/security/limits.conf echo "ulimit -n 8192" >> /etc/profile
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
Impostare i repository YUM EPEL (https://fedoraproject.org/wiki/EPEL).
rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm
Installare 389-ds:
yum install 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:
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.
echo 'export DSUID=nome.istanza.ds' >> ~/.bash_profile source ~/.bash_profile
Impostare la partenza dei servizi di 389-ds al boot
chkconfig dirsrv on chkconfig dirsrv-admin on
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
/etc/init.d/dirsrv stop sed -i 's/^nsslapd-maxdescriptors: .*$/nsslapd-maxdescriptors: 8192/' /etc/dirsrv/slapd-$DSUID/dse.ldif sed -i 's/^# *ulimit/ulimit/' /etc/sysconfig/dirsrv /etc/init.d/dirsrv start
Controllare che il limite "Max open files" sia effettivo:
cat /proc/`pidof ns-slapd`/limits
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:1500/ -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.
Impostare il Directory Information Tree come segue:
dc=example,dc=com
e come database name example-com-root-db
dc=example,dc=com
(non sul db) e scegliere "New Sub Suffix"dc=d
N (dove N e' il numero della vostra postazione) e come database name d
N-db
dc=example,dc=com
"dcobject
" e cliccare OK
OK
example
"dcobject
" e cliccare OK
New
: D
N (dove N e' il numero della vostra postazione)Inserire le entry di base nel vostro suffix:
d
N e selezionare "New" → "Organizational Unit"People
Ripetere gli ultimi due punti inserendo anche Groups
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 chown ds:ds 98infn.ldif 97schac.ldif chmod 440 98infn.ldif 97schac.ldif
Far ripartire 389-ds:
/etc/init.d/dirsrv restart
Per l’esercitazione del tutorial AAI trovate i certificati dei server e della CA in http://www.lnf.infn.it/~dmaselli/share/INFN/AAI/Tutorial/Cert/
Configurare il client ldap di default di linux (openldap) inserendo la chiave pubblica della CA nella directory /etc/openldap/cacerts/ e creare gli hash link eseguendo:
cacertdir_rehash /etc/openldap/cacerts/
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
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:1500/ -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.
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. Cliccare su "Save" e confermare i messaggi.
Far ripartire 389-ds:
/etc/init.d/dirsrv restart
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"
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
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:
Per configurare in modo che gli utenti con ticket valido vengano mappati nelle entry del DS, creare le seguenti regole:
Name: krb5_default_realm Regular Expression: ^[^@]+$ Search Base DN: dc=example, dc=com Search Filter: (infnKerberosPrincipal=&@DEFAULT.REALM)
Dove DEFAULT.REALM e' il realm di default nel file /etc/krb5.conf (grep default_realm /etc/krb5.conf
).
Name: krb5_other_realm Regular Expression: ^.+@.+$ Search Base DN: dc=example, dc=com Search Filter: (infnKerberosPrincipal=&)
Far ripartire 389-ds.
/etc/init.d/dirsrv restart
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 openldap-devel
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: krb5-bind nsslapd-pluginVersion: 1.0.4 nsslapd-pluginVendor: Fedora Project nsslapd-pluginDescription: Kerberos 5 bind pre-operation plugin (INFN)
Ricordarsi che l'ultima linea del file dse.ldif deve essere vuota.
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.
Si configurera' una replica Master-Slave, con slave Read-Only con autenticazione tramite certificato x509.
Per prima cosa e' necessario creare una entry che rappresenti il supplier che si autentichera' verso il consumer.
E' necessario che la entry venga creata sutto un suffix il cui DB non sia oggetto della replica in questione, e' consigliato utilizzare il suffix cn=config.
Per configurare la Replica:
A questo punto il server e' pronto per ricevere gli aggiornamenti dal supplier specificato.
Configurare la Replica:
Configurare il Replication Agreement:
A questo punto sotto il DB apparira' il Replication agreement, ora si dovra' inizializzare il consumer, ovvero lanciare un primo trasferimento per assicurarsi che i dati del consumer siano identici a quelli nel supplier.
Da questo momento ogni modifica effettuata sul supplier verra' replicata sul consumer in tempo reale.
La replica Multi-Master e' molto simile alla Master-Slave, ma entrambi i nodi si comporteranno sia da supplier che da consumer.
Su entrambi i nodi si dovra':