Gestión de servicio ldap

De WikiEtl
Saltar a: navegación, buscar

Servicio de OpenLDAP para el Departamento

Servidores de autenticación

repldap01.it.uc3m.es (tamtam)
repldap02.it.uc3m.es (cuentas)
repldap03.it.uc3m.es 

Servidores asociados

balafon.it.uc3m.es
contrabajo.it.uc3m.es
bambam.it.uc3m.es
eco.it.uc3m.es
guitarra.it.uc3m.es
kalimba.it.uc3m.es
marimba.it.uc3m.es
pandereta.it.uc3m.es
tamtam.it.uc3m.es
triangulo.it.uc3m.es
trompeta.it.uc3m.es
solfeo.it.uc3m.es
si.it.uc3m.es
violin.it.uc3m.es
yembe.it.uc3m.es

Servicios con autenticación

https://guru.it.uc3m.es - RT
https://backup02.it.cu3m.es - BackupPC
https://www.etl.it.uc3m.es/etl/dreamspark - Kibuto DreamSpark
https://inventario.lab.it.uc3m.es - GLPI
https://pandereta.it.uc3m.es - CUPS - Impresión Web y Script de cuentas
Domnio Samba DIT \\cuentas.it.uc3m.es \\www.lab.it.uc3m.es - Acceso Samba 
https://www.etl.it.uc3m.es/etl/cuentas/dpt/ - Cambio claves de cuentas del departamento
Radius Server WLIT-R - si.it.uc3m.es y balafon.it.uc3m.es
https://www.it.uc3m.es/intranet - Acceso intranet desde fuera
https://www.etl.it.uc3m.es - MediaWiki WikiETL
http://www.it.uc3m.es/<asig> - Mirror web asignaturas

Como habilitar el servicio de autenticación por ldap desde un cliente Linux.

Instalación y configuración de libnss-ldapd libpam-ldapd nslcd

 apt-get install libnss-ldapd libpam-ldapd nslcd
rbravo@triangulodummy:~$ dpkg -l nslcd lib*-ldapd
Deseado=Desconocido/Instalar/Eliminar/Purgar/Retener
| Estado=No/Instalado/Config-files/Desempaquetado/Medio-conf/Medio-inst/espera-disparo/pendiente-disparo
|/ Err?=(ninguno)/Requiere-reinst (Estado,Err: mayúsc.=malo)
||/ Nombre         Versión     Arquitectura Descripción
+++-==============-============-============-=================================
ii  libnss-ldapd:a 0.8.10-4     amd64        NSS module for using LDAP as a na
ii  libpam-ldapd:a 0.8.10-4     amd64        PAM module for using LDAP as an a
ii  nslcd          0.8.10-4     amd64        Daemon for NSS and PAM lookups us


Después sólo hay que configurar /etc/nslcd.conf

# /etc/nslcd.conf
# nslcd configuration file. See nslcd.conf(5)
# for details.

# The user and group nslcd should run as.
uid nslcd
gid nslcd

# The location at which the LDAP server(s) should be reachable.
uri ldaps://repldap01.it.uc3m.es

# The search base that will be used for all queries.
base dc=it,dc=uc3m,dc=es

# The LDAP protocol version to use.
#ldap_version 3 

# The DN to bind with for normal lookups.
#binddn cn=annonymous,dc=example,dc=net
#bindpw secret

# The DN used for password modifications by root.
#rootpwmoddn cn=admin,dc=example,dc=com

# SSL options
ssl yes
tls_reqcert try
tls_cacertfile /etc/ssl/certs/ca-certificates.crt

# The search scope.
#scope sub 

pam_authz_search (&(objectClass=posixAccount)(uid=$username)(gidNumber=1118)) # <= sólo acceso grupo etl
uri ldaps://repldap03.it.uc3m.es
uri ldaps://repldap01.it.uc3m.es


Comprobar /etc/nsswitch.conf:

# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.

passwd:         compat ldap
group:          compat ldap
shadow:         compat ldap

hosts:          files dns
networks:       files 

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files 

netgroup:       nis


Como probar que funciona:

# $ id etl
uid=1118(etl) gid=1118(etl) grupos=1118(etl)

# getent passwd
.... lista de usuarios.

Guía de configuración clientes OpenLDAP Laboratorios Docentes

Introdución

Se actualiza al nuevo sistema con libnss-ldapd y libpam-ldapd, con lo que queda obsoleto el sistema antiguo con libnss-ldap y libpam-ldap.

Cambios en ficheros/paquetes

Ficheros de configuración obsoleta:

root@dit103:~# ls -las /etc/libnss-ldap.conf
12 -rw------- 1 root root 9845 jul 21 16:50 /etc/libnss-ldap.conf
root@dit103:~# ls -las /etc/pam_ldap.conf
12 -rw-r--r-- 1 root root 9011 jul 21 17:00 /etc/pam_ldap.conf


Fichero de configuración nuevo:

root@dit103:~# ls -als /etc/nslcd.conf
4 -rw-r----- 1 root nslcd 697 jul 21 16:56 /etc/nslcd.conf

Camios en paquetes:

root@dit103:~# dpkg -l '*ldap*' |grep nss
rc  libnss-ldap:i386                                            264-2.5                            i386         NSS module for using LDAP as a naming service
ii  libnss-ldapd:i386                                           0.8.10-4                           i386         NSS module for using LDAP as a naming service
root@dit103:~# dpkg -l '*ldap*' |grep pam
rc  libpam-ldap:i386                                            184-8.6                            i386         Pluggable Authentication Module for LDAP
ii  libpam-ldapd:i386                                           0.8.10-4                           i386         PAM module for using LDAP as an authentication service

Paquete nuevo:

root@dit103:~# dpkg -l nslcd
Deseado=Desconocido/Instalar/Eliminar/Purgar/Retener
| Estado=No/Instalado/Config-files/Desempaquetado/Medio-conf/Medio-inst/espera-disparo/pendiente-disparo
|/ Err?=(ninguno)/Requiere-reinst (Estado,Err: mayúsc.=malo)
||/ Nombre                 Versión         Arquitectura     Descripción
+++-======================-================-================-=================================================
ii  nslcd                  0.8.10-4         i386             Daemon for NSS and PAM lookups using LDAP

Fichero de configuración nslcd

