miércoles, 18 de noviembre de 2009

Centos 5.x: Migrando LDAP.

Paquetes que se necesitan instalar antes de empezar todo en el nuevo servidor:

openldap-servers
openldap-clients
samba
samba-common
smbldap-tools
Mandriva MDS
Apache
ntpd

Voy a mover una bd de ldap de gentoo hacia centos.

En gentoo me traje los archivo de respaldo que sale ejecutando:

slapcat -l respaldo.ldif

Copie la misma configuracion que tenia en el gentoo hacia centos hablando de openldap y samba, hasta los schemas, si no hacen esto van a tener problemas, debe quedar igual que el server donde esta operando.

No necesite traer el contenido de la base de datos /var/lib/openldap-directory, por que con el puro archivo respaldo.ldif se van a recuperar los datos.

Lo unico que copie fue DB_CONFIG.example hacia el folder donde ldap va a almacenar sus datos /var/lib/ldap, pero ese lo instala openldap-servers.

Por ultimo activar el syslog para que ldap logie, asi si pasa algo podremos saber mas facil por donde buscarle para reparar el dano.

Agregamos esto a el /etc/syslog.conf

local4.* -/var/log/ldap.log

Salvamos, creamos ese archivo en /var/log

touch /var/log/ldap.conf

Reiniciamos syslogd

/etc/init.d/syslog restart

Cambiamos los permisos para que ldap sea el unico con derechos en ese folder

chown -R ldap:ldap /var/lib/ldap
chmod -R 600 /var/lib/ldap

Jalamos el respaldo

slapadd -l respaldo.ldif

De aqui que nos se les pase configurar a centos para que se autentifique con ldap para el es necesario configurar /etc/nsswitch.conf

slapd.conf

include         /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/mmc.schema
include /etc/openldap/schema/nis.schema
#include /etc/openldap/schema/misc.schema
include /etc/openldap/schema/mail.schema
include /etc/openldap/schema/samba.schema


#################################
schemacheck on
allow bind_v2

pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args

#######################################################################
# Logging Options (disable when everything is working fine)
#######################################################################
loglevel 256

#######################################################################
# LDBM database definitions
#######################################################################
database bdb
directory "/var/lib/ldap/mydominio"
cachesize 100000
dbcachesize 1000000
lastmod on
suffix "dc=midominio,dc=com"
rootdn "cn=root,dc=midominio,dc=com"

password-hash {crypt}
password-crypt-salt-format "$1$%.8$"
rootpw {CRYPT}asdasdasdasdasdasd.


access to attrs=userPassword,shadowLastChange,sambaLMPassword,sambaNTPassword
by dn="cn=root,dc=oakwest,dc=com" write
by anonymous auth
by self write
by * none

access to *
by * read

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 sambaGroupType,sambaSIDList,uniqueMember eq

Sin lo esto:
access to *
by * read
Centos no podra accesar la informacion de los usuarios.

Respaldando Samba

Bien seguimos con samba, necesitamos traernos el respaldo de samba, ahi como lo ven samba tambien tiene sus archivos importantes que se deben respaldar si lo van a mover a otro servidor.

No solo el folder /etc/samba se debe respaldar, el tiene aparte unos archivos con extension "tdb" que regularmente los almacena en "/var/cache", "/var/lib/samba".

Este link les puede servir si desean adentrarse mas y entender a samba y sus archivos critcos.

Samba TDB

Segun dice que los importantes y sus rutas son en Centos:

account_policy --> /var/cache/samba
group_mapping --> /var/cache/samba
ntdrivers --> /var/cache/samba
ntforms --> /var/cache/samba
ntprinters --> /var/cache/samba
passdb --> No lo uso por que mi db es LDAP
registry --> /var/cache/samba
secrets --> /etc/samba
share_info --> /var/cache/samba
winbindd_idmap --> /var/cache/samba

Vamos iniciando por respaldar el archivo secrets.tdb, nos movemos a ese folder y hacemos esto:

cd /var/lib/samba/private
tdbbackup -s bak secrets.tdb

Si observa se acaba de crear ahi mismo un archivo de nombre secrets.tdbbak

Si leemos el man de esta herramienta dice que fue hecha para trabajar hasta cuando el servicio de samba esta operando, o sea que no es necesario apagar a samba para usarla, lo cual es beneficioso para nosotros que administramos este tipo de servicios.

