manual ldap

22
Maestría de Seguridad Informática Universidad Tecnológica del Perú Alumno: Omar Huarcaya Lima Práctica Calificada N°2 – Instalacion de LDAP Requisitos openldap-clients-2.x openldap-servers-2.x authconfig authconfig-gtk (opcional) migrationtools Instalación a través de yum. Antes que todo actualizar los repositorios, crear un archivo de repositorios nuevo: Vim /etc/yum.repo.d/centos56.repo # CentOS-Base.repo # # The mirror system uses the connecting IP address of the client and the # update status of each mirror to pick mirrors that are updated to and # geographically close to the client. You should use this for CentOS updates # unless you are manually picking other mirrors. # # If the mirrorlist= does not work for you, as a fall back you can try the # remarked out baseurl= line instead. # # [base] name=CentOS-$releasever - Base mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os

Upload: omarhl2

Post on 05-Dec-2014

2.458 views

Category:

Technology


0 download

DESCRIPTION

LDAP

TRANSCRIPT

Page 1: Manual ldap

Maestría de Seguridad Informática

Universidad Tecnológica del Perú

Alumno: Omar Huarcaya Lima

Práctica Calificada N°2 – Instalacion de LDAP

Requisitos

openldap-clients-2.x

openldap-servers-2.x

authconfig

authconfig-gtk (opcional)

migrationtools

Instalación a través de yum.

Antes que todo actualizar los repositorios, crear un archivo de repositorios nuevo:

Vim /etc/yum.repo.d/centos56.repo

# CentOS-Base.repo

#

# The mirror system uses the connecting IP address of the client and the

# update status of each mirror to pick mirrors that are updated to and

# geographically close to the client. You should use this for CentOS updates

# unless you are manually picking other mirrors.

#

# If the mirrorlist= does not work for you, as a fall back you can try the

# remarked out baseurl= line instead.

#

#

[base]

name=CentOS-$releasever - Base

mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os

Page 2: Manual ldap

#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

#released updates

[updates]

name=CentOS-$releasever - Updates

mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates

#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

#additional packages that may be useful

[extras]

name=CentOS-$releasever - Extras

mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras

#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

#additional packages that extend functionality of existing packages

[centosplus]

name=CentOS-$releasever - Plus

mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplu

s

#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/

gpgcheck=1

enabled=0

Page 3: Manual ldap

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

#contrib - packages by Centos Users

[contrib]

name=CentOS-$releasever - Contrib

mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib

#baseurl=http://mirror.centos.org/centos/$releasever/contrib/$basearch/

gpgcheck=1

enabled=0

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

[centos56]

name=centos56

baseurl=http://mirror.kernel.org/redhat/redhat/linux/enterprise/5Client/en/os/SRPMS/

gpgcheck=1

enabled=0

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

Luego ejecutar

Yum list

Ejecutar:

yum -y install openldap openldap-clients openldap-servers nss_ldap

yum -y install authconfig authconfig-gtk

Procedimientos.

SELinux y el servicio ldap.

Page 4: Manual ldap

El servicio slapd funcionará perfectamente con SELinux activo en modo de imposición

(enforcing).

Todo el contenido del directorio /var/lib/ldap debe tener contexto tipo slapd_db_t.

chcon -R -t slapd_db_t /var/lib/ldap

Lo anterior solo será necesario si se restaura un respaldo hecho a partir de un sistema sin

SELinux.

En todo caso ingresar al archivo de configuración de selinux y colocar "disabled".

/etc/selinux/config y reiniciar.

Recomendaciones, cambiar los nombres de dominio y host.

Cambiar nombre al equipo

vim /etc/hosts

vim /etc/sysconfig/network

vim /etc/sysctl.conf

kernel.hostname=nuevonombredehost

Tambien se puede cambiar con el comando hostname

Certificados para TLS/SSL.

Es muy importante utilizar TLS/SSL cuando se configura el sistema para fungir como servidor

