Servidor LDAP · 10 min read · Sep 09, 2025

Servidor de Directorio Mandriva en Debian Etch

Servidor de Directorio Mandriva en Debian Etch

Versión 1.1
Autor: Oliver Meyer

Este documento describe cómo configurar el Servidor de Directorio Mandriva (MDS) en Debian Etch. El sistema resultante proporciona un servidor de oficina completo para pequeñas y medianas empresas - fácil de administrar a través de la Consola de Gestión de Mandriva (MMC) basada en la web.

Características Principales

  • Administración fácil a través de MMC
  • Integración de OpenLDAP en todo el sistema
  • Controlador de Dominio Primario (PDC) SAMBA
  • Servidor de correo Postfix con Dovecot, Amavis, Spamassassin y ClamAV (POP3/IMAP/SSL/TLS/Cuota)
  • Servidor DNS BIND
  • Servidor DHCP ISC
  • Proxy web Squid con SquidGuard

Este howto es una guía práctica sin ninguna garantía - no cubre los antecedentes teóricos. Hay muchas maneras de configurar un sistema así - esta es la forma que elegí.

Preámbulo

Este howto es bastante complejo. Por favor, tómese su tiempo, léalo extensamente y siga los pasos minuciosamente. La menor variación podría afectar que su configuración no funcione correctamente.

1 Preparación

1.1 Sistema Básico

Configure un sistema estándar de debian etch y actualícelo. Utilicé la siguiente configuración para este howto y la máquina virtual adjunta que está disponible para nuestros suscriptores:

Nombre del host: server1.example.com
Dominio SAMBA: EXAMPLE
IP: 192.168.0.100
Puerta de enlace: 192.168.0.2
Todas las contraseñas: howtoforge

1.2 Nombre del Host

Edite el archivo hosts - asigne el nombre del host a la IP del servidor.

vi /etc/hosts

Debería verse así:

127.0.0.1       localhost.localdomain   localhost
192.168.0.100   server1.example.com     server1

# Las siguientes líneas son deseables para hosts compatibles con IPv6
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Después, inserte el nombre del host en el archivo hostname …

echo server1.example.com > /etc/hostname

… y reinicie el sistema.

reboot

Cuando el sistema esté nuevamente en funcionamiento, la salida de ambos comandos …

hostname

… y …

hostname -f

… debería ser:

server1.example.com

1.3 ACLs del Sistema de Archivos

Para que SAMBA pueda mapear ACLs del sistema de archivos entre el servidor Linux y los clientes de Windows, necesita agregar soporte de ACL al punto de montaje correspondiente.

vi /etc/fstab

Agregue la opción “ acl “ al punto de montaje donde se almacenarán los directorios de SAMBA y donde los usuarios de SAMBA tendrán sus hogares. En mi caso es “ / “ - el contenido debería verse así:

# /etc/fstab: información estática del sistema de archivos.
#
#                
proc            /proc           proc    defaults        0       0
/dev/sda1       /               ext3    defaults,acl,errors=remount-ro 0       1
/dev/sda5       none            swap    sw              0       0
/dev/hdc        /media/cdrom0   udf,iso9660 user,noauto     0       0
/dev/fd0        /media/floppy0  auto    rw,user,noauto  0       0

Después, vuelva a montar el punto de montaje para que los cambios surtan efecto.

mount -o remount /

Si todo salió bien, el comando …

mount -l

… debería mostrar la opción “ acl “ para el punto de montaje correspondiente:

/dev/sda1 on / type ext3 (rw,acl,errors=remount-ro)

2 Repositorios

2.1 MDS

El repositorio MDS proporciona los paquetes relacionados con MDS y también paquetes parcheados para bind9 y dhcp3.

vi /etc/apt/sources.list

Agregue las siguientes líneas al archivo.

# Repositorio MDS  
deb http://mds.mandriva.org/pub/mds/debian etch main

2.2 Debian Volatile

El repositorio Debian Volatile proporciona paquetes más nuevos para ClamAV y Spamassassin que el repositorio estándar de debian.

vi /etc/apt/sources.list

Agregue las siguientes líneas al archivo.

# Debian Volatile  
deb http://volatile.debian.org/debian-volatile etch/volatile main contrib non-free

2.3 Debian Backports

El repositorio Debian Backports proporciona paquetes más nuevos para dovecot.

vi /etc/apt/sources.list

Agregue las siguientes líneas al archivo.

# Debian Etch Backports  
deb http://www.backports.org/debian etch-backports main

Después, actualice apt.

apt-get update

3 Paquetes Necesarios

3.1 Instalar

Instale los paquetes necesarios para esta configuración.

apt-get install mmc-web-base mmc-web-mail mmc-web-network mmc-web-proxy mmc-web-samba mmc-agent python-mmc-plugins-tools python-mmc-base python-mmc-mail python-mmc-network python-mmc-proxy python-mmc-samba postfix postfix-ldap sasl2-bin libsasl2 libsasl2-modules amavisd-new libdbd-ldap-perl libnet-ph-perl libnet-snpp-perl libnet-telnet-perl lzop nomarch zoo clamav clamav-daemon gzip bzip2 unzip unrar-free unzoo arj spamassassin libnet-dns-perl razor pyzor dcc-client slapd ldap-utils libnss-ldap libpam-ldap dhcp3-server dhcp3-server-ldap bind9 samba smbclient smbldap-tools cupsys cupsys-client foomatic-db-engine foomatic-db foomatic-db-hpijs foomatic-db-gutenprint foomatic-filters foomatic-filters-ppds fontconfig hpijs-ppds linuxprinting.org-ppds

Los paquetes de dovecot actuales en el repositorio estándar de debian tienen un error en conjunto con LDAP - por lo que debe usar los paquetes de dovecot del Debian Backports.

apt-get install -t etch-backports dovecot-common dovecot-imapd dovecot-pop3d

Si desea usar impresoras HP, se recomienda instalar algunos paquetes más.

apt-get install hplip libusb-dev python-dev python-reportlab libcupsys2-dev libjpeg62-dev libsnmp9-dev lsb-core

3.2 Configuración

Durante la instalación de los nuevos paquetes se le harán algunas preguntas - respóndalas de la siguiente manera.

3.2.1 LDAP

Ingrese la contraseña para el administrador de LDAP y confírmela. ( howtoforge)

3.2.2 Samba

Ingrese un nombre para su dominio. ( EXAMPLE)
Seleccione “ No “ cuando se le pregunte si el smb.conf debe ser modificado para usar configuraciones WINS de DHCP.

3.2.3 Postfix

Seleccione “ Sitio de Internet “ como tipo general de configuración.
Ingrese “ server1.example.com “ como nombre de correo.

3.2.4 Libnss-LDAP

Ingrese “ ldap://127.0.0.1/ “ como URI del servidor LDAP.
Ingrese “ dc=example,dc=com “ como nombre para la base de búsqueda.
Seleccione la versión de LDAP. ( 3)
Ingrese “ cn=admin,dc=example,dc=com “ como cuenta LDAP para root.
Ingrese la contraseña para el administrador de LDAP. ( howtoforge)

3.2.5 Libpam-LDAP

Seleccione “ Sí “ cuando se le pregunte si el root local debe ser el administrador de la base de datos.
Seleccione “ No “ cuando se le pregunte si la base de datos LDAP requiere inicio de sesión.
Ingrese “ cn=admin,dc=example,dc=com “ como cuenta LDAP para root.
Ingrese la contraseña para el administrador de LDAP. ( howtoforge)

4 Configuración de LDAP

4.1 Archivos de Esquema

Primero copie los archivos de esquema para MMC, correo, SAMBA, impresora, DNS y DHCP en el directorio de esquema LDAP.

cp /usr/share/doc/python-mmc-base/contrib/ldap/mmc.schema /etc/ldap/schema/  
cp /usr/share/doc/python-mmc-base/contrib/ldap/mail.schema /etc/ldap/schema/  
zcat /usr/share/doc/python-mmc-base/contrib/ldap/samba.schema.gz > /etc/ldap/schema/samba.schema  
zcat /usr/share/doc/python-mmc-base/contrib/ldap/printer.schema.gz > /etc/ldap/schema/printer.schema  
zcat /usr/share/doc/python-mmc-base/contrib/ldap/dnszone.schema.gz > /etc/ldap/schema/dnszone.schema  
zcat /usr/share/doc/python-mmc-base/contrib/ldap/dhcp.schema.gz > /etc/ldap/schema/dhcp.schema

A continuación, incluya los archivos de esquema en la configuración de LDAP

vi /etc/ldap/slapd.conf

Incluya los archivos de esquema después del esquema inetorgperson.

include /etc/ldap/schema/mmc.schema  
include /etc/ldap/schema/samba.schema  
include /etc/ldap/schema/printer.schema  
include /etc/ldap/schema/mail.schema  
include /etc/ldap/schema/dnszone.schema  
include /etc/ldap/schema/dhcp.schema

Habilite la verificación de esquema (debajo de los archivos de esquema incluidos).

schemacheck on

4.2 Configuración Básica

En este paso necesitará la contraseña del administrador de ldap (que definió durante la instalación del paquete en el paso 3) en forma encriptada (SSHA) - así que vamos a encriptarla.

slappasswd -s %ldap_admin_password%

Por ejemplo:

slappasswd -s howtoforge

La salida debería verse así:

{SSHA}kPd9OeiwGx4lyZUiQ2NFmzXV0JWyLV9A

Tómelo en cuenta y continúe - abra el archivo de configuración del servidor LDAP.

vi /etc/ldap/slapd.conf

Busque la línea comentada con la entrada para el administrador de LDAP (rootdn) …

# rootdn "cn=admin,dc=example,dc=com"

… y coméntela. Después de eso, agregue una nueva línea justo debajo. Debe ingresar la contraseña de administrador de ldap encriptada que generó al principio de este paso.

rootpw %encrypted_ldap_admin_password%

Por ejemplo:

rootpw {SSHA}kPd9OeiwGx4lyZUiQ2NFmzXV0JWyLV9A

A continuación, debemos modificar las opciones de indexación para la base de datos. Busque la siguiente entrada:

# Opciones de indexación para la base de datos #1

Elimine la línea de abajo …

index objectClass eq

… e inserte las siguientes líneas:

index objectClass,uidNumber,gidNumber eq  
index cn,sn,uid,displayName pres,sub,eq  
index memberUid,mail,givenname eq,subinitial  
index sambaSID,sambaPrimaryGroupSID,sambaDomainName eq  
index zoneName,relativeDomainName eq  
index dhcpHWAddress,dhcpClassData eq

Ahora agregue SAMBA a la lista de acceso para la base de datos. Busque la siguiente línea:

access to attrs=userPassword,shadowLastChange

Cámbielo para que se vea así:

access to attrs=userPassword,sambaLMPassword,sambaNTPassword

En este punto, el archivo de configuración del servidor LDAP debería verse así:

# Este es el archivo de configuración principal de slapd. Consulte slapd.conf(5) para más
# información sobre las opciones de configuración.
#######################################################################
# Directivas Globales:
# Características a permitir
#allow bind_v2
# Definiciones de esquema y objectClass
include         /etc/ldap/schema/core.schema
include         /etc/ldap/schema/cosine.schema
include         /etc/ldap/schema/nis.schema
include         /etc/ldap/schema/inetorgperson.schema
include         /etc/ldap/schema/mmc.schema
include         /etc/ldap/schema/samba.schema
include         /etc/ldap/schema/printer.schema
include         /etc/ldap/schema/mail.schema
include         /etc/ldap/schema/dnszone.schema
include         /etc/ldap/schema/dhcp.schema

schemacheck     on

# Donde se coloca el archivo pid. El script init.d
# no detendrá el servidor si cambia esto.
pidfile         /var/run/slapd/slapd.pid

# Lista de argumentos que se pasaron al servidor
argsfile        /var/run/slapd/slapd.args

# Lea slapd.conf(5) para posibles valores
loglevel        0

# Donde se almacenan los módulos cargados dinámicamente
modulepath      /usr/lib/ldap
moduleload      back_bdb

# El número máximo de entradas que se devuelve para una operación de búsqueda
sizelimit 500

# El parámetro tool-threads establece la cantidad real de CPU que se utiliza
# para la indexación.
tool-threads 1

#######################################################################
# Directivas Específicas del Backend para bdb:
# Las directivas específicas del backend se aplican a este backend hasta que otra
# directiva 'backend' ocurra
backend         bdb
checkpoint 512 30