Ahora seguimos con el folder /var/cache/samba/, un cd hasta haya y

tdbbackup -s bak *.tdb

Aqui son mas archivos, creamos ahi dentro un folder de nombre "cache-bak" y movemos todos los archivos con extension tdbbak hacia ahi:

mv *.tdbbak cache-bak/

Ya que jalemos este folder a el nuevo servidor, eliminamos los archivos que nos utiles segun la pagina de samba para que no nos causen problemas, de todos modos cuando samba arranca los crea por ello nos son importantes.

creamos un tar de cache-bak y lo jalamos a el nuevo servidor.

tar -cf cache-bak.tar /var/cache/cache-bak

Movemos ambos archivos a el nuevo servidor con Centos 5.4, ahi cambian las cosas poquito, porque el secrets lo marca en /etc/samba/ el cache esta donde mismo /var/cache/samba.

Copeamos cada archivo a su lugar, nos olvidamos de los temporales.

A la hora de copear solo debe asegurarse que tenga la extension tdb y no los muevan tal cual estan:

mv secrets.baktdb /etc/samba/secrets.tdb

Asi pueden mover todos los demas, cada uno a su respectivo sitio.

Como vamos a mover a samba, debemos checar su archivo de configuracion a ver si no es necesario hacerle algun cambio.

Si todo esta bien, ejecutamos samba.

service smb start

El proceso normal para leventar un PDC con samba es sacar el SID del servidor y darlo de alta en varias aplicaciones como samba, smbldap-tools. Aqui cambia un poco por que el SID ya lo tenemos, si lo modificamos tendriamos que modificar cada uno de nuestros clientes por que el SID es la firma del servidor.

Asi que en este caso lo que vamos hacer es grabar el que tenemos en el servidor de produccion, como ya tenemos este dato de los archivos de configuracion se lo tenemos que dar comando para eso es:

net setlocalsid
SID for domain PDC-SRV is: S-1-5-21-4251888864-2409518005-1441902238

net setlocalsid "TODA LA NUMERACION DEL VIEJO SERVIDOR"

Reiniciamos samba, no debe marcar error.

SMBLDAP-TOOLS

Lo configuramos igual que el servidor de produccion, pero no ejecutamos el smbldap-populate por que ya tenemos la estructura del dominio. Solo verficar que este igual que el de produccion.

Ya que lo tenga listo prueban un smbldap-usershow, smbldap-passwd, etc.

Autentificacion Local

Tenemos que configurar a centos para que se autentifique localmente, para ello debemos tambien modificar el archivo /etc/openldap/ldap.conf y /etc/ldap.conf

/etc/openldap/ldap.conf

HOST 127.0.0.1
BASE dc=oakwest,dc=com
URI 127.0.0.1

/etc/ldap.conf

host 127.0.0.1
base dc=oakwest,dc=com
ldap_version 3
timelimit 120
bind_timelimit 120
bind_policy soft
idle_timelimit 3600
nss_initgroups_ignoreusers root,ldap,named,avahi,haldaemon,dbus,radvd,tomcat,radiusd,news,mailman,nscd,gdm
ssl no
tls_cacertdir /etc/openldap/cacerts
pam_password md5

Ejecutan

authconfig-tui

User Information --> ldap
Authentication --> agregan LDAP

Next--> checan los parametros, si todo esta correcto le dicen ok y listo, ya podra Centos usar los parametros del ldap localmente.

Probando

Bien, vamos viendo si ldap esta operando sin problemas:


2 comentarios:

Jorge Armando dijo...

Ta bueno el procedimiento, yo siempre uso algo asi para hacer backup y recovery de servers ldap, por cierto te recomiendo usar las bases de datos tipo hdb, ahora ya es el nuevo tipo por defecto en openldap 2.4, tiene muchas mejoras en rendimiento y tolerancia a fallas, para migrar haces exactamente lo mismo que hiciste para migrar, pero antes de importar datos cambia el tip de bdb a hdb, arrancas slapd e importas el ldif.

Saludos.

Pedro Moreno dijo...

Ya dijo, vamos a empezar ahorita el proceso en fresco.

Pero el unico detalle es que, la version 2.4 seria cambiar muchas cosas en los otros servidores, es el otro lado de la moneda.

Pero vamos a ver como nos va, gracias monito!!!