Hashing della password di Admin
Iniziamo ad immettere le prime direttive per un server in produzione e nello specifico iniziamo a mettere l'hashing della password dell'amministratore
Premessa
Per il momento vediamo come impostare una password per il nostro utente Admin, che se ricordate bene è il nostro superuser del demone LDAP. Soltanto in seguito invece vedremo come impostare una connessione sicura tra il nostro server ed i client.
Generazione della password
Per poter generare la nostra password utilizzeremo il comando slappasswd, che di default seleziona automaticamente l'hashing più sicuro tra quelli disponibili
$ slappasswd
New password:
Re-enter new password:
{SSHA}BnWDEVXg+/M0b7AT5424sgdNHQ8B3WSy
Come potete vedere il comando slappasswd ha selezionato automaticamente l'algoritmo SSHA che equivale a Salted SHA, le altre possibili opzioni sono SHA, MD5, SMD5 equivalente a Salted MD5 e CRYPT che utilizza la funzione di sistema crypt(vedere man 3 crypt). Alcuni esempi
$ slappasswd -h {SMD5} -s passwordSegreta
{SMD5}BbLp2CmfFZa3U1Xm5tcAr5u+Wg8=
$ slappasswd -h {MD5} -s passwordSegreta
{MD5}J83SfyjHGdht4sg9heEvKg==
Dove con -h indicheremo lo schema da utilizzare e con -s potremo indicare la password, nel caso non la si voglia digitare al prompt.
Inclusione nel file slapd.conf
Ora possiamo andare ad includere l'hashing nel nostro file di configurazione slapd.conf ottenendo una configurazione del tipo
...
database hdb
suffix "dc=example,dc=com"
rootdn "cn=Admin,dc=example,dc=com"
# Cleartext passwords, especially for the rootdn, should
# be avoid. See slappasswd(8) and slapd.conf(5) for details.
# Use of strong authentication encouraged.
#rootpw passwordSegreta
rootpw {SSHA}WKAGRVD+EcAyoFsE6JaoP2eKCSeZO2DW
...
Start del demone e verifica della connessione
Adesso non ci resta che avviare il nostro demone
$ sudo /usr/local/libexec/slapd -f /usr/local/etc/openldap/slapd.conf
E verificare che tutto funzioni per il meglio
$ /usr/local/bin/ldapsearch -w passwordSegreta \
-D 'cn=Admin,dc=example,dc=com' \
-LLL '(uid=amedeo)'
Dove il suddetto comando restituirà
dn: uid=amedeo,ou=people,dc=example,dc=com uid: amedeo ou: people sn: Amedeo cn: Amedeo Salvati displayName: Amedeo Salvati mail: amedeo@example.com userPassword:: cGFzc3dvcmQ= objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson
