Migración de un servidor Windows a Linux
Full text
MIGRACION DE UN SERVIDOR WINDOWS A Linux David Martínez Sanz Director de Proyecto: Lenin Lemus Zúñiga Codirector de proyecto: Agustín Espinosa Minguet Departamento de Informática de Sistemas y Computadores Realizado con L A TEX
Índice 1. Introducción. 2 1.1. Motivación. ............................ 2 2. Diferentes alternativas de migración. 3 2.1. Deniciones. ............................ 3 2.1.1. Software Open Source. .................. 3 2.1.2. Software propietario. ................... 3 2.1.3. Software Linux comercial. ................ 3 2.2. Infraestructura de la migración. ................. 4 2.2.1. Microsoft Windows como situación inicial. ....... 4 2.2.2. Distribuciones Linux. ................... 5 3. Servicios disponibles en Windows y Linux en la actualidad. 7 3.1. Servicios de red TCP/IP básicos. ................ 7 3.2. Servicios de directorio. ...................... 8 3.3. Servicios de autenticación. .................... 11 3.4. Servicios de archivos. ....................... 15 3.5. Otros servicios. .......................... 17 4. Hoja de ruta de migración de los servicios. 17 4.1. Evaluación de la infraestructura actual. ............ 17 4.1.1. Creación de inventario de los servidores. ........ 17 4.1.2. Información adicional sobre la evaluación. ....... 18 4.2. Establecimiento de los requisitos de la infraestructura Linux. .18 4.2.1. Creación de documentación de requisitos funcionales. .19 4.2.2. Establecimiento de restricciones. ............ 19 4.3. Diseño de la infraestructura Linux. ............... 19 4.3.1. Instalación de la plataforma. .............. 19 4.4. Implantación de la infraestructura Linux. ........... 20 4.5. Migración a la infraestructura Linux. .............. 49 4.6. Prueba de la infraestructura Linux. ............... 56 4.6.1. Creación de un plan de pruebas. ............ 61 5. Bibliografía 65 6. Lista de Figuras 66 7. Lista de Tablas 67 1
Migración de un servidor Windows a Linux 1. Introducción. From: [email protected] (Linus Benedict Torvalds) Newsgroups: comp.os.minix Subject: What would you like to see most in minix? Summary: small poll for my new operating system Message-ID: <1991A[email protected]> Date: 25 Aug 91 20:57:08 GMT Organization: University of Helsinki Hello everybody out there using minix - I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones. This has been brewing since april, and is starting to get ready. I'd like any feedback on things people like/dislike in minix, as my OS resembles it somewhat (same physical layout of the le-system (due to practical reasons) (among other things). I've currently ported bash(1.08) and gcc(1.40), and things seem to work. This implies that I'll get something practical within a few months, and I'd like to know what features most people would want. Any suggestions are welcome, but I won't promise I'll implement them :-) Linus ([email protected].) PS. Yes - it's free of any minix code, and it has a multi-threaded fs. It is NOT protable (uses 386 task switching etc), and it probably never will support anything other than AT-harddisks, as that's all I have :-(. 1.1. Motivación. Entre los principales motivos que mueven a muchas empresas y organismos públicos a migrar a sistemas abiertos que todavía utilizan sistemas basados en Windows NT es la falta de continuidad de soporte técnico que Microsoft dejó de ofrecer hace bastante tiempo. Otros motivos imputables, es el cambio de la estrategia de las TI en la que se apoya los sistemas de información: diversicación de software, mejora de la interoperabilidad de los sistemas, exibilidad, robustez, estabilidad, rendimiento, etc... Linux es un sistema operativo basado en UNIX y compatible con POSIX que se distribuye bajo licencia GNU, este tipo de licencia permite la libre distribución y modicación del código fuente del sistema operativo, además Linux forma parte del software de código abierto(OSS) el cual posee diversos benecios entre los que se encuentran la libre competencia entre proveedores no limitándose a un único proveedor. Linux implementa completamente la pila de TCP/IP , lo que permite que soporte gran cantidad de clientes y servicios, incluyendo la programación 2
Migración de un servidor Windows a Linux del interfaz socket. Todos los programas que utilicen TCP/IP pueden ser portados fácilmente a Linux. En referencia al hardware, muchas distribuciones pueden funcionar en equipos antiguos o no actualizados, lo que permite la reutilización del hardware que no soportaría los requerimientos de sistemas operativos Windows. Por otra parte la estructura modular del kernel de Linux en forma de módulos facilita la actualización y parcheado del sistema sin necesidad de reiniciar el equipo y puede realizarse mientras otras aplicaciones continúan en ejecución(algo crítico para los sistemas dedicados). 2. Diferentes alternativas de migración. 2.1. Deniciones. 2.1.1. Software Open Source. Software Open Source(OSS): OSS permite que cada usuario pueda leer y modicar libremente el código fuente, lo que permite que dichos usuarios puedan aprender y/o adaptar el código fuente a sus requerimientos personales y necesidades. El código es libremente accesible y no es necesario abonar ninguna licencia. La única condición es que el software modicado debe ser copiado y distribuido libremente. 2.1.2. Software propietario. Software Propietario: el software propietario pertenece a una persona individual o a una organización, normalmente el desarrollador del software(copyright). El uso del software se encuentra sujeto a los términos de la licencia bajo la cual se encuentra el software propietario. Entre estos términos se encuentran la prohibición de duplicación y modicación del software. 2.1.3. Software Linux comercial. Software Linux Comercial: incluye al conjunto de productos de software propietario que se ejecutan bajo el sistema operativo Linux. 3
Migración de un servidor Windows a Linux 2.2. Infraestructura de la migración. 2.2.1. Microsoft Windows como situación inicial. Figura 1: Escenario de sistemas Windows La ilustración de la gura 1 muestra el escenario de sistemas Windows que puede encontrarse generalmente, esta imagen muestra un resumen de los servicios y módulos software que pueden formar parte de una situación inicial del análisis de migración. Figura 2: Escenario de sistemas Linux La ilustración de la gura 2 representa una típica solución viable basada en Linux, se muestra el conjunto de software Open Source utilizado para sustituir a los servicios de red empleados por Windows. Principalmente nos centraremos en el supuesto de un servidor con Windows 2000 Server que realiza las funciones de servidor de archivos, autenticación y gestión de usuarios y DNS(escenario típico de Directorio Activo). 4
Migración de un servidor Windows a Linux 2.2.2. Distribuciones Linux. Existen gran cantidad de distribuciones Linux disponibles para implementar sistemas servidores. A parte del sistema operativo "puro" estas distribuciones incluyen gran cantidad de paquetes software que ofrecen una amplia funcionalidad y versatilidad. Generalmente éstas distribuciones son desarrolladas para facilitar la instalación del kernel del sistema operativo y todos los programas asociados. Las compañías de éstas distribuciones han desarrollado e incluido herramientas administrativas para congurar el software que acompaña al sistema operativo y su kernel. Cuando alguien adquiere una distribución no compra Linux "en sí mismo" sino un compendio formado por el sistema operativo, programas de utilidades e instalación y la documentación técnica creada por el distribuidor. Las diferentes distribuciones se encuentran disponibles como paquetes completos(CD, documentación) comerciales y en algunos casos como copias libres que pueden ser descargadas desde Internet, los paquetes en formato comercial generalmente suelen incluir servicios de soporte proporcionados por el distribuidor que no se encuentran en versiones descargadas de Internet. La compatibilidad entre versiones de Linux y la estandarización de las distintas distribuciones son cuestiones a tener en consideración, para evitar diferencias inaceptables entre distribuciones individuales fue creada la estructura de directorios para Linux( Filesystem Hierarchy-Standard ) que está integrada en la Linux Standard Base cuya principal función es conseguir la máxima compatibilidad entre todas las distribuciones. Debian GNU Linux El proyecto Debian es el resultado de un esfuerzo voluntario para crear un sistema operativo libre de alta calidad, compatible con Unix y acompañado de una gran cantidad de aplicaciones. En analogía con el desarrollo del kernel de Linux, los miembros que forman el proyecto Debian desde todos los lugares del mundo son profesionales envueltos en el desarrollo de ésta distribución, por ese motivo Debian es denominada la distribución de profesionales para profesionales. Las principales ventajas de ésta distribución son: U Completo: Debian incluye más de 15180 paquetes de software en este momento. Los usuarios pueden seleccionar qué paquetes instalar; Debian provee una herramienta para ese n. Encontrará una lista con las descripciones de los paquetes actualmente disponibles con Debian en cualquiera de los sitios réplica de Debian. 5
Migración de un servidor Windows a Linux U Libre para utilizar y redistribuir: No se requiere ninguna clase de cuota para ser socio de ningún consorcio, ni pago solicitado para participar en su distribución y desarrollo. Todos los paquetes que formalmente son parte de Debian GNU/Linux son libres para ser redistribuidos, normalmente bajo los términos especicados por la Licencia Pública General de GNU. Los archivos FTP de Debian también tienen aproximadamente 220 paquetes de software (en los directorios non-free y contrib de los archivos FTP), los cuales se distribuyen bajo términos especícos que se incluyen con cada paquete. U Dinámico: Con alrededor de 1570 voluntarios constantemente contribuyendo con código nuevo y mejorado, Debian evoluciona rápidamente. Se planea realizar nuevas entregas cada varios meses, y los archivos FTP se actualizan diariamente. d En el lado de desventajas hay que decir que Debian tiene un mayor componente técnico que otras distribuciones. También, dada la naturaleza voluntaria de los desarrolladores, es posible que ciertos paquetes no estén tan actualizados como debieran, quizás porque sus desarrolladores han dejado de actualizarlos y nadie se ha hecho cargo. Sin embargo esto es algo que todos los desarrolladores tratan de evitar y, aunque cada desarrollador mantiene sus paquetes, no es raro que otro desarrollador (incluso un usuario) envíe una nueva versión del paquete para arreglar un problema o actualizarlo. Red Hat Linux La distribución comercial Red Hat ofrece a sus clientes diferentes alternativas para diferentes aplicaciones: Producto Aplicación Red Hat Enterprise Linux AS Grandes bases de datos y entornos críticos(24x7). Red Hat Enterprise Linux ES Servidores de cheros y web de software. Red Hat Enterprise Linux WS Aplicaciones de alto rendimiento para escritorio Red Hat Desktop Entorno multiusuario, sector SOHO Cuadro 1: Productos Red Hat 6
Migración de un servidor Windows a Linux La principal diferencia entre los productos ofertados por Red Hat son sus diferente aplicaciones y el alcance de soporte ofertado, en los acuerdos de licencia disponibles y el precio de compra. El formato de paquetes propuesto por Red Hat (rpm, Red Hat Package Management) ofrece un manejo amigable y uniforme para la administración de software. Suse Linux A nales del año 2003 la norteamericana Novell adquirió al distribuidor alemán de Linux llamado Suse por lo cual se convirtió en si misma distribuidora de Linux. En la siguiente tabla se muestran los distintos productos de Suse Linux: Producto Aplicación Suse Linux Enterprise Server Entornos críticos(24x7) y grandes entornos de prod. Suse Linux Professional Aplicaciones para escritorio, incluye gran cantidad de software. Cuadro 2: Productos Suse La distribución Suse(al igual que RedHat) está basada en el sistema de paquetes de software RPM, pero el método de instalación y administración es distinto, está integrado en la aplicación YaST. Al igual que otras distribuciones las principales diferencias entre las opciones comerciales de Suse que aparecen en la tabla anterior están basadas en el soporte ofrecido: soporte 24x7, servicios personalizados y certicaciones de distintas aplicaciones. 3. Servicios disponibles en Windows y Linux en la actualidad. 3.1. Servicios de red TCP/IP básicos. El direccionamiento IP constituye la base de casi todas las redes actuales, incluida Internet. Los servicios de DNS, DHCP (Dynamic Host 7
Migración de un servidor Windows a Linux Control Protocol) y de tiempo (NTP) son normalmente los primeros que se ejecutan en una red, ya que constituyen los requisitos esenciales para poder poder utilizar todos los demás servicios de red. DHCP es el protocolo de red que asigna dinámicamente las direcciones IP y los parámetros de red necesarios para congurar debidamente los hosts. Si bien la mayor parte de los servidores utilizan direcciones IP estáticas, las estaciones de trabajo(sobre todo si el número es amplio)reciben normalmente direcciones IP dinámicas, así como otra información de red que les permiten comunicarse con otros con hosts de la red. La mayor parte de los portátiles y equipos de escritorio no utilizan direcciones IP estáticas, sino que reciben la dirección IP de un servidor DHCP. Tras un reinicio o al caducar una concesión, la estación de trabajo se pondrá en contacto con el servidor DHCP para renovar la concesión y obtener una nueva dirección IP. Los servicios de resolución de nombres(DNS) son otra parte importante de la infraestructura de una red de ordenadores. La capacidad de transformar nombres de hosts de palabras sencillas en direcciones IP constituye una función esencial de las redes de todo tipo y tamaño, desde las LAN de pequeñas empresas a Internet, la red mundial. DNS ofrece esta funcionalidad a Windows y Linux. El último de los servicios de red básicos permite sincronizar los relojes en todos los ordenadores de la red. Aunque algunas partes de una red de ordenadores pueden funcionar perfectamente sin que los relojes estén sincronizados, para otros servicios es imprescindible. 3.2. Servicios de directorio. Los servicios de directorio son un componente esencial en la gestión y la catalogación de objetos, como las cuentas de usuario y las conguraciones de los perles, grupos, ordenadores, impresoras, e-mail, y otros objetos de la infraestructura de red. Un servicio de directorio típicamente consiste en una base de datos en la cual se almacenan los componentes de red mencionados anteriormente, el protocolo comúnmente utilizado actualmente para ello es LDAP (Lightweight Directory Access Protocol) . Una característica principal de este protocolo es la disposición de una estructura jerárquica de la información almacenada, llamada árbol de información de directorio o DIT, la estructura del DIT comienza con el DN base(sujo o distinguised name ) y está se parado lógicamente por objetos de unidad organizativa(ou). Los DIT se organizan normalmente según el tipo de objetos contenidos en cada árbol. En algunas circunstancias, la organi8
Migración de un servidor Windows a Linux unidades de red como si fueran dispositivos locales, o utilizar la orden smbclient para conectarse a ellas muy al estilo del cliente de la línea de órdenes ftp Cada directorio puede tener diferentes permisos de acceso sobrepuestos a las protecciones del sistema de archivos que se esté usando en Linux. 3.4. Servicios de archivos. El término servicios de archivos hace alusión al acceso a los archivos de un sistema remoto. Independientemente de la plataforma del equipo, la mayoría de las empresas utilizan un depósito de red para los datos a los que accede con frecuencia, incluidos los directorios principales, archivos de recursos, etc... El acceso a los datos de red debe estar protegido de un acceso no autorizado mediante un control de acceso; debe ser protegido de pérdidas o daños mediante copias de seguridad regulares y debe organizarse de una forma estructurada que facilite su expansión. A pesar de la gran diversidad de servicios de archivos disponibles en Linux, Samba es la solución más práctica de asistencia para los clientes de Windows con un servidor Linux. Sistema de archivos en Windows Los servicios de archivos ofrecen acceso de red a los datos almacenados en los sistemas de archivos. Cada tipo de sistema de archivos presenta funciones y limitaciones que inciden en la forma en que los servicios de archivos pueden compartir los datos. Los sistemas operativos modernos de Microsoft ofrecen compatibilidad local con los sistemas de archivos FAT16, FAT32, NTFS4 y NTFS5, además de la posibilidad de compartir archivos de estos sistemas de archivos en red mediante un protocolo denominado CIFS( Common Internet File Services ). Con Windows NT4, Microsoft incluía un sistema de archivos más complejo denominado NTFS. El sistema NTFS utiliza una MFT(tabla de archivos maestra) para registrar cada archivo de la partición, con un descriptor de seguridad para cada archivo. Cada descriptor de seguridad contiene una SACL(lista de control de acceso del sistema) para auditoría y una DACL(lista de control de acceso discrecional) que incide sobre el acceso al archivo. Cada entrada de control de acceso está formada por un ID para el usuario o grupo y un permiso concedido a ese ID. Los permisos NTFS afectan directamente al acceso del sistema de archivos local y se comparan con los permisos de la ACL de compartición de archivos para determinar los accesos reales a un recurso compartido. El sistema de archivos NTFS5.0 ofrece las siguientes características: compatibilidad con archivos muy grandes. 15
Migración de un servidor Windows a Linux journal del sistema de archivos para auditorías. compatibilidad RAID compatibilidad con nombre de archivos de hasta 255 caracteres y diferenciación entre mayúsculas y minúsculas. metodología de seguridad y permisos(herencia dinámica). journal de cambios. encriptación compatibilidad con archivos dispersos. Gracias a que la mayoría de las migraciones de servicios de archivos de red se hacen copiando archivos a través de la red al nuevo servidor de Linux, se hace innecesaria la utilización de un controlador NTFS para Linux. Sistema de archivos en Linux Linux admite una gran variedad de sistemas de archivos diferentes. Debido a que ext2/3 y ReiserFS son los más extendidos serán los seleccionados para la instalación del servidor Linux. Ext2/3 y ReiserFS tienen muchos atributos comunes. Cada archivo y cada directorio tienen una dirección en el disco(inodo). Ambos admiten enlaces físicos y lógicos. Cada archivo o directorio se almacena en un directorio con "/" o "raíz" en la parte superior del árbol. El archivo de Linux /etc/fstab contiene los sistemas de archivos, los puntos y opciones de montaje, se analiza al arrancar el sistema. Cuando se monta el sistema de archivos, se añade una línea al archivo /etc/mtab , se lee un bit "limpio" en la cabecera de la partición y después, pasa a "0" . Cuando se desmonta, el bit limpio pasa a "1" . Durante el proceso de inicio, si el bit limpio no está en "1" , la partición se conoce como sucia y se ejecutan programas especiales para comprobar si hay errores en el sistema de archivos ( fsck, fsck.ext2 y fsck.reiserfs ). Ext2 fue el primer sistema de archivos usado por Linux y estaba basado en Minix, posee control de acceso para lectura, escritura y ejecución, diferenciación entre mayúsculas y minúsculas, y los nombres de los archivos pueden tener hasta 255 caracteres. El principal problema de este sistema es que los cheros pueden dañarse fácilmente con "desmontajes sucios" (cortes de luz, apagados incorrectos, etc...). Ext3 es un sistema de archivos Ext2 con journaling (un journal o registro de diario en el que se almacena la información necesaria para restablecer los datos afectados por la transacción en caso de que ésta falle). ReiserFS organiza el sistema de archivos en dos áreas: datos y sistema. El 16
Migración de un servidor Windows a Linux área está formada por directorios, archivos y metadatos de archivos, organizados como una única estructura de datos de "árbol equilibrado"(v.3) o "árbol en movimiento"(v.4). ReiserFS cuenta con el sistema de archivos más rápido, es atómico(no se producen daños en la transacción), además permite aumentar el tamaño del sistema de cheros montado y desmontado. 3.5. Otros servicios. Control de acceso Los sistemas de archivo NTFS, ext2, ext3 y ReiserFS admiten control de acceso de diversas formas. Los recursos compartidos de Windows y los recursos compartidos de Samba también admiten control de acceso de diversas formas. El objetivo de la migración de Windows a Linux es mantener tantas ACL (Control Access List) como sea posible al mover los recursos compartidos al servidor Samba. Linux ofrece una solución para los casos en que se requieren permisos más complejos de nivel de archivo: las ACL y EA (Extended Attributes) POSIX añaden permisos de estilo NT a Linux, permitiendo una mayor granularidad: se pueden asignar permisos a los usuarios a nivel individual, es posible poder asignar distintos permisos basados en varios UID o GID diferentes. 4. Hoja de ruta de migración de los servicios. 4.1. Evaluación de la infraestructura actual. El cliente en cual se basa este proyecto es el El Consorcio Provincial de Bomberos de Valencia , cuya infraestructura de servicios está basada en una plataforma Windows 2000 que proporciona los servicios de directorio, autenticación, DNS, DHCP y red. El cliente ha optado por migrar todos estos servicios a una plataforma GNU/Linux basada en la distribución Debian Sarge 3.1 versión estable , cuyo coste de licencia nal es 0, frente a la opción basada en Windows Server 2003, cuyo coste es sustancialmente mayor. 4.1.1. Creación de inventario de los servidores. La máquina objetivo de la migración y sobre la que actualmente se encuentra Windows 2000 Server es una plataforma Intel 32 bits basada en 17
Migración de un servidor Windows a Linux procesador Pentium IV que actúa como PDC (Primary Domain Controller) sobre una red de unos 40 equipos cliente basados en diferentes tecnologías(Windows 98, 2000, XP y Linux) y ofrece servicios de archivos, autenticación, DNS y DHCP a todos los clientes de la red local. Como opción adicional en el pliego de condiciones se incluirá la conguración de un controlador de domino secundario backup(BDC), que posteriormente pueda ser utilizado en caso de fallo del controlador principal o para balanceo de carga en caso de que el crecimiento de usuarios de red pudiera saturar al controlador principal, pero este máquina no aparece en las especicaciones ni en las condiciones del proyecto. 4.1.2. Información adicional sobre la evaluación. La descripción técnica especíca de las características del hardware implicado en la migración no es determinante, los requerimientos del sistema son holgadamente sucientes y más aún teniendo en cuenta la capacidad de aprovechamiento de recursos de los sistemas Linux. 4.2. Establecimiento de los requisitos de la infraestructura Linux. En la siguiente tabla se muestra el esquema de requisitos funcionales, está organizada en grupos de servicios de red: Servicios Requisitos Asignación de direcciones IP Utilizar servidor DHCP con asignación dinámica. Resolución de nombres Utilizar servidor DNS. Servicios de directorio Instalar y congurar OpenLDAP. Migración de servicios de directorio Migrar la información de Active Directory a OpenLDAP. Servicios de autenticación Instalar y congurar los servicios de autenticación de Samba. Servicios de archivos Instalar y congurar los servicios de archivos de Samba. Migración de los servicios de archivos Copiar todos los datos al nuevo servidor y establecer recursos compartidos de red. Cuadro 3: Requisitos Funcionales 18
Migración de un servidor Windows a Linux 4.2.1. Creación de documentación de requisitos funcionales. 4.2.2. Establecimiento de restricciones. La única restricción reejada en el pliego de requerimientos es a nivel de costes e infraestructura: se empleara el mismo servidor físico original de Windows, sin realizar ninguna modicación física del hardware. Como equipo puente de pruebas se empleara otra máquina que permita almacenar temporalmente los datos de la migración y comprobar el correcto funcionamiento de los servicio migrados. 4.3. Diseño de la infraestructura Linux. Una vez establecidos los requisitos, comienza el diseño a alto nivel de la infraestructura Linux. Es necesario determinar la estrategia global de servidores y red de la infraestructura resultante tras la migración. 4.3.1. Instalación de la plataforma. La distribución mencionada de Debian Sarge, dispone de diversos paquetes que no son requeridos para el desarrollo del proyecto, sin embargo se ha escogido la instalación del sistema operativo en la plataforma, con el conjunto de paquetes que en el proceso de instalación se instalan automáticamente con la opción "workstation". Los scripts diseñados para realizar las migraciones, además de los scripts que usa Samba junto con las smbldap-tools necesitan del soporte de las librerías de perl. Para obtener este soporte se han de instalar los siguientes paquetes: apt-get install perl apt-get install perl-base apt-get install perl-modules apt-get install libperl-dev apt-get install libperl5.8 Soporte Listas Control de Acceso Para tener el soporte de ACL (Listas de Control de Acceso) y EA (Atributo Extendidos), se han de instalar unos paquetes adicionales. Los paquetes de librería de soporte suelen estar instalados por defecto en la opción escogida de instalación de la distribución pero de todas formas se mencionan para que se tenga en cuenta que deben estar para que los ejecutables funcionen correctamente: apt-get install libacl1 apt-get install acl apt-get install libattr1 apt-get install attr 19
Migración de un servidor Windows a Linux Una vez instalado todo lo mencionado anteriormente, ya se tienen todos los elementos necesarios para poder disfrutar de los EAs y las ACLs en los sistemas de cheros ext2/ext3. Sólo queda un último paso, indicar al núcleo que en un determinado sistema de cheros deseamos usar ACLs (y EAs). Para ello se debe editar el chero /etc/fstab y añadir una opción adicional a la de aquellos sistemas de cheros a los que queremos activar las ACLs: acl. También podemos añadir una opción para indicar explícitamente que no queremos usar las ACLs en un sistema de cheros, aun si dicho sistema de cheros contiene ACLs: noacl. proc /proc proc defaults 0 0 /dev/sda1 / ext3 defaults, acl,user_xattr ,errors=remount-ro 0 1 /dev/sda5 none swap sw 0 0 /dev/hdc /media/cdrom0 iso9660 ro,user,noauto 0 0 /dev/fd0 /media/oppy0 auto rw,user,noauto 0 0 Existe un juego de opciones adicional para activar o desactivar el uso de los AEs de usuario: (si hemos optado por compilarlos en nuestro núcleo) user_xattr y nouser_xattr . Por cierto, que los valores por defecto para todos los sistemas de cheros ext2/ext3 en caso de no especicar nada son noacl y nouser_xattr . Una vez hecho lo anterior, sólo resta arrancar de nuevo el sistema y ya estan las ACLs disponibles y listas para usar. 4.4. Implantación de la infraestructura Linux. Configuración de Openldap La instalación y conguración de OpenLDAP se llevará a cabo de tal manera que al nalizarla, el sistema sobre el que se ha instalado debería estar listo para autenticar usuarios a través del servicio de directorios. Este es el objetivo nal de este capítulo, en subsiguientes capítulos se irán añadiendo las funcionalidades necesarias para que cumpla con los requisitos del trabajo. Se ha seleccionado la versión 2.2.23-8 de OpenLDAP, que acompaña a la versión estable de Debian GNU/Linux. A lo largo de todo el documento se asume que el dominio sobre el que se ejecutará OpenLDAP es "bombers.dva.gva.es" . Para obtener un sistema acorde a estas condiciones, se ha añadido la línea "bombers.dva.gva.es" en el archivo /etc/hosts para intentar simular las condiciones reales. El primer paso para instalar OpenLDAP, es instalar los paquetes slapd y ldap-utils . También puede ser necesario instalar las librerías de la 20
Migración de un servidor Windows a Linux base de datos de LDAP libdb4.2 : apt-get install slapd apt-get install ldap-utils apt-get install libdb4.2 En la conguración se solicitará el nombre de dominio "bombers.dva.gva.es" , también será necesario introducir una contraseña para el administrador de Openldap y el tipo de base de datos, en (este caso hemos seleccionado ldbm ), se opta por no eliminar la base de datos en caso de que openldap sea desinstalado. En este punto, ya se debería tener un servidor OpenLDAP instalado y ejecutándose, aunque no esté ajustado todavía a los objetivos que persigue este apartado. Para comprobar que efectivamente el demonio slapd se está ejecutando, realizaremos un par de consultas al sistema. La primera consiste en ver si el demonio slapd se encuentra en la lista de procesos que actualmente se estén ejecutando en el sistema: bombers: # ps -Af | grep slapd root 736 1 0 18:05 ? 00:00:00 /usr/sbin/slapd root 739 736 0 18:05 ? 00:00:00 /usr/sbin/slapd root 740 739 0 18:05 ? 00:00:00 /usr/sbin/slapd La segunda comprobación ha realizar, para ver si el demonio se está realmente ejecutando, es vericar que está escuchando en la red: bombers: # netstat -puta | grep slapd tcp 0 0 *:ldap *:* LISTEN 736/slapd Una vez comprobado que el demonio slapd se está ejecutando en el sistema, se vericará que la conexión con el mismo está permitida. Para ello, se realizará una búsqueda sencilla en el directorio. Si todo va bien, se debería mostrar algo similar a: bombers: # ldapsearch -x -b "" -s base '(objectclass=*)' namingContexts # extended LDIF # # LDAPv3 # base <> with scope base # lter: (objectclass=*) # requesting: namingContexts # # dn: namingContexts: dc=bombers,dc=dva,dc=gva,dc=es # search result search: 2 result: 0 Success 21
Migración de un servidor Windows a Linux # numResponses: 2 # numEntries: 1 Por defecto, el demonio slapd se ejecuta como usuario, comportamiento que no es recomendable por las implicaciones de seguridad que acarrea. En esta sección se describirán los pasos necesarios para ejecutar el demonio slapd con un usuario un grupo especícos. Antes de poder ejecutar el demonio slapd con un usuario y grupo especíco, se ha de crear el usuario y grupo en el sistema, en caso de no existir. El tipo de usuario grupo que se crearán son los llamados "de sistema", y se denominarán "slapd": bombers: # addgroup system slapd Adding group `slapd' (111)... Hecho. bombers: # adduser home /var/lib/ldap/ shell /bin/false no-createhome ingroup slapd system slapd Añadiendo usuario del sistema slapd... Adding new user `slapd' (105) with group `slapd'. No se crea el directorio home. La carpeta "home" del usuario slapd es el directorio /var/lib/ldap (donde se almacena la base de datos de OpenLDAP, entre otras cosas), no posee shell asociado y está dentro del grupo slapd que se acaba de crear. Antes de continuar, se ha de parar el demonio slapd para evitar comportamiento no deseado: bombers: # /etc/init.d/slapd stop Stopping OpenLDAP: slapd. Antes de ejecutar el demonio slapd con el nuevo usuario y grupo creados, es necesario cambiar el propietario y el grupo de algunos archivos y directorios relacionados con slapd, para que este funcione con normalidad. Los cambios han de realizarse en los siguientes directorios, así como en los archivos que albergan: debian: # chown -R slapd.slapd /etc/ldap/ /var/lib/ldap/ /var/lib/slapd/ /var/run/slapd/ El último paso consiste en indicar al demonio slapd con qué usuario y grupo se ha de ejecutar a partir de ahora. Esta característica se congura asignando los valores correspondientes a las variables SLAPD_USER y SLAPD_GROUP del archivo /etc/default/slapd : SLAPD_USER=slapd 22
Migración de un servidor Windows a Linux SLAPD_GROUP=slapd Ahora sólo queda arrancar de nuevo el demonio slapd para que se ejecute con el nuevo usuario: debian: # /etc/init.d/slapd start debian: # ps auxf | grep slapd slapd 937 0.0 1.6 11276 3228 ? Ss 11:10 0:00 /usr/sbin/slapd -g slapd -u slapd Configuración cliente Openldap, archivo /etc/ldap/ldap.conf El archivo de conguración global empleado por los clientes LDAP se encuentra en /etc/ldap/ldap.conf y es necesario especicar las líneas: HOST 127.0.0.1 BASE dc=bombers,dc=dva,dc=gva,dc=es nss_base_passwd ou=Users,dc=bombers,dc=dva,dc=gva,dc=es?sub nss_base_passwd ou=Computers,dc=bombers,dc=dva,dc=gva,dc=es?sub nss_base_shadow ou=Users,dc=bombers,dc=dva,dc=gva,dc=es?sub nss_base_group ou=Groups,dc=bombers,dc=dva,dc=gva,dc=es?sub ssl no pam_password ssha Ha de asegurarse que los permisos de este archivo estén bien asignados (se ha de leer por todo el mundo): -rw-rr 1 slapd slapd 344 2006-10-31 11:20 /etc/ldap/ldap.conf Configuración servidor Openldap, archivo /etc/ldap/slapd.conf Se ha de realizar un cambio de permisos, de forma que sólo el propietario tenga permisos de lectura y escritura: debian: # chmod -v 0600 /etc/ldap/slapd.conf el modo de /etc/ldap/slapd.conf cambia a 0600 (rw-) A continuación añadiremos el usuario administrador del ldap, mediante dos líneas en el archivo /etc/ldap/slapd.conf : rootdn "cn=admin,dc=bombers,dc=dva,dc=gva,dc=es" rootpw {SSHA}G05D97jB8KkfKoGpRKJvbkbJnTR14Wx6 23
Migración de un servidor Windows a Linux En la primera línea indicamos el DN(distinguised name) del usuario administrador y en la segunda línea indicamos su password encriptado, que hemos obtenido anteriormente con el comando: debian: # slappasswd -h SSHA -s damarsan {SSHA}G05D97jB8KkfKoGpRKJvbkbJnTR14Wx6 Para que las búsquedas sobre el directorio LDAP sean más rápidas, han sido declarados índices en el chero de conguración slapd.conf, ejecutaremos una reindexación de la base de datos del directorio como se describe a continuación: indices añadidos al chero de conguración: index objectClass,uidNumber,gidNumber eq index cn,sn,uid,displayName pres,sub,eq index memberUid,mail,givenName eq,subinitial index sambaSID,sambaPrimaryGroupSID,sambaDomainName eq reindexación: debian: # slapindex -vf /etc/ldap/slapd.conf indexing id=00000001 indexing id=00000002 debian: # /etc/init.d/slapd restart Stopping OpenLDAP: slapd. Starting OpenLDAP: (db4.2_recover not found), slapd. Para proteger los datos condenciales del directorio(passwords, etc..) añadiremos las siguientes líneas al chero de conguración(sólo el propietario de los atributos tiene permisos sobre éstos): access to attrs=userPassword,sambaLMPassword,sambaNTPassword by self write by anonymous auth by * none Configuración de autenticación PAM En este capítulo se verá como congurar una máquina para que sus usuarios se autentiquen a través de un servidor LDAP. Para ello se han de modicar dos aspectos del comportamiento del sistema: El mapeado entre los números de identicación de los usuarios y sus nombres (utilizados, por ejemplo, por /bin/ls -l) o la localización del directorio home . La búsqueda de este tipo de información es responsabilidad del servicio de nombres cuyo archivo de conguración es: /etc/nsswitch.conf . La autenticación (comprobación de claves), que es responsabilidad del subsistema PAM, cuya conguración se hace a través del directorio /etc/pam.d/. Ambos subsistemas se han de congurar 24
Migración de un servidor Windows a Linux ✎ dos charset = 850 ✎ unix charset = ISO8859-1 ✎ add user script = /usr/local/sbin/smbldap-useradd -a '%u' ✎ delete user script = /usr/local/sbin/smbldap-userdel '%u' ✎ add group script = /usr/local/sbin/smbldap-groupadd -p '%g' ✎ delete group script = /usr/local/sbin/smbldap-groupdel '%g' ✎ add group script = /usr/local/sbin/smbldap-groupadd -p '%g' ✎ delete group script = /usr/local/sbin/smbldap-groupdel '%g' ✎ add user to group script = /usr/local/sbin/smbldap-groupmod -m '%u' '%g' ✎ delete user from group script = /usr/local/sbin/smbldap-groupmod -x '%u' '%g' ✎ set primary group script = /usr/local/sbin/smbldap-usermod -g '%g' '%u' ✎ add machine script = /usr/local/sbin/smbldap-useradd -w -i '%u' ✎ domain logons = Yes ✎ preferred master = Yes ✎ wins support = Yes ✎ ldap admin dn = cn=admin,dc=bombers,dc=dva,dc=gva,dc=es ✎ idmap backend = ldap:ldap://debian.bombers.dva.gva.es/ En el apartado share denitions incluiremos todos las carpetas de red que van a ser utilizadas por los usuarios: [homes] comment = Directorios Home valid users =%U create mask = 0700 directory mask = 0700 browseable = No [netlogon] comment = Network Logon Service path = /home/netlogon 31
Migración de un servidor Windows a Linux write list = root browseable = No [F] path = /home read only = No prole acls = Yes [proles] path = /home/proles force user =%U read only = No create mask = 0600 directory mask = 0700 guest ok = Yes browseable = No csc policy = disable A continuación hay que crear los directorios que utilizaremos como recursos compartidos: debian: # mkdir /home/netlogon debian: # mkdir /home/proles Para que todos los usuarios tengan acceso a este recursos modicaremos los permisos asignados: debian: # chmod 1777 /home/proles 32
Migración de un servidor Windows a Linux Instalación y configuración de SMBLDAP-TOOLS Las herramientas que provee el paquete smbldap-tools, son un conjunto de scripts que se ejecutan sobre las herramientas de sistema: useradd, userdel y usermod y groupadd, groupdel y groupmod, para permitir la manipulación de usuarios y grupos almacenados en el directorio LDAP, destinadas a sistemas DEN como Samba-LDAP y pam/nss_ldap. La última versión de estas herramientas se encuentra en: http://samba.idealx.org . La versión utilizada ha sido la 0.9.1. Los scripts que provee el conjunto de herramientas smbldap-tools necesitan el paquete libnet-ldap-perl , por lo que si no se encuentra instalado en el sistema, se debe ejecutar: debian: # apt-get install libnet-ldap-perl Una vez descargado el chero smbldap-tools-0.9.1.tgz , realizaremos la instalación de las herramientas: debian:/tmp# tar -zxvf smbldap-tools-0.9.1.tgz debian:/tmp# chown root.root -R smbldap-tools-0.9.1 debian:/tmp# cp -v remove-destination smbldap-tools-0.9.1/smbldap-* smbldap-tools-0.9.1/smbldap*.pm /usr/local/sbin/ debian:/tmp# mkdir -vm 755 /etc/smbldap-tools mkdir: se ha creado el directorio /etc/smbldap-tools debian:/tmp# cp smbldap-tools-0.9.1/smbldap*conf /etc/smbldap-tools/ debian:/tmp# chmod -v 600 /etc/smbldap-tools/* el modo de /etc/smbldap-tools/smbldap_bind.conf cambia a 0600 (rw -) el modo de /etc/smbldap-tools/smbldap.conf cambia a 0600 (rw-) Una ver realizada la instalación, ejecutaremos el script que solicitará los parámetros necesarios para la conguración, para seleccionar las opciones que aparecen por defecto(entre paréntesis) pulsaremos enter : debian:/tmp/smbldap-tools-0.9.1# ./congure.pl -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= smbldap-tools script conguration -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Looking for conguration les... Samba Conguration File Path [/etc/samba/smb.conf] The default directory in which the smbldap conguration les are stored is shown. If you need to change this, enter the full directory path, then press enter to 33
Migración de un servidor Windows a Linux continue. Smbldap-tools Conguration Directory Path [/etc/smbldap-tools/] > -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- =-=-=-=-= Let's start conguring the smbldap-tools scripts ... . workgroup name: name of the domain Samba act as a PDC workgroup name [BOMBERS] > . netbios name: netbios name of the samba controler netbios name [DEBIAN] > logon drive [] > . logon home: home directory location (for Win95/98 or NT Workstation). (use%U as username) Ex:' \\ DEBIAN \ %U' logon home (press the "." character if you don't want homeDirectory)[ \\ DEBIAN \ %U] > . logon path: directory where roaming proles are stored. Ex: \\ DEBIAN \ proles \ %U logon path (press the "." character if you don't want roaming prole) [ \\ DEBIAN \ proles \ %U] > . home directory prex (use%U as username) [ \ home \ %U] > . default users' homeDirectory mode [700] > . default user netlogon script (use%U as username) [] > default password validation time (time in days) [45] > . ldap sux [dc=bombers,dc=dva,dc=gva,dc=es] > . ldap group sux [ou=Groups] > . ldap user sux [ou=Users] > . ldap machine sux [ou=Computers] > . Idmap sux [ou=Idmap] > sambaUnixIdPooldn object (relative to $sux) [sambaDomainName=BOMBERS] > ldap master server [127.0.0.1] > debian.bombers.dva.gva.es . ldap master port [389] > . ldap master bind dn [cn=admin,dc=bombers,dc=dva,dc=gva,dc=es] > . ldap master bind password [] > ldap slave server [127.0.0.1] > . ldap slave port [389] > . ldap slave bind dn [cn=admin,dc=bombers,dc=dva,dc=gva,dc=es] > . ldap slave bind password [] > . ldap tls support (1/0) [0] > . SID for domain BOMBERS: SID of the domain (can be obtained with 'net getlocalsid DEBIAN') SID for domain BOMBERS[S-1-5-21-658922739-2820689373-2813278431]> . unix password encryption: encryption used for unix passwords unix password encryption (CRYPT, MD5, SMD5, SSHA, SHA) [SSHA] > 34
Migración de un servidor Windows a Linux . default user gidNumber [513] > . default computer gidNumber [515] > . default login shell [/bin/bash] > . default skeleton directory [/etc/skel] > . default domain name to append to mail adress [] > -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- backup old conguration les: /etc/smbldap-tools/smbldap.conf->/etc/smbldap-tools/smbldap.conf.old /etc/smbldap-tools/smbldap_bind.conf->/etc/smbldaptools/smbldap_bind.conf.old writing new conguration le: /etc/smbldap-tools/smbldap.conf done. /etc/smbldap-tools/smbldap_bind.conf done. La conguración se almacena en dos archivos: /etc/smbldaptools/smbldap.conf , que contiene los datos de conguración relativos a Samba, y el archivo /etc/smbldap-tools/smbldap_bind.conf que contiene los datos de la cuenta de administrador de LDAP al que únicamente puede acceder el usuario root. Una vez realizada la conguración y planicada la estructura DN del ldap se modicará el chero /etc/libnss-ldap.conf agregando las siguientes líneas: rootbinddn cn=admin,dc=bombers,dc=dva,dc=gva,dc=es binddn cn=admin,dc=bombers,dc=dva,dc=gva,dc=es bindpw {SSHA}G05D97jB8KkfKoGpRKJvbkbJnTR14Wx6 nss_base_passwd ou=Users,dc=bombers,dc=dva,dc=gva,dc=es?sub nss_base_passwd ou=Computers,dc=bombers,dc=dva,dc=gva,dc=es?sub nss_base_shadow ou=Users,dc=bombers,dc=gva,dc=dva,dc=es?sub nss_base_group ou=Groups,dc=bombers,dc=gva,dc=dva,dc=es?sub nss_base_hosts ou=Computers,dc=bombers,dc=dva,dc=gva,dc=es?sub la primera línea indica el DN( distinguished name ) para agregar equipos al servidor, cuyo pasword debe almacenarse en formato plano en el archivo /etc/ldap.secret , al que sólo tendrá acceso el usuario root. Las siguientes líneas indican la estructura de búsqueda de las OU( unidades organizativas Para realizar una primera carga del directorio de OpenLDAP, se usa el ejecutable de smbldap-tools denominado smbldap-populate , que crea la estructura necesaria para la migración, además de los usuarios nobody y el administrador del dominio, cuyo nombre es pasado como opción de la siguiente forma: (El script smbldap-populate requiere los paquetes de perl libcrypt-smbhashperl y libdigest-sha1-perl que instalaremos antes de ejecutar el script) debian:/opt/smbldap-tools-0.9.1# apt-get install libcrypt-smbhash-perl libdigest-sha1-perl 35
Migración de un servidor Windows a Linux A continuación ejecutaremos el script utilizando como parámetros el nombre usuario Administrador del directorio: debian:/opt/smbldap-tools-0.9.1# ./smbldap-populate -a Administrador Populating LDAP directory for domain BOMBERS (S-1-5-21-6589227392820689373-2813278431) (using builtin directory structure) entry dc=bombers,dc=dva,dc=gva,dc=es already exist. adding new entry: ou=Users,dc=bombers,dc=dva,dc=gva,dc=es adding new entry: ou=Groups,dc=bombers,dc=dva,dc=gva,dc=es adding new entry: ou=Computers,dc=bombers,dc=dva,dc=gva,dc=es adding new entry: ou=Idmap,dc=bombers,dc=dva,dc=gva,dc=es adding new entry: uid=Administrador,ou=Users,dc=bombers,dc=dva,dc=gva,dc=es adding new entry: uid=nobody,ou=Users,dc=bombers,dc=dva,dc=gva,dc=es adding new entry: cn=Domain Admins,ou=Groups,dc=bombers,dc=dva,dc- =gva,dc=es adding new entry: cn=Domain Users,ou=Groups,dc=bombers,dc=dva,dc=- gva,dc=es adding new entry: cn=Domain Guests,ou=Groups,dc=bombers,dc=dva,- dc=gva,dc=es adding new entry: cn=Domain Computers,ou=Groups,dc=bombers,dc=dva,dc=gva,dc=es adding new entry: cn=Administrators,ou=Groups,dc=bombers,dc=dva,dc=gva,dc=es adding new entry: cn=Account Operators,ou=Groups,dc=bombers,dc=dva- ,dc=gva,dc=es adding new entry: cn=Print Operators,ou=Groups,dc=bombers,dc=dva,- dc=gva,dc=es adding new entry: cn=Backup Operators,ou=Groups,dc=bombers,dc=dva,- dc=gva,dc=es adding new entry: cn=Replicators,ou=Groups,dc=bombers,dc=dva,dc=gva,dc=es adding new entry: sambaDomainName=BOMBERS,dc=bombers,dc=dva,- dc=gva,dc=es Please provide a password for the domain Administrador: Changing password for Administrador New password : Retype new password : Una vez se ha cargado la estructura básica, comprobaremos que los datos de creación son correctos mediante el uso de la herramienta freeware ldapbrowser , que previamente hemos congurado con los parámetros de nuestro servicio de directorio: 36
Migración de un servidor Windows a Linux Figura 4: Conexión con GUI al servicio de directorio Figura 5: Conexión con GUI al servicio de directorio 37
Migración de un servidor Windows a Linux Figura 6: Estructura creada con smbldap-tools Ahora que ya está el sistema preparado para hacer uso de LDAP en la autenticación de los usuarios, sería recomendable hacer algunas pruebas con la nueva conguración para ver si todo funciona correctamente. El comando pamtest acepta dos parámetros: el primero es el nombre del servicio al cual se va a conectar para realizar la autenticación, el segundo es el nombre del usuario que se va a autenticar sobre dicho servicio. El comando pamtest se encuentra en el paquete libpam-dotle , por lo que si no está disponible en el sistema, ha de ejecutarse: debian: # apt-get install libpam-dotle Una vez instalado el paquete podemos comprobar que el servicio funciona correctamente creando una cuenta en el ldap y ejecutando pamtest: debian: # smbldap-useradd -m testuser debian: # smbldap-passwd testuser Changing password for testuser New password : Retype new password : debian: # getent passwd | grep testuser testuser:x:1014:513:System User:/home/testuser:/bin/bash debian: # pamtest passwd testuser Trying to authenticate <testuser> for service <passwd>. Password: 38
Migración de un servidor Windows a Linux Authentication successful. Configuración políticas de seguridad Para la gestión de políticas de seguridad en Samba, se utiliza el comando pdbedit , con la siguiente opción se muestran las políticas que Samba soporta: debian: # pdbedit -P ? No account policy by that name Account policy names are : min password length password history user must logon to change password maximum password age minimum password age lockout duration reset count minutes bad lockout attempt disconnect time refuse machine password change min password length: Especica el tamaño mínimo de caracteres que debe tener una contraseña. password history: se indica el número de contraseñas que Samba debe recordar para que el usuario no las repita al cambiar su contraseña. user must logon to change password: obliga al usuario a entrar en el sistema si desea cambiar su contraseña. maximum password age: indica la cantidad de días que una contraseña es válida y cuando se cumple el plazo de validez, obliga al usuario a que la cambie. minimum password age: indica la cantidad de días que una contraseña debe permanecer activa antes de que el usuario pueda cambiarla. bad lockout attempt: especica el número de veces que un usuario puede equivocarse de contraseña, una vez sobrepasado ese contador, la cuenta es bloqueada. lockout duration: establece la cantidad de minutos que una cuenta de usuario permanecerá bloqueada después de cumplir la condición especicada en bad lockout attempt. 39
Migración de un servidor Windows a Linux reset count minutes: tiempo en minutos que espera para resetear el contador de intentos de logon fallidos, siempre y cuando este contador no haya alcanzado el numero especicado en bad lockout attempt. disconnect time: establece un tiempo en minutos de desconexión de usuario por inactividad. refuse machine password change: indica si se puede o no cambiar la contraseña de maquina o computadora. Los valores pasados a las políticas se establecen con la opción " = C", y se especican los valores de desactivación de políticas con " = 1" si se trata de tiempo y "0" si se trata de cantidad. Excepto para la política de "minimum password age" que la desactivación sería "0", ya que la indicar " = 1" supondría que la contraseña nunca se puede cambiar. Un ejemplo de conguración de políticas sería el que se muestra a continuación: debian: # pdbedit -P "min password length" -C 5 account policy value for min password length was 8 account policy value for min password length is now 5 debian: # pdbedit -P "password history" -C 4 account policy value for password history was 0 account policy value for password history is now 4 debian: # pdbedit -P "maximum password age" -C 90 account policy value for maximum password age was 4294967295 account policy value for maximum password age is now 90 debian: # pdbedit -P "minimum password age" -C 7 account policy value for minimum password age was 0 account policy value for minimum password age is now 7 debian: # pdbedit -P "bad lockout attempt" -C 8 account policy value for bad lockout attempt was 0 account policy value for bad lockout attempt is now 8 debian: # pdbedit -P "lockout duration" -C 1 account policy value for lockout duration was 30 account policy value for lockout duration is now 1 40
Migración de un servidor Windows a Linux Figura 11: conguración de LDAP Figura 12: Conguración del usuario admin de LDAP 47
Migración de un servidor Windows a Linux Figura 13: Conguración de las cuentas de LDAP 48
Migración de un servidor Windows a Linux Una vez nalizada la conguración accederemos a la sección en la cual pueden gestionarse usuarios, grupos, equipos, dominio, etc...: Figura 14: Sección de gestión de objetos LDAP 4.5. Migración a la infraestructura Linux. Por motivos de privacidad y tratamiento de datos personales, los nombres de usuarios, carpetas compartidas y archivos, son de carácter meramente demostrativo, por lo que no coinciden en ningún caso con los datos electrónicos reales. En primer lugar para realizar la exportación de las cuentas de usuarios utilizaremos las herramientas Windows to Linux Migration Toolkit que descargaremos de la web: http://mesh.dl.sourceforge.net/sourceforge/w2lmt/w2lmt-0.3.1.tar.gz Para migrar la información DNS editaremos el archivo migrate-dns.conf : SourceHost="kame.bombers.dva.gva.es" SourceDomain="bombers.dva.gva.es" TargetConf="/tmp/named.conf" TargetDbDir="/tmp" Después ejecutaremos el script de migración el cual generará los dos archivos de zonas con la información necesaria: debian:/opt/w2lmt-0.3.1# ./w2lmt-migrate-dns -f migrate-dns.conf Generando dos archivos en la carpeta /tmp que integraremos en el servidor DNS de Linux: 49
Migración de un servidor Windows a Linux cp /tmp/ 0.168.192.rev /etc/bind/db.192.168.0 cp /tmp/bombers.dva.gva.es.hosts /etc/bind/db.bombers.dva.gva.es chmod g+w /etc/bind/* A continuación descomprimiremos el archivo y editaremos el archivo de conguración migrate-smbauth.conf : #source windows PDC host (typically DNS name) SourceHost="kame.bombers.dva.gva.es" #source windows domain name SourceDomain="BOMBERS" #source PDC type, can be NT4,AD SourceType="NT4" #source windows domain administrator account name SourceAdminAccount="Administrador" #target linux LDAP server TargetHost="debian.bombers.dva.gva.es" #target linux LDAP port (389 is default TargetPort="389" #location of cong le for samba smbconf="/etc/samba/smb.conf" #location of cong le for smbldap-toolkit smbldap="/etc/smbldap-tools/smbldap.conf" La información que es necesario indicar incluye el nombre la máquina que actúa como PDC en Windows 2000 Server y el nuevo PDC de Linux, también se indicará el usuario Administrador del dominio tanto del LDAP como el de Active Directory y la ruta de los archivos de conguración de Samba y sbmldap-tools. Es necesario establecer el valor: domain master = no en el archivo de conguración de samba smb.conf , indicamos que el servidor Samba debe ser un controlador de dominio de reserva(BDC) para que esté autorizado para recibir una copia de los objetos de autenticación del dominio de Windows existente. Una vez concluida la migración y retirado el servidor Windows, modicaremos de nuevo el valor a domain master = yes y reiniciaremos Samba que pasará a ser de BDC a PDC. A continuación ejecutaremos el script de migración(antes es necesario detener el servidor de SAMBA): debian:/opt/w2lmt-0.3.1# ./w2lmt-migrate-smbauth -f migrate-smbauth- .conf Enter password for Windows SAM Administrador: Enter password for LDAP cn=admin,dc=bombers,dc=dva,dc=gva,dc=es: Testing SAM connectivity to kame.bombers.dva.gva.es...ok ready to migrate NT4 using the following parameters 50
Migración de un servidor Windows a Linux LDAP Settings: ============================================== Master LDAP Server: debian.bombers.dva.gva.es Master LDAP Port: 389 Master DN: cn=admin,dc=bombers,dc=dva,dc=gva,dc=es LDAP Base Sux: dc=bombers,dc=dva,dc=gva,dc=es Users OU: ou=Users,dc=bombers,dc=dva,dc=gva,dc=es Groups OU: ou =Groups,dc=bombers,dc=dva,dc=gva,dc=es Computers OU: ou=Computers,dc=bombers,dc=dva,dc=gva,dc=es IDMap OU: ou=Idmap ,dc=bombers,dc=dva,dc=gva,dc=es Unix ID Pool DN: sambaDomainName=BOMBERS,dc=bombers,dc=- dva,dc=gva,dc=es SAMBA Settings: ============================================= User's Home Share: \\ DEBIAN \ %U User's Login Script: User's Prole: \\ DEBIAN \ proles \ %U Password Age: 45 User Default GID: 513 Computer Default GID: 515 POSIX Settings: ============================================= User's Home Directory: /home/%U Default Shell: /bin/bash Default Mail Domain: Skeleton Directory: /etc/skel Hash Encryption Type: SSHA Hash Encryption Salt: El script lleva a cabo las siguientes acciones: ➪ Solicita las contraseñas de los servidores origen(Windows) y de destino(Openldap). ➪ Enumera el SID del dominio y se une al dominio NT como un BDC. ➪ Crear las OU necesarias en OpenLDAP y enumera los objetos de grupo. ➪ Procesa información de miembros de grupos y modica los objetos de grupo a n de agregar información de pertenencia uid. El siguiente paso consistiría en consultar al servidor de Active Directory a n de actualizar los objetos anteriores con información no relacionada con 51
Migración de un servidor Windows a Linux Figura 15: Grupos creados en LDAP tras script de migración el proceso de autenticación, como la dirección de correo electrónico, número de teléfono, pero en este caso dicha información no es relevante para el cliente y por tanto va a ser obviada y no se realizará la migración. Finalmente realizaremos la migración de los permisos de archivos de Windows a Linux: para ver los recursos compartidos que tiene la máquina con Windows 2000 Server ejecutaremos en el servidor linux: debian: # net rpc share -S kame -Uadministrador Password: contabilidad comercial informatica gerencia IPC$ NETLOGON desarrollo homes ADMIN$ SYSVOL 52
Migración de un servidor Windows a Linux C$ A continuación crearemos físicamente dichos recursos en linux y los compartiremos con Samba: debian:/# mkdir /mnt/contabilidad debian:/# mkdir /mnt/comercial debian:/# mkdir /mnt/informatica debian:/# mkdir /mnt/gerencia debian:/# mkdir /mnt/desarrollo debian:/# mkdir /mnt/NETLOGON [NETLOGON] comment = Network Logon Service path = /mnt/NETLOGON guest ok = Yes locking = no browseable = no [contabilidad] path = /mnt/contabilidad read only = No prole acls = Yes [comercial] path = /mnt/comercial read only = No prole acls = Yes [informatica] path = /mnt/informatica read only = No prole acls = Yes [gerencia] path = /mnt/gerencia read only = No prole acls = Yes [desarrollo] path = /mnt/desarrollo read only = No 53
Migración de un servidor Windows a Linux prole acls = Yes [proles] path = /home/proles force user =%U read only = No create mask = 0600 directory mask = 0700 guest ok = Yes prole acls = Yes browseable = No csc policy = disable Una vez creados los recursos compartidos, realizaremos la exportación de permisos de las carpetas compartidas de windows mediante la utilidad xcalcs.exe en el PDC de Windows: xcacls gerencia /T > gerencia.txt xcacls contabilidad /T > contabilidad.txt xcacls desarrollo /T > desarrollo.txt xcacls informatica /T > informatica.txt xcacls comercial /T > comercial.txt Si mostramos el archivo donde se han volcado los archivos, por ejemplo del recurso contabilidad: C: \ comercial BUILTIN \ Administradores:(OI)(CI)F BOMBERS \ comercial:(OI)(CI)F BOMBERS \ gerencia:(OI)(CI)R Las letras entre paréntesis indican: OI : se establecerá la herencia de permisos en todos los archivos de este directorio, CI : se establecerá la herencia de permisos en todas las carpetas de este directorio. La letra F signica control total de acceso y la R , únicamente permisos de lectura. A continuación estableceremos las ACL's necesarias en los recursos compartidos de Linux: Por ejemplo, si visualizamos las acls de la carpeta contabilidad: C: \ contabilidad BUILTIN \ Administradores:(OI)(CI)F BOMBERS \ contabilidad:(OI)(CI)F BOMBERS \ gerencia:(OI)(CI)R Estableceremos las siguientes acl's con el comando setfacl y eliminamos el 54
Migración de un servidor Windows a Linux acceso al grupo seguridad otros de unix(se utiliza la opción -d "ACL predeterminada", para que los nuevos archivos y directorios creados en la carpeta heredarán las acl's): debian:/mnt#setfacl -d -m group:Domain Admins:rwx,group:comercial:rwx, group:gerencia:r comercial debian:/mnt# chmod -R o-rwx comercial debian:/mnt# chgrp comercial comercial Si obtenemos las propiedades de las acl's del archivo: debian:/mnt# getfacl comercial # le: comercial # owner: root # group: root user::rwx user:root:rwx group::r-x group:Domain Admins:rwx group:comercial:rwx group:gerencia:r mask::rwx other:: Realizaremos los mismos pasos para el resto de carpetas consultado para ellos los archivos txt con las acl's extraídas de windows: debian:/mnt# chmod -R o-rwx contabilidad debian:/mnt# chgrp contabilidad contabilidad debian:/mnt# chmod -R o-rwx desarrollo debian:/mnt# chgrp desarrollo desarrollo debian:/mnt# chmod -R o-rwx gerencia debian:/mnt# chgrp gerencia gerencia debian:/mnt# chmod -R o-rwx informatica debian:/mnt# chgrp informatica informatica debian:/mnt# chmod -R o-rwx NETLOGON debian:/mnt#setfacl -R -d -m group:Domain Admins:rwx,group:contabilidad:rwx,group:gerencia:r contabilidad debian:/mnt#setfacl -R -d -m group:Domain Admins:rwx,group:desarrollo:- rwx,group:gerencia:r desarrollo debian:/mnt#setfacl -R -d -m group:Domain Admins:r,group:gerencia:rwx gerencia debian:/mnt#setfacl -R -d -m group:gerencia:r,group:informatica:rwx infor55
Migración de un servidor Windows a Linux matica debian:/mnt#setfacl -R -d -m group:Domain Users:rwx NETLOGON Para que los recursos compartidos de Samba puedan aceptar las nuevas ACL POSIX es necesario añadir la siguiente línea al archivo de conguración smb.conf y recargar la conguración de samba: map acl inherit = Yes debian:/mnt# /etc/init.d/samba reload También es necesario tener en cuenta la carpeta proles situada en la ruta \ home \ proles que almacena la conguración del escritorio y de los accesos a las aplicaciones de los usuarios por lo que es necesario otorgar permisos de acceso a todos los usuarios del dominio: debian:/home# chgrp -R Domain Users proles debian:/mnt# setfacl -R -d -m group:Domain Admins:rwx,group: Domain Users:rwx proles 4.6. Prueba de la infraestructura Linux. Como prueba del correcto funcionamiento del nuevo Controlador de Dominio, realizaremos la integración de un cliente con Windows XP : El único paso a realizar antes de unir el equipo al dominio es modicar una clave del registro de windows mediante el comando regedit : Ejecutaremos regedit y modicaremos el valor de "1" a "0" en la clave: HKEY_LOCAL_MACHINE_SYSTEM \ CurrentControlSet \ Services \ Netlogon \ Parameters \ RequireSignOrSeal A continuación procederemos a unir el equipo al dominio: 56
Migración de un servidor Windows a Linux Resolución de nombres dinámica Cuando se agrega cualquier equipo al dominio, se añade dinámicamente al archivo de zonas del servidor DNS independientemente de la IP asignada por el servidor DHCP: debian: # host -l bombers.dva.gva.es bombers.dva.gva.es name server debian.bombers.dva.gva.es. gc._msdcs.bombers.dva.gva.es has address 192.168.0.8 debian.bombers.dva.gva.es has address 192.168.0.8 desktop.bombers.dva.gva.es has address 192.168.0.21 Figura 24: Resolución de nombres 63
Migración de un servidor Windows a Linux Administración de permisos(Control de Acceso) Accediendo por red a las carpetas compartidas en el nuevo servidor podemos comprobar la restricción de accesos y permisos congurados previamente(accedemos al sistema con el usuario eduardo : Figura 25: Acceso a carpetas compartidas Figura 26: Creación de un documento de texto 64
Migración de un servidor Windows a Linux Figura 27: Permisos aplicados a nuevos documentos creados Figura 28: Los permisos asignados a las carpetas se aplican correctamente 5. Bibliografía Referencias [All05] D. y colbs. Allen. Herramientas de migración de Windows a Linux . Anaya Multimedia, 2005. [aut] Varios autores. http://www.dwheeler.com/oss_fs_why.html. Technical report. 65
Migración de un servidor Windows a Linux [aut04] Varios autores. Linux Client Migration CookbookA practical guide Planning and Implementation Guide for Migrating to Desktop Linux . ibm.com/Redbooks, 2004. [aut05] Varios autores. Migration guide . Berlin. Federal Ministry of the Interior, 2005. [miga] http://www.debianhelp.co.uk/acl.htm. Technical report. [migb] http://www.debian.org. Technical report. [migc] http://www.novell.com. Technical report. [migd] http://www.redhat.com. Technical report. 6. Lista de Figuras Índice de guras 1. Figura 1 .............................. 4 2. Figura 2 .............................. 4 3. Figura 3 .............................. 9 4. Figura 4 .............................. 37 5. Figura 5 .............................. 37 6. Figura 6 .............................. 38 7. Figura 7 .............................. 45 8. Figura 8 .............................. 45 9. Figura 9 .............................. 46 10. Figura 10 ............................. 46 11. Figura 11 ............................. 47 12. Figura 12 ............................. 47 13. Figura 13 ............................. 48 14. Figura 14 ............................. 49 15. Figura 15 ............................. 52 16. Figura 16 ............................. 57 17. Figura 17 ............................. 57 18. Figura 18 ............................. 58 19. Figura 19 ............................. 58 20. Figura 20 ............................. 60 21. Figura 21 ............................. 61 22. Figura 22 ............................. 61 23. Figura 23 ............................. 62 24. Figura 24 ............................. 63 25. Figura 25 ............................. 64 26. Figura 26 ............................. 64 66
Migración de un servidor Windows a Linux 27. Figura 27 ............................. 65 28. Figura 28 ............................. 65 7. Lista de Tablas Índice de cuadros 1. Productos Red Hat ........................ 6 2. Productos Suse .......................... 7 3. Requisitos Funcionales ...................... 18 67