de autenticación, por lo cual el siguiente procedimiento es obligatorio. Si utiliza CentOS 6, o

Red Hat™ Enterprise Linux 6, requerirá al menos openldap-2.4.23-16.el6, debido a que la

versiones anteriores tienen roto el soporte para TLS/SSL.

Cambie al directorio /etc/pki/tls/certs:

Page 5: Manual ldap

cd /etc/pki/tls/certs

La creación de la firma digital y certificado requiere utilizar una firma digital con algoritmo RSA

de 2048 octetos, y estructura x509. De modo predeterminado se establece una validez por 365

días (un año) para el certificado que se creará.

rm -f slapd.pem

make slapd.pem

cd -

Lo anterior solicitará se ingresen varios datos:

Código de dos letras para el país.

Estado o provincia.

Ciudad.

Nombre de la empresa o razón social.

Unidad o sección.

Nombre del anfitrión.

Dirección de correo.

La salida sería similar a la siguiente:

Generating a 2048 bit RSA private key

................++++++

.++++++

writing new private key to 'dovecot.key'

-----

You are about to be asked to enter information that will be

incorporated into your certificate request.

What you are about to enter is what is called a Distinguished Name

Page 6: Manual ldap

or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter '.', the field will be left blank.

-----

Country Name (2 letter code) [GB]:MX

State or Province Name (full name) [Berkshire]:Distrito Federal

Locality Name (eg, city) [Newbury]:Mexico

Organization Name (eg, company) [My Company Ltd]:

Mi empresa, S.A. de C.V.

Organizational Unit Name (eg, section) []:Direccion Comercial

