Servidor LDAP en Ubuntu 16.04
Instal·larem un Servidor LDAP afegint unitats organitzatives, grups i usuaris via desde el terminal i comprovarem els canvis amb phpldapadmin.
Instal·lació
Actualitzem els paquets i seguidament instal·lem els paquets slapd i ldap-utils,el primer ens demanarà la password d'administrador de LDAP i el segon ens afegirà diverses funcionalitats, com poder fer consultes al servidor des d'altres aplicacions.
# apt-get update # apt-get install slapd ldap-utils
Un cop instal·lats haurem de configurar el domini de LDAP amb la següent comanda:
# dpkg-reconfigure slapd
Si tot ha anat bé, veurem les següents línies al finalitzar:
Moving old database directory to /var/backups: - directory unknown... done. Creating initial configuration... done. Creating LDAP directory... done.
Omplint l'esquema del nostre servidor
Afegir organizational units
Creem un arxiu amb el nom que vulguem i amb l'extensió .ldif al qual afegirem el següent contingut:
dn: ou=usuaris,dc=naxvanbautista,dc=local objectClass: organizationalUnit ou: usuaris
dn: ou=grups,dc=naxvanbautista,dc=local objectClass: organizationalUnit ou: grups
Nosaltres l'hem anomenat organizational_units.ldif; ara l'afegim amb la comanda:
ldapadd -x -W -D "cn=admin,dc=naxvanbautista,dc=local" -f organizational_units.ldif
Si ho hem fet hauriem de veure aquest resultat per pantalla:
Afegir grups
Creem un altre arxiu amb el nom que vulguem i amb l'extensió .ldif al qual afegirem el següent contingut:
dn: cn=clients,ou=grups,dc=naxvanbautista,dc=local objectClass: top objectClass: posixGroup gidNumber: 678
L'hem anonomenat grups.ldif i l'afegirem amb la comanda que hem utilitzat abans:
ldapadd -x -W -D "cn=admin,dc=naxvanbautista,dc=local" -f grups.ldif
Si ho hem fet bé aconseguirem aquest resultat per pantalla:
Afegir usuaris
Un cop ja tenim les unitats organitzatives i els grups creats ha arribat el moment de crear un usuari, aquests tenen més característiques que els objectes que hem creat fins ara però com en els casos anteriors, creem un arxiu amb extensió .ldif i afegim les següents dades:
dn: uid=paquito,ou=usuaris,dc=naxvanbautista,dc=local #Aquesta línea serà la que utilitzarem per identificar l'usuari. objectClass: account objectClass: posixAccount objectClass: shadowAccount # Els atributs objectClass indiquen els paràmetres que LDAP els hi dóna per defecte des de'ls seus esquemes. cn: paquito # common name uid: paquito #login d'usuari uidNumber: 16859 #identificador d'usuari gidNumber: 678 #aquest es l'identificador del grup al que pertany homeDirectory: /home/paquito loginShell: /bin/bash gecos: paquito # Aquest es un camp delimitat per comes on podem afegir més dades d'usuari. userPassword: paquito123 shadowLastChange: 0 shadowMax: 0 shadowWarning: 0
Aconseguirem, com amb els objectes anteriors, un resultat positiu per pantalla:
Buscar objectes dins de ldap per comandes
Aquestes comandes funcionan si tens desactivat l'anonymous bind, en cas de tenir-ho activat haurem d'utilitzar els següents paràmetres:
- -D Distingushed Name de l'usuari. Per exemple: cn=admin,dc=naxvanbautista,dc=local
- -w password_de_l'usuari
#ldapsearch -x -LLL -b dc=naxvanbautista,dc=local <- Mostra tots els objectes creats a naxvanbautista.local
Rere aquesta comanda, podem afegir els diferents atributs que volem buscar i filtrar dins d'aquests:
#Mostra tots els atributs objectClass de l'usuari paquito #Mostra el nom de totes les ou dins de naxvanbautista.local
#Mostra tot el que hi ha dins de la ou usuaris:
Phpldapadmin
Instalació
#apt-get install phpldapadmin
Configuració
A l'arxiu:
/etc/phpldapadmin/config.php
Configurem les següents línies:
$servers->setValue('server','host','127.0.0.1'); <-- Posem la i.p del servidor. $servers->setValue('server','base',array('dc=example,dc=com')); <- Canviem example.com pel nostre domini $servers->setValue('login','bind_id','cn=admin,dc=naxvanbautista,dc=local'); <- Aquesta línea es l'usuari per fer login a phpldapadmin
Descomentem la següent línea i canviem el valor com true. // $config->custom->appearance['hide_template_warning'] = false; $config->custom->appearance['hide_template_warning'] = true;
GUI
Accedirem a phpldapadmin des de:
#ip_ldapserver/phpldapadmin
Com podem veure, tenim davant l'esquema que hem creat per comandes. Ara podem continuar la feina des d'aqui si ho volem fer tot més senzill.
Seguretat LDAP
Desactivar anonymous bind
Per defecte LDAP permet accedir com usuari ànonim i rebuscar pel nostre esquema, encara que no pugui alterar aquest.
Per començar, creem dos arxius, un que es dirà desactivar_anonim_backend.ldif i un altre anomenat desactivar_anonim_frontend.ldif
El contingut d'aquests es el següent:
#nano desactivar_anonim_backend.ldif dn: olcDatabase={-1}frontend,cn=config add: olcRequires olcRequires: authc
#nano desactivar_anonim_frontend.ldif dn: olcDatabase={1}hdb,cn=config add: olcRequires olcRequires: authc
Afegim els arxius amb la comanda
sudo ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f arxiu.ldif
Si intentem fer una consulta sense autenticarnos ens prohibirà l'accès.