Tabla de Contenidos
Instalación Server
Comandos
Configuramos el nombre del servidor y el FQDN para que al instalar el LDAP nos cree la base inicial con el dominio deseado.
echo "192.168.18.50 ldap.example.com" | sudo tee -a /etc/hosts hostnamectl set-hostname ldap.example.com
Instalamos openLdap y verificamos su configuracion inicial
apt -y install slapd ldap-utils slapcat slappasswd ldapadd -x -D cn=admin,dc=example,dc=com -W -f (ldaporgs.ldif |ldapusers.ldif | ldapgroups.ldif)
Archivos
vim ldaporgs.ldif dn: ou=people,dc=example,dc=com objectClass: organizationalUnit ou: people dn: ou=groups,dc=example,dc=com objectClass: organizationalUnit ou: groups vim ldapusers.ldif dn: uid=computingforgeeks,ou=people,dc=example,dc=com objectClass: inetOrgPerson objectClass: posixAccount objectClass: shadowAccount cn: computingforgeeks sn: Wiz userPassword: {SSHA}Zn4/E5f+Ork7WZF/alrpMuHHGufC3x0k loginShell: /bin/bash uidNumber: 2000 gidNumber: 2000 homeDirectory: /home/computingforgeeks cat ldapgroups.ldif dn: cn=computingforgeeks,ou=groups,dc=example,dc=com objectClass: posixGroup cn: computingforgeeks gidNumber: 2000 memberUid: computingforgeeks cat ldapgroups_addmember.ldif dn: cn=computingforgeeks,ou=groups,dc=example,dc=com changetype: modify #add: memberUid replace: memberUid memberUid: carlos,pedro
Probar la conexion desde otra computadora
apt install ldap-utils ldapsearch -h 192.168.150.1 -b "dc=prueba,dc=local" -D cn=admin,dc=prueba,dc=local -W
Opciones
LDAP Cliente Auth pam
Comandos
apt install libnss-ldapd libpam-ldap ldap-utils auth-client-config -t nss -p lac_ldap pam-auth-update systemctl restart nscd systemctl enable nscd systemctl restart nslcd getent passwd USUARIO
Archivos
/etc/pam.d/common-session /etc/pam_ldap.conf /etc/nsswitch.conf /etc/nslcd.conf
Opciones
skel=/etc/skel umask=077
Accesos LDAP
Para ver los accesos a la base de datos, debemos buscar en la configuracion del la base con:
ldapsearch -Y external -H ldapi:/// -b cn=config "(objectClass=olcGlobal)" olcLogLevel -LLL
Y tendremos que ver algo como:
. . . dn: olcDatabase={1}mdb,cn=config objectClass: olcDatabaseConfig objectClass: olcMdbConfig olcDatabase: {1}mdb olcDbDirectory: /var/lib/ldap olcSuffix: dc=example,dc=com olcAccess: {0}to attrs=userPassword by self write by anonymous auth by * none olcAccess: {1}to attrs=shadowLastChange by self write by * read olcAccess: {2}to * by * read olcLastMod: TRUE olcRootDN: cn=admin,dc=example,dc=com olcRootPW: {SSHA}2PEPV+8Pltp8wS1U8nmyAlKKILCOJpuQ olcDbCheckpoint: 512 30 olcDbIndex: objectClass eq olcDbIndex: cn,uid eq olcDbIndex: uidNumber,gidNumber eq olcDbIndex: member,memberUid eq olcDbMaxSize: 1073741824
Agregar
Para agregar algunas reglas mas debemos:
cat access.ldiff dn: olcDatabase={1}mdb,cn=config changetype: modify add: olcAccess olcAccess: {3}to dn.children="dc=example,dc=com" by self write by dn.children="dc=example,dc=com" search by * none break - add: olcAccess olcAccess: {4}to dn.children="dc=example,dc=com" by self write by anonymous auth by * none break
Donde:
{3}to
: Representa el numero de la regla(En la instalación inicial hay 3 reglas 0,1,2)by self
: Nos dice a quien le da permisosnone/search/read/write/manage
: Son los permisos que damos
Aplicamos los cambios con
ldapmodify -Y external -H ldapi:/// -f access.ldiff
Borrar
Para borrar agregamos el ldiff
cat access-delete.ldiff dn: olcDatabase={1}mdb,cn=config changetype: modify delete: olcAccess olcAccess: {2}
Aplicamos los cambios con
ldapmodify -Y external -H ldapi:/// -f access-delete.ldiff
LDAP Habilitar Log
Comandos
dn: cn=config
changeType: modify
replace: olcLogLevel
olcLogLevel: stats
ldapsearch -Y external -H ldapi:/// -b cn=config "(objectClass=olcGlobal)" olcLogLevel -LLL ldapmodify -Y external -H ldapi:/// -f slapdlog.ldif
Archivos
Opciones
Interfaces
- FusionDirectory web
- phpldapadmin web
- Apache Studio de escritorio
- LDAPcherry web
FusionDirectory tiene una version libre y una verdida. La última version liberada es la version 1.3 en abril del 2019 con version de desarrollo 1.4 y último commit en https://github.com/fusiondirectory/fusiondirectory/commits/1.4-dev con fecha 18 marzo del 2022. Este programa viene debian bullseye.
LDAP Account Manager tiene la version 7.9.1 https://github.com/LDAPAccountManager lanzada el 15 de abril del 2022 con último commit el día 28 de abril del 2022. Este programa viene debian bullseye.
Por defecto se utilizaba Phpldapadmin para administración, pero debido a que no tuvo actualizaciones durante varios años, se creo un fork https://github.com/leenooks/phpLDAPadmin pero la ultima version y commit es la 1.2.6.3 en diciembre del 2021. Este programa viene debian bookworm (testing).
Ldapcherry la última version liberada es la 1.1.1 en febrero del 2019 con último commit en mayo 20 del 2020.
Por eso se sugiere usar fusiondirectory o LDAP Account Manager por que es la que esta en constante desarrollo.
LDAPcherry
Instalar ldapcherryd
# clone the repository $ git clone https://github.com/kakwa/ldapcherry && cd ldapcherry # change the directory where to put the configuration (default: /etc) $ export SYSCONFDIR=/etc # change the directory where to put the resource (default: /usr/share) $ export DATAROOTDIR=/usr/share/ # install ldapcherry $ apt install python-cherrypy3 python-ldap python-mako python-pretty-yaml python3-cherrypy3 python3-ldap python3-mako python3-pretty-yaml python-setuptools python3-distutils $ python setup.py install
# clone the repository $ mkdir cherry && cd cherry $ git clone https://github.com/kakwa/ldapcherry $ apt install -y python-dev python-pip libldap2-dev libsasl2-dev libssl-dev python3-dev python3-pip build-essential python3-venv $ python3 -m venv venv/ $ source venv/bin/activate $ pip3 install wheel $ pip3 install -r ldapcherry/requirements.txt # change the directory where to put the configuration (default: /etc) $ export SYSCONFDIR=/etc # change the directory where to put the resource (default: /usr/share) $ export DATAROOTDIR=/usr/share/ $ cd ldapcherry $ python setup.py install # edit configuration files $ vi /etc/ldapcherry/ldapcherry.ini $ vi /etc/ldapcherry/roles.yml $ vi /etc/ldapcherry/attributes.yml # launch ldapcherry $ ../venv/bin/ldapcherryd -c /etc/ldapcherry/ldapcherry.ini -D
FusionDirectory
Requisitos:
- apache2 y
- php
Instalando paquetes
apt install fusiondirectory fusiondirectory-plugin-audit fusiondirectory-plugin-audit-schema fusiondirectory-plugin-freeradius-schema fusiondirectory-plugin-freeradius fusiondirectory-plugin-posix fusiondirectory-schema fusiondirectory-plugin-alias fusiondirectory-plugin-alias-schema fusiondirectory-plugin-ldapdump fusiondirectory-plugin-ldapmanager fusiondirectory-plugin-mail fusiondirectory-plugin-mail-schema fusiondirectory-plugin-postfix fusiondirectory-plugin-postfix-schema fusiondirectory-plugin-quota fusiondirectory-plugin-quota-schema fusiondirectory-schema
Agregando esquemas LDAP necesarios
fusiondirectory-insert-schema -i /etc/ldap/schema/fusiondirectory/mail-fd.schema fusiondirectory-insert-schema -i /etc/ldap/schema/fusiondirectory/mail-fd-conf.schema fusiondirectory-insert-schema -i /etc/ldap/schema/fusiondirectory/dns-fd.schema fusiondirectory-insert-schema -i /etc/ldap/schema/fusiondirectory/dns-fd-conf.schema fusiondirectory-insert-schema -i /etc/ldap/schema/fusiondirectory/ldapns.schema fusiondirectory-insert-schema -i /etc/ldap/schema/fusiondirectory/template-fd.schema fusiondirectory-insert-schema -i /etc/ldap/schema/fusiondirectory/core-fd.schema fusiondirectory-insert-schema -i /etc/ldap/schema/fusiondirectory/core-fd-conf.schema
Creando la configuración de acceso LDAP
nano /etc/fusiondirectory/fusiondirectory.conf fusiondirectory-setup --check-config
Luego ir al http://localhost/fusiondirectory/ para configurarlo
Multiple Bases de Datos
mkdir /var/lib/ldap-dominio2 chown openldap:openldap /var/lib/ldap-dominio2 slappasswd -h {SSHA}
# Nueva base dominio2.com dn: olcDatabase=mdb,cn=config changetype: add objectClass: olcDatabaseConfig objectClass: olcMdbConfig olcDatabase: mdb olcDbDirectory: /var/lib/ldap-dominio2 olcSuffix: dc=dominio2,dc=com olcAccess: {0}to attrs=userPassword by self write by anonymous auth by * none olcAccess: {1}to attrs=shadowLastChange by self write by * read olcAccess: {2}to * by * read olcLastMod: TRUE olcRootDN: cn=admin,dc=dominio2,dc=com olcRootPW: {SSHA}KgqLc7eVZfkXJo3hysJJhgoifCWo3Kc2 olcDbCheckpoint: 512 30 olcDbIndex: objectClass eq olcDbIndex: cn,uid eq olcDbIndex: uidNumber,gidNumber eq olcDbIndex: member,memberUid eq olcDbMaxSize: 1073741824
ldapmodify -Y external -H ldapi:/// -f newdatabase.ldiff ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b 'cn=config'
#El dominio top dn: dc=dominio2,dc=com changetype: add objectClass: top objectClass: dcObject objectClass: organization o: dominio2 personal dc: dominio2 description: Dominio de dominio2 #El usuario administrador dn: cn=admin,dc=dominio2,dc=com objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin userPassword: e1NTSEF9S2dxTGM3ZVZaZmtYSm8zaHlzSkpoZ29pZkNXbzNLYzI= description: Directory Manager
ldapadd -x -D "cn=admin,dc=dominio2,dc=com" -w superclave -f dominio2.ldiff
Instalación no Interactiva
Referencias
Generales
Autenticacion PC PAM
Logs
Seguridad
Multiple DB
FusionDirectory
Permisos:
Estructura