¡Esta es una revisión vieja del documento!
OpenLDAP
Descripción
Servidor de Directorio, autenticación, o Single Sign On o AAA (Autentication, Autorization, Accounting)
Prerequistos
Un servidor con Linux .. preferiblemente Kuine LAMP con MySQL apagado
Instalación
Instale el sistema
apt install slapd ldap-utils ldapscripts dpkg-reconfigure slapd firewall-cmd --zone=external --permanent --add-service=ldap firewall-cmd --zone=external --permanent --add-service=ldaps
slappasswd
New password:
Re-enter new password:
{SSHA}5oKzyJYzkCq21LhXDZFNZpPQD9uE
Ahora Alimente la base del arbol
$ vim basedn.ldif
dn: ou=people,dc=miejemplo,dc=com
objectClass: organizationalUnit
ou: people
dn: ou=groups,dc=miejemplo,dc=com
objectClass: organizationalUnit
ou: groups
dn: cn=operadores,ou=groups,dc=miejemplo,dc=com
objectClass: posixGroup
cn: operadores
gidNumber: 10001
memberUid: alice
dn: cn=alice,ou=People,dc=miejemplo,dc=com
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
cn: alice
uid: alice
uidNumber: 10001
gidNumber: 10001
homeDirectory: /dev/null
userPassword: {SSHA}5D94oKzVyJYzkCq21LhXDZFNZpPQD9uE
loginShell: /bin/nologin
$ ldapadd -x -D cn=admin,dc=miejemplo,dc=com -W -f basedn.ldif
Para que mire que tiene
$ slapcat
Referencias
La facil .. siga este howto que lo deja listo con un arbol base incluyendo la rama de usuarios, un usuario grupos, como setear bien los passwords en ldiff y LAM para administrar
https://computingforgeeks.com/how-to-install-and-configure-openldap-server-on-debian/
Estos me parecieron cheveres tambien
- https://www.howtoforge.com/how-to-install-openldap-on-debian-11/ $** Introductorio rapidin
- https://ubuntu.com/server/docs/service-ldap $** Este es super completo
Configuración
1. Asegurar con SSL
Voy a usar este howto
https://kifarunix.com/setup-openldap-server-with-ssl-tls-on-debian-10/?expand_article=1
Quize usar los autofirmados que trae el sistema pero no sirve para syncronizar .. entonces toca generarlos
—————
$ vim ldap-tls.ldif\\
dn: cn=config
changetype: modify
add: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/ssl/openldap/certs/cacert.pem
-
replace: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ssl/openldap/certs/ldapserver-cert.crt
-
replace: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ssl/openldap/private/ldapserver-key.key
$ ldapmodify -Y EXTERNAL -H ldapi:%%//%%/ -f ldap-tls.ldif\\
—————
NO olvide poner ldaps:/// en el /etc/default/slapd
Tambien toca colocar en /etc/ldap.conf
ssl start_tls
ssl on
Y en /etc/ldap/ldap.conf
TLS_CACERT /etc/ssl/openldap/certs/cacert.pem
TLS_REQCERT allow
Y pruebe con
$ ldapwhoami -H ldap:%%//atento-dir1.miejemplo.com -x -ZZ -- STARTTLS\\ $ ldapwhoami -H ldaps:%%//atento-dir1.miejemplo.com -x -- LDPS\\
https://computingforgeeks.com/secure-ldap-server-with-ssl-tls-on-ubuntu/
Este tambien ayuda un poco
https://kifarunix.com/setup-openldap-server-with-ssl-tls-on-debian-10/?expand_article=1
2. Detalles de LAM
wget https://github.com/LDAPAccountManager/lam/releases/download/8.6/ldap-account-manager_8.6-1_all.deb
sudo apt install -f ./ldap-account-manager_*_all.deb
A LAM toca configurarle varias cosas (las indica el howto de arriba
- Ponga en todo lado su dominio .. en vez del de ejemplo
- A veces molesta Groups .. group .. los nombres de las ramas
Pero tambien mejora si
- quitar InetOrgPerson por simplemente Account en Modulos si solo se usa para cuentas
** EN Debian 12 me toco mas bien “copiar” el contenido del deb por una dependencia
3. Configuración del SO como cliente ldap
https://www.server-world.info/en/note?os=Debian_12&p=openldap&f=3
https://distroid.net/configure-ldap-server-client-linux-mint/
Trucos
1. LAM deja importar CSVs
Hay que afinarlos .. pero se logra super. Hay que ponerle comilas a todo y separado por comas
dn_suffix dn_rdn overwrite posixAccount_cn posixAccount_userName posixAccount_group posixAccount_homedir posixAccount_shell posixAccount_password
ou=People,dc=skinatech,dc=com uid false Jaime Gomez jgomez agentes /dev/null /bin/false secreto
2. cambie Password
ldappasswd -x -ZZ -D cn=admin,dc=example,dc=com -W -S cn=replicator,dc=example,dc=com
3. Busque
Anonimo
ldapsearch -x -b 'dc=miejemplo,dc=com' '(objectclass=*)'\\
O si quiere como un dump ya autenticado
ldapsearch -x -ZZ -D cn=admin,dc=miejemplo,dc=com -W -b 'dc=miejemplo,dc=com' '(objectclass=*)'\\
La configuracion
ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config dn
4. Borrar
ldapdelete -x -W -D "cn=admin,dc=miejemplo,dc=com" "uid=mibeyam,ou=people,dc=miejemplo,dc=com"
5. Debug
Apaguelo y levantelo a mano con el debug prendido
/usr/sbin/slapd -h "ldap:/// ldapi:/// ldaps:///" -g openldap -u openldap -F /etc/ldap/slapd.d
6. Crear otro usuario administrador
Este en el nuevo formato es un camello pero ahi nos dimos mañas. Creamos un OU de admins y ahi puse un administrador (admin_users.ldiff)
# admins, miejemplo.com
dn: ou=admins,dc=miejemplo,dc=com
ou: admins
objectClass: organizationalUnit
objectClass: top
# admin_uno, admins, miejemplo.com
dn: cn=admin_uno,ou=admins,dc=miejemplo,dc=com
cn: admin_uno
objectClass: organizationalRole
objectClass: top
objectClass: simpleSecurityObject
userPassword:: e01ENX1LbjZaOFRNWXNTUWIxemh5SEgzWlFBPT0=
Y ahora me toca darle permiso para administrar a los usuarios agregando una regla (admin_access.ldiff)
dn: olcDatabase={1}mdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to dn.subtree="ou=people,dc=teleatento,dc=com"
by dn.children="ou=admins,dc=teleatento,dc=com" manage
by * break
ldapadd -Y EXTERNAL -H ldapi:/// -f admin_access.ldif\\
Mire si quiedo bien
ldapsearch -Q -Y EXTERNAL -H ldapi:/// -LLL -b cn=config '(olcSuffix=dc=miejemplo,dc=com)' olcAccess\\
Si el cero no corresponde puede borrar la linea 0 que agrego (borrar.ldiff)
dn: olcDatabase={1}mdb,cn=config\\
changetype: modify\\
delete: olcAccess\\
olcAccess: {0}\\
ldapadd -Y EXTERNAL -H ldapi:/// -f borrar.ldiff\\
OJO con no borrar las basicas
7. Cambiar el limite de las busquedas
vim /etc/openldap/scratch/olcSizeLimit.ldif
dn: cn=config
changetype: modify
replace: olcSizeLimit
olcSizeLimit: unlimited
dn: olcDatabase={-1}frontend,cn=config
changetype: modify
replace: olcSizeLimit
olcSizeLimit: unlimited
sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f /etc/openldap/scratch/olcSizeLimit.ldif
8. Agregar esquema eduperson
Esto es chevere porque LAM lo soporta sin problema
wget https://raw.githubusercontent.com/LEARN-LK/IAM/master/eduperson-201602.ldif sudo ldapadd -Y EXTERNAL -H ldapi:/// -f eduperson-201602.ldif
La referencia
https://github.com/LEARN-LK/IAM/blob/master/Ldap-with-eduperson.md
Problemas
1. LAM No funciona (Forbidden o en blanco)
Hay dos temas por ajustar
En el php.ini .. en open_basedir toca agregar
open_basedir = /var/www/html:/usr/share/php:/var/lib/php:/dev/random:/dev/urandom:/usr/share/ldap-account-manager:/var/lib/ldap-account-manager:/etc/ldap-account-manager:/usr/share/ldap-account-manager/templates/config/../../docs/manual:/usr/share/ldap-account-manager/templates/misc/\\
Y en la configuracion del aplicativo las excepciones de Modsecurity
<IfModule security2_module>\\
SecRuleRemoveById 980130
SecRuleRemoveById 949110
SecRuleRemoveById 932160
SecRuleRemoveById 932150
SecRuleRemoveById 932100
SecRuleRemoveById 932150
</IfModule>
2. PHPLDAPADMIN No funciona (Forbidden o en blanco)
Hay dos temas por ajustar igual que LAM
En el php.ini .. en open_basedir toca agregar
/usr/share/phpldapadmin:/etc/phpldapadmin:/usr/share/doc/phpldapadmin\\
Y en la configuracion del aplicativo las excepciones de Modsecurity
<IfModule security2_module>
SecRuleRemoveById 980140
SecRuleRemoveById 953100
SecRuleRemoveById 959100
</IfModule>
Referencias
- Tareas administrativas https://www.digitalocean.com/community/tutorials/how-to-configure-openldap-and-perform-administrative-ldap-tasks
FIN