El fichero de configuración nslcd.conf se utiliza tanto para la resolución y la autenticación, en este caso pasamos a tener configurado los servidores sobre ssl (ldaps://) y se verifica el certificado. Hay que acordarse que cada 3 años el certificado caduca y tendrá que ser renovado.

root@dit103:~# cat  /etc/nslcd.conf
# /etc/nslcd.conf
# nslcd configuration file. See nslcd.conf(5)
# for details.

# The user and group nslcd should run as.
uid nslcd
gid nslcd

# The location at which the LDAP server(s) should be reachable.
uri ldaps://<REPLDAP>>.lab.it.uc3m.es

# The search base that will be used for all queries.
base dc=lab,dc=it,dc=uc3m,dc=es

# The LDAP protocol version to use.
#ldap_version 3 

# The DN to bind with for normal lookups.
#binddn cn=annonymous,dc=example,dc=net
#bindpw secret

# The DN used for password modifications by root.
#rootpwmoddn cn=admin,dc=example,dc=com

# SSL options
ssl on
tls_reqcert demand

# The search scope.
#scope sub

tls_cacertfile /etc/ssl/certs/14821503.ca-bundle  

Nota: Acordarse de copiar el CA del certificado.

Configuración cliente laboratorio

Instalar los paquetes libnss-ldapd y libpam-ldapd, ssl-certs y ca-certificates, para después configurar el nslcd.conf como se muestra a continuación:

# nslcd configuration file. See nslcd.conf(5)
# for details.

# The user and group nslcd should run as.
uid nslcd
gid nslcd 
 
# The location at which the LDAP server(s) should be reachable.
uri ldaps://repldap.lab.it.uc3m.es

# The search base that will be used for all queries.
base dc=lab,dc=it,dc=uc3m,dc=es

# The LDAP protocol version to use.
#ldap_version 3 

# The DN to bind with for normal lookups.
#binddn cn=annonymous,dc=example,dc=net
#bindpw secret 

# The DN used for password modifications by root.
#rootpwmoddn cn=admin,dc=example,dc=com

# SSL options
ssl on 
tls_reqcert demand 

# The search scope.
#scope sub 

tls_cacertfile /etc/ssl/certs/ca-certificates.crt

Configuración servidor laboratorio

Instalar los paquetes libnss-ldapd y libpam-ldapd, ssl-certs y ca-certificates, para después configurar el nslcd.conf como se muestra a continuación:

# nslcd configuration file. See nslcd.conf(5)
# for details.

# The user and group nslcd should run as.
uid nslcd
gid nslcd 
 
# The location at which the LDAP server(s) should be reachable.
uri ldaps://repldap.lab.it.uc3m.es

# The search base that will be used for all queries.
base dc=lab,dc=it,dc=uc3m,dc=es

# The LDAP protocol version to use.
#ldap_version 3 

# The DN to bind with for normal lookups.
#binddn cn=annonymous,dc=example,dc=net
#bindpw secret 

# The DN used for password modifications by root.
#rootpwmoddn cn=admin,dc=example,dc=com

# SSL options
ssl on 
tls_reqcert demand 

# The search scope.
#scope sub 

tls_cacertfile /etc/ssl/certs/ca-certificates.crt

# Only group etl
pam_authz_search (&(objectClass=posixAccount)(uid=$username)(gidNumber=1118))

Después instalar sudo y autofs

Fichero sudoers estandar:

$ sudo cat /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# Host alias specification 

# User alias specification 

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d

Añadir en auto.master la siguiente línea:

/net   /etc/auto.net --timeout=300 --ghost

Crear el enlace para montar las cuentas en:

$ ln -s /net/violin/users /users

Nota: Añadir acceso desde violin en /etc/hosts.allow y /etc/exports

Ejemplo de instalación:

root@ditserv2:/users# apt-get install libnss-ldapd
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Se instalarán los siguientes paquetes extras:
  libpam-ldapd nslcd
Paquetes sugeridos:
  kstart
Se instalarán los siguientes paquetes NUEVOS:
  libnss-ldapd libpam-ldapd nslcd
0 actualizados, 3 se instalarán, 0 para eliminar y 0 no actualizados.
Necesito descargar 283 kB de archivos.
Se utilizarán 512 kB de espacio de disco adicional después de esta operación.
¿Desea continuar [S/n]? S
Des:1 http://ftp.es.debian.org/debian/ wheezy/main nslcd i386 0.8.10-4 [169 kB]
Des:2 http://ftp.es.debian.org/debian/ wheezy/main libnss-ldapd i386 0.8.10-4 [63,6 kB]
Des:3 http://ftp.es.debian.org/debian/ wheezy/main libpam-ldapd i386 0.8.10-4 [49,8 kB]
Descargados 283 kB en 0seg. (2.732 kB/s)
Preconfigurando paquetes ...
Seleccionando el paquete nslcd previamente no seleccionado.
(Leyendo la base de datos ... 39994 ficheros o directorios instalados actualmente.)
Desempaquetando nslcd (de .../nslcd_0.8.10-4_i386.deb) ...
Seleccionando el paquete libnss-ldapd:i386 previamente no seleccionado.
Desempaquetando libnss-ldapd:i386 (de .../libnss-ldapd_0.8.10-4_i386.deb) ...
Seleccionando el paquete libpam-ldapd:i386 previamente no seleccionado.
Desempaquetando libpam-ldapd:i386 (de .../libpam-ldapd_0.8.10-4_i386.deb) ...
Procesando disparadores para man-db ...
Configurando nslcd (0.8.10-4) ...
Aviso: No se puede acceder al directorio personal /var/run/nslcd/ que especificó: No existe el fichero o el directorio.
Añadiendo el usuario del sistema `nslcd' (UID 108) ...
Añadiendo un nuevo grupo `nslcd' (GID 111) ...
Añadiendo un nuevo usuario `nslcd' (UID 108) con grupo `nslcd' ...
No se crea el directorio personal `/var/run/nslcd/'.
[....] Starting LDAP connection daemon: nslcd
[ ok ]
Configurando libnss-ldapd:i386 (0.8.10-4) ...
/etc/nsswitch.conf: enable LDAP lookups for group
/etc/nsswitch.conf: enable LDAP lookups for passwd
/etc/nsswitch.conf: enable LDAP lookups for shadow
Configurando libpam-ldapd:i386 (0.8.10-4) ...

Migración a ldap 2.4.x

Realmente se ha realizado una instalación de cero. En primer lugar hay que tener en cuenta los tipos de autenticación que se va a usar:

- cn=admin,cn=config -> Acceso la configuración de la zona cn=config (configuración)

- cn=admin,dc=lab,dc=it,dc=uc3m,dc=es -> Acceso configuración de la rama dc=lab,dc=it,dc=uc3m,dc=es

- cn=mirrormode,dc=lab,dc=it,dc=uc3m,dc=es -> Acceso para replicas multimaster.

- "-Y EXTERNAL" (autenticación local con certificado) -> Acceso alternativo para cn=config.

Lo único que se ha migrado es el schema que teníamos al nuevo sistema con "cn=config" con lo cual hay que mantener la carpeta /etc/ldap/schema, para su correcto funcionamiento.



Configuración Multi Master para servidoes

La configuración Multi-Master permite tener todos los nodos sincronizados, incluso si algún nodo en algún momento no está disponible. En base a la siguiente ilustración:

N-way.png


Nuestra configuración parte de tener tres nodos en este modo para lo que se ha de tener en cuenta los siguientes pasos.

Requisitos previos

Estos tres nodos le corresponde uno de los siguientes:

repldap.lab.it.uc3m.es  (zfsalum) 
repldap01.lab.it.uc3m.es (ditserv1)
repldap02.lab.it.uc3m.es (ditserv2)


El servicio NTP tiene que estar instalado y bien configurado. El servicio DNS tiene que resolver los nombres de los distintos nodos ldap. Para asegurarse ante caídas, se añaden al /etc/hosts

$ cat /etc/hosts
 
163.117.144.60  repldap.lab.it.uc3m.es reldap
163.117.168.100 repldap01.lab.it.uc3m.es repldap01
163.117.144.9   repldap02.lab.it.uc3m.es repldap02
 
2001:720:410:100c::9 repldap02.lab.it.uc3m.es repldap02 (en el caso de querer utilizar ipv6)

El siguiente paso, definir la entrada de SLDAP_SERVICES en el fichero /etc/default/slapd

Master1
/etc/default/slapd
SLAPD_SERVICES="ldap://repldap.lab.it.uc3m.es ldaps://repldap.lab.it.uc3m.es ldapi:///"
Master2
/etc/default/slapd
SLAPD_SERVICES="ldap://repldap01.lab.it.uc3m.es ldaps://repldap01.lab.it.uc3m.es ldapi:///"
Master3
/etc/default/slapd
SLAPD_SERVICES="ldap://repldap02.lab.it.uc3m.es ldaps://repldap02.lab.it.uc3m.es ldapi:///"


Nota: si esto último no está hecho se obtiene el siguiente error: "read_config: no serverID / URL match found. Check slapd -h arguments. "

Configuración de la replicación

Zona "cn=config"

Asegurarse de que el móudlo "syncprov está cargado, en todos los nodos:

# cat syncproc.ldif 
dn: cn=module{0},cn=config
changetype: modify
add: olcModuleLoad
olcModuleLoad: syncprov


# ldapmodify  -Y EXTERNAL -H ldapi:///  -f ./syncproc.ldif 
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=module{0},cn=config"


En cada servidor maestro configurar la base de datos para replicación y seleccionar la contraseña (esto debería hacerse anterioremente)


dn: cn=config
changeType: modify
add: olcServerID
olcServerID: 100

Remplazar olcServerID para Master2 en 101 y Master3 en 102.
# ldapmodify  -Y EXTERNAL -H ldapi:///  -f ./id3.ldif 
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=config

Seleccionar contraseña de configuración de la zona "cn=config":

dn: cn=config
changeType: modify
-
dn: olcDatabase={0}config,cn=config
add: olcRootPW
olcRootPW: {SSHA}SGq737yNactRCyMY70TDTXXXV1wzMRD6(Se generar con slapdpasswd)

Nota: Esta no es la contraseña de administración de la base de datos de usuarios.

Comprobar que funciona con:

ldapmodify -H ldap://ldap1.test.local -D "cn=admin,cn=config" -W  (En debian/kfreebsd no hay acceso vía -Y EXTERNAL, con lo cual este paso es previo)

Modificar en todos los nodos la nueva configuración de olcServerID:

dn: cn=config
changetype: modify
replace: olcServerID
olcServerID: 100 ldaps://repldap.lab.it.uc3m.es
olcServerID: 101 ldaps://repldap01.lab.it.uc3m.es
olcServerID: 102 ldaps://repldap02.lab.it.uc3m.es

Añadir en todos los nodos "syncproc" a la configuración:


# cat syncprocv.ldif
dn: olcOverlay=syncprov,olcDatabase={0}config,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
# ldapmodify  -Y EXTERNAL -H ldapi:///  -f ./syncprocv.ldif 
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "olcOverlay=syncprov,olcDatabase={0}config,cn=config"

Añadir en todos los nodos SyncRepl entre los servidores Maestros (Las contraseñas están en texto, simplebind no lo soporta, por eso usamos ldaps para las conexiones entre servidores)

dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=001 provider=ldaps://repldap.lab.it.uc3m.es binddn="cn=admin,cn=config" bindmethod=simple credentials=<supersegura> searchbase="cn=config" type=refreshAndPersist retry="5 5 300 5" timeout=1   tls_cacert=/etc/ssl/certs/14821503.ca-bundle tls_cert=/etc/ssl/certs/ldap.lab.it.crt tls_key=/etc/ssl/private/ldap.lab.it.key tls_reqcert=demand 
olcSyncRepl: rid=002 provider=ldaps://repldap01.lab.it.uc3m.es binddn="cn=admin,cn=config" bindmethod=simple credentials=<supersegura> searchbase="cn=config" type=refreshAndPersist retry="5 5 300 5" timeout=1 tls_cacert=/etc/ssl/certs/14821503.ca-bundle tls_cert=/etc/ssl/certs/ldap.lab.it.crt tls_key=/etc/ssl/private/ldap.lab.it.key tls_reqcert=demand
olcSyncRepl: rid=003 provider=ldaps://repldap02.lab.it.uc3m.es binddn="cn=admin,cn=config" bindmethod=simple credentials=<supersegura> searchbase="cn=config" type=refreshAndPersist retry="5 5 300 5" timeout=1 tls_cacert=/etc/ssl/certs/14821503.ca-bundle tls_cert=/etc/ssl/certs/ldap.lab.it.crt tls_key=/etc/ssl/private/ldap.lab.it.key tls_reqcert=demand
-
add: olcMirrorMode
olcMirrorMode: TRUE

Nota: Se puede escoger "/etc/ssl/certs/ca-certificates.crt" en vez de "/etc/ssl/certs/ca-certificates.crt", ya que usamos certificados verificados. Caducan a los 3 años, así que para 2018 estos caducan.


Con esto ya debería funcionar, se puede ver si hay problemas de conexión en el syslog.

Zona "dc=lab,dc=it,dc=uc3m,dc=es"

Añadimos otra entrada syncprov como base de datos olcDatabase{1}:

dn: olcOverlay=syncprov,olcDatabase={1}hdb,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov

Esto para cada zona a replicar, se va incrementando el número entre los corchetes.

En este caso añadimos el usuario para replicación de la zona y no usar así el usuario admin.

Creamos el usuario:

dn: cn=mirrormode,dc=lab,dc=it,dc=uc3m,dc=es
changetype: add
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: mirrormode
description: Syncrepl user for mirrormode operation
userPassword:: <superseguramirror>

Le asignamos permisos:

dn: olcDatabase={1}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by self write by anonymous auth by dn="cn=admin,dc=lab,dc=it,dc=uc3m,dc=es" write by dn="cn=mirrormode,dc=lab,dc=it,dc=uc3m,dc=es" read by * none


Se añade la configuración de replicación:

dn: olcDatabase={1}hdb,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=101 provider=ldaps://repldap.lab.it.uc3m.es binddn="cn=mirrormode,dc=lab,dc=it,dc=uc3m,dc=es" bindmethod=simple credentials=<supersegura> searchbase=" dc=lab,dc=it,dc=uc3m,dc=es" type=refreshAndPersist retry="5 5 300 5" timeout=1 tls_cacert=/etc/ssl/certs/14821503.ca-bundle tls_cert=/etc/ssl/certs/ldap.lab.it.crt tls_key=/etc/ssl/private/ldap.lab.it.key tls_reqcert=demand interval=00:00:00:10
olcSyncRepl: rid=102 provider=ldaps://repldap01.lab.it.uc3m.es binddn="cn=mirrormode,dc=lab,dc=it,dc=uc3m,dc=es" bindmethod=simple credentials=<supersegura> searchbase="dc=lab,dc=it,dc=uc3m,dc=es" type=refreshAndPersist retry="5 5 300 5" timeout=1 tls_cacert=/etc/ssl/certs/14821503.ca-bundle tls_cert=/etc/ssl/certs/ldap.lab.it.crt tls_key=/etc/ssl/private/ldap.lab.it.key tls_reqcert=demand interval=00:00:00:10
olcSyncRepl: rid=103 provider=ldaps://repldap02.lab.it.uc3m.es binddn="cn=mirrormode,dc=lab,dc=it,dc=uc3m,dc=es" bindmethod=simple credentials=<supersegura> searchbase="dc=lab,dc=it,dc=uc3m,dc=es" type=refreshAndPersist retry="5 5 300 5" timeout=1 tls_cacert=/etc/ssl/certs/14821503.ca-bundle tls_cert=/etc/ssl/certs/ldap.lab.it.crt tls_key=/etc/ssl/private/ldap.lab.it.key tls_reqcert=demand interval=00:00:00:10
-
add: olcMirrorMode
olcMirrorMode: TRUE

Añadir nuevos servidores MultiMaster

<sin terminar, hasta migrar lmserv/itserv>


Añadir nuevos índices

Se añade la siguiente configuración:

dn: olcDatabase={1}hdb,cn=config
changetype:  modify
add: olcDbIndex
olcDbIndex: entryCSN eq
olcDbIndex: entryUUID eq



Problemas en servidores Debian/GNULinux de 32bits

El error es el siguiente :

Oct 21 11:01:22 ditserv2 slapd[2499]: do_syncrepl: rid=001 rc -1 retrying (1 retries left)
Oct 21 11:01:26 ditserv2 slapd[2499]: warning: cannot open /etc/hosts.deny: Too many open files
Oct 21 11:01:26 ditserv2 slapd[2499]: daemon: accept(10) failed errno=24 (Too many open files)
Oct 21 11:01:26 ditserv2 slapd[2499]: daemon: accept(11) failed errno=24 (Too many open files)
Oct 21 11:01:26 ditserv2 slapd[2499]: warning: cannot open /etc/hosts.allow: Too many open files
Oct 21 11:01:26 ditserv2 slapd[2499]: warning: cannot open /etc/hosts.deny: Too many open files
Oct 21 11:01:26 ditserv2 slapd[2499]: warning: cannot open /etc/hosts.allow: Too many open files


Se resuelve aumentando el limits por encima de 4096, por defecto en sistemas de 32bits es 1024.

BUG: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=660917

--- slapd.default	2012-02-22 11:29:01.000000000 -0800
+++ slapd.default.new	2012-02-22 11:28:43.000000000 -0800
 @@ -43,3 +43,7 @@

 # Additional options to pass to slapd
SLAPD_OPTIONS=""
+
+# The nofile user limit: should be larger than the maximum number of
+# simultaneous connections.
+SLAPD_NOFILES=8192


--- slapd.init	2012-02-17 10:58:42.000000000 -0800
+++ slapd.init.new	2012-02-22 11:37:48.000000000 -0800
@@ -57,6 +57,11 @@
 	SLAPD_OPTIONS="-F $SLAPD_CONF $SLAPD_OPTIONS"
 fi
 
+# Set the nofiles limit to a reasonable value if not set
+if [ -z "$SLAPD_NOFILES" ]; then
+  SLAPD_NOFILES=8192
+fi
+
 # Find out the name of slapd's pid file
 if [ -z "$SLAPD_PIDFILE" ]; then
 	# If using old one-file configuration scheme
@@ -132,6 +137,11 @@
 # Start the slapd daemon and capture the error message if any to 
 # $reason.
 start_slapd() {
+  ulimit -Hn $SLAPD_NOFILES
+  ulimit -Sn $SLAPD_NOFILES
+  if [ "`ulimit -n`" -ne "$SLAPD_NOFILES" ]; then
+    log_warning_msg "Could not set ulimit, slapd may prematurely reject connections under load"
+  fi
 	if [ -z "$SLAPD_SERVICES" ]; then
 		reason="`start-stop-daemon --start --quiet --oknodo \
			--pidfile "$SLAPD_PIDFILE" \

Otros recursos

Introducción de nuevos parámetros de configuración:

ldapmodify  -D "cn=admin,cn=config" -W  -H ldapi:/// -f <file>
ldapmodify  -Y EXTERNAL -H ldapi:/// -f <file> 

Modificación "ldapvi"

# ldapvi -h ldapi:/// -D cn=admin,cn=config -b cn=config
# ldapvi -h ldapi:/// -Y EXTERNAL -b cn=config

Backup y restore:

 /usr/sbin/slapcat -l backup.ldif
 /usr/sbin/slapadd -l backup.ldif


Error al leer el certificado:

Dec 12 14:40:57 xfsalum slapd[4558]: @(#) $OpenLDAP: slapd  (Apr 23 2013 12:16:04) $#012#011root@lupin:/tmp/buildd/openldap-2.4.31/debian/build/servers/slapd
Dec 12 14:40:57 xfsalum slapd[4558]: main: TLS init def ctx failed: -1
Dec 12 14:40:57 xfsalum slapd[4558]: slapd stopped.
Dec 12 14:40:57 xfsalum slapd[4558]: connections_destroy: nothing to destroy.

Añadir openldap al grupo ssl-certs:

root@xfsalum:/etc/ssl/private# usermod -a -G ssl-cert openldap


Añadir campos a mano creando fichero ldif:

# cat 0022212.ldif 
dn: uid=0022212,ou=Alum,dc=lab,dc=it,dc=uc3m,dc=es
changetype: modify
add: objectClass
objectClass: inetLocalMailRecipient

dn: uid=0022212,ou=Alum,dc=lab,dc=it,dc=uc3m,dc=es
changetype: modify
add:mailLocalAddress
mailLocalAddress: 0022212@kkkk.lab.uc3m.es

dn: uid=0022212,ou=Alum,dc=lab,dc=it,dc=uc3m,dc=es
changetype: modify
add:mailRoutingAddress
mailRoutingAddress: 100022212@kkkk.uc3m.es
# ldapmodify -D cn=admin,dc=lab,dc=it,dc=uc3m,dc=es -W -H ldapi:/// -f  /tmp/0022212.ldif 


--Rbravo 18:43 21 jul 2014 (UTC)

Enlaces Externos