Migración de datos
C@mpus - @cademia Linux

Introducción 

La migración de los datos es uno de los pasos más delicados que se tendrán que hacer, si bien el sistema está listo para almacenar los datos habrá que llenarla. Por defecto migraremos todos los datos actuales del sistema: usuarios, contraseñas, servicios, protocolos y aliases. Los demás datos podrán mudarse como hosts y redes pero no serán necesarios puesto que LXE no toma ventaja de ellos y por lo tanto no los cubriremos.

El comando que utilizaremos para añadir cualquier tipo de ficha será el siguiente en todos los casos:

ldapadd -x -c -D "cn=root,dc=linuxchange,dc=com" -W -f <archivo.ldif>


Paquetes necesarios

  • migrationtools >= 45

Creación de la estructura del árbol 

LXE contiene una jerarquía en el árbol basada en el tipo de objetos, es decir de la siguiente forma:

  1. dc=linuxchange,dc=com
    • nisMapName=netgroup.byhost
    • nisMapName=netgroup.byser
    • ou=Aliases
      Los aliases servirán para dar dos nombres a una cuenta. De momento los sistemas sólo lo soportan para correo. Postfix, que es el MTA oficial, toma ventaja de esto.
    • ou=Virtual
      Se almacenan los usuarios virtuales del sistema de correo, de esta forma el correo podra redirigir mensajes a otros usuarios fuera de la infraestructura de LXE.
    • ou=DNS
      En esta rama del árbol donde se guardarán todas las resoluciones del DNS que posteriormente Bind utilizará. Este valor es por defecto y en caso de utilizar diferentes tipos de respuestas se podrá poner tantos ou=DNS<numero> que se requieran.
    • ou=Group
      Toda la información de los grupos ya sea de Windows o de Linux será almacenada en esta rama.
    • ou=Hosts
      La rama de Host guardará la información necesaria de cada uno de los servidores inscritos al dominio de LDAP. De momento esta rama estará vacia.
    • ou=Netgroup
      Una rama donde se guardarán grupos de red, LXE no tomara el uso de esta pero existirá por futuras versiones. Los grupos locales se convertirán automáticamente en grupos de red.
    • ou=Networks
      Al igual que la rama Hosts, existe su análoga Networks. De momento LXE no toma ventaja de las redes inscritas pero se dejará por compatibilidad para futuras versiones.
    • ou=People
      La rama más importante puesto que aquí se encontrarán todas las cuentas de usuario ya sean Unix o Windows. Esta rama junto con la de Grupos tendrán mucha relación una con la otra.
    • ou=Protocols
      La rama de protocols contendrá una tabla de todos los tipos disponibles, si aunque se trata de que Linux tome ventaja de esto añadiendo el objeto yla entrada a los objetos en listado sen el archivo /etc/nsswithc.conf. Actualmente su contenido se utiliza para la administración del DNS.
    • ou=Rpc
      Rama no utilizada. Existente por compatibilidades posteriores.
    • ou=Services
      Esta rama contiene una analogía del archivo /etc/services. Actualmente se utiliza para que Linux se sirva para encontrar servicios y en administración del DNS.
      Es importante mencionar que el archivo migrado no será el original que viene en las distribuciones, si no el proporcionado por NMap.

Configuración

La migración rápida de todos los elementos que componen las partes críticas de un sistema Linux podrá realizarse configurando las herramientas de mudanza que el propio OpenLDAP proporciona.  Para esto habrá que configurar el archivo migrate_common.ph ubicado en el directorio migration; cambiando o añadiendo las siguientes líneas.

$DEFAULT_MAIL_DOMAIN = 'linuxchange.com';
$DEFAULT_BASE = 0dc=linuxchange,dc=com';
$DEFAULT_MAIL_HOST = 'mail.linuxchange.com';
$EXTENDED_SCHEMA = 1;


Base 

Antes de la migración es necesario crear la estructura base mostrada anteriormente. Para esto se necesita ejecutar el comando

./migrate_base.pl > base.ldif

El archivo creado contendrá toda la información para la creación de la base del directorio.

El archivo LDIF podrá añadirse a la base de datos ejecutando el comando:

ldapadd -x -c -D "cn=root,dc=linuxchange,dc=com" -W -f base.ldif.


Grupos 

La migración rápida de los grupos puede realizarse ejecutando el script migrate_group.pl pasándole como primer parámetro el nombre del archivo de grupos que por defecto en todos los sistemas POSIX (incluyendo a Linux) será /etc/group; como segundo parámetro opcional será el archivo con extensión ldif a donde se escribirá las fichas generadas. De esta forma se ejecutará así:

./migrate_group.pl /etc/group group.ldif

Una vez ejecutado el comando archivo generado tendrá múltiples fichas con la siguiente forma:

dn: cn=grupo,ou=Group,dc=linuxchange,dc=com
objectClass: posixGroup
objectClass: top
cn: grupo
userPassword: {crypt}x
gidNumber: 120

El archivo LDIF podrá añadirse a la base de datos ejecutando el comando:

ldapadd -x -c -D "cn=root,dc=linuxchange,dc=com" -W -f group.ldif.


Usuarios y contraseñas 

La migración de usuarios es de igual forma que los grupos habrá que ejecutar como administrador (es requerido para leer el archivo /etc/shadow) el comando migrate_passwd.pl de la siguiente forma:

ETC_SHADOW=/etc/shadow ./migrate_passwd.pl /etc/passwd users.ldif

El archivo usuarios.ldif contendrá fichas con la siguiente estructura.

dn: uid=usuario,ou=People,dc=linuxchange,dc=com
uid: usuario
cn: Nombre del Usuario
givenname: Nombre
sn: Usuario
mail: Esta dirección electrónica esta protegida contra spambots. Es necesario activar Javascript para visualizarla
mailRoutingAddress: Esta dirección electrónica esta protegida contra spambots. Es necesario activar Javascript para visualizarla
mailHost: mail.linuxchange.com
objectClass: mailRecipient
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: kerberosSecurityObject
objectClass: shadowAccount
userPassword: {crypt}!!
shadowLastChange: 11976
shadowMax: 99999
shadowWarning: 7
krbname: Esta dirección electrónica esta protegida contra spambots. Es necesario activar Javascript para visualizarla
loginShell: /bin/false
uidNumber: 78
gidNumber: 78
homeDirectory: /home/usuario
gecos: Nombre del Usuario

Al igual, habrá que ejecutar el comando ldapadd con la misma sintaxis para añadir las fichas al árbol.

El contenido de la ficha puede variar sin embargo estos son los elementos mínimos funcionales para la solución planteada. Con la utilización de la consola de LXE la ficha podrá crecer en el número de sus propiedades.


Alias 

Los aliases también se podrán migrar, aunque de momento su utilidad será para la utilización de servidor de correo, es importante tenerlos migrados. El esquema distribuido requiere que la información sea común en todos sus servidores, sea o no utilizada como servicio titular.

Para esto se tendrá que ejecutar el comando migrate_aliases.pl con la siguiente sintaxis:

./migrate_aliases.pl /etc/postfix/aliases aliases.ldif

La ubicación del archivo donde se especifican los aliases mostrada aquí es la que por defecto contiene Postfix. Una vez realizado esto el archivo aliases.ldif contendrá fichas similares a esta:

dn: cn=alias,ou=Aliases,dc=linuxchange,dc=com
cn: alias
objectClass: nisMailAlias
objectClass: top
rfc822MailMember: destino

Al igual que los demás archivos habrá que utilizar el comando ldapadd para añadirlos al directorio. Aunque los alias están cargados en el árbol, el MTA no tomará partido de ellos hasta configurarlo. Configuración que se verá en la sección correspondiente.


Protocolos 

La migración de protocolos nos permite realizar chequeos a la máquina de forma homogenizada. De esta forma la consola podrá configurar diversos servicios entre el que destaca actualmente el DNS.

Para realizar la migración habrá que ejecutar el comando migrate_protcols.pl con la siguiente sintaxis:

./migrate_protocols.pl /etc/protocols protocols.ldif

Una vez hecho esto el archivo protocols.ldif contendrá fichas similares a la siguiente:

dn: cn=pipe,ou=Protocols,dc=linuxchange,dc=com
objectClass: ipProtocol
objectClass: top
description: Protocol pipe
ipProtocolNumber: 131
cn: pipe
description: IP protocol 131 (pipe)

El archivo también tendrá que ser añadido con el comando ldapadd. Aunque es recomendable ampliamente utilizar el archivo proporcionado por el paquete Nmap debido a que este es mucho más completo.


Servicios 

Al igual que los protocolos la utilización de los servicios en un directorio permite tener homogenizada la información de los servicios. Debido a que existen múltiples servicios el archivo original no es recomendado ser utilizado y como en lo fue en la parte de los protocolos, el archivo proporcionado por Nmap es el que se sugiere utilizar.

Este ejemplo utilizara el dado por el sistema por simplicidad.

Para realizar la migración habrá que ejecutar el comando migrate_services.pl de la siguiente forma:

./migrate_services.pl /etc/services services.ldif

Debido a que el schema prohíbe tener varios nombres en los puertos con el mismo servicio es muy probable que se obtengan fallas al tratar de incluir este archivo sin embargo se puede continuar con el siguiente paso.


RPC 

El archivo a migrar está contenido en /etc/rpc y se deberá ejecutar la siguiente secuencia para su portación al directorio.

Para realizar la migración habrá que ejecutar el comando migrate_rpc.pl de la siguiente forma:

./migrate_rpc.pl /etc/rpc rpc.ldif


Kolab 

Debido a que KOLAB es un proyecto sumamente popular LXE tiende a hacer su árbol de directorio compatible con él aunque debido a la diferencia del alcance de ambos proyectos esta similitud no puede ser al 100%.

Para realizar la compatibilidad con el árbol crearemos una rama de nombre k=kolab con los siguientes datos:

dn: k=kolab,dc=linuxchange,dc=com
k: kolab
postfix-mydestination: $mydomain
postfix-mynetworks: 127.0.0.0/8
cyrus-autocreatequota: 100000
cyrus-admins: root
cyrus-imap: TRUE
cyrus-pop3: TRUE
cyrus-imaps: TRUE
cyrus-pop3s: TRUE
cyrus-sieve: TRUE
uid: freebusy
userPassword:: ZnjlZWJ1c3k=
objectClass: top
objectClass: kolab
fqhostname: tao.linuxchange.com
postfix-mydomain: linuxchange.com
proftpd-ftp: TRUE
apache-http: TRUE

Una vez teniendo el archivo con este contenido y sustituyendo los datos correspondientes se debe teclear el siguiente comando:

ldapadd -x -c -D "cn=root,dc=linuxchange,dc=com" -W -f kolab.ldif.