Common Name (eg, your name or your server's hostname) []:

servidor.dominio.tld

Email Address []:[email protected]

El certificado solo será válido cuando el servidor LDAP sea invocado con el nombre definido en

el campo Common Name. Es decir, sólo podrá utilizarlo cuando se defina como nombre de

anfitrión, es decir servidor.dominio.tld. Para que esto funcione, será indispensable que un

servidor DNS se encargue de la resolución del nombre de anfitrión del servidor LDAP para toda

la red de área local.

Es indispensable que el archivo que contiene la firma digital y el certificado tenga permisos de

acceso de lectura y escritura para el usuario root, y permisos de acceso de sólo lectura para el

grupo ldap:

chown root:ldap /etc/pki/tls/certs/slapd.pem

chmod 640 /etc/pki/tls/certs/slapd.pem

Page 7: Manual ldap

Creación de directorios.

Con fines de organización se creará un directorio específico para este directorio y se

configurará con permisos de acceso exclusivamente al usuario y grupo ldap.

mkdir /var/lib/ldap/autenticar

chmod 700 /var/lib/ldap/autenticar

Se requiere copiar el archivo DB_CONFIG.example dentro del directorio

/var/lib/ldap/autenticar/, como el archivo DB_CONFIG. Ejecute lo siguiente:

cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/autenticar/DB_CONFIG

Nota.

Si utiliza CentOS 5 o Red Hat Enterprise Linux 5, ejecute lo siguiente:

cp /etc/openldap/DB_CONFIG.example /var/lib/ldap/autenticar/DB_CONFIG

Todo el contenido del directorio /var/lib/ldap/autenticar debe pertenecer al usuario y grupo

ldap. Ejecute lo siguiente:

chown -R ldap:ldap /var/lib/ldap/autenticar

Creación de claves de acceso para LDAP.

Para crear la clave de acceso que se asignará en LDAP para el usuario administrador del

directorio, ejecute lo siguiente:

slappasswd

Lo anterior debe devolver como salida un criptograma, similar al mostrado a continuación:

{SSHA}LnmZLFeE1/zebp7AyEF09NlGaT1d4ckz

Page 8: Manual ldap

Copie y respalde este criptograma. El texto de la salida será utilizado más adelante en el

archivo /etc/openldap/slapd.conf y se definirá como clave de acceso para el usuario Manager,

quien tendrá todos los privilegios sobre el directorio.

Archivo de configuración /etc/openldap/slapd.conf.

Se debe crear /etc/openldap/slapd.conf como archivo nuevo:

touch /etc/openldap/slapd.conf

vim /etc/openldap/slapd.conf

Nota.

Si utiliza CentOS 5 o Red Hat Enterprise Linux 5, el archivo /etc/openldap/slapd.conf

ya existe, e incluye contenido de ejemplo. Puede reemplazar todo el contenido en su

totalidad, por el ejemplificado a continuación.

El archivo /etc/openldap/slapd.conf debe de tener definidos todos los archivos de esquema

mínimos requeridos. De tal modo, el inicio del archivo debe contener algo similar a lo

siguiente:

include /etc/openldap/schema/corba.schema

include /etc/openldap/schema/core.schema

include /etc/openldap/schema/cosine.schema

include /etc/openldap/schema/duaconf.schema

include /etc/openldap/schema/dyngroup.schema

include /etc/openldap/schema/inetorgperson.schema

include /etc/openldap/schema/java.schema

include /etc/openldap/schema/misc.schema

include /etc/openldap/schema/nis.schema

Page 9: Manual ldap

include /etc/openldap/schema/openldap.schema

include /etc/openldap/schema/ppolicy.schema

include /etc/openldap/schema/collective.schema

Se deben habilitar (decomentar) los parámetros TLSCACertificateFile, TLSCertificateFile y

TLSCertificateKeyFile estableciendo las rutas hacia el certificado y clave.

TLSCACertificateFile /etc/pki/tls/certs/ca-bundle.crt

TLSCertificateFile /etc/pki/tls/certs/slapd.pem

TLSCertificateKeyFile /etc/pki/tls/certs/slapd.pem

A fin de permitir conexiones desde clientes con OpenLDAP 2.x, establecer el archivo de

número de proceso, y el archivo de argumentos de LDAP, deben estar presentes los siguientes

parámetros, con los correspondientes valores:

allow bind_v2

pidfile /var/run/openldap/slapd.pid

argsfile /var/run/openldap/slapd.args

Para concluir con el /etc/openldap/slapd.conf, se añade lo siguiente, que tiene como finalidad

el definir la configuración del nuevo directorio que en adelante se utilizará para autenticar a

toda la red de área local, editar archivo:

database bdb

suffix "dc=utp"

rootdn "cn=Manager,dc=utp"

rootpw {SSHA}LnmZLFeE1/zebp7AyEF09NlGaT1d4ckz

directory /var/lib/ldap/autenticar

Page 10: Manual ldap

# Indices a mantener para esta base de datos

index objectClass eq,pres

index ou,cn,mail,surname,givenname eq,pres,sub

index uidNumber,gidNumber,loginShell eq,pres

index uid,memberUid eq,pres,sub

index nisMapName,nisMapEntry eq,pres,sub

En resumen, el archivo /etc/openldap/slapd.conf debiera quedar de modo similar al siguiente:

include /etc/openldap/schema/corba.schema

include /etc/openldap/schema/core.schema

include /etc/openldap/schema/cosine.schema

include /etc/openldap/schema/duaconf.schema

include /etc/openldap/schema/dyngroup.schema

include /etc/openldap/schema/inetorgperson.schema

include /etc/openldap/schema/java.schema

include /etc/openldap/schema/misc.schema

include /etc/openldap/schema/nis.schema

include /etc/openldap/schema/openldap.schema

include /etc/openldap/schema/ppolicy.schema

include /etc/openldap/schema/collective.schema

Page 11: Manual ldap

TLSCACertificateFile /etc/pki/tls/certs/ca-bundle.crt

TLSCertificateFile /etc/pki/tls/certs/slapd.pem

TLSCertificateKeyFile /etc/pki/tls/certs/slapd.pem

allow bind_v2

pidfile /var/run/openldap/slapd.pid

argsfile /var/run/openldap/slapd.args

database bdb

suffix "dc=utp"

rootdn "cn=Manager,dc=utp"

rootpw {SSHA}LnmZLFeE1/zebp7AyEF09NlGaT1d4ckz

directory /var/lib/ldap/autenticar

# Indices a mantener para esta base de datos

index objectClass eq,pres

index ou,cn,mail,surname,givenname eq,pres,sub

index uidNumber,gidNumber,loginShell eq,pres

index uid,memberUid eq,pres,sub

index nisMapName,nisMapEntry eq,pres,sub

# Habilitar supervisión

Page 12: Manual ldap

database monitor

# Permitir solo a rootdn ver la supervisión

access to *

by dn.exact="cn=Manager,dc=utp" read

by * none

Por seguridad, el archivo /etc/openldap/slapd.conf deberá tener permisos de lectura y

escritura, sólo para el usuario ldap.

chown ldap:ldap /etc/openldap/slapd.conf

chmod 600 /etc/openldap/slapd.conf

Nota.

Si utiliza CentOS 5, o Red Hat Enterprise Linux 5, o bien versiones de

openldap anteriores a la 2.4, omita los siguientes tres pasos.

Elimine el conjunto de archivos y directorios que componen los configuración predeterminada:

rm -rf /etc/openldap/slapd.d/*

Convierta el archivo /etc/openldap/slapd.conf en el nuevo subconjunto de archivos ldif que

irán dentro del directorio /etc/ldap/slapd.d:

slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d

Todo el contenido del directorio /etc/ldap/slapd.d debe pertenecer al usuario y grupo ldap.

Ejecute lo siguiente:

Page 13: Manual ldap

chown -R ldap:ldap /etc/openldap/slapd.d

Inicio del servicio.

Inicie el servicio slapd, y añada éste al resto de los servicios que arrancan junto con el sistema,

ejecutando los siguientes dos mandatos:

service slapd start

chkconfig slapd on

Nota.

Si utiliza CentOS 5 o Red Hat Enterprise Linux 5, inicie el servicio slapd, y

añada éste al resto de los servicios que arrancan junto con el sistema:

service ldap start

chkconfig ldap on

Migración de cuentas existentes en el sistema.

Edite el archivo /usr/share/migrationtools/migrate_common.ph:

vim /usr/share/migrationtools/migrate_common.ph

Nota.

Si utiliza CentOS 5 o Red Hat Enterprise Linux 5, edite el archivo

/usr/share/openldap/migration/migrate_common.ph:

vim /usr/share/openldap/migration/migrate_common.ph

Modifique los los valores de las variables $DEFAULT_MAIL_DOMAIN y $DEFAULT_BASE a fin

de que queden del siguiente modo:

# Default DNS domain

Page 14: Manual ldap

$DEFAULT_MAIL_DOMAIN = "utp";

# Default base

$DEFAULT_BASE = "dc=utp";

A continuación, hay que crear el objeto que a su vez contendrá el resto de los datos en el

directorio, utilizando migrate_base.pl para generar el archivo base.ldif.

Genere el archivo base.ldif, ejecutando lo siguiente:

/usr/share/migrationtools/migrate_base.pl > base.ldif

Nota.

Si utiliza CentOS 5 o Red Hat Enterprise Linux 5, puede generar el archivo

base.ldif ejecutando lo siguiente:

/usr/share/openldap/migration/migrate_base.pl > base.ldif

Utilice el mandato ldapadd para insertar los datos necesarios. Las opciones utilizadas con este

mandato son las siguientes:

-x autenticación simple

-W solicitar clave de acceso

-D binddn Nombre Distinguido (dn) a utilizar

-h anfitrión Servidor LDAP a acceder

-f archivo archivo a utilizar

Una vez entendido lo anterior, se procede a insertar la información generada en el directorio

utilizando lo siguiente:

Page 15: Manual ldap

ldapadd -x -W -D 'cn=Administrador, dc=dominio, dc=tld' -h 127.0.0.1 -f base.ldif

Una vez hecho lo anterior, se podrá comenzar a poblar el directorio con datos. Lo primero será

importar los grupos y usuarios existentes en el sistema. Realice la importación de usuarios

creando los archivos group.ldif y passwd.ldif, utilizando migrate_group.pl y

migrate_passwd.pl.

Ejecute los siguientes dos mandatos:

/usr/share/migrationtools/migrate_group.pl /etc/group group.ldif

/usr/share/migrationtools/migrate_passwd.pl /etc/passwd passwd.ldif

Nota.

Si utiliza CentOS 5 o Red Hat Enterprise Linux 5, ejecute los siguientes dos mandatos:

/usr/share/openldap/migration/migrate_group.pl /etc/group group.ldif

/usr/share/openldap/migration/migrate_passwd.pl /etc/passwd passwd.ldif

Lo anterior creará los archivos group.ldif y passwd.ldif, los cuales incluirán la información de

los grupos y cuentas en el sistema, incluyendo las claves de acceso. Los datos se podrán

insertar en el directorio LDAP utilizando lo siguiente:

ldapadd -x -W -D 'cn=Administrador, dc=utp' -h 127.0.0.1 -f group.ldif

ldapadd -x -W -D 'cn=Administrador, dc=utp' -h 127.0.0.1 -f passwd.ldif

Comprobaciones.

Antes de configurar el sistema para utilizar LDAP para autenticar, es conveniente verificar que

todo funciona correctamente.

El siguiente mandato verifica que directorios disponibles existen en el servidor 127.0.0.1.

ldapsearch -h 127.0.0.1 -x -b '' -s base '(objectclass=*)' namingContexts

Page 16: Manual ldap

Lo anterior debe devolver una salida similar a lo siguiente:

# extended LDIF

#

# LDAPv3

# base <> with scope base

# filter: (objectclass=*)

# requesting: namingContexts

#

#

dn:

namingContexts: dc=utp

# search result

search: 2

result: 0 Success

# numResponses: 2

# numEntries: 1

El siguiente mandato debe devolver toda la información de todo el directorio solicitado

(dc=dominio,dc=tld).

Page 17: Manual ldap

ldapsearch -x -b 'dc=utp' '(objectclass=*)'

Otro ejemplo es realizar una búsqueda específica, para un usuario en particular. Asumiendo

que en el directorio existe el usuario denominado fulano, ejecute lo siguiente:

ldapsearch -x -b 'uid=fulano,ou=People,dc=utp'

Lo anterior debe regresar algo similar a lo siguiente:

# extended LDIF

#

# LDAPv3

# base uid=fulano,ou=People,dc=utp with scope sub

# filter: (objectclass=*)

# requesting: ALL

#

# fulano, People, utp

dn: uid=fulano,ou=People,dc=utp

uid: fulano

cn: fulano

objectClass: account

objectClass: posixAccount

objectClass: top

objectClass: shadowAccount

Page 18: Manual ldap

userPassword:: xxxxxxxxxxxx

shadowLastChange: 12594

shadowMax: 99999

shadowWarning: 7

loginShell: /bin/bash

uidNumber: 505

gidNumber: 505

homeDirectory: /home/fulano

# search result

search: 2

result: 0 Success

# numResponses: 2

# numEntries: 1

Configuración de clientes.

Los clientes CentOS 5 y Red Hat Enterprise Linux 5 requieren tener instalados

los paquetes nss_ldap, authconfig y openldap-clients:

yum -y install authconfig openldap-clients nss_ldap

Defina los valores para los parámetros host y base, a fin de establecer hacia que servidor y a

que directorio conectarse, en el archivo /etc/pam_ldap.conf.

Page 19: Manual ldap

vim /etc/pam_ldap.conf

Nota.

Si utiliza CentOS 5, o Red Hat™ Enterprise Linux 5, defina lo anterior en el

archivo /etc/ldap.conf.

vim /etc/ldap.conf

Para fines prácticos, el valor del parámetro uri corresponde al nombre del servidor LDAP,

previamente resuelto por un DNS, y el valor del parámetro base debe ser el mismo que se

especificó en el archivo /etc/openldap/slapd.conf para el parámetro suffix. Considerando que

el nombre de anfitrión del servidor LDAP está resuelto por un servidor DNS, como

servidor.dominio.tld, puede definir lo siguiente:

uri ldap://ohlserver.utp/

base dc=utp

ssl start_tls

tls_checkpeer no

pam_password md5

Asumiendo que el servidor LDAP tiene definido como nombre de anfitrión

servidor.dominio.tld, previamente resuelto en un servidor DNS, ejecute lo siguiente:

authconfig --useshadow --enablemd5 --enablelocauthorize \

--enablemkhomedir --enableldap --enableldapauth \

--ldapserver=ohlserver.utp \

--ldapbasedn=dc=utp --enableldaptls --update

Administración.

Page 20: Manual ldap

Existen muchos programas para acceder y administrar servidores LDAP, pero la mayoría sólo

sirven para administrar usuarios y grupos del sistema, como el módulo de LDAP de Webmin. La

mejor herramienta de administración de directorios LDAP que puedo recomendar es PHP LDAP

Admin.

Respaldo de datos.

El procedimiento requiere detener el servicio slapd.

service slapd stop

Nota.

Si utiliza CentOS 5, o Red Hat Enterprise Linux 5, debe detenerse el servicio ldap

antes de proceder con el respaldo de datos.

service ldap stop

Utilice el mandato slapcat del siguiente modo, definiendo el directorio de configuración

/etc/openldap/slapd.d.

slapcat -v -F /etc/openldap/slapd.d -l respaldo-$(date +%Y%m%d).ldif

Nota.

Si utiliza CentOS 5, o Red Hat Enterprise Linux 5, se utiliza la herramienta slapcat,

definiendo el archivo de configuración /etc/openldap/slapd.conf.

slapcat -v -f /etc/openldap/slapd.conf -l respaldo-$(date +%Y%m%d).ldif

Inicie de nuevo el servicio slapd.

service slapd start

Nota.

Page 21: Manual ldap

Si utiliza CentOS 5, o Red Hat Enterprise Linux 5, inicie de nuevo el servicio ldap.

service ldap start

Restauración de datos.

El procedimiento requiere detener el servicio. Ejecute lo siguiente:

service slapd stop

Nota.

Si utiliza CentOS 5, o Red Hat Enterprise Linux 5, ejecute lo siguiente:

service ldap stop

Deben eliminarse los datos del directorio a restaurar.

rm -f /var/lib/ldap/autenticar/*

Utilice la herramienta slapadd para cargar los datos del respaldo desde un archivo *.ldif.

slapadd -v -c -l respaldo-20110911.ldif -F /etc/openldap/slapd.d

Nota.

Si utiliza CentOS 5, o Red Hat Enterprise Linux 5, slapadd se utiliza definiendo el archivo

de configuración /etc/openldap/slapd.conf.

slapadd -v -c -l respaldo-20110911.ldif -f /etc/openldap/slapd.conf

Para regenerar los índices LDAP, ejecute el mandato slapindex:

Page 22: Manual ldap

slapindex

Inicie de nuevo el servicio, ejecutando lo siguiente:

service slapd start

Nota.

Si utiliza CentOS 5, o Red Hat Enterprise Linux 5, ejecute lo siguiente:

service ldap start

Administración con Jxplore

Utilizaremos la herramienta jxplore

http://jxplorer.org/documents/JXv3.2_Administrator_Guide.pdf