#######################################################################
# Directivas Específicas del Backend para 'otro':
# Las directivas específicas del backend se aplican a este backend hasta que otra
# directiva 'backend' ocurra
#backend                

#######################################################################
# Directivas Específicas para la base de datos #1, de tipo bdb:
# Las directivas específicas de la base de datos se aplican a esta base de datos hasta que otra
# directiva 'database' ocurra
database        bdb

# La base de su directorio en la base de datos #1
suffix          "dc=example,dc=com"

# directiva rootdn para especificar un superusuario en la base de datos. Esto es necesario
# para syncrepl.
rootdn          "cn=admin,dc=example,dc=com"
rootpw          {SSHA}kPd9OeiwGx4lyZUiQ2NFmzXV0JWyLV9A

# Donde se almacenan físicamente los archivos de base de datos para la base de datos #1
directory       "/var/lib/ldap"

# Para el paquete Debian usamos 2MB como valor predeterminado, pero asegúrese de actualizar este
# valor si tiene mucha RAM
dbconfig set_cachesize 0 2097152 0

# Sven Hartge informó que tuvo que establecer este valor increíblemente alto
# para que slapd funcionara. Consulte http://bugs.debian.org/303057
# para más información.
# Número de objetos que pueden ser bloqueados al mismo tiempo.
dbconfig set_lk_max_objects 1500

# Número de bloqueos (tanto solicitados como concedidos)
dbconfig set_lk_max_locks 1500

# Número de bloqueadores
dbconfig set_lk_max_lockers 1500

# Opciones de indexación para la base de datos #1
index      objectClass,uidNumber,gidNumber                  eq
index      cn,sn,uid,displayName                            pres,sub,eq
index      memberUid,mail,givenname                         eq,subinitial
index      sambaSID,sambaPrimaryGroupSID,sambaDomainName    eq
index      zoneName,relativeDomainName                  eq 
index      dhcpHWAddress,dhcpClassData                      eq

# Guardar el tiempo que la entrada se modifica, para la base de datos #1
lastmod         on

# Donde almacenar los registros de réplicas para la base de datos #1
# replogfile    /var/lib/ldap/replog
# La userPassword por defecto puede ser cambiada
# por la entrada que la posee si están autenticados.
# Otros no deberían poder verla, excepto la
# entrada de administrador a continuación
# Estas líneas de acceso se aplican solo a la base de datos #1
access to attrs=userPassword,sambaLMPassword,sambaNTPassword
        by dn="cn=admin,dc=example,dc=com" write
        by anonymous auth
        by self write
        by * none

# Asegurar acceso de lectura a la base para cosas como
# supportedSASLMechanisms.  Sin esto puede que
# tenga problemas con SASL no sabiendo qué
# mecanismos están disponibles y cosas por el estilo.
# Tenga en cuenta que esto también está cubierto por el 'access to *'
# ACL a continuación, pero si cambia eso como la gente
# suele hacer, aún necesitará esto si quiere que SASL
# (y posiblemente otras cosas) funcionen
# felizmente.
access to dn.base="" by * read

# El dn de administrador tiene acceso completo de escritura, todos los demás
# pueden leer todo.
access to *
        by dn="cn=admin,dc=example,dc=com" write
        by * read

# Para soporte de Roaming de Netscape, cada usuario obtiene un
# perfil de roaming para el cual tiene acceso de escritura a
#access to dn=".*,ou=Roaming,o=morsnet"
#        by dn="cn=admin,dc=example,dc=com" write
#        by dnattr=owner write

#######################################################################
# Directivas Específicas para la base de datos #2, de tipo 'otro' (también puede ser bdb):
# Las directivas específicas de la base de datos se aplican a esta base de datos hasta que otra
# directiva 'database' ocurra
#database        

# La base de su directorio para la base de datos #2
#suffix         "dc=debian,dc=org"

Adicionalmente, debe editar el archivo de configuración de LDAP.

vi /etc/ldap/ldap.conf

Agregue las siguientes líneas: host 127.0.0.1
base dc=example,dc=com

Después, reinicie el servidor LDAP.

/etc/init.d/slapd restart
Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.