Guía del Servidor Editado por Conectiva S.A. Guía del Servidor Editado por Conectiva S.A. 2.0 Edición Publicado en noviembre de 2000 Copyright © 2000 por Conectiva S.A. (http://es.conectiva.com) Por Equipo Conectiva Equipo Conectiva Coordinación del equipo de portugués: Márcia Gawlak Autores: Roberto Teixeira y Carlos Daniel Mercer. Coordinación del equipo de traducción Ivone Böhler Traducción Andrea Mara Pimenta Alonso e Irene Haydeé Costas Stridsberg Revisión Roberto M. Lamela Roca, Jorge Carrasquilla Soares Imágenes: Artur T. Hara Cyro Mendes de Moraes Neto Maurício Marconssin dos Santos Desarrollo/Diagramación: Jorge Luiz Godoy Filho Cyro Mendes de Moraes Neto José Eloi de Carvalho Júnior Copyright 2000 - Conectiva S.A. Linux es una marca registrada y concedida por Linus Torvalds, su creador y cedente. Windows, Windows NT e Internet Explorer son marcas registradas de Microsoft Corporation. Netware es una marca registrada de Novell, Inc. Macintosh y Appletalk son marcas registradas de Apple Computers. Netscape Communicator es una marca registrada de Netscape Communications Corporation. Todas las demás marcas registradas son de uso y derecho de sus respectivos propietarios. Las marcas registradas son de propiedad de sus autores. La presente publicación fue producida con todo cuidado y esmero posibles. El editor, no obstante, no asume la responsabilidad sobre eventuales errores de interpretación, omisiones o daños resultantes del uso de la información descrita aquí, por terceros, de buena o mala fe. A los autores les gustaría que se les avisara sobre la introducción de modificaciones, traducciones y versiones impresas. Agradecemos a todos los que han participado activamente en el desarrollo de los trabajos de traducción, internacionalización, divulgación y adaptación de Linux a la realidad latinoamericana, ya que gran parte de nuestro esfuerzo y trabajo se basa en la participación de dicha comunidad. Esperamos que esta guía sea útil para todos los que busquen una herramienta de ayuda para sus actividades diarias, y que pueda enriquecer sus conocimientos y facilitar su trabajo. Datos Internacionales de Catalogación en la Publicación (CIP) (Câmara Brasileira do Livro, SP, Brasil) ISBN 85-87118-32-3 1. Linux (Sistema operativo de computador) 2. Equipo Conectiva. Conectiva S.A. Rua Tocantins, 89 - Cristo Rei - Curitiba - Paraná - Brasil CEP 80.050.430 http://www.es.conectiva.com Tabla de contenidos Prefacio .......................................................................................................................... 29 Convenciones Tipográficas.................................................................................... 32 1. Linuxconf ................................................................................................................... 35 Visión general........................................................................................................ 35 Interfaces de Linuxconf......................................................................................... 36 Uso de Linuxconf .................................................................................................. 38 Habilitación del acceso a Linuxconf vía red................................................ 43 Ayuda de Linuxconf .............................................................................................. 48 Activación de las configuraciones ......................................................................... 48 Activar o desactivar módulos ................................................................................ 50 Permiso y propiedad de archivos........................................................................... 51 Archivos de configuración..................................................................................... 57 Comandos y programas residentes ........................................................................ 60 Controla servicios activos...................................................................................... 63 Más funcionalidades de Linuxconf ....................................................................... 65 Logs de Linuxconf ................................................................................................ 67 7 2. LVM............................................................................................................................ 69 El concepto de LVM.............................................................................................. 70 Terminología ......................................................................................................... 71 El medio físico............................................................................................. 71 Volumen Físico (PV) ................................................................................... 72 Extensiones Físicas (PE).............................................................................. 72 Grupo de Volúmenes (VG) .......................................................................... 72 Volumen Lógico (LV) .................................................................................. 73 Sistema de Archivos .................................................................................... 73 Creando un Volumen Lógico ....................................................................... 76 Cambiando el tamaño a un Volumen Lógico ........................................................ 87 Aumentando un Volumen Lógico ................................................................ 87 Aumentando un sistema de archivos ........................................................... 88 Disminuyendo un sistema de archivos......................................................... 90 Disminuyendo un Volumen Lógico ............................................................. 91 Redundancia y rendimiento................................................................................... 93 Ventajas de una stripe .................................................................................. 94 Desventajas .................................................................................................. 95 8 Striping nativo del LVM .............................................................................. 95 3. RAID .......................................................................................................................... 99 RAID vía hardware y vía software........................................................................ 99 RAID vía hardware.................................................................................... 100 DPT .................................................................................................. 101 Controladoras soportadas ....................................................... 101 Controladoras DPT ....................................................... 102 Controladoras ICP Vortex ............................................. 102 Tipos de hardware................................................................... 102 Tipo controladora.......................................................... 103 Tipo encapsulado .......................................................... 103 RAID vía software ..................................................................................... 103 El controlador de múltiples dispositivos (MD) ................................ 104 Niveles de RAID ................................................................................................. 106 RAID-lineal ............................................................................................... 107 RAID-0 ...................................................................................................... 108 RAID-1 ...................................................................................................... 110 RAID-2 y RAID-3 ..................................................................................... 112 9 RAID-4 ...................................................................................................... 114 RAID-5 ...................................................................................................... 115 Tipos híbridos ............................................................................................ 117 Rendimiento de RAID......................................................................................... 119 Rendimiento en el MD RAID-0 y en el MD RAID-lineal ........................ 119 Rendimiento de lectura en el MD RAID-1................................................ 120 Rendimiento de escritura en el MD RAID-1............................................. 120 Rendimiento de lectura en el MD RAID-4/5............................................. 121 Rendimiento de escritura en el MD RAID-4/5.......................................... 121 Comparación de los niveles de RAID........................................................ 122 Configuración de RAID ...................................................................................... 124 Modo lineal................................................................................................ 125 RAID-0 ...................................................................................................... 128 RAID-1 ...................................................................................................... 130 RAID-4 ...................................................................................................... 132 RAID-5 ...................................................................................................... 136 Uso de RAID para obtener alta disponibilidad ................................................... 138 4. LDAP........................................................................................................................ 143 10 Introducción y conceptos .................................................................................... 143 Servicio de directorio................................................................................. 144 Tipo de información................................................................................... 147 Organizando la información ...................................................................... 147 Clases de objetos........................................................................................ 149 Registrando la información........................................................................ 149 Accediendo a la información ..................................................................... 150 Protección contra accesos no autorizados.................................................. 151 Funcionamiento de LDAP ......................................................................... 151 Concepto y utilización del slapd ............................................................... 152 LDAP y el X.500 ....................................................................................... 154 Duplicación................................................................................................ 155 Instalando y configurando LDAP........................................................................ 156 Instalando los paquetes .............................................................................. 156 Creando el Directorio ................................................................................ 158 Ejecutando el script migrate_all_offline.sh ............................................... 159 Editando el archivo /etc/openldap/ldap.conf............................................. 160 Iniciando el servidor LDAP ....................................................................... 160 11 Utilizando LDAP................................................................................................. 161 Haciendo búsquedas en la línea de comando ............................................ 162 Configurando Netscape Communicator..................................................... 166 Accediendo al servidor LDAP vía URLs .................................................. 168 Autenticación y NSS con LDAP ......................................................................... 169 Autenticación en el LDAP y el NSS.......................................................... 170 Configurando PAM para utilizar el LDAP................................................. 171 Probando la autenticación y el NSS........................................................... 173 Agregando y eliminando usuarios vía LDAP ............................................ 173 Agregando el log del LDAP ...................................................................... 174 Herramientas gráficas para LDAP....................................................................... 174 El cliente de LDAP GQ ............................................................................. 175 Acceso móvil....................................................................................................... 177 Implementando el acceso móvil ................................................................ 178 Alterando el archivo de atributos ..................................................... 178 Alterando el archivo objectclass...................................................... 179 Personalizando el slapd.conf............................................................ 180 Alterando el archivo LDIF ............................................................... 181 12 Reiniciando el servidor LDAP ......................................................... 182 Configurando Netscape .................................................................... 183 5. DNS........................................................................................................................... 187 Introducción y Conceptos.................................................................................... 187 Funcionamiento de DNS ..................................................................................... 188 Espacio de nombres de dominio ................................................................ 188 Nombres de dominio.................................................................................. 189 Dominios.................................................................................................... 189 El espacio de nombres de dominios de Internet ........................................ 191 Dominios de primer nivel .......................................................................... 191 Delegación ................................................................................................. 193 Servidores de Nombres.............................................................................. 193 Máquina de resolución de nombres ................................................. 195 Resolución de nombres .................................................................... 196 Cache................................................................................................ 196 Instalación y configuración de DNS .......................................................... 197 Instalación de los Paquetes............................................................... 197 Configuración del Servidor DNS ..................................................... 197 13 Configuración de Mapas de IPs Inversos................................ 203 Configuración de un Servidor Secundario.............................. 205 Forward Zones........................................................................ 207 Repetidores ............................................................................. 209 Funcionalidades...................................................................... 211 Asignación de bandas de IP.................................................... 212 Iniciando el servicio ......................................................................... 214 Archivos de Configuración de BIND .................................................................. 216 El archivo /etc/named.conf ......................................................................... 217 El archivo /var/named/nombre-de-dominio ................................................... 218 El archivo /var/named/named.local ............................................................. 220 El archivo /var/named/named.ca .................................................................. 220 Configuración de los Clientes ............................................................................. 222 Configuración a través de Linuxconf......................................................... 223 El archivo /etc/resolv.conf ....................................................................... 225 Consideraciones finales ....................................................................................... 226 6. Servidor Internet..................................................................................................... 227 Servidor Web ....................................................................................................... 227 14 Introducción y Conceptos .......................................................................... 227 El Hipertexto .................................................................................... 227 El Protocolo HTTP........................................................................... 228 Apache ............................................................................................. 230 Instalación de Apache ...................................................................... 231 Configuración de Apache................................................................. 231 Servidor FTP ....................................................................................................... 242 WU-FTPD.................................................................................................. 243 Instalación y Configuración ................................................................................ 243 Accesos Anónimos .................................................................................... 249 Permitiendo el envío de archivos ............................................................... 251 Archivos de Mensajes y de Bienvenida ..................................................... 255 Archivo de Bienvenida ..................................................................... 255 El Archivo .mensaje .......................................................................... 256 Servidor Proxy..................................................................................................... 259 Caching...................................................................................................... 259 Squid .......................................................................................................... 260 Instalación y configuración ................................................................................. 261 15 Memoria para Cache.................................................................................. 262 Archivos de Cache..................................................................................... 264 Control de Acceso...................................................................................... 265 7. Correo electrónico................................................................................................... 267 Introducción ........................................................................................................ 267 La teoría............................................................................................................... 267 Cómo funciona el intercambio de mensajes electrónicos.......................... 268 Protocolos involucrados en el intercambio de mensajes............................ 269 SMTP ............................................................................................... 269 POP .................................................................................................. 273 IMAP................................................................................................ 276 La práctica ................................................................................................. 291 Configuración del POP y del IMAP................................................. 292 Configuración del SMTP ................................................................. 292 8. Seguridad en el Servidor ........................................................................................ 297 Visión general sobre seguridad............................................................................ 297 Deshabilitando servicios innecesarios................................................................. 300 Servicios Standalone ................................................................................. 300 16 Servicios ejecutados mediante inetd.......................................................... 302 Utilización de TCP_Wrappers ............................................................................ 307 Firewall mediante el filtro de paquetes................................................................ 316 Configuración del filtro de paquetes por Linuxconf .................................. 319 Verificando la integridad del sistema................................................................... 344 Configuración de AIDE ............................................................................. 347 Utilización de AIDE .................................................................................. 353 9. Alta Disponibilidad ................................................................................................. 357 Introducción ........................................................................................................ 357 Definición .................................................................................................. 357 Disponibilidad básica ....................................................................... 358 Alta disponibilidad ........................................................................... 358 Disponibilidad continua ................................................................... 358 Objetivos .................................................................................................... 359 Cálculo de la Disponibilidad ..................................................................... 360 Conceptos ............................................................................................................ 361 Falla ........................................................................................................... 362 Error........................................................................................................... 362 17 Defecto....................................................................................................... 362 Failover ...................................................................................................... 363 Failback...................................................................................................... 364 Misión ........................................................................................................ 365 La solución Conectiva para Alta disponibilidad ................................................. 366 Administración de nodos ........................................................................... 367 Duplicación de disco.................................................................................. 367 Sistema de archivos ................................................................................... 368 Control de servicios ................................................................................... 368 Configuración de DRBD ..................................................................................... 369 Configuración vía Linuxconf..................................................................... 370 Configuración por el modo texto ............................................................... 371 Sistema de archivos Reiserfs ............................................................................... 374 Configuración de Heartbeat................................................................................. 375 Configuración mediante Linuxconf ........................................................... 376 Configuración por el modo texto ............................................................... 381 10. Redes Mixtas.......................................................................................................... 385 NFS...................................................................................................................... 385 18 Introducción y conceptos........................................................................... 385 Instalación de NFS ........................................................................... 386 Instale el servidor NFS ........................................................... 386 Configuración del Servidor NFS ............................................ 387 Configurando un cliente NFS ................................................. 390 Samba .................................................................................................................. 392 Configuración del Servidor Samba............................................................ 393 Instalación de Samba ....................................................................... 393 Configuración................................................................................... 394 Contraseñas codificadas.......................................................... 394 Contraseñas decodificadas en Windows® 95 ............... 395 Contraseñas decodificadas en Windows® 98 ............... 396 Contraseñas decodificadas en Windows NT® .............. 397 Configuración Básica.............................................................. 398 Compartiendo un directorio.................................................... 399 Montando un volumen Samba................................................ 400 Iniciando Samba ..................................................................... 400 Configuración del cliente........................................................ 401 19 Utilización de SWAT .............................................................. 402 Mars-NWE .......................................................................................................... 403 Introducción y conceptos........................................................................... 404 El protocolo IPX .............................................................................. 404 El objeto Bindery ............................................................................. 405 Scripts de Logon............................................................................... 405 Autenticación de Usuarios ............................................................... 406 Utilidades DOS ................................................................................ 409 Rendimiento ..................................................................................... 410 Problemas conocidos........................................................................ 410 Configuración ............................................................................................ 411 Volúmenes del Servidor ................................................................... 412 Nombre del Servidor Netware® ...................................................... 413 Red Interna ....................................................................................... 413 Tarjetas de Red ................................................................................. 414 Almacenamiento de Rutas ............................................................... 415 Versión de Netware® ....................................................................... 416 Tratamiento de Contraseñas ............................................................. 417 20 Seguridad de Archivos durante el Proceso de Login........................ 418 Usuario Invitado............................................................................... 419 Usuarios con poder de supervisor .................................................... 420 Usuarios de Netware® ..................................................................... 421 Registro automático de usuarios ...................................................... 422 Creación de los directorios esenciales ............................................. 423 Script de Login Estándar .................................................................. 423 Desconexión del Banner de Impresión ............................................ 424 Colas de Impresión........................................................................... 425 A. Appletalk.................................................................................................................. 427 Instalando Netatalk.............................................................................................. 428 Configurando Netatalk ........................................................................................ 428 Exportando directorios............................................................................... 428 Configurando permisos de acceso ............................................................. 430 Usuarios ........................................................................................... 431 Permisos en el directorio de los volúmenes ..................................... 431 En la estación............................................................................................. 432 Iniciando Netatalk...................................................................................... 433 21 B. Licencias generales................................................................................................. 435 Introducción ........................................................................................................ 435 BSD Copyright .................................................................................................... 436 X Copyright......................................................................................................... 437 C. Licencia de Uso y Garantía del Producto ............................................................ 441 General ................................................................................................................ 441 Licencia limitada de productos ........................................................................... 442 Antes de la instalación......................................................................................... 444 Garantía Limitada................................................................................................ 445 Limitación de Reparación y Responsabilidad ..................................................... 446 General ................................................................................................................ 446 D. Licencia Pública General GNU............................................................................. 449 Introducción ........................................................................................................ 449 Términos y condiciones para copia, distribución y modificaciones.................... 451 ¿Cómo aplicar estos términos a nuevos programas?........................................... 458 Índice............................................................................................................................ 461 22 Lista de tablas 1. Convenciones .............................................................................................................. 32 3-1. Atributos de comparación de los varios niveles de RAID..................................... 122 10-1. Correspondencia entre Opciones de Linuxconf y de /etc/exports...................... 390 Tabla de figuras 1-1. Interfaz gráfica de Linuxconf .................................................................................. 39 1-2. Ejecutando Linuxconf en un Xterm......................................................................... 41 1-3. Configuración del Acceso a Linuxconf Vía Red ..................................................... 43 1-4. Interfaz Web de Linuxconf....................................................................................... 45 1-5. Estado del sistema ................................................................................................... 48 1-6. Lista de módulos de Linuxconf ............................................................................... 51 1-7. Previsión de modificación de Modo de archivos ..................................................... 53 1-8. Filtrando la lista de archivos.................................................................................... 54 1-9. Permiso de archivos controlados por Linuxconf ..................................................... 54 1-10. Definiciones de permisos de un archivo ................................................................ 56 23 1-11. Lista de los archivos de configuración................................................................... 57 1-12. Lista de comandos y "daemons"............................................................................ 60 1-13. Cambio de configuración de comando .................................................................. 62 1-14. Control de servicios ............................................................................................... 64 1-15. Configuración del servicio finger .......................................................................... 65 2-1. Volumen Físico ........................................................................................................ 74 2-2. Grupo de Volúmenes ............................................................................................... 74 2-3. Grupo de Volúmenes expandido.............................................................................. 75 3-1. RAID-0 .................................................................................................................. 108 3-2. Stripping ................................................................................................................ 109 3-3. RAID-1 .................................................................................................................. 111 3-4. RAID-2 .................................................................................................................. 112 3-5. RAID-3 .................................................................................................................. 114 3-6. RAID-4 .................................................................................................................. 115 3-7. RAID-5 .................................................................................................................. 116 4-1. Datos de directorio distribuidos en tres servidores................................................ 145 4-2. Árbol de Directorio LDAP .................................................................................... 148 4-3. Un servicio de directorio duplicado con datos distribuidos en tres servidores ..... 155 24 4-5. Configuración de Autenticación ............................................................................ 172 4-6. El cliente de LDAP GQ ......................................................................................... 176 5-1. Zona vs. Dominio .................................................................................................. 194 5-2. Pantalla de Configuración del Servidor DNS ........................................................ 198 5-3. Añadiendo un dominio .......................................................................................... 200 5-4. Añadiendo un Mapa de IP Inverso ........................................................................ 204 5-5. Configuración de un Servidor Secundario............................................................. 206 5-6. Configuración de Forwarders ................................................................................ 208 5-7. Configuración de repetidores................................................................................. 210 5-8. Funcionalidades del Servidor ................................................................................ 212 5-9. Atribución de bandas de direcciones IP ................................................................ 213 5-10. Configuración de named A través de ntsysv ....................................................... 215 5-11. Añadiendo un dominio ........................................................................................ 218 5-12. Especificación del servidor de nombres .............................................................. 223 6-1. Página Inicial deApache Conectiva Linux Vista en Netscape®............................ 231 6-2. Pantalla inicial de configuración de Apache.......................................................... 234 6-3. Configuración Básica de Apache........................................................................... 235 6-4. Alias de IP ............................................................................................................. 238 25 6-5. Máquina Virtual de Apache................................................................................... 240 6-6. Pantalla inicial de configuración de WU-FTPD .................................................... 245 6-7. Configuración Básica del Servidor FTP ................................................................ 245 6-8. Configuración de Control de Accesos ................................................................... 247 6-9. Directorio con .mensaje Visto en Netscape............................................................ 257 8-1. Configuración de iniciación de servicios............................................................... 301 8-2. Configuración de /etc/services ............................................................................. 303 8-3. Deshabilitando un Servicio.................................................................................... 304 8-4. Servidor FTP sin tcp_wrappers ............................................................................. 308 8-5. Servidor FTP Utilizando tcp_wrappers ................................................................. 309 8-6. Configuración de reglas de entrada ....................................................................... 320 8-7. Configuración de guías .......................................................................................... 322 8-8. Configuración de la Guía Opciones....................................................................... 325 8-9. Ejemplo de uso de Forward firewalling................................................................. 328 8-10. Forward firewalling - Desde ................................................................................ 331 8-11. Forward firewalling - Hacia................................................................................. 331 8-12. Forward firewalling - Opciones ........................................................................... 333 8-13. Añadiendo una regla de origen del paquete......................................................... 335 26 8-14. Añadiendo una regla de destino del paquete ....................................................... 335 8-15. Forward firewalling - Agregando una regla......................................................... 337 8-16. Ejemplo de uso de enmascaramiento de IP ......................................................... 339 8-17. Configurando el enmascaramiento de IP ............................................................. 341 8-18. Firewall - Enmascaramiento de IP....................................................................... 343 9-1. Configuración de DRBD ....................................................................................... 370 9-2. Archivo de configuración ...................................................................................... 370 9-3. Configuración de Heartbeat ................................................................................... 376 9-4. Nodos..................................................................................................................... 377 9-5. IPs y Servicios ....................................................................................................... 378 9-6. Claves de autenticación ......................................................................................... 379 9-7. Lista de dispositivos .............................................................................................. 380 9-8. Configuraciones diversas ....................................................................................... 380 10-1. Pantalla de configuración del servidor NFS ........................................................ 387 10-2. Pantalla de acceso a volúmenes NFS................................................................... 392 10-3. Configuración de Samba...................................................................................... 393 10-4. Pantalla de configuración Global de Samba ........................................................ 398 10-6. S W A T............................................................................................................... 403 27 Tabla de ejemplos 4-1. Utilizando las URLs de Netscape Communicator................................................. 169 8-1. Ejemplo de Configuración de tcp_wrappers.......................................................... 312 8-2. Configuración de tcp_wrappers Menos Restrictiva ............................................... 314 8-3. Archivo de Configuración de AIDE ...................................................................... 351 28 Prefacio El objetivo principal de esta guía es dar a conocer los servicios esenciales y más importantes que Conectiva Linux presenta a los administradores de red y de sistemas, así como las novedades de esta nueva edición Servidor. Está escrita en un lenguaje sencillo, pues de esta manera el administrador podrá tener una visión general sobre cada servicio, bien como una explicación de la teoría y conceptos de los programas disponibles en el producto. Esta guía no pretende enseñar a utilizar cada programa o paquete, ya que esto supondría escribir un nuevo libro para cada asunto. Además de la descripción general de los paquetes principales, el usuario puede encontrar ejemplos para su instalación y configuración. Linuxconf fue clasificado como esencial o muy importante en una red, por lo que ya es estándar en la distribución Conectiva Linux. En esta versión del servidor nos gustaría resaltar los nuevos módulos que se han desarrollado especialmente para Linuxconf. Antes de hablar de ellos explicaremos qué es Linuxconf. Se trata de un programa que centraliza la configuración de administración del sistema y de redes, y entre sus ventajas podemos mencionar una interfaz bastante amigable, que satisface a la mayoría de los usuarios; puede usarse en modo gráfico, texto e incluso llamada vía web. Conectiva procuró implementar nuevos módulos en el programa, así como también mejorar los que ya existían, dejándolo aún más estable. Con un equipo especializado y trabajando solamente en este proyecto, fue implementado un módulo para la configuración de la solución de Boot Remoto, Wine, un aumento de funcionalidades en la configuración de Samba, DNS, NFS y muchos otros módulos que el propio programa presenta. Para terminar, la virtud principal de Linuxconf es la implementación constante realizada por el equipo de Conectiva y también por la propia comunidad Linux. Acompañe en nuestro 29 Prefacio sitio web (http://es.conectiva.com/actualizaciones/) su evolución y tenga siempre en su máquina la última versión. En el primer capítulo de esta guía se describe Linuxconf de manera más detallada. Dando continuidad a la guía, se presenta el concepto y funcionamiento de un servidor de LDAP. Este servicio es un protocolo cliente-servidor, que se utiliza para acceder a un servicio de Directorio - una base de datos que se asemeja a una lista telefónica - que guarda toda la base de información de sus usuarios. Una facilidad interesante es que, usando el cliente Netscape®, el usuario puede acceder remotamente a toda la configuración de su navegador. Se describe el funcionamiento de RAID, una poderosa herramienta, rápida y confiable para crear un subsistema de unidades de disco, a través de unidades individuales. No tiene como objetivo ser utilizado como un sustituto para hacer backup, su función es proteger contra fallas en el disco. RAID es un servicio complejo que debe utilizarse con cautela y por administradores con mucha experiencia. Presentamos el buen y “viejo” DNS, el cual además de ser conocido por muchos, es de suma importancia para la configuración de una red. En este capítulo se presenta una introducción de su concepto básico y configuración. En Redes Mixtas, se demuestra el NFS y dos protocolos más para que Linux trabaje con otros sistemas operativos - Samba y Mars-NWE. NFS es un protocolo importante, dentro de Linux, para compartir archivos; ya Samba permite que máquinas Linux “conversen” con máquinas Windows y Mars-NWE permite la comunicación entre máquinas o redes Linux y máquinas o redes Novell. Esta parte de la guía es bastante importante e interesante para los que están migrando para Linux y todavía no pueden abandonar definitivamente otros sistemas operativos. Linux muestra aquí que puede convivir amigablemente con todos. 30 Prefacio Procuramos crear una secuencia de servicios para que el administrador monte un servidor básico de Internet. Presentamos Apache para un servidor web, WUFTPD para un servidor de FTP y Squid para un servidor de proxy. Con estos tres servicios usted puede por ejemplo, montar un servidor base para su proveedor Internet. En el capítulo - Correo Electrónico - presentamos el funcionamiento de Sendmail para la configuración de un servidor de email. Utilice ese capítulo para mejorar su servidor. Cuando hablamos de Seguridad en el Servidor, presentamos algunas reglas para aumentar la seguridad en su red y también describimos una manera muy clara y objetiva de lo que debe hacer un administrador para deshabilitar los servicios que no se están utilizando, que es el primer paso que un buen administrador debe dar. Conocer la red es uno de los factores más importantes para brindar un mínimo de seguridad; aunque el administrador no conozca conceptos de seguridad, debe conocer la red. Lea este capítulo con mucha atención. Para terminar, tenemos el capítulo alta disponibilidad, que tiene como objetivo presentar conceptos y aplicaciones que permiten aumentar la disponibilidad de servidores Linux. Alta Disponibilidad viene a mostrar que no es sólo un programa dentro de un producto, sino, una característica de un sistema de computadores. Conectiva Linux también viene abriendo las puertas para esa filosofía. En el apéndice, tenemos un asunto importante: Appletalk. En este apéndice se describe el paquete Netatalk que viene con Conectiva Linux, con él se pueden crear redes mixtas usando máquinas Macintosh® y Linux. Para finalizar esta guía, se presentan las licencias de uso generales, GPL y la licencia de uso del producto. 31 Prefacio Esperamos que aproveche al máximo los conceptos y ejemplos que presentamos en este libro. Convenciones Tipográficas Durante la elaboración de esta guía, procuramos describir con uniformidad los distintos términos utilizados. A continuación presentaremos las principales convenciones utilizadas. Tabla 1. Convenciones Convención Itálico Opciones de menús y submenús Letra courier (más delgada y con más espacio) Descripción Palabras en inglés. Letra en tamaño mayor que el cuerpo del texto; los submenús están separados por flechas. Definida para nombres de archivos o extensiones de archivos. Conectiva espera, con este material, suministrar una base para todos los que desean implantar soluciones avanzadas en un servidor, utilizando una plataforma 32 Prefacio Linux. Si encuentra algún error ortográfico o conceptual, por favor acceda al sitio web (http://es.conectiva.com/doc/errata) y llene el formulario correspondiente. ¡Conectiva agradece su interés en este producto y le desea muy buena suerte en su labor! 33 Prefacio 34 Capítulo 1. Linuxconf El propósito de este capítulo es presentar Linuxconf de tal manera que sea capaz de entender qué sucede cada vez que efectúa alguna modificación, o cuando sencillamente entra y sale de la aplicación. No presentaremos ni explicaremos cada uno de los módulos de Linuxconf, en vez de ello, expondremos lo que debe hacerse para habilitar o deshabilitar estos módulos y cuáles son los archivos controlados por Linuxconf, entre otros puntos. Visión general Linuxconf es un avanzado sistema de administración para Linux. Centraliza tareas tales como configuración del sistema y control de los servicios existentes en la máquina. En verdad, Linuxconf está compuesto por un conjunto de módulos, cada uno de ellos responsable por ejecutar una tarea específica. Por ejemplo, entre muchos otros, existen módulos para: • Configuración del servidor Apache. • Configuración de conexiones PPP. • Configuración de reglas para el filtro de paquetes del kernel. 35 Capítulo 1. Linuxconf Considerando la manera como ha sido proyectado Linuxconf, para añadirle una funcionalidad basta que alguien escriba un nuevo módulo para ejecutar la tarea tratada. Con esto, tenemos una herramienta que puede centralizar la configuración de todo el sistema. Una de las complicaciones de gran parte de los programas para Linux es su flexibilidad, pues tienen decenas (e incluso a veces centenas) de opciones de configuración. Linuxconf la facilita en estos programas, al presentar las opciones de configuración existentes de una manera organizada y, en muchos casos, efectuando también la validación de los datos informados, por lo que disminuye la ocurrencia de errores vulgares. Cunado hace una modificación a través de un módulo y lo termina, se efectúan las alteraciones en el sistema. Cuando salga de Linuxconf, se harán verificaciones para inspeccionar si el estado actual del sistema corresponde con la configuración de Linuxconf. Interfaces de Linuxconf De una forma contraria a otras herramientas de administración, Linuxconf cuenta con varias interfaces de usuario: 36 Capítulo 1. Linuxconf Interfaz texto Interfaz indispensable, pues puede utilizarse en cualquier momento, ya sea vía consola o acceso remoto (telnet o ssh). Esta interfaz elimina la necesidad de mantener instalado un servidor gráfico X solamente para configurar la máquina. La Tabla 1-1 muestra algunos atajos de teclado útiles para este modo de Linuxconf. Tabla 1-1. Teclas de referencia rápida de Linuxconf Teclas F1 F3 Ctrl- X Ctrl- A Ctrl- B Ctrl- D Ctrl- E Ctrl- F Ctrl- K Descripción abre pantalla de ayuda sale de una sección/pantalla muestra lista emergente de la opción va para el comienzo de la línea (Inicio) vuelve a la página anterior (Re Pág) borra el carácter actual (Suprimir) va para el fin de la línea (Fin) va para la página posterior (Av Pág) borra el texto, desde el cursor hasta el fin de línea 37 Capítulo 1. Linuxconf Interfaz web La posibilidad de configurar una máquina a través de una interfaz web es fantástica, pues basta tener acceso a un navegador. Con eso, es posible configurar una máquina a través de, prácticamente, cualquier plataforma de hardware y software, siendo suficiente que haya un navegador para ella. Interfaz gráfica Es útil para usuarios que prefieren configurar el sistema a través de una interfaz gráfica, pues tienen a su disposición ventanas, cuadros de diálogo, botones, etc.. Esta interfaz debe ejecutarse en un servidor gráfico X, como XFree86 (servidor gráfico estándar de Linux). Interfaz de línea de comando Algunos módulos de Linuxconf pueden utilizarse por la línea de comando, lo que, entre otras posibilidades, permite su uso en scripts . Usted podrá utilizar cualquier interfaz de éstas, dependerá solamente de su gusto personal, o de lo que tiene disponible la máquina que está siendo administrada. 38 Capítulo 1. Linuxconf Uso de Linuxconf Linuxconf puede ejecutarse en cualquier momento, a través de la línea de comando. Para iniciarlo basta teclear linuxconf en la línea de comando, o pulsar en el ícono del ambiente gráfico del superusuario. La configuración estándar de Conectiva Linux es permitir que sólo el superusuario acceda a Linuxconf. Esta política ha sido escogida por factores de seguridad, pues para que otros usuarios puedan ejecutarlo, es necesario que el programa tenga el bit suid habilitado. Cuando se ejecuta Linuxconf por primera vez, exhibe una pantalla de presentación, con algunas instrucciones de uso del programa. Al ser iniciado, Linuxconf verifica si la X está activa. En caso afirmativo, empieza su interfaz gráfica, como se ilustra en la Figura 1-1. 39 Capítulo 1. Linuxconf Figura 1-1. Interfaz gráfica de Linuxconf 40 Capítulo 1. Linuxconf Como podemos observar en la Figura 1-1, Linuxconf tiene tres secciones: Configuración, Control y Estado. La sección Configuración trata básicamente de configuraciones del sistema y la sección Estado permite la vista de logs e información general del sistema. Como el objetivo de este capítulo es entender el funcionamiento de Linuxconf, nos detendremos en la sección Control, que permite que visualicemos y modifiquemos las opciones predefinidas de Linuxconf. Para utilizar la interfaz texto de Linuxconf, basta ejecutarlo en el modo texto, o entonces agregar la opción --text en la línea de comando: linuxconf --text. La Figura 1-2 muestra Linuxconf siendo ejecutado en un Xterm. 41 Capítulo 1. Linuxconf Figura 1-2. Ejecutando Linuxconf en un Xterm Note que la información presentada en la interfaz texto es la misma que se presenta en la interfaz gráfica, y vea que sólo la forma de presentación difiere entre las dos interfaces. A la interfaz web se puede acceder a través de la URL http://su_maquina:98/ , pero, para eso, tiene que configurar primero Linuxconf, para que acepte conexiones vía red. 42 Capítulo 1. Linuxconf Habilitación del acceso a Linuxconf vía red El primer paso para habilitar el acceso a Linuxconf vía red es ir hasta Configuración → Configuración de Red → Misc → Acceso de red a Linuxconf y marcar la opción activa acceso vía red. Además de esta opción, es útil marcar Acceso de registro en /var/log/htmlaccess.log , para que los accesos sean registrados en este archivo. Debajo de estas opciones, encontrará algunos campos para definir cuáles son las máquinas que pueden acceder a Linuxconf vía red. Si ellos no son llenados, Linuxconf aceptará solamente conexiones de la red local de la primera tarjeta de red detectada por el sistema, lo que se considera un funcionamiento bastante seguro. Si prefiere ser más específico, informe una máquina o una red y, como opción, una máscara de red. Sus opciones para especificar una máquina o una red son: • Un nombre de máquina. • Una dirección IP. • Un par de direcciones IP y máscara de red. • Un nombre de dispositivo (eth0, eth1, etc). Observe el ejemplo de la Figura 1-3: 43 Capítulo 1. Linuxconf Figura 1-3. Configuración del Acceso a Linuxconf Vía Red Con esta configuración, será posible acceder a la interfaz web de Linuxconf a través de la interfaz loopback (127.0.0.1), de la red 192.168.0.0/255.255.255.0 y de la máquina host.qwerty.com. Cuando se especifica una dirección IP o un nombre de máquina sin especificar una máscara de red, es asumida la máscara 255.255.255.255. Para configurar el acceso de Linuxconf vía web, tendrá que alterar como super- 44 Capítulo 1. Linuxconf usuario el archivo /etc/xinetd.d/linuxconf-web : # vi /etc/xinetd.d/linuxconf-web # default: off # description: The Linuxconf system can also be accessed via a web \ # browser. Enabling this service will allow connections to \ # Linuxconf running in web UI mode. service linuxconf { disable = yes socket_type = stream wait = yes user = root server = /sbin/linuxconf server_args = -http } Basta con sustituir disable = yes por disable = no y se activará el sevicio. Finalmente, para acceder a Linuxconf a través de su interfaz web, es suficiente apuntar su navegador para http://127.0.0.1:98/, o sea, si está accediendo desde la máquina local. Si está accediendo a través de la red, reemplace 127.0.0.1 por el nombre o dirección IP de la máquina. 45 Capítulo 1. Linuxconf La Figura 1-4 muestra una página de la interfaz web de Linuxconf. 46 Capítulo 1. Linuxconf Figura 1-4. Interfaz Web de Linuxconf 47 Capítulo 1. Linuxconf Ayuda de Linuxconf Linuxconf tiene varias pantallas de ayuda, que le explican cómo utilizar algunas características del programa. Para acceder a ellas, debe seleccionar la opción Ayuda, que existe en todas las pantallas del programa. Como Linuxconf es un proyecto en desarrollo, algunas pantallas de ayuda no han sido aún traducidas para la lengua española, y otras ni siquiera han sido escritas. Por lo tanto, no le parezca extraño si aparece alguna pantalla de ayuda en inglés, o incluso, si le sale algún mensaje diciendo que el archivo de ayuda no existe. Activación de las configuraciones Uno de los primeros puntos a conocer de Linuxconf es que muchas configuraciones realizadas a través suyo causarán efecto solamente cuando sean activadas explícitamente. Existen varias maneras para activar estos cambios. Una de ellas es saliendo de Linuxconf. Al salir del programa, tras haber efectuado alguna modificación en configuraciones, tendrá una pantalla semejante a la que se ilustra en la Figura 1-5. 48 Capítulo 1. Linuxconf Figura 1-5. Estado del sistema A no ser cuando sea explícitamente señalado, las pantallas y los procedimientos descritos en este capítulo tienen como base la interfaz gráfica de Linuxconf. La diferencia de operación entre una interfaz y otra es mínima, por lo tanto no tendrá problema si utiliza alguna de las otras interfaces. La ventana presenta un informe (Figura 1-5) de lo que será ejecutado, si desea que se hagan las configuraciones. Si abandona la idea de salir del programa, basta con que seleccione la opción Volver a Linuxconf , esto hará con que usted vuelva a la pantalla principal de 49 Capítulo 1. Linuxconf Linuxconf. La opción Salir permite que salga del programa sin efectuar las alteraciones, al revés de la opción Activar los cambios, mediante la cual sale del programa confirmando todas las alteraciones necesarias. Otra manera de activar los cambios en la configuración del sistema es al revés de la opción Control → Panel de Control → Activa la configuración. Si le gusta usar la línea de comando, puede encontrar dos comandos útiles. Veamos: el comando linuxconf --status exhibe el informe de lo que necesita hacerse para sincronizar la configuración del sistema, y el comando linuxconf -update efectúa las alteraciones, como se ilustra a continuación. # linuxconf --status Lista de requisitos para activar la configuración actual # linuxconf --update Verificando la configuración básica Verificando los módulos del kernel Montando volúmenes locales Verificando los permisos de archivos Verificando LILO Ejecutando algunos scripts de iniciación Sysv Ejecutando: /etc/rc.d/rc5.d/S50inet restart Configuración del firewall 50 Capítulo 1. Linuxconf Activar o desactivar módulos Linuxconf está compuesto por varios módulos, cada uno de ellos con una función específica. Es posible desactivar módulos innecesarios o activar los existentes que se desean utilizar. Accediendo a Control → Controla archivos y sistemas → Configura módulos de Linuxconf. Linux tendrá acceso a la Lista de módulos (Figura 1-6). Dicha lista muestra los módulos que existen, su descripción y una checkbox que informa si el módulo está o no activo. Para confirmar cualquier alteración en esta pantalla, basta pulsar en Aceptar. 51 Capítulo 1. Linuxconf Figura 1-6. Lista de módulos de Linuxconf Permiso y propiedad de archivos 52 Capítulo 1. Linuxconf Linuxconf mantiene una base de datos con permisos y propiedad de archivos y directorios importantes del sistema, evitando así que estas características sean accidentalmente alteradas. Por ejemplo, si modifica el modo del directorio /var/spool/mail para 777, al activar la configuración Linuxconf lo configurará nuevamente con el modo 775, como se ilustra en la Figura 1-7. Figura 1-7. Previsión de modificación de Modo de archivos En ciertas situaciones, es posible que necesite modificar permanentemente el modo (o dueño, o grupo) de un archivo administrado por Linuxconf. En este caso, es necesario alterar la información del archivo almacenada en Control → Controla archivos y sistemas → Configura modos y pertenencia de archivos. Al acceder a esta opción, se presentará un cuadro de diálogo (Figura 1-8), en el que podrá especificar un prefijo para filtrar los archivos que serán relacionados, 53 Capítulo 1. Linuxconf pues la lista es bastante grande. Si no pone un prefijo, se exhibirá la lista completa. Dicha lista, filtrada o no, aparecerá en cuanto pulse en el botón Aceptar. Figura 1-8. Filtrando la lista de archivos La Figura 1-9 muestra un listado de los archivos del directorio /usr que son administrados por Linuxconf. 54 Capítulo 1. Linuxconf Figura 1-9. Permiso de archivos controlados por Linuxconf Este cuadro de diálogo tiene cinco columnas de información: Ruta: exhibe el camino completo para el archivo o directorio. Tipo: informa si es archivo, directorio, dispositivo carácter o dispositivo bloque. Dueno: exhibe el dueno y el grupo estándar del archivo. Permisos: informa los permisos estándar del archivo. Mod: informa si la configuración estándar del archivo fue modificada. Al seleccionar uno de los archivos de la lista, se presentará otro cuadro de diálogo, que va a permitirle que altere la configuración estándar del archivo. Usted podrá alterar el dueño, el grupo y los permisos. 55 Capítulo 1. Linuxconf Observe en la Figura 1-9 que el archivo /usr/sbin/pppd tiene permisos rwsr-xr-x. Le puede interesar, por ejemplo, deshabilitar el bit suid de este programa. Para eso, desmarque la opción Indicador de Setuid en el cuadro de diálogo de definiciones de permisos de un archivo (Figura 1-10). Figura 1-10. Definiciones de permisos de un archivo 56 Capítulo 1. Linuxconf La próxima vez que active las configuraciones, esta alteración será automáticamente efectuada. Este tipo de alteración puede hacerse para cualquier archivo controlado por Linuxconf. Recuerde que, siempre que necesite alterar dueño, grupo o permisos de un archivo controlado por Linuxconf, será necesario modificar la configuración del archivo en este programa. Archivos de configuración Linuxconf usa, gestiona, prueba y genera varios archivos de configuración. A través de la opción Control → Controla archivos y sistemas → Configurar todos los archivos de configuración (Figura 1-11) puede visualizar cuáles son dichos archivos. 57 Capítulo 1. Linuxconf Figura 1-11. Lista de los archivos de configuración Como puede ver, esta ventana contiene tres columnas: Ruta, Estado y Subsistema. La Ruta define la ubicación del archivo administrado. La columna Estado contiene algunos identificadores, que pueden tener los valores siguientes: 58 Capítulo 1. Linuxconf (en blanco): indica que el archivo es sólo leído por Linuxconf. Eso puede significar dos cosas: o se trata de un archivo de referencia usado por Linuxconf o aún no sabe cómo administrarlo, pero utiliza su contenido. A: indica que el archivo se almacenará para un determinado perfil. E: indica que el archivo será siempre borrado en la iniciación, por Linuxconf. G: indica que el archivo es generado por Linuxconf. En este caso, Linuxconf utiliza otros archivos, como por ejemplo /etc/conf.linuxconf, para guardar la configuración relacionada al servicio en referencia. Generalmente esto significa que esos archivos no deben ser alterados manualmente, pues Linuxconf sobrescribirá estas alteraciones. La excepción a este caso se da cuando el archivo es también marcado con M, lo que no es común. M: indica que el archivo es administrado completamente por Linuxconf. Esto significa que Linuxconf sabe como procesarlo y reescribirlo apropiadamente. Significa también que puede modificar el archivo directamente, sin que Linuxconf pierda la habilidad de gestionarlo. El archivo /etc/resolv.conf es un buen ejemplo. O: indica que el archivo es optativo en un sistema Linux. P: indica que Linuxconf sabe muy poco del archivo referido. El sólo verifica su existencia y su fecha de modificación. Con base en esto, Linuxconf decide si es necesario un servicio o si precisa ser reiniciado o senalizado un daemon . V: Linuxconf utiliza archivos virtuales especiales, que generalmente hacen parte de un archivo de configuración real. *: Indica que la ruta del archivo de configuración fue alterada, y no tiene más el valor original conocido por Linuxconf. 59 Capítulo 1. Linuxconf La columna Subsistema solamente presenta una división interna de Linuxconf, que informa a qué parte del sistema pertenece el archivo. La única configuración que puede hacerse en esta ventana es la alteración de la ruta del archivo, lo que no se recomienda, salvo que esté bien seguro de lo que hace. Comandos y programas residentes Linuxconf utiliza varios comandos y programas del sistema para realizar distintas tareas. Usted puede saberlos si accede a Control → Controla archivos y sistemas → Configurar todos los comandos y "daemons" (Figura 1-12). Además de visualizarlos, podrá modificarlos e incluso desactivarlos, como veremos a continuación. 60 Capítulo 1. Linuxconf Figura 1-12. Lista de comandos y "daemons" Como puede ver, la ventana ilustrada en la Figura 1-12 tiene tres columnas: Nombre: informa el nombre del comando. Ruta: informa la localización del comando que se está utilizando. 61 Capítulo 1. Linuxconf Mod: informa si la configuración original de Linuxconf fue modificada. Esta característica es bastante útil, pues le permite que personalice algunas funciones de Linuxconf de manera simple. Por ejemplo, si necesita añadir usuarios en la base de datos del sistema y además en una base de datos SQL, basta reemplazar el comando originalmente utilizado por Linuxconf por un script o programa especialmente creado para esto. Al seleccionar uno de los comandos de la lista, será exhibida una ventana que le permitirá: • Deshabilitar el comando; cuando desmarque la opción linuxconf puede hacerse cargo. • Modificar el comando que será ejecutado, alterando la Ruta del comando. • Añadir, suprimir o modificar los argumentos utilizados en la ejecución del comando. La Figura 1-13 ilustra una situación en la que ha sido alterado el comando para agregar usuarios al sistema. 62 Capítulo 1. Linuxconf Figura 1-13. Cambio de configuración de comando Con esta configuración, el comando utilizado por Linuxconf para agregar usuarios al sistema pasa a ser /usr/sbin/useradd-sql, que podrá ser un script o programa binario que ejecuta la tarea de añadir usuarios de manera personalizada. Note que este procedimiento no va a modificar el módulo de adición de usuarios de Linuxconf. La diferencia está en que el comando utilizado por el módulo será otro. Si desactiva un comando, desmarcando la opción linuxconf puede hacerse cargo. Linuxconf estará impedido de efectuar cualquier tarea que dependa de este comando. Estos procedimientos son válidos para cualquier comando utilizado por Linuxconf. 63 Capítulo 1. Linuxconf Controla servicios activos El Controla servicios activos de Linuxconf sirve básicamente para configurar inetd. La gran mayoría de servicios son controlados mediante inetd, no obstante, otros como el propio Linuxconf y el servicio de firewall no están controlados por dicha aplicación. Se puede acceder a esta configuración a través de la opción Control → Panel de control → Controla servicios activos . 64 Capítulo 1. Linuxconf Figura 1-14. Control de servicios Para modificar la configuración de un servicio, debe primero pulsar sobre el mismo. Este procedimiento hará con que sea exhibida otra ventana, que permite efectuar las modificaciones que desee. La Figura 1-15 ilustra la configuración del servicio finger. Para activar o desactivar un servicio se debe modificar Estado para Activado o Desactivado, respectivamente. 65 Capítulo 1. Linuxconf Figura 1-15. Configuración del servicio finger 66 Capítulo 1. Linuxconf Más funcionalidades de Linuxconf En este capítulo, tratamos de la configuración del propio Linuxconf. En los demás capítulos de este libro tendrá la oportunidad de conocer varios programas, que le permitirán gestionar su máquina de una manera muy sencilla y segura. A esta versión le fueron agregados módulos de Linuxconf, entre los que podemos citar: • Módulo para configuración de Wine, aplicación para ejecutar programas de Windows®. • Módulo para configuración de Amanda, software para administración de backup. • Módulo para configuración de Grub, boot loader con más características que LILO. • Módulo para configuración de Postfix, servidor de e-mail. • Módulo para configuración de Portslave, aplicación usada para control de puertos. • Módulo para configuración de LPRng, software para configuración y control de impresoras. 67 Capítulo 1. Linuxconf Logs de Linuxconf Es importante tener siempre como referencia los logs del sistema antes, durante y después del uso de Linuxconf. Estos archivos pueden consultarse siempre en /var/log. Podemos citar los siguientes archivos que se refieren sólo al uso de Linuxconf: - archivo principal de log de Linuxconf, registra operaciones de forma clara y específica de todos los pasos ejecutados por Linuxconf. • /var/log/netconf.log - log de acceso de Linuxconf vía WEB; si utiliza esta interfaz use este archivo como referencia. • /var/log/htmlaccess.log 68 Capítulo 2. LVM El Administrador de Volúmenes Lógicos1(LVM) es un subsistema para gestión activa de almacenamiento en disco que se transformó en una forma estándar de administración de almacenaje en sistemas UNIX. El Administrador de Volúmenes Lógicos consiste en una capa adicional entre los dispositivos físicos y la interfaz de E/S en el kernel para suministrar una visión lógica en el almacenamiento. Al contrario de los esquemas de particiones actuales, en los que se dividen discos en particiones continuas de tamaño fijo, el LVM permite al usuario considerar discos, también conocidos como Volúmenes Físicos2 (PV), como un volumen de almacenamiento de datos, que tiene extensiones con tamaños iguales. Un sistema de LVM se compone de grupos arbitrarios de volúmenes físicos, organizados en Grupos de Volúmenes3(VG). Un grupo de volumen puede consistir en uno o más volúmenes físicos. Puede haber más de un grupo de volumen en el sistema. Una vez creado, el grupo de volumen, no el disco, es la unidad básica de almacenamiento de datos (un disco virtual que se compone de uno o más discos físicos). 1. Logical Volume Manager 2. Physical Volumes 3. Volume Groups 69 Capítulo 2. LVM La cantidad de espacio en disco, que se representa por un grupo de volumen, puede estar asignada en particiones virtuales, llamadas Volúmenes Lógicos4 (LV) de varios tamaños. Un volumen lógico puede contener un número de volúmenes físicos o representar solamente una parte de un volumen físico. El tamaño de un volumen lógico se determina por su número de extensiones. Una vez creados, los volúmenes lógicos pueden utilizarse como particiones de disco regulares - para crear un sistema de archivos o un dispositivo de intercambio. LVM fue inicialmente desarrollado por IBM y luego adoptado por la OSF (ahora OpenGroup (http://www.opengroup.org/)), para su sistema operativo OSF/1. La versión OSF fue usada entonces como una base para implementación de LVM en los sistemas operativos HP-UX y Digital UNIX. Otra implementación de LVM está a disposición a través de Veritas (http://www.veritas.com) que funciona de una forma diferente. La implementación de Linux es similar a la implementación de LVM de HP-UX. El concepto de LVM Tradicionalmente, el tamaño de una partición es definido en la instalación del sistema, y no puede ser alterado posteriormente. El cambio de tamaño de particiones estáticas puede realizarse con la aplicación parted. Para ello, es necesario que el administrador haga un planeamiento previo de la cantidad máxima de datos que la partición podrá almacenar en el futuro. Cuando un usuario exceda el espacio de 4. 70 Logical Volumes Capítulo 2. LVM una partición, tendrá que reparticionar (lo que puede involucrar una reinstalación completa del sistema) o utilizar artificios, como enlaces simbólicos. Por ejemplo, suponga que tenemos un disco de 1GB y creamos la partición /home utilizando 600MB. Vamos a imaginar que necesitamos más espacio y descubrimos que precisaremos 1GB en el /home. Utilizando la antigua noción de particiones, precisaremos tener otra unidad con por lo menos 1GB de tamaño. Podremos entonces añadir el disco, crear el nuevo /home y copiar los datos que correspondan. Sin embargo, con una configuración LVM, podemos simplemente agregar un disco de 400MB (o más grande) y añadir dicha unidad de almacenamiento en la partición /home. Otras herramientas permiten cambiar el tamaño a un sistema de archivos existente, o sea, podemos sencillamente poner la nueva dimensión, para tener la ventaja de una partición con mayor tamaño y volver al trabajo. Terminología LVM viene con varias jergas que necesitan entenderse para que no haya problemas con los sistemas de archivos. En esta sección veremos esta terminología que se utiliza en LVM. 71 Capítulo 2. LVM El medio físico Deberá usar la palabra físico con un poco de cuidado. De cualquier forma la entenderemos inicialmente como siendo un simple disco duro, o una partición. Por ejemplo, /dev/hda, /dev/hda2, /dev/sda. Podemos transformar cualquier número consecutivo de bloques de un dispositivo de bloques en un Volumen Físico. Volumen Físico (PV) Un PV5 no es nada más que un medio físico con algunos datos administrativos a él agregados - una vez que hayamos agregado estos datos el LVM los reconocerá como propietarios de las Extensiones Físicas. Extensiones Físicas (PE) Extensiones Físicas6 son como bloques de un sistema de archivos (regiones continuas del disco) realmente grandes, muchas veces con un tamaño que llega a los 5. Physical Volume 6. Physical Extents 72 Capítulo 2. LVM megabytes. Las PEs pueden atribuirse a un Grupo de Volúmenes. Grupo de Volúmenes (VG) Un VG7 está compuesto por un determinado número de Extensiones Físicas. De este Grupo de volúmenes, las PEs pueden atribuirse a un Volumen Lógico. Volumen Lógico (LV) Un Volumen Lógico es el resultado final de nuestro trabajo, y es aquí que se almacena la información. Se trata de un dispositivo de bloque funcionalmente equivalente a una partición. Sobre el Volumen Lógico será creado un sistema de archivos. 7. Volume Group 73 Capítulo 2. LVM Sistema de Archivos El sistema de archivos puede ser: ext2 estándar, ReiserFS, etc... Para el usuario, no hay diferencia entre una partición regular y un Volumen Lógico. A continuación se ponen algunos diagramas que le ayudarán a visualizar estos conceptos. Un Volumen Físico, que contiene Extensiones Físicas. Figura 2-1. Figura 2-1. Volumen Físico Un Grupo de Volúmenes, que contienen dos Volúmenes Físicos (PVs) con seis Extensiones Físicas. Figura 2-2. 74 Capítulo 2. LVM Figura 2-2. Grupo de Volúmenes Ahora podemos expandir este grupo. Figura 2-3. 75 Capítulo 2. LVM Figura 2-3. Grupo de Volúmenes expandido Esto nos muestra dos sistemas de archivos, dividiendo dos discos. El sistema de archivos /home contiene cuatro Extensiones Físicas, el sistema de archivos /var dos. 76 Capítulo 2. LVM Creando un Volumen Lógico Presentaremos aquí un ejemplo comentado que muestra el proceso para la creación de un Volumen Lógico. Utilizaremos dos particiones en un mismo disco para este ejemplo, /dev/hda5 e /dev/hda6 con 2GB y 1GB respectivamente. El uso de LVM tiene más sentido con particiones en discos distintos, aunque aquí, solamente para fines didácticos, lo presentaremos en un solo disco, mientras que estas reglas se aplican a varios discos. Los datos de estas particiones se perderán. Observe las figuras mostradas anteriormente en caso que tenga alguna duda. Primero cambiaremos el tipo de las particiones /dev/hda5 y /dev/hda6 en 0x8e. # fdisk /dev/hda Comando (m para ayuda): p Disco /dev/hda: 255 cabeças, 63 sectores, 784 cilindros Unidades = cilindros de 16065 * 512 bytes Dispositivo Boot /dev/hda1 /dev/hda2 * Inicio Fin Bloques 1 17 136521 Id Sistema 82 Linux swap 18 272 2048287+ 83 Linux /dev/hda3 273 400 1028160 83 Linux /dev/hda4 401 784 3084480 5 Extendida 77 Capítulo 2. LVM /dev/hda5 401 655 2048256 /dev/hda6 656 783 1028128+ /dev/hda7 784 784 8001 83 Linux 83 Linux 82 Linux swap Comando (m para ayuda): t Número de la partición (1-7): 5 Código hexadecimal (teclee L para listar los códigos): 8e El tipo de la partición 5 fue alterado para 8e (Linux LVM) Comando (m para ayuda): p Disco /dev/hda: 255 cabezas, 63 sectores, 784 cilindros Unidades = cilindros de 16065 * 512 bytes Dispositivo Boot /dev/hda1 Fin Bloques Id Sistema 1 17 136521 82 Linux swap 18 272 2048287+ 83 Linux /dev/hda3 273 400 1028160 83 Linux /dev/hda4 401 784 3084480 5 Extendida /dev/hda5 401 655 2048256 8e Linux LVM /dev/hda6 656 783 1028128+ /dev/hda7 784 784 /dev/hda2 78 Inicio * 8001 83 Linux 82 Linux swap Capítulo 2. LVM Comando (m para ayuda): t Número de la partición (1-7): 6 Código hexadecimal (digite L para listar los códigos): 8e El tipo de la partición 6 fue alterado para 8e (Linux LVM) Comando (m para ayuda): p Disco /dev/hda: 255 cabezas, 63 sectores, 784 cilindros Unidades = cilindros de 16065 * 512 bytes Dispositivo Boot /dev/hda1 Inicio Fin Bloques Id Sistema 1 17 136521 82 Linux swap 18 272 2048287+ 83 Linux /dev/hda3 273 400 1028160 83 Linux /dev/hda4 401 784 3084480 5 Extendida /dev/hda5 401 655 2048256 8e Linux LVM /dev/hda6 656 783 1028128+ 8e Linux LVM /dev/hda7 784 784 82 Linux swap /dev/hda2 * 8001 Comando (m para ayuda): w ¡La tabla de particiones fue alterada! 79 Capítulo 2. LVM Llamando ioctl() para volver a leer la tabla de particiones. Sincronizando discos. Si el paquete de LVM no está instalado en su sistema, instálelo con el comando: # rpm -ivh /mnt/cdrom/conectiva/RPMS/lvm* Cargue el módulo de LVM: # insmod lvm-mod Using /lib/modules/2.2.16-17cl/block/lvm-mod.o Para crear el archivo /etc/lvmtab vacío, ejecute el comando: # vgscan vgscan - reading all physical volumens (this may take a while...) vgscan - "/etc/lvmtab" and "/etc/lvmtab.d" successfully created Ahora podemos crear los Volúmenes Físicos utilizando el comando pvcreate partición de esta forma: # pvcreate /dev/hda5 pvcreate - reinitializing physical volume 80 Capítulo 2. LVM pvcreate - physical volume "/dev/hda5" successfully created # pvcreate /dev/hda6 pvcreate - reinitializing physical volume pvcreate - physical volume "/dev/hda6" successfully created Podemos agregar estos dos PVs a un Grupo de Volúmenes llamado test con el comando vgcreate nombre_del_VG partición1 partición2: # vgcreate test /dev/hda5 /dev/hda6 vgcreate - INFO: using default physical extent size 4 MB vgcreate - INFO: maximum logical volume size is 255.99 Gigabyte vgcreate - doing automatic backup of volume group "test" vgcreate - volume group "test" successfully created and activated Para crear el archivo /etc/lvmtab, ejecute el comando: # vgscan vgscan - reading all physical volumes (this may take a while...) vgscan - found active volume group "test" vgscan - "/etc/lvmtab" and "/etc/lvmtab.d" successfully created vgscan - WARNING: you may not have an actual VGDA backup of your volume group 81 Capítulo 2. LVM En caso que los grupos de Volúmenes estén inactivos, utilice el comando vgchange con el parámetro -ay para activar todos los VGs disponibles: # vgchange -ay vgchange - volume group "test" successfully activated Ahora tenemos un Grupo de Volúmenes vacío; vamos a visualizarlo con el comando vgdisplay -verbose nombre_del_VG: # vgdisplay -v test -- Volume group -- 82 VG Name test VG Access read/write VG Status available/resizable VG # 0 MAX LV 256 Cur LV 0 Open LV 0 MAX LV Size 255.99 GB Max PV 256 Cur PV 2 Act PV 2 VG Size 2.93 GB PE Size 4 MB Capítulo 2. LVM Total PE 750 Alloc PE / Size 0 / 0 Free 750 / 2.93 GB PE / Size -- No logical volumes defined in test -- -- Physical volumes -PV Name (#) /dev/hda5 (1) PV Status available / allocatable Total PE / Free PE 500 / 500 PV Name (#) /dev/hda6 (2) PV Status available / allocatable Total PE / Free PE 250 / 250 Podemos observar que no hay Volúmenes Lógicos definidos; debemos crear uno para poder usarlo. También podemos ver con este comando el estado de los PVs, sus nombres y el número total de bloques asignados y disponibles. Vamos a generar un volumen de 500MB llamado lv01 en el Grupo de Volúmenes test: # lvcreate -L 500M -n lv01 test lvcreate - doing automatic backup of "test" 83 Capítulo 2. LVM lvcreate - logical volume "/dev/teste/lv01" successfully created Vamos a crear un sistema de archivos tipo ext2, ahora: # mke2fs /dev/test/lv01 mke2fs 1.19, 13-Jul-2000 for EXT2 FS 0.5b, 95/08/09 Filesystem label= OS type: Linux Block size=1024 (log=0) Fragment size=1024 (log=0) 128016 inodes, 512000 blocks 25600 blocks (5.00%) reserved for the super user First data block=1 63 block groups 8192 blocks per group, 8192 fragments per group 2032 inodes per group Superblock backups stored on blocks: 8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409 Writing inode tables: done Writing superblocks and filesystem accounting information: done Podemos crear un directorio para montar este sistema de archivos y observar su 84 Capítulo 2. LVM tamaño: # mkdir /mnt/lvm # mount /dev/test/lv01 /mnt/lvm # df -h /dev/test/lv01 Filesystem Size /dev/test/lv01 484M Used Avail Use% Mounted on 13k 459M 0% /mnt/lvm Vamos a ver nuevamente el Grupo de Volúmenes y observar los cambios: # vgdisplay -v test -- Volume group -VG Name test VG Access read/write VG Status available/resizable VG # 0 MAX LV 256 Cur LV 1 Open LV 1 MAX LV Size 255.99 GB Max PV 256 Cur PV 2 Act PV 2 85 Capítulo 2. LVM VG Size 2.93 GB PE Size 4 MB Total PE 750 Alloc PE / Size 125 / 500 MB Free 625 / 2.44 GB PE / Size -- Logical volume -LV Name /dev/test/lv01 VG Name test LV Write Access read/write LV Status available LV # 1 # open 1 LV Size 500 MB Current LE 125 Allocated LE 125 Allocation next free Read ahead sectors 120 Block device 58:0 -- Physical volumes -- 86 Capítulo 2. LVM PV Name (#) /dev/hda5 (1) PV Status available / allocatable Total PE / Free PE 500 / 375 PV Name (#) /dev/hda6 (2) PV Status available / allocatable Total PE / Free PE 250 / 250 Tenemos toda la información del VG en la salida de este comando, su nombre, tipo de acceso, estado atual, parámetros de LV y PV y tamaños totales y asignados del PE. El /dev/hda6 está totalmente libre, mientras que el /dev/hda5 está con 125 Extensiones Físicas en uso. Cambiando el tamaño a un Volumen Lógico Examinaremos paso a paso el proceso de cambio de tamaño para tener una visión general de la operación. 87 Capítulo 2. LVM Aumentando un Volumen Lógico El requisito para esta operación es que haya espacio libre en el Grupo de Volúmenes. En el caso contrario tendríamos que agregar más PVs. La línea de comando siguiente hace esta operación: # lvextend -L+2000M /dev/test/lv01 lvextend - extending logical volume "/dev/test/lv01" to 2.44 GB lvextend - doing automatic backup of volume group "test" lvextend - logical volume "/dev/test/lv01" successfully extended Aumentamos con esta operación el Volumen Lógico /dev/test/lv01 en 2000MB. Vea que aún no hemos cambiado el tamaño del sistema de archivos, por lo tanto: # df -h /dev/test/lv01 Filesystem Size /dev/test/lv01 484M Used Avail Use% Mounted on 13k 459M 0% /mnt/lvm La partición presenta aún su tamaño original. Aumentando un sistema de archivos 88 Capítulo 2. LVM Primero vamos a desmontar nuestro sistema de archivos: # umount /mnt/lvm Antes de cambiar el tamaño fuerce la verificación del sistema de archivos con el e2fsck: # e2fsck -f /dev/test/lv01 e2fsck 1.19, 13-Jul-2000 for EXT2 FS 0.5b, 95/08/09 Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/test/lv01: 11/128016 files (0.0% non-contiguous), 16169/512000 blocks Ahora sí podemos cambiar el tamaño del sistema de archivos con la herramienta resize2fs: # resize2fs /dev/test/lv01 resize2fs 1.19 (13-Jul-2000) The filesystem on /dev/test/lv01 is now 2560000 blocks long. 89 Capítulo 2. LVM Podrá también usar el comando resize_reiserfs para cambiar el tamaño de los sistemas de archivos ReiserFS. Ya podemos montar nuevamente el sistema de archivos y verificar su nuevo tamaño: # mount /dev/test/lv01 /mnt/lvm/ [root@toy /root]# df -h /dev/test/lv01 Filesystem Size /dev/test/lv01 2.4G Used Avail Use% Mounted on 13k 2.2G 0% /mnt/lvm Disminuyendo un sistema de archivos Vamos ahora a disminuir el sistema de archivos, para que después podamos disminuir también el Volumen Lógico. Primero desmonte el sistema de archivos: # umount /mnt/lvm/ Fuerce la verificación del sistema de archivos con el comando: 90 Capítulo 2. LVM # e2fsck -f /dev/test/lv01 e2fsck 1.19, 13-Jul-2000 for EXT2 FS 0.5b, 95/08/09 Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/test/lv01: 11/636016 files (9.1% non-contiguous), 80274/2560000 blocks Cambie el tamaño del sistema de archivos para 500 mil bloques (500MB aproximadamente); por ejemplo: # resize2fs /dev/test/lv01 500000 resize2fs 1.19 (13-Jul-2000) The filesystem on /dev/test/lv01 is now 500000 blocks long. Disminuyendo un Volumen Lógico De forma similar al comando que fue usado para aumentar el Volumen Lógico, ahora no obstante con un valor negativo, podemos disminuirlo: 91 Capítulo 2. LVM # lvreduce -L-2000M /dev/test/lv01 lvreduce - WARNING: reducing active logical volume to 500 MB lvreduce - THIS MAY DESTROY YOUR DATA (filesystem etc.) lvreduce - do you really want to reduce "/dev/test/lv01"? [y/n]: y lvreduce - doing automatic backup of volume group "test" lvreduce - logical volume "/dev/test/lv01" successfully reduced Podemos también especificar un valor absoluto en bloques , -L50 por ejemplo. Forzamos la verificación del sistema de archivos nuevamente: # e2fsck -f /dev/test/lv01 e2fsck 1.19, 13-Jul-2000 for EXT2 FS 0.5b, 95/08/09 Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/test/lv01: 11/123952 files (9.1% non-contiguous), 15657/499713 blocks Cambiamos nuevamente el tamaño del sistema de archivos para aprovechar al máximo el tamaño del Volumen Lógico: # resize2fs /dev/test/lv01 92 Capítulo 2. LVM resize2fs 1.19 (13-Jul-2000) The filesystem on /dev/test/lv01 is now 512000 blocks long. Montamos otra vez el sistema de archivos y observamos su tamaño reducido: # mount /dev/test/lv01 /mnt/lvm/ # df -h /dev/test/lv01 Filesystem Size /dev/test/lv01 484M Used Avail Use% Mounted on 13k 469M 0% /mnt/lvm Obtenemos un valor un poco distinto de los 500MB originales, por el hecho que 500 mil bloques no corresponden exactamente a 500MB. Si fuera necesario tener un valor exacto, tendríamos que hacer el cálculo con más precisión y especificar los valores precisos en número de bloques. Redundancia y rendimiento Por una cuestión de rendimiento, es posible distribuir datos en discos múltiples. Esto significa que el bloque 1 está en el Volumen Físico A, y el bloque 2 está en el PV B, mientras que el bloque 3 puede estar en el PV A nuevamente. Podemos 93 Capítulo 2. LVM también hacer stripes con más de dos discos. Esa agrupación deja disponible un ancho de banda más amplio, debido al aumento de "paralelismo" en el acceso a los datos. Además de agregar rendimiento, es también posible tener los datos copiados en discos múltiples. Esto se llama copia en espejo. Actualmente el LVM no tiene soporte nativo, pero hay varias maneras de realizar esta operación. Ventajas de una stripe El rendimiento de disco está influenciado por lo menos por tres factores. El más obvio es la velocidad en que se puede leer o escribir en secuencia cada dato en el disco. Éste es el factor que limita cuando se está leyendo o grabando un archivo grande en un bus SCSI/IDE solamente con un disco. Ancho de banda disponible para el disco. Si tenemos siete discos en una interfaz SCSI, el límite de banda puede causar un impacto más grande que la velocidad de escritura para el propio disco. Con un presupuesto suficiente, podemos prevenirnos y evitar que este estrechamiento se convierta en un problema. La latencia es siempre un problema y para reducirla no podemos simplemente aumentar los costos para lograr una latencia menor. La mayoría de los discos aparentemente tienen una latencia cercana a los siete milisegundos. Existe la latencia de SCSI, que tiende a ser algo próximo a los 25 milisegundos. ¿Qué significa esto? La latencia combinada en un caso típico será alrededor de 30 milisegundos. Podemos entonces efectuar, aproximadamente, solamente 33 ope- 94 Capítulo 2. LVM raciones en disco por segundo. Si queremos capacidad para hacer varias centenas de solicitudes por segundo, y no tenemos un cache muy grande, no podremos realizar esta tarea. Si tenemos discos múltiples trabajando en paralelo, podemos tener comandos múltiples en ejecución simultánea, que fácilmente solucionarán el problema de la latencia. Algunas aplicaciones, como un servidor de noticias muy grande, no van a funcionar sin striping u otras técnicas ágiles de ES8. Es esto lo que puede hacer el striping. Si el bus tiene este soporte, cada lectura o cada escritura en secuencia podrá ser más rápida. Desventajas El striping sin medidas adicionales aumenta las posibilidades de fallas, desde el punto de vista de los bits. Si falla algo en los discos, todo el Volumen Lógico fallará también. Si concatenamos datos, sólo una parte del sistema de archivos se perderá. En último caso, podemos utilizar copias en espejo con stripes. 8. IO 95 Capítulo 2. LVM Striping nativo del LVM La configuración que especifica las stripes se hace cuando creamos el Volumen Lógico con el comando lvcreate. Hay dos parámetros que se destacan. Con el -i le decimos al LVM cuántos Volúmenes Físicos se usarán. En realidad el striping no se hace en una base bit-a-bit, sino en bloques. Con -I podemos especificar la "granulosidad" en kilobytes. Note que este valor debe ser una potencia de 2 (con exponente de 1 a 7) y que el mayor valor de granulosidad posible es 128KB. Por ejemplo: # lvcreate -n slv01 -i 2 -I 64 test -L 200M lvcreate - doing automatic backup of "test" lvcreate - logical volume "/dev/test/slv01" successfully created Creando el sistema de archivos: # mke2fs /dev/test/slv01 mke2fs 1.19, 13-Jul-2000 for EXT2 FS 0.5b, 95/08/09 Filesystem label= OS type: Linux Block size=1024 (log=0) Fragment size=1024 (log=0) 51200 inodes, 204800 blocks 10240 blocks (5.00%) reserved for the super user First data block=1 96 Capítulo 2. LVM 25 block groups 8192 blocks per group, 8192 fragments per group 2048 inodes per group Superblock backups stored on blocks: 8193, 24577, 40961, 57345, 73729 Writing inode tables: done Writing superblocks and filesystem accounting information: done Efectuamos el montaje y verificamos el tamaño: # mount /dev/test/slv01 /mnt/lvm/ # df -h /dev/test/slv01 Filesystem Size /dev/test/slv01 194M Used Avail Use% Mounted on 13k 184M 0% /mnt/lvm Noticias de rendimiento La ganancia de rendimiento podrá ser muy negativa si colocamos más de una partición del mismo disco en una stripe - esto debe evitarse. El striping con dos discos en una única interfaz IDE también se hace inviable - eso dependerá de si la tecnología IDE resuelve este problema. 97 Capítulo 2. LVM Placas madre antiguas pueden tener dos interfaces IDE, pero el uso de la segunda puede ser catastrófico, si se dedica a servir una unidad de CDROM lenta. Podemos efectuar benchmarks con varias herramientas; la más notable se llama Bonnie++, y puede encontrarse en (http://www.coker.com.au/bonnie++/), se puede usar para medir la eficiencia de los datos. 98 Capítulo 3. RAID RAID es el acrónimo para Redundant Array of Inexpensive Disks1. Esta agrupación se usa como un medio para crear un subsistema de unidad de disco, rápido y confiable, a través de discos individuales. A pesar de haber sido creado para mejorar la fiabilidad del sistema, mediante redundancia añadida, puede también llevar a una falsa sensación de seguridad y confianza si se usa incorrectamente. Esta falsa confianza puede originar grandes desastres. Particularmente, se usa RAID para proteger fallas en el disco, no para proteger fallas de energía o errores del operador. Las fallas de energía, bugs en el desarrollo del núcleo o errores de administradores y operadores pueden dañar los datos de una forma irrecuperable. RAID no es un sustituto apropiado como copia de seguridad del sistema. Sepa lo que está haciendo, haga pruebas, sea conocedor y consciente de todos los detalles presentes en la implementación de RAID. RAID permite que el computador gane en rendimiento con operaciones de acceso al disco y, al mismo tiempo, rápida recuperación en caso de pérdida de algún disco. El tipo más común de agrupación de unidades es un sistema de disco duro, configuradas para que el sistema operativo trabaje como si tan sólo hubiese un disco instalado en el computador. 1. Agrupación redundante de discos independientes 99 Capítulo 3. RAID RAID vía hardware y vía software RAID se puede implementar vía hardware, por medio de controladoras especiales de disco o por software, como un módulo del núcleo que está dividido entre la controladora de disco, a bajo nivel, y el sistema de archivos por encima de él. RAID vía hardware RAID por hardware es siempre una controladora de disco, o sea, un dispositivo que puede conectar mediante un cable, los discos. Generalmente viene en forma de tarjeta adaptadora que se puede colocar en un slot ISA/EISA/PCI/SBus/MicroChannel. Sin embargo, algunas controladoras RAID vienen en forma de caja, que se conecta a través de un cable entre el sistema controlador de disco y los dispositivos de disco. RAIDs pequeños pueden ajustarse en los espacios para disco del propio computador; otros mayores se pueden colocar en un gabinete de almacenamiento con su propio espacio para disco y suministro de energía. El hardware más reciente de RAID, usado con la más reciente y rápida CPU, suministrará generalmente el mejor rendimiento total, aunque su precio es significativo. Esto sucede porque la mayoría de las controladoras RAID vienen con procesadores especializados en la tarjeta y memoria cache que puede eliminar una cantidad considerable de procesos en la CPU. Las controladoras RAID pueden también suministrar altas tasas de transferencia a través del cache de la controladora. 100 Capítulo 3. RAID Un hardware de RAID antiguo puede actuar como un desacelerador, cuando se usa con una CPU más nueva: DSP2 y caché antiguos pueden actuar como un embudo, y este rendimiento puede ser frecuentemente superado por un RAID de software puro. El RAID por hardware generalmente no es compatible entre diferentes tipos, fabricantes y modelos: si una controladora RAID falla, es mejor cambiarla por otra controladora del mismo tipo. Para poder usar una controladora de RAID vía hardware en Linux, ésta necesita contar con utilidades de configuración y administración, hechos para este sistema operativo y proporcionados por el fabricante de la controladora. DPT Es posible configurar RAID vía hardware SCSI, contando con soporte en Linux y documentación de una forma general, a través de adaptadores basados en host de la DPT. La información para la instalación y configuración se puede obtener en el sitio web DPT-RAID (http://www.ram.org/computing/linux/dpt_raid.html). Controladoras soportadas Una controladora de RAID vía hardware basada en host y bien soportada es, una controladora con un driver para Linux, fabricada por DPT (http://www.dpt.com). 2. Digital Signal Processor 101 Capítulo 3. RAID Sin embargo, existen otras controladoras basadas en host y SCSI que pueden funcionar en Linux. Esto incluye algunas controladoras fabricadas por Syred (http://www.syred.com), ICP-Vortex ICP-Vortex (http://www.icp-vortex.com) y BusLogic (http://www.mylex.com). Para más información sobre este tema, vea la página web Soluciones de RAID para Linux (http://linas.org/linux/raid.html). Controladoras DPT Entre las controladoras DPT, esencialmente, todas las controladoras SmartRAID IV están soportadas. Controladoras ICP Vortex ICP Vortex tiene una línea completa de controladoras de agrupaciones de discos con soporte a Linux. El driver ICP está en el núcleo de Linux desde la versión 2.0.31. Todas las distribuciones principales de Linux tienen soporte a las controladoras ICP, como controladoras para boot e instalación. El sistema RAID se puede configurar fácilmente con su propio ROMSETUP, o sea, no es necesario utilizar otros sistemas operativos para hacer la configuración. Con la utilidad de control GDTMON, es posible administrar por completo el sistema RAID ICP durante la operación. Es posible también verificar tasas de transferencia, configurar los parámetros de la controladora y de los discos duros, sustituir discos defectuosos, etc. Actualmente están disponibles varios modelos, para los más variados niveles de RAID que se utilicen. 102 Capítulo 3. RAID Tipos de hardware Tipo controladora Al tener varias opciones de controladoras, es necesario pensar cuidadosamente sobre lo que se quiere hacer. Dependiendo de ello y del nivel de RAID que se vaya a usar, algunas controladoras pueden ser mejores que otras. Adaptadores SCSI a SCSI pueden no ser tan buenos como adaptadores basados en host, por ejemplo. Michael Neuffer <[email protected]>, el autor del driver EATA-DMA, tiene una buena discusión sobre este tema en su página: Linux High Performance SCSI and RAID (http://www.uni-mainz.de/~neuffer/scsi/). Tipo encapsulado El tipo encapsulado está vinculado directamente a la habilidad de intercambio “sobre la marcha” de la unidad y a los sistemas de advertencia, o sea, muestra la indicación de la falla, falla de la unidad y qué tipo de tratamiento recibirá su unidad. Un ejemplo para esto puede ser la refrigeración redundante y el abastecimiento de energía. Los encapsulamientos suministrados por la DPT, HP, IBM y Compaq trabajan muy bien, aunque su costo es muy alto. 103 Capítulo 3. RAID RAID vía software RAID vía software es una configuración de módulos del núcleo, juntamente con utilidades de administración que implementan RAID puramente por software, y no requiere un hardware extraordinario. Se puede utilizar el sistema de archivos ext2fs, DOS-FAT u otro. Este tipo de RAID se implementa a través de los módulos MD3 del núcleo de Linux y de las herramientas relacionadas. RAID por software, por tener su naturaleza en el software, tiende a ser mucho más flexible que una solución por hardware. El lado negativo es que en general requiere más ciclos y potencia de CPU para funcionar bien, cuando se compara a un sistema de hardware. Presenta una importante característica: trabaja sobre cualquier dispositivo del bloque, pudiendo ser un disco entero (por ejemplo, /dev/sda), una partición cualquiera (por ejemplo, /dev/hdb1), un dispositivo de loopback (por ejemplo, /dev/loop0) o cualquier otro dispositivo de bloque compatible, para crear un único dispositivo RAID. Esto es un contraste para la mayoría de las soluciones de RAID vía hardware, donde cada grupo agrupa unidades de disco enteras. Comparando las dos soluciones, el RAID vía hardware es transparente para el sistema operativo, y esto tiende a simplificar la administración. Vía software, hay muchas más opciones de configuración, haciendo con que el asunto se vuelva más complejo. 3. 104 Multiple Devices Capítulo 3. RAID El controlador de múltiples dispositivos (MD) Se usa el controlador MD para agrupar una colección de dispositivos de bloque, en un único y gran dispositivo de bloque. Normalmente, un conjunto de dispositivos SCSI y IDE se configuran en un único dispositivo MD. Como se encuentra en el núcleo de Linux 2.x, esto se hace a través de dos modos diferentes: Lineal (modo de concatenación) y striping (modo RAID-0). Las extensiones del controlador MD implementan RAID-0 (striping), RAID-1 (replicando4), RAID-4 y RAID-5 por software. Esto quiere decir que, con MD, no es necesario hardware especial o controladoras de disco para obtener la mayoría de los beneficios de RAID. La administración de RAID en Linux no es una tarea trivial, y está más volcada hacia administradores de sistema con experiencia. La teoría de la operación es compleja. Las herramientas del sistema exigen modificaciones en los scripts de arranque, y recuperarse de una falla en el disco no es una tarea simple, pues es factible de errores humanos. RAID no es para inexpertos, y cualquier ventaja en búsqueda de confiabilidad y rendimiento puede ser fácilmente acrecida de complejidad extra. Seguramente, unidades de disco actualizadas son muy confiables, y controladoras y CPUs avanzadas son muy potentes. Se pueden obtener más fácilmente los niveles de confiabilidad y rendimiento deseados, comprando hardware de alta calidad y potencia. 4. mirroring 105 Capítulo 3. RAID Imposible usar RAID vía software con sistema de archivos journalled, pues Linux 2.2 no posee ningún mecanismo para pinning de buffers que están en la memoria. Niveles de RAID Las distintas maneras de combinar los discos en uno sólo, llamados de niveles de RAID5, pueden suministrar una gran eficacia de almacenamiento o sencillamente simetría, o pueden alterar el rendimiento de tiempo de acceso (latencia). Incluso pueden suministrar el rendimiento de la tasa de transferencia de datos para lectura y para escritura, mientras continúa manteniendo la redundancia. Un vez más, esto es ideal para prevenir fallas. Los distintos niveles de RAID presentan distintos rendimientos, redundancia, capacidad de almacenamiento, confiabilidad y características de costo. La mayoría, aunque no todos los niveles de RAID, ofrecen redundancia a falla de disco. De los que ofrecen redundancia, RAID-1 y RAID-5 son los más populares. RAID-1 ofrece mejor rendimiento, mientras que RAID-5 proporciona un uso más eficaz 5. 106 RAID levels Capítulo 3. RAID del espacio disponible para el almacenamiento de los datos. De cualquier modo, el ajuste de rendimiento es un asunto totalmente distinto. El rendimiento depende de una gran variedad de factores como el tipo de aplicación, tamaños de los discos, bloques y archivos. Existe una variedad de tipos diferentes e implementaciones de RAID, cada una con sus ventajas y desventajas. Por ejemplo, para poner una copia de los mismos datos en dos discos (llamado de duplicación de disco6 o RAID nivel 1), podemos agregar rendimiento de lectura, leyendo alternadamente cada disco de la réplica. Promedialmente, cada disco se usa menos, pues se utiliza solamente en la mitad de la lectura (para dos discos), o un tercio (para 3 discos), etc.. Además, una réplica puede mejorar la confiabilidad: si un disco falla, el(los) otro(s) disco(s) tienen una copia de datos. A continuación se describen los distintos niveles de RAID, en el contexto de implementación de RAID por software en Linux: RAID-lineal Es una simple concatenación de particiones para crear una gran partición virtual. Esto es posible si hay varias unidades pequeñas, y se quiere crear una única y gran partición. Esta concatenación no ofrece redundancia, y de hecho disminuye la confiabilidad total: si cualquier disco falla, la partición combinada fallará. 6. disk mirroring 107 Capítulo 3. RAID RAID-0 La gran mayoría de los niveles de RAID involucra una técnica de almacenamiento llamada de segmentación de datos (data stripping). La implantación más básica de esa técnica se conoce como RAID-0 y es soportada por muchos fabricantes. Sin embargo, por el hecho que este nivel de agrupación no es tolerante a fallas, RAID-O no es verdaderamente RAID, al menos que se use en conjunto con otros niveles de RAID. Figura 3-1. RAID-0 Segmentación (stripping) es un método de registro de datos sobre el medio físico de una agrupación, que sirve para crear un gran dispositivo de almacenamiento. Los datos son subdivididos en segmentos consecutivos o stripes, escritos en orden o a través de cada uno de los discos de una agrupación. Cada segmento tiene un tamaño definido en bloques. 108 Capítulo 3. RAID Por ejemplo, sabiendo que el tamaño de cada segmento está definido en 64 kbytes, y la agrupación de discos contiene 2 discos, cuando se graba un archivo de 128 kbytes, los primeros 64 kbytes se grabarán en el primer disco, los últimos 64 kbytes irán para el segundo disco, y como normalmente eso se hace en paralelo, aumenta considerablemente el rendimiento. Una agrupación de ese tipo puede brindar un rendimiento mejor, cuando se compara a un disco individual, si se ajusta el tamaño de cada segmento de acuerdo con la aplicación que utilizará la agrupación: • En un ambiente con uso intensivo de E/S o en un ambiente de base de datos donde múltiples solicitudes competentes son hechas para pequeños registros de datos, tiene preferencia un segmento de tamaño grande. Si el tamaño de segmento para un disco es grande o suficiente para contener un registro entero, los discos de la agrupación pueden responder independientemente a las solicitudes simultáneas de datos. • En un ambiente donde se almacenan grandes registros de datos, segmentos de pequeño tamaño son más apropiados. Si un determinado registro de datos se extiende a través de varios discos de la agrupación, se puede leer el contenido del registro paralelamente, aumentando el rendimiento total del sistema. 109 Capítulo 3. RAID Figura 3-2. Stripping Agrupaciones RAID-0 pueden ofrecer alto rendimiento de escritura si se les compara a verdaderos niveles de RAID pues no presentan sobrecarga7 asociada con cálculos de paridad o con técnicas de recuperación de datos. Esta misma falta de previsión para reconstrucción de datos perdidos indica que ese tipo de agrupación debe ser restricto al almacenamiento de datos no críticos y combinado con eficientes programas que hacen copia de seguridad. 7. 110 overhead Capítulo 3. RAID RAID-1 La forma más sencilla de agrupación tolerante a fallas es el RAID-1. Basado en el concepto de duplicación (mirroring), esta agrupación consiste en varios grupos de datos almacenados en 2 ó más dispositivos. A pesar de que muchas implementaciones de RAID-1 involucran dos grupos de datos (de ahí el término réplica mirror), se pueden crear tres o más grupos si se desea una alta confiabilidad. Si ocurre una falla en un disco de una agrupación RAID-1, lecturas y grabaciones subsecuentes son direccionadas a el(los) disco(s) aún en operación. Los datos entonces son reconstruidos en un disco de reposición (spare disk) usando datos del (de los) disco(s) supervivientes. El proceso de reconstrucción de la réplica tiene algún impacto sobre el rendimiento de E/S de la réplica, pues todos los datos deberán ser leídos y copiados del (de los) disco(s) intacto(s) para el disco de reposición (spare disk). Figura 3-3. RAID-1 111 Capítulo 3. RAID RAID-1 ofrece alta disponibilidad de datos, porque como mínimo se almacenan 2 grupos completos. Conectando los discos primarios y los discos duplicados en controladoras separadas, se puede aumentar la tolerancia a fallas por la eliminación de la controladora como punto único de falla. Entre los no híbridos, este nivel tiene el mayor costo de almacenamiento porque requiere capacidad suficiente para almacenar como mínimo 2 grupos de datos. Éste está mejor adaptado para servir pequeñas bases de datos o sistemas de pequeña escala que necesiten confiabilidad. RAID-2 y RAID-3 Raramente se usan, y en algún momento quedaron obsoletos por las nuevas tecnologías de disco. RAID-2 es similar al RAID-4, pero almacena información ECC (error correcting code), que es la información de control de errores, en lugar de la paridad. Esto ofreció una pequeña protección adicional, visto que todas las unidades de disco más nuevas incorporaron ECC internamente. 112 Capítulo 3. RAID Figura 3-4. RAID-2 RAID-2 puede ofrecer más consistencia de los datos si ocurre un corte de energía durante la escritura. Baterías de seguridad y apagar correctamente el computador, pueden ofrecer los mismos beneficios. RAID-3 es semejante al RAID-4, excepto que usa el menor tamaño posible para la stripe. Como resultado, cualquier pedido de lectura invocará todos los discos, haciendo las solicitudes de sobreposición de E/S difíciles o imposibles. Para evitar el retraso debido a la latencia rotatoria, el RAID-3 exige que todos los ejes de las unidades de disco estén sincronizados. La mayoría de las unidades de disco más recientes no poseen la habilidad de sincronización del eje, o si son capaces de esto, faltan conectores necesarios, cables y documentación del fabricante. Ni RAID-2 ni RAID-3 son soportados por los drivers de RAID por software en Linux. 113 Capítulo 3. RAID Figura 3-5. RAID-3 RAID-4 Éste es un tipo de agrupación segmentado, pero incorpora un método de protección de datos más práctico. Él usa informaciones sobre paridad para la recuperación de datos y los almacena en disco dedicado. Los demás discos, usados para datos, se configuran para usar grandes (tamaño medido en bloques) segmentos de datos, suficientemente grandes para alojar un registro entero. Esto permite lecturas independientes de la información almacenada, haciendo de RAID-4 una agrupación perfectamente ajustada para ambientes transaccionales que requieren muchas lecturas pequeñas y simultáneas. 114 Capítulo 3. RAID Agrupaciones RAID-4 y otras agrupaciones que utilizan paridad hacen uso de un proceso de recuperación de datos más amplia que agrupaciones duplicadas, como RAID-1. La función o exclusivo (XOR) de los datos e informaciones sobre paridad de los discos restantes se computa para reconstruir los datos del disco que falló. Por el hecho de que todos los datos sobre paridad se escriban en un único disco, ese disco funciona como un embudo durante las operaciones de escritura, reduciendo el rendimiento durante estas operaciones (write bottleneck). Figura 3-6. RAID-4 Siempre que se escriben los datos en la agrupación, normalmente se lee información sobre paridad y ella siempre se debe escribir para el disco de paridad antes de realizar la próxima solicitud de escritura. En consecuencia de estas dos operaciones de E/S, el disco de paridad es el factor limitativo del rendimiento total de la agrupación. Por requerir solamente un disco adicional para protección de 115 Capítulo 3. RAID datos, las agrupaciones RAID-4 son más baratas que las agrupaciones RAID-1. RAID-5 Este tipo de RAID es muy usado, funciona en forma similar al RAID 4, pero supera algunos de los problemas más comunes sufridos por dicho tipo. La información sobre paridad para los datos de la agrupación son distribuidas a lo largo de todos los discos de la agrupación, en lugar de almacenarlas en un disco dedicado. Esa idea de paridad distribuida reduce el embudo de escritura (write bottleneck) que era el único disco de un RAID-4, porque ahora las escrituras simultáneas ni siempre requieren acceso a la información sobre paridad en un disco dedicado. Sin embargo, el rendimiento de la escritura general aún sufre en consecuencia del procesamiento adicional causado por la lectura, recálculo y actualización de la información sobre paridad. 116 Capítulo 3. RAID Figura 3-7. RAID-5 Para aumentar el rendimiento de lectura de una agrupación RAID-5, se puede optimizar el tamaño de cada segmento en que los datos están divididos para la aplicación que esté usando la agrupación. El rendimiento general de una agrupación RAID-5 es equivalente al de una RAID-4, excepto en el caso de lecturas secuenciales, que reducen la eficacia de los algoritmos de lectura en consecuencia de la distribución de la información sobre paridad. Como en otras agrupaciones basadas en paridad, la recuperación de datos en una agrupación RAID-5 se hace calculando la función XOR de las informaciones de los discos restantes de la agrupación. En razón de que la información sobre paridad se distribuye a lo largo de todos los discos, la pérdida de cualquier disco reduce la disponibilidad de ambos datos e información sobre paridad, hasta la recuperación del disco que ha fallado. Esto puede causar degradación del rendimiento 117 Capítulo 3. RAID de lectura y de escritura. Tipos híbridos Para suplir las deficiencias de un nivel u otro de RAID, es posible usar un nivel de RAID sobre otro, aprovechando por ejemplo, el excelente rendimiento de un determinado nivel y la confiabilidad de otro. Todo esto, obviamente, pagándose el precio de una mayor cantidad de material. Un ejemplo es el RAID-10. Como ya dice su nombre, es la combinación de discos duplicados (RAID-1) con la segmentación de datos (data stripping) (RAID-0). El método de creación de una agrupación RAID-10 es diversificado. En una implementación RAID-0+1, los datos son segmentados a través de grupos de discos duplicados, o sea, los datos primero son segmentados y para cada segmento se hace una réplica. Ya en un RAID-1+0, los datos son primeramente duplicados, y para cada réplica existe una segmentación sobre varios discos. RAID-10 ofrece las ventajas de la transferencia de datos rápida de una agrupación duplicada, y las características de accesibilidad de las agrupaciones duplicadas. El rendimiento del sistema durante la reconstrucción de un disco es mejor que en las agrupaciones basadas en paridad, pues los datos son solamente copiados del dispositivo superviviente. RAID-50 es una agrupación híbrida que usa las técnicas de RAID con paridad en conjunción con la segmentación de datos. Una agrupación RAID-50, es esen- 118 Capítulo 3. RAID cialmente una agrupación con la información segmentada a través de dos o más agrupaciones RAID-5. Dependiendo del tamaño de cada segmento establecido durante la configuración de la agrupación, estas agrupaciones híbridas pueden brindar los beneficios de acceso paralelo de las agrupaciones con paridad (alta velocidad en la transferencia de datos) o de acceso independiente de las agrupaciones con paridad (gran cantidad). Como en otras agrupaciones RAID con paridad, la reconstrucción de un disco fallado genera un impacto en el rendimiento del programa usando la agrupación. Rendimiento de RAID Utilizando RAID por software (MD), la posibilidad de aumentar la velocidad y evaluar el rendimiento depende mucho de la configuración que se está usando. Para ello, en esta sección, se hace un análisis de algunas de estas configuraciones. Rendimiento en el MD RAID-0 y en el MD RAID-lineal 119 Capítulo 3. RAID Si se carga el sistema con muchas operaciones de E/S (entrada y salida), estadísticamente, algunas operaciones van para un disco, y algunas para los demás discos. Así, el rendimiento va a mejorar en un único disco grande. La mejora real depende mucho de los datos reales, del tamaño de las bandas, y de otros factores. En un sistema con una baja utilización de E/S, el rendimiento es igual al de un único disco. Rendimiento de lectura en el MD RAID-1 El MD implementa balanceo de lectura, es decir, el código RAID-1 va a alternar entre cada uno (dos o más) de los discos en la réplica, haciendo lecturas alternadas para cada uno. En una situación de baja E/S, esto no podrá alterar el rendimiento total: será necesario esperar por un disco para completar la lectura. Sin embargo, con dos discos en un ambiente de alta E/S, esto podría aumentar dos veces el rendimiento de lectura, desde que se puedan emitir las lecturas para cada uno de los discos en paralelo. Para N discos en la réplica, la mejoría del rendimiento puede ser de 2N. 120 Capítulo 3. RAID Rendimiento de escritura en el MD RAID-1 Es recomendable esperar que ocurra la escritura para todos los discos en la réplica. Esto porque se debe escribir una copia de los datos para cada uno de los discos de réplica. Así, el rendimiento será aproximadamente igual al rendimiento de escritura para un único disco. Rendimiento de lectura en el MD RAID-4/5 Estadísticamente, un bloque puede estar en cualquier unidad de disco, y así el rendimiento de lectura del RAID-4/5 es semejante con el del RAID-0. Esto va a depender de los datos, del tamaño de la banda y de la aplicación. No será tan bueno como el rendimiento de lectura de una agrupación duplicada. Rendimiento de escritura en el MD RAID-4/5 En general será considerablemente más lento que el rendimiento para un único 121 Capítulo 3. RAID disco. Esto porque se debe escribir la paridad en un disco, así como los datos en otro. Sin embargo, para procesar la nueva paridad, es necesario leer primeramente la paridad y los datos antiguos. Se deben comparar todos los datos antiguos, los nuevos datos y la paridad antigua al mismo tiempo, a través de la operación lógica XOR, para determinar la nueva paridad: esto requiere considerables ciclos de CPU además de los numerosos accesos al disco. Comparación de los niveles de RAID Podemos hacer una comparación entre los varios niveles de RAID, de acuerdo con el rendimiento (lectura, grabación y reconstrucción), disponibilidad de datos y el número mínimo de unidades requeridas. Observe en la tabla la descripción de estos atributos para comparar los niveles de RAID. Tabla 3-1. Atributos de comparación de los varios niveles de RAID Nivel de RAID RAID 0 122 Disponibili- Rendimiento Rendimiento Rendimiento Número dad de los de lectura de grabación de recons- mínimo de datos trucción unidades requeridas Ninguna Muy bueno Muy bueno No N disponible Capítulo 3. RAID RAID 1 RAID 4 Excelente Buena Muy bueno Bueno Bueno E/S E/S Satisfactoria secuencial: secuencial: buena E/S muy buena transacE/S transaccional: buena cional: mala 2N N + 1 (N como mínimo 2) RAID 5 Buena Satisfactoria Mala (a menos que se use el cache write-back) N + 1 (N por lo menos 2) RAID 10 Excelente E/S secuencial: buena E/S transaccional: muy buena Muy buena Satisfactoria Buena 2N RAID 50 Excelente Muy buena Satisfactoria Satisfactoria N+2 El número N es el requisito de espacio para almacenamiento de datos del nivel de RAID. Ejemplo: si el requisito mínimo es tener 6GB de espacio para una agrupación RAID-5, se debe entonces tener al menos 2 discos de 3GB cada uno y otro disco de 3GB, siendo 6GB (2 discos) + 3GB (1 disco). 123 Capítulo 3. RAID Configuración de RAID Antes de configurar cualquier nivel de RAID, siga estos procedimientos: • Instale las herramientas para RAID: # rpm -ivh raidtools* raidtools ############################## # • Observe el contenido del archivo /proc/mdstat: # cat /proc/mdstat Personalities : read_ahead not set unused devices: <none> # Este archivo se verificará siempre para inspeccionar la configuración de RAID. Observe que ningún dispositivo de RAID está actualmente activo. • Cree las particiones que desea incluir en la configuración de RAID, por ejemplo: # fdisk /dev/hda Comando (teclee m para obtener ayuda): n 124 Capítulo 3. RAID • El próximo paso dependerá del nivel de RAID que se eligió; veremos a continuación cada una de estas configuraciones. Modo lineal Si hay dos o más particiones que no son necesariamente del mismo tamaño. Se podrá concatenar una con la otra. Cree el archivo /etc/raidtab para describir su configuración. Una raidtab para dos discos en modo lineal, tendrá una apariencia semejante a ésta: raiddev /dev/md0 raid-level lineal nr-raid-disks 2 chunk-size 32 persistent-superblock 1 device /dev/hda6 raid-disk 0 device /dev/hda7 raid-disk 1 125 Capítulo 3. RAID En los ejemplos utilizaremos dos o tres particiones de aproximadamente 1GB, siendo ellas hda5, hda6 y hda7, dependiendo de la configuración de RAID. No se soportan discos de reserva aquí. Si un disco falla, la agrupación va a fallar juntamente con él. No hay información que pueda ponerse en un disco de reserva. Para crear la agrupación ejecute el comando: # mkraid /dev/md0 handling MD device /dev/md0 analyzing super-block disk 0: /dev/hda6, 1028128kB, raid superblock at 1028032kB disk 1: /dev/hda7, 1028128kB, raid superblock at 1028032kB # Esto va a iniciar la agrupación, escribir los bloques persistentes y dejar lista para el uso. Verificando el archivo /proc/mdstat será posible ver que la agrupación está funcionando: # cat /proc/mdstat Personalities : [linear] read_ahead 1024 sectors md0 : active linear hda7[1] hda6[0] 2056064 blocks 32k rounding unused devices: <none> # Ahora ya es posible crear un sistema de archivos, como si fuera en un dispositivo 126 Capítulo 3. RAID normal: # mke2fs /dev/md0 mke2fs 1.18, 11-Nov-1999 for EXT2 FS 0.5b, 95/08/09 Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) 257024 inodes, 514016 blocks 25700 blocks (5.00%) reserved for the super user First data block=0 16 block groups 32768 blocks per group, 32768 fragments per group 16064 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912 Writing inode tables: done Writing superblocks and filesystem accounting information: done Crear un punto de montaje y montar el dispositivo: # mkdir /mnt/md0 127 Capítulo 3. RAID # mount /dev/md0 /mnt/md0 # df Filesystem 1k-blocks Used Available Use% Mounted on /dev/md0 2023760 20 1920940 0% /mnt/md0 # Observe que el tamaño total es de aproximadamente 2GB, por haber hecho una concatenación de dos unidades, cada una con aproximadamente 1GB. RAID-0 Teniendo dos o más dispositivos aproximadamente del mismo tamaño, es posible combinar sus capacidades de almacenamiento, así como su rendimiento, a través del acceso en paralelo. Modifique o cree el archivo /etc/raidtab para describir su configuración. Observe el ejemplo: raiddev /dev/md0 raid-level 0 nr-raid-disks 2 persistent-superblock 1 chunk-size 4 device /dev/hda6 128 Capítulo 3. RAID raid-disk 0 device /dev/hda7 raid-disk 1 Como en el modo lineal no hay soporte para discos reservas. RAID-0 no ofrece redundancia: si un disco falla todo el conjunto va a fallar. Si ya existe un dispositivo de RAID, ejecute el comando para interrumpirlo y forzar la construcción. Cree el dispositivo de RAID a través de los comandos: # raidstop /dev/md0 # mkraid -force /dev/md0 DESTROYING the contents of /dev/md0 in 5 seconds, Ctrl-C if unsure! handling MD device /dev/md0 analyzing super-block disk 0: /dev/hda6, 1028128kB, raid superblock at 1028032kB disk 1: /dev/hda7, 1028128kB, raid superblock at 1028032kB # Esto iniciará los superbloques y el dispositivo raid. Observando el archivo /proc/mdstat tenemos: # cat /proc/mdstat Personalities : [raid0] read_ahead 1024 sectors 129 Capítulo 3. RAID md0 : active raid0 hda7[1] hda6[0] 2056064 blocks 4k chunks unused devices: <none> # Ahora el dispositivo /dev/md0 ya está listo. Se puede crear un sistema de archivos que será montado para uso. RAID-1 Con dos dispositivos aproximadamente del mismo tamaño, es posible hacer con que uno sea réplica del otro. Si existen más dispositivos, estos podrán usarse como un sistema de discos extras; esto se hará automáticamente por una parte de la réplica si uno de los dispositivos operantes presenta fallas. Para esto, configure el archivo /etc/raidtab de la siguiente manera: raiddev /dev/md0 raid-level 1 nr-raid-disks 2 nr-spare-disks 0 chunk-size 4 persistent-superblock 1 device /dev/hda6 130 Capítulo 3. RAID raid-disk 0 device /dev/hda7 raid-disk 1 Si se usan discos extras, añada al final de la especificación del dispositivo lo siguiente: device /dev/hdb1 spare-disk 0 Donde /dev/hdb1 es un disco extra. Configure el número de entrada de los discos extras, siempre en forma proporcional. Con todo listo para iniciar el RAID, se podrá construir la réplica. Entonces, los índices (no en el caso de dispositivos sin formato) de los dos dispositivos se sincronizarán. Ejecute: # mkraid /dev/md0 En este momento vea el comando que hará la iniciación de la réplica. Observe ahora el archivo /proc/mdstat; le va a mostrar que el dispositivo /dev/md0se inició, que se empezó a construir la réplica, y cuánto falta para que se complete la reconstrucción: # cat /proc/mdstat Personalities : [raid1] 131 Capítulo 3. RAID read_ahead 1024 sectors md0 : active raid1 hda7[1] hda6[0] 1028032 blocks [2/2] [UU] resync=63% finish=2.5min unused devices: <none> # El proceso de reconstrucción es transparente: se podrán usar normalmente los dispositivos durante la ejecución de este proceso. Es posible incluso darle formato al dispositivo mientras se está ejecutando la reconstrucción. También se podrán montar y desmontar las unidades en este período (solamente si un disco falla esta acción será perjudicada). Ahora ya es posible montar y visualizar el tamaño del dispositivo final: # mount /dev/md0 /mnt/md0 # df Filesystem 1k-blocks /dev/md0 1011928 Used Available Use% 20 960504 0% Mounted on /mnt/md0 # Observe que el tamaño del dispositivo corresponde al tamaño de un único dispositivo, por tratarse de una réplica de discos. 132 Capítulo 3. RAID RAID-4 Con tres o más dispositivos aproximadamente del mismo tamaño, siendo uno de ellos significativamente más rápido que los demás, es posible combinarlos en un único dispositivo grande, manteniendo aún la información de redundancia. Eventualmente se podrán poner algunos dispositivos para que sean usados como discos extras. Un ejemplo de configuración para el archivo /etc/raidtab: raiddev /dev/md0 raid-level 4 nr-raid-disks 3 nr-spare-disks 0 persistent-superblock 1 chunk-size 32 device dev/hda5 raid-disk 0 device /dev/hda6 raid-disk 1 device /dev/hda7 raid-disk 2 En el caso de haber discos extras, será necesario configurar de la misma manera, siguiendo las especificaciones del disco raid. Vea el ejemplo: 133 Capítulo 3. RAID device /dev/hdb1 spare-disk 0 Se crea el disco extra de forma similar en todos los niveles de RAID. Inicialice el RAID-4 con el comando: # mkraid /dev/md0 handling MD device /dev/md0 analyzing super-block disk 0: /dev/hda5, 1028128kB, raid superblock at 1028032kB disk 1: /dev/hda6, 1028128kB, raid superblock at 1028032kB disk 2: /dev/hda7, 1028128kB, raid superblock at 1028032kB # Es posible acompañar la marcha de la construcción del RAID a través del archivo /proc/mdstat: # cat /proc/mdstat Personalities : [raid5] read_ahead 1024 sectors md0 : active raid5 hda7[2] hda6[1] hda5[0] 2056064 blocks level 4, 32k chunk, algorithm 0 [3/3] [UUU] resync=59% finish=4.6min unused devices: # 134 <none> Capítulo 3. RAID Para dar formato al RAID-4, use las siguientes opciones especiales (-R del mke2fs: stride=8) # mke2fs -b 4096 -R stride=8 /dev/md0 mke2fs 1.18, 11-Nov-1999 for EXT2 FS 0.5b, 95/08/09 Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) 257024 inodes, 514016 blocks 25700 blocks (5.00%) reserved for the super user First data block=0 16 block groups 32768 blocks per group, 32768 fragments per group 16064 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912 Writing inode tables: done Writing superblocks and filesystem accounting information: done # Basta montar el RAID para uso. El tamaño total será de N-1, o sea, el tamaño total de todos los dispositivos menos uno, reservado para la paridad: # df 135 Capítulo 3. RAID Filesystem 1k-blocks Used Available Use% Mounted on /dev/md0 2023760 20 1920940 0% /mnt/md0 # Perciba que el RAID-4 carga el MD del RAID-5, porque son de niveles similares de RAID. RAID-5 Similar al RAID-4, pero se implementa a través de tres o más dispositivos de tamaño aproximado, combinados en un dispositivo mayor. Aún mantiene un grado de redundancia para proteger los datos. Se pueden usar discos extras, tomando parte de otros discos automáticamente en el caso de falla. Si se está usando N dispositivos donde el menor tiene un tamaño S, el tamaño total de la agrupación será (N-1)*S. Esta pérdida de espacio se utiliza para la paridad (redundancia) de la información. Así, si algún disco falla, todos los datos seguirán intactos. Sin embargo, si ocurren fallas en dos discos, todos los datos se perderán. Configure el archivo /etc/raidtab en forma similar a ésta: raiddev /dev/md0 raid-level 5 nr-raid-disks 3 136 Capítulo 3. RAID nr-spare-disks 0 persistent-superblock 1 parity-algorithm left-symmetric c chunk-size 32 device /dev/hda5 raid-disk 0 device /dev/hda6 raid-disk 1 device /dev/hda7 raid-disk 2 Si hay algún disco extra, es posible insertarlo de una manera similar, siguiendo las especificaciones de disco raid. Por ejemplo: device /dev/hdb1 spare-disk 0 Un tamaño del pedazo (chunk size) de 32 KB es un valor normal para sistemas de archivos con una finalidad genérica de este tamaño. La agrupación en la que el raidtab anterior se usa es de (n-1)*s = (3-1)*2 = 2 GB de dispositivo. Esto prevé un sistema de archivos ext2 con un bloque de 4 KB de tamaño. Se podrá aumentar, juntamente con la agrupación, el tamaño del pedazo y el tamaño del bloque del sistema de archivos si el sistema de archivos es mucho más grande, o si se quieren usar archivos muy grandes. 137 Capítulo 3. RAID Ejecute el comando mkraid para el dispositivo /dev/md0. Esto empezará la reconstrucción de la agrupación. Observe el archivo /proc/mdstat para poder hacer un seguimiento del proceso: # cat /proc/mdstat Personalities : [raid5] read_ahead 1024 sectors md0 : active raid5 hda7[2] hda6[1] hda5[0] 2056064 blocks level 5, 32k chunk, algorithm 2 [3/3] [UUU] resync=29% finish=11.4min unused devices: <none> # Si la creación del dispositivo tiene éxito, la reconstrucción se inicia. La agrupación no estará consistente hasta que haya sido completada la fase de reconstrucción. Sin embargo, la agrupación es totalmente funcional (excepto para cambio de dispositivos que fallan en el proceso); se puede dar formato y usar la agrupación mientras ocurre la reconstrucción de éste. Dele formato con el comando mke2fs -b 4096 -R stride=8 /dev/md0. Cuando haya un dispositivo RAID ejecutando, es posible parar o reiniciar usando los comandos: raidstop /dev/md0 ó raidstart /dev/md0. Más información y detalles del proceso de creación de RAID en RAID Solutions for Linux (http://linas.org/linux/raid.html). 138 Capítulo 3. RAID Uso de RAID para obtener alta disponibilidad Alta disponibilidad es difícil y cara. Cuanto más arduamente se intenta hacer un sistema tolerante a fallas, más éste pasa a ser dispendioso y difícil de implementar. Las siguientes sugerencias, consejos, ideas y suposiciones podrán ayudar con respecto a este asunto: • Los discos IDE pueden fallar de tal manera que el disco que ha fallado en un cable del IDE pueda también impedir que un disco bueno, en el mismo cable, conteste, dando así una impresión de que los dos discos fallaron. A pesar que RAID no ofrece protección contra fallas en dos discos, se debe colocar sólo un disco en un cable IDE, o si hay dos discos, deben pertenecer a configuraciones diferentes de RAID. • Discos SCSI pueden fallar de tal manera que el disco que falle en una cadena puede impedir el acceso a todos los demás dispositivos de la serie. El modo de falla afecta la posición del cabezal de lectura de dispositivo común (compartido); a pesar de estar compartido, ninguna arbitrariedad puede ocurrir hasta que la posición esté desconectada. Así, dos discos SCSI en la misma cadena no deben pertenecer a la misma agrupación RAID. • Observaciones semejantes son aplicadas a las controladoras de disco. No sobrecargue los canales en una controladora; utilice controladoras múltiples. • No utilice el mismo tipo o número de modelo para todos los discos. Es frecuente en 139 Capítulo 3. RAID variaciones eléctricas bruscas perder dos o más discos, incluso con el uso de supresores - que todavía no son perfectos. El calor y la ventilación pobre del compartimiento de disco son otras causas de las pérdidas de disco. Discos baratos generalmente funcionan calientes. Utilizar diferentes tipos de discos y controladoras disminuye la probabilidad de dañar un disco (calor, choque físico, vibración, choque eléctrico). • Para proteger contra fallas de controladora o de CPU, se puede compartir un disco SCSI que tenga cables pareados, o sea, conectado a dos computadores. Un computador va a montar el sistema de archivos para lectura y escritura, mientras el otro va a montar el sistema de archivos solamente para lectura, y actuar como un computador reserva activo. Cuando el computador reserva es capaz de determinar que el maestro falló (por ejemplo, a través de un adaptador watchdog), cortará la energía del computador maestro (para estar seguro de que éste está realmente apagado), y entonces hacer la verificación con el fsck y remontar el sistema para lectura y escritura. • Utilice siempre un no-break, y apague correctamente los computadores. Aunque apagar incorrectamente el computador no pueda dañar los discos, ejecutar el ckraid en cualquier agrupación pequeña es muy lento. Se debe evitar la ejecución del ckraid siempre que sea posible, o puede colocar un hack en el núcleo y empezar la reconstrucción del código verificando errores. • Cables SCSI son conocidos por ser muy vulnerables a fallas, y pueden causar todo tipo de problemas. Utilice el cableado de más alta calidad que se pueda encontrar. Utilice por ejemplo el bubble-wrap para estar seguro de que los cables cinta no estarán muy cerca uno del otro y del cross-talk. Observe rigurosamente las restricciones sobre la longitud del cable. • Vea en SSI (arquitectura de almacenamiento serie). Aunque sea muy caro, parece ser 140 Capítulo 3. RAID menos vulnerable a los tipos de fallas que el SCSI presenta. 141 Capítulo 3. RAID 142 Capítulo 4. LDAP En este capítulo se presentan informaciones sobre instalación, configuración, ejecución y administración de un servidor LDAP (Lightweight Directory Access Protocol) en un computador con Linux. Aprenderá cómo recuperar información de su Directorio, utilizando los clientes y utilidades de LDAP. Trataremos de como migrar su base de usuarios para una base de datos LDAP, cuál información será importada, de qué modo efectuar la autenticación y acceso remoto a través de LDAP. Mostraremos también cómo usar el Libro de direcciones de Netscape Communicator, envío de e-mails y la navegación a través de URLs, haciendo uso de los recursos de LDAP. La versión 2.0 de OpenLDAP está en el CD 2 de la distribución de Conectiva Linux. Por no estar implementado totalmente y con la documentación aún incompleta, no documentaremos esta versión. Apenas mostraremos las diferencias principales entre la versión 1.0 (que trataremos en este capítulo) y la nueva versión 2.0. Consulte más información en 1 OpenLDAP 2.0 Administrator’s Guide. Introducción y conceptos 1. http://www.openldap.org/doc/admin/ 143 Capítulo 4. LDAP LDAP es un protocolo (ejecutado sobre el TCP/IP) cliente-servidor, utilizado para acceder a un servicio de Directorio. Fue inicialmente usado como una interfaz para el X.500, pero también se puede usar con autonomía y con otros tipos de servidores de Directorio. Actualmente está pasando a ser estándar, diferentes programas ya tienen soporte a LDAP. Libros de direcciones, autenticación, almacenamiento de certificados digitales (S/MIME) y de claves públicas (PGP), son algunos de los ejemplos donde el LDAP ya es ampliamente utilizado. Servicio de directorio Un Directorio es como una base de datos, pero tiende a contener más información descriptiva, basada en atributo y no está organizado en forma de tabla, sino de árbol. La información en un Directorio es generalmente más leída que escrita. Como consecuencia, los Directorios normalmente no son usados para implementar transacciones complejas, o esquemas de consultas regulares en bases de datos que se usan para hacer un gran volumen de actualizaciones complejas. Actualizaciones en Directorios son típicamente simples o ni siquiera son hechas. Se preparan los Directorios para dar una respuesta rápida a un gran volumen de consultas u operaciones de búsqueda, y también pueden tener la habilidad de hacer réplicas de la información de forma extensa. Esto se usa para aumentar la disponibilidad y confiabilidad, mientras se reduce el tiempo de respuesta. Existen varias maneras distintas para dejar disponible un servicio de Directorio. 144 Capítulo 4. LDAP Métodos diferentes permiten almacenar en un Directorio varios tipos de información, colocando solicitudes sobre cómo esa información podrá ser indicada, requerida y actualizada, cómo protegerla de accesos no autorizados, etc.. Algunos servicios de Directorio son locales, suministrando el servicio para un contexto restricto (ej.: el servicio finger en una máquina aislada). Otros servicios son globales, transformando el servicio para un contexto mayor (por ejemplo, la propia Internet). Se distribuyen normalmente los servicios globales (Figura 4-1), o sea, cada servidor es responsable solamente por una parte. El DNS (Domain Name System) es un ejemplo, pues se trata de un tipo de servicio de Directorio, aunque bastante especializado. 145 Capítulo 4. LDAP 146 Figura 4-1. Datos de directorio distribuidos en tres servidores Capítulo 4. LDAP Tipo de información El modelo de servicio del Directorio LDAP está basado en entradas. Una entrada es un conjunto de atributos y es indicada a través de un nombre distinto2. El DN se usa para indicar una entrada en forma no ambigua. Cada uno de los atributos de entrada tiene un tipo y uno o más valores. Estos tipos son generalmente palabras mnemónicas, como cn para nombre común, o mail para dirección de correo electrónico; existen RFCs (Request For Comments) que determinan estas palabras. Los valores dependen del tipo de atributo. Por ejemplo, un atributo mail puede contener el valor <[email protected]>. Un atributo fotoJpeg va a contener una fotografía. Organizando la información En LDAP, entradas de Directorio se organizan en una jerarquía de árbol invertido, semejante en algunos aspectos a la organización del DNS. La estructura de este árbol generalmente refleja límites políticos, geográficos o de organización. El 2. distinguished name (DN). 147 Capítulo 4. LDAP nodo más alto (root) es típicamente el componente nombre de dominio dc3 de una empresa, estado u organización. Abajo están las entradas representando estados y organizaciones nacionales. En seguida ellas pueden ser entradas que representan a personas, unidades de organización, impresoras, documentos o cualquier otra cosa que se pueda imaginar. La Figura 4-2 muestra un ejemplo de un Directorio LDAP en un árbol. Figura 4-2. Árbol de Directorio LDAP A pesar de haber entradas para países, el Directorio no posee una entidad reglamentadora o centralizadora como, por ejemplo, el root servers del DNS. La separación por países, por ejemplo, puede ser útil para empresas multinacionales. La Figura 4-2 también muestra otra ventaja de un servicio de Directorio. Las ramas del árbol pueden estar en máquinas distintas. En el caso de la Figura 4-2, la en3. 148 domain component Capítulo 4. LDAP trada o=España Ltda está en otro computador. Observamos que esta característica también es típica del DNS. Clases de objetos Ya se han visto algunos tipos de atributos usados en las entradas en un servicio de Directorios: mail, cn, telephoneNumber y otros. Podemos crear cualquier tipo de atributo, pero esto no es recomendable. En LDAP existen diversas clases de objetos, y cada clase contiene una lista de atributos obligatorios y optativos. Se define esta lista en una RFC. Por ejemplo, se define la clase person de la siguiente manera: objetclass person requires objectClass sn, cn allows description, seeAlso, telephoneNumber, userPassword Se puede configurar el servidor LDAP para verificar las clases (a través de la opción schemacheck) y forzar el uso correcto de los atributos. Esto generalmente es una buena idea; con el chequeo activado, por ejemplo, será obligatoria la inserción de los atributos objectClass, sn y cn. Cuando se define que una entrada del Directorio es de la clase person, un atributo description será opcional. Las entradas en Directorios pueden tener varias clases diferentes, basta apenas observar los requisitos de atributos de cada clase. 149 Capítulo 4. LDAP Registrando la información Se registra una entrada por su nombre distinto DN. El DN es único y en su construcción utiliza el camino entero, desde la entrada hasta el tope del Directorio. Por ejemplo, en la Figura 4-2, DN = "cn = Maria A Silva, o = U de M, c = BR". Las entradas también pueden ser registradas a través de un RDN (Relative Distinguished Name). Aún en este ejemplo el RDN es cn = Maria A. Silva. Podemos hacer una comparación con hostname (RDN) y FQDN (DN). Accediendo a la información El LDAP define operaciones para consultar y actualizar el Directorio. Se suministran operaciones para adición y eliminación de una entrada del Directorio, modificación de una entrada existente y alteración del nombre de una entrada. La operación LDAP de búsqueda puede abarcar el todo el árbol o solamente una rama, sin bajar o subir para los demás. Además de especificar con filtros qué entradas se desean encontrar, también es posible especificar cuáles atributos de esta entrada se están buscando. Si no se especifican los atributos, todos serán retornados. Por ejemplo, en la Figura 4-2 se puede querer buscar en todo el sub-árbol de Directorio abajo de la Universidad Politécnica de Madrid , buscando por personas con el nombre de Teodoro Pérez, recuperando la dirección de correo electrónico para cada entrada encontrada. El LDAP permite realizar esta tarea fácilmente. O también se puede querer buscar las entradas directamente abajo del c=ES, en- 150 Capítulo 4. LDAP trada para organizaciones con la palabra “España” en su nombre, y que tengan un número de teléfono. El LDAP permite que se haga esto también. La próxima sección describe con más detalles lo que se puede hacer con LDAP y cómo esto podrá ser útil. Protección contra accesos no autorizados Algunos servicios de Directorio no dan protección, permitiendo que cualquiera pueda ver la información. El LDAP proporciona un método para autenticación de un cliente, o prueba su identidad para un servidor de Directorio, pavimentando el camino para un gran control de acceso, protegiendo la información que está en el servidor. La sugerencia de Conectiva para el archivo de configuración del servidor contiene un ejemplo de lista de control de acceso ACL. Funcionamiento de LDAP El servicio de Directorio LDAP se basa en un modelo cliente-servidor. Uno o más servidores LDAP contienen los datos creando el árbol de Directorio LDAP. Un cliente LDAP se conecta a un servidor y hace la solicitud. El servidor responde con la solicitud, o muestra una indicación hacia dónde el cliente puede conseguir 151 Capítulo 4. LDAP la información (típicamente, otro servidor LDAP). Podemos hacer nuevamente una comparación con el DNS, la diferencia es que el servidor LDAP no hace búsquedas recursivas, o sea, en nombre del cliente. El cliente está encargado de buscar por el servidor hasta encontrar la información deseada. Concepto y utilización del slapd El slapd es un servidor de Directorio LDAP que se puede ejecutar en distintas plataformas Linux. El usuario puede utilizarlo para obtener su propio servicio de Directorio. Ese Directorio puede contener todo lo que se quiera poner, es posible conectarlo a un servicio de Directorio LDAP global, o ejecutar el servicio para el propio usuario. Algunas de las características y potencialidades más interesantes del slapd incluyen: Elección de la base de datos: El slapd viene con tres tipos diferentes de base de datos. Son ellas: LDBM, una base de datos basada en disco de alto rendimiento, SHELL, una interfaz de base de datos para comandos arbitrarios de Linux o scripts de línea de comando y PASSWD, una base de datos simple de un archivo de contrasenas. Múltiples instancias de las bases de datos: El slapd proporciona una gran facilidad en el control de acceso, permitiendo que se controle el acceso a la información en la(s) base(s) de datos. Es posible controlar el acceso a las entradas basadas en información de autenticación LDAP, dirección IP, nombre del dominio y otros criterios. 152 Capítulo 4. LDAP API genérica de la base de datos: El slapd utiliza varios procesos para tener un alto rendimiento. Un único subproceso slapd maneja todas las solicitudes que llegan, reduciendo la cantidad de recursos necesarios. El slapd seleccionará automáticamente el mejor soporte a varios procesos para el tipo de plataforma. Control de acceso: Se puede configurar slapd para usar réplicas. Este esquema de duplicación maestro/esclavo es vital en ambientes de gran volumen, donde un único slapd no puede proporcionar la disponibilidad o la confiabilidad necesarias. Subprocesos: El slapd es configurable. A través de un único archivo de configuración, permite que se cambie todo, siempre que se quiera alterar. Las opciones de configuración tienen definiciones razonables, y dejan el trabajo mucho más fácil. El slapd es un servidor LDAPv2. Ya se hizo la especificación para el LDAPv3 e implementada en el OpenLdap 2.0, sus nuevas características son: LDAPv2 y LDAPv3: slapd soporta las versiones 2 y 3 de LDAP. Suministra soporte para las últimas características mientras mantiene interoperabilidad con los clientes existentes. El slapd tiene soporte para IPv4. Autenticación SASL: El slapd tiene soporte a servicios de autenticación diferenciados a través del uso de SASL. La implementación SASL de slapd utiliza el software Cyrus SASL con soporte a varios mecanismos incluyendo DIGEST-MD5, EXTERNAL. Capa de Transporte Segura: El slapd suministra protecciones de privacidad e integridad a través del uso de TLS. La implementación TLS de slapd utiliza el software OpenSSL. Internacionalización: El slapd soporta Unicode y tags de lenguaje. 153 Capítulo 4. LDAP LDAP y el X.500 El LDAP fue originalmente desarrollado como un cliente para el X.500, el servicio de Directorio OSI. El X.500 define el Protocolo de Acceso a Directorio (DAP4) para que los clientes usen cuando estén en contacto con servidores de Directorio. El DAP es un protocolo pesado, que se ejecuta sobre una capa OSI completa, y necesita una cantidad significativa de recursos informáticos para su ejecución. El LDAP trabaja directamente sobre TCP y suministra la mayoría de las funciones del DAP, a un costo mucho más bajo. Este uso de LDAP deja fácil el acceso al Directorio X.500, pero aún exige un servicio X.500 completo, para dejar los datos disponibles a los diferentes clientes LDAP que se están desarrollando. Así como clientes X.500 completos, un servidor X.500 completo no es un pequeño pedazo de programa para ejecutarse. Si está ejecutando un servicio X.500 y quiere seguir haciéndolo, es muy probable que pueda parar de leer este capítulo, pues habla sobre cómo ejecutar el LDAP vía slapd, sin utilizar el X.500. Si no está usando el X.500, o no tiene planes inmediatos para ejecutar el X.500, siga leyéndolo. Es posible duplicar datos de un servidor de Directorio slapd para un DAP X.500; esto permite que la organización deje los datos disponibles como parte de un servicio de Directorio X.500 global en una base solamente para lectura. Otro camino para dejar los datos en un servidor slapd disponibles para la comunidad X.500, sería usando un DAP X.500 para puerto de entrada del LDAP. 4. 154 Directory Access Protocol Capítulo 4. LDAP Duplicación El slurpd es un servidor para Linux que ayuda a slapd, favoreciendo la duplicación de la base de datos. Él es responsable por la distribución de los cambios que ocurren en el servidor maestro para el servidor esclavo (la réplica). Vea la Figura 4-3. Figura 4-3. Un servicio de directorio duplicado con datos distribuidos en tres servi- 155 Capítulo 4. LDAP dores slapd y slurpd se comunican a través de un simple archivo texto, que se usa para registrar los cambios. La sintaxis de este archivo recuerda un poco la de los archivos resultantes del diff , en el sentido de que están descritas las entradas o atributos que se deben eliminar, agregados o modificados. El slurpd se encargará de aplicar estos cambios al servidor de la réplica. Durante este proceso, la réplica y el maestro serán diferentes. Instalando y configurando LDAP Instalando los paquetes 1. Acceda al directorio de paquetes de Conectiva Linux: # cd /mnt/cdrom/conectiva/RPMS/ 156 Capítulo 4. LDAP 2. Instale el paquete del servidor LDAP openldap: # rpm -ivh openldap-1* openldap #################################### 3. Edite el archivo /etc/openldap/slapd.conf: suffix "o=miorganizacion, c=es" rootdn "cn=lroot, o=miorganizacion,c=es" rootpw mi-contraseña defaultaccess read access to attr=userpassword by self write by dn="cn=lroot, o=miorganizacion, c=es" write by * none access to * by self write by dn="cn=lroot, o=miorganizacion, 157 Capítulo 4. LDAP c=br" write by * read loglevel 2880 suffix: raíz, la base del Directorio. rootdn: login del administrador. rootpw: contraseña del administrador - puede ponerse codificada. default access: derechos de acceso estándar. access to: aquí empiezan las definiciones de las ACLs. Estas definiciones permiten solamente que el administrador y el propio usuario tengan acceso al atributo userpassword. loglevel: tipo de mensajes de log que serán generadas. Creando el Directorio # mkdir /var/ldap Edite el archivo /usr/share/openldap/migration/migrate_common.ph: $DEFAULT_MAIL_DOMAIN = "miorganizacion.es"; 158 Capítulo 4. LDAP $DEFAULT_BASE = "o=miorganizacion,c=es"; $EXTENDED_SCHEMA = 1; $EXTENDED_SCHEMA = 1 va a activar el soporte a otras clases de objetos, como person, por ejemplo. Ejecutando el script migrate_all_offline.sh Este script va a buscar varios archivos del directorio /etc y crear las entradas en el Directorio. # cd /usr/share/openldap/migration/ #./migrate_all_offline.sh Creating naming context entries... Migrating aliases... Migrating groups... Migrating hosts... Migrating networks... Migrating users... Migrating protocols... 159 Capítulo 4. LDAP Migrating rpcs... Migrating services... Migrating netgroups... Importing into LDAP... Migrating netgroups (by user)... Migrating netgroups (by host)... Preparing LDAP database... Editando el archivo /etc/openldap/ldap.conf BASE o=miorganizacion,c=es HOST localhost Iniciando el servidor LDAP # cds 160 atd gpm keytable lpd crond halt killall mars-nwe Capítulo 4. LDAP dhcpd hdparm kudzu named functions httpd ldap netfs gated inet linuxconf-setup network # ./ldap start Iniciando ldap: [ OK ] El OpenLDAP está vinculado a la biblioteca TCP/Wrappers, por este motivo el control de acceso puede hacerse a través de los archivos /etc/hosts.allow y /etc/hosts.deny, además del recurso de ACLs del propio OpenLDAP. Utilice este archivo para controlar las máquinas que irán acceder al servidor LDAP. Para acceder a través del propio servidor, si el archivo /etc/hosts.deny está con el parámetro ALL:ALL, inserte en el /etc/hosts.allow la línea ALL: localhost . 161 Capítulo 4. LDAP Utilizando LDAP Haciendo búsquedas en la línea de comando Abra un terminal y utilice los siguientes comandos: • para verificar todo lo que existe en el Directorio: $ ldapsearch "objectclass=*" o=miorganizacion,c=es o=miorganizacion objectclass=top objectclass=organization objectclass=domainRelatedObject associateddomain=miorganizacion.es ... • para verificar si se insertaron los usuarios: $ ldapsearch uid=login-del-usuario uid=mi-usuario,o=People,o=miorganizacion,c=es 162 Capítulo 4. LDAP uid=mi-usuario cn=mi-usuario sn=mi-usuario [email protected] objectclass=person objectclass=organizationalPerson objectclass=inetOrgPerson objectclass=account objectclass=posixAccount objectclass=top objectclass=kerberosSecurityObject [email protected] loginshell=/bin/bash uidnumber=550 gidnumber=907 homedirectory=/home/login-del-usuario Vea que el atributo userpassword no apareció en esta búsqueda. • Para verificar si se insertaron las contraseñas usando la contraseña del administrador del Directorio: $ ldapsearch -D cn=lroot,o=miorganizacion,c=ES -W uid=mi-usuario 163 Capítulo 4. LDAP EnterLDAP Password: uid=mi-usuario,o=People,o=miorganizacion,c=es uid=mi-usuario cn=mi-usuario sn=mi-usuario [email protected] objectclass=person objectclass=organizationalPerson objectclass=inetOrgPerson objectclass=account objectclass=posixAccount objectclass=top objectclass=kerberosSecurityObject userpassword={crypt}VazDY6ytbW/YI [email protected] loginshell=/bin/bash uidnumber=500 gidnumber=500 homedirectory=/home/mi-usuario De acuerdo con las ACLs, el administrador siempre tiene acceso a todos los atributos. 164 Capítulo 4. LDAP • Para verificar la contraseña del usuario usando la propia contraseña: $ ldapsearch -D uid=mi-usuario,o=people,o=miorganizacion,c=es -W uid=mi-usuario Intro LDAP Password: uid=mi-usuario,o=People,o=miorganizacion,c=es uid==mi-usuario cn==mi-usuario sn==mi-usuario mail==mi-usuario@miorganizacion objectclass=person objectclass=organizationalPerson objectclass=inetOrgPerson objectclass=account objectclass=posixAccount objectclass=top objectclass=kerberosSecurityObject userpassword={crypt}VazDY6ytbW/YI [email protected] loginshell=/bin/bash uidnumber=500 gidnumber=500 homedirectory=/home/mi-usuario 165 Capítulo 4. LDAP Debido a las ACLs, un usuario solamente tiene acceso a su propio atributo userpassword. Configurando Netscape Communicator Cuando se trabaja con servidores LDAP, es común que haya una limitación para la cantidad máxima de respuestas dadas por el servidor. Esta limitación existe siempre en el servidor, pero puede también existir en el cliente, como en el caso de Netscape. Entre en el ambiente gráfico con el login de usuario, ejecute Netscape Communicator y haga las siguientes configuraciones: 1. En la Libreta de Direcciones (Alt-Shift-2) haga clic en Archivo → Directorio Nuevo; surgirá la ventana Directory Info (Figura 4-4). Basta llenar esta ventana de la siguiente manera: 166 Capítulo 4. LDAP Figura 4-4. Información del Directorio 2. En el campo Directorios, seleccione el Directorio que fue adicionado, efectúe una búsqueda de todos los usuarios que existen en el Directorio poniendo en el campo teclee el nombre que está buscando un * seguido de un Intro. Visualizará todos los usuarios encontrados en el directorio. Também será posible ver los usuarios administrativos, como bin, daemon, etc..., que pueden ser eliminados del Directorio. 167 Capítulo 4. LDAP 3. Configure el correo de Netscape para utilizar el dirección de mensajes a través del servidor de Directorio. En Editar→Preferencias, haga clic en la flecha para expandir la categoría Correo y Noticias y seleccione la subcategoría Dirección. Habilite la opción Servidor de Directorio: y seleccione el servidor que fue adicionado (en nuestro ejemplo: miorganizacion). 4. Siempre que se envíe un mensaje bastará colocar un dato cualquiera, o sólo parte de él, de un usuario existente en el Directorio. Netscape se encargará de llenar lo restante. En el caso que exista más de una entrada, mostrará la lista de usuarios encontrados, para que se seleccione el usuario deseado. Accediendo al servidor LDAP vía URLs También es posible usar Netscape Communicator para hacer la comunicación con un servidor LDAP a través del navegador. La sintaxis es la siguiente: ldap[s]://<hostname><:port>/<base_dn>?<atributos>?<finalidad>?<Filtro> La [s] se usa cuando tenemos una conexión segura (ssl). Vea un ejemplo con algunas utilizaciones de URLs de Netscape para el LDAP: 168 Capítulo 4. LDAP Ejemplo 4-1. Utilizando las URLs de Netscape Communicator • ldap://localhost/o=miorganizacion,c=es??sub? Esto hará con que el servidor informe cada registro de la base de datos. • ldap://localhost/o=miorganizacion,c=es?cn,mail?sub? Esto irá informar solamente los objetos (personas) nombre y dirección de correo electrónico para cada persona de la base de datos. • ldap://localhost/o=miorganizacion,c=es??sub?(cn=maria) Informará solamente el registro teodoro. • ldap://localhost/o=miorganizacion,c=es??sub?(cn=teodoro*) Traerá cualquier registro en que el nombre empiece con teodoro. • ldap://localhost/o=miorganizacion,c=es??sub?(sn=) Esto le dará todos los registros que tengan el apellido silva. 169 Capítulo 4. LDAP Autenticación y NSS con LDAP El servidor LDAP puede autenticar usuarios, usando un mecanismo llamado PAM5 (módulos de autenticación conectables). Desde el principio de Linux, la autenticación de un usuario se hace a través de la entrada de una contraseña por el usuario, y el sistema verifica si la contraseña tecleada corresponde a la contraseña oficial codificada, que está almacenada en el archivo /etc/passwd. Esto fue sólo al principio. Desde entonces, un número de nuevos caminos para la autenticación de usuarios está haciéndose común, incluyendo sustituciones más complejas, como por ejemplo para el archivo /etc/passwd y dispositivos de hardware llamados de Smart Cards. El problema es que siempre que se desarrolla un nuevo esquema de autenticación, todos los programas necesarios (login, ftpd, etc.) deben ser reescritos para soportar este nuevo esquema. El PAM proporciona un camino para desarrollar programas que son independientes del esquema de autenticación, anexados a ellos en tiempo de ejecución, para que puedan funcionar. A continuación veremos cómo configurar su sistema para hacer la autenticación a través de LDAP. El programa authconfig realiza casi todas estas alteraciones. Para hacer uso de SSL (criptografía) con LDAPv2 en un servidor remoto será necesario instalar el paquete stunnel. 5. 170 Pluggable Authentication Module Capítulo 4. LDAP Autenticación en el LDAP y el NSS Como superusuario, entre en el directorio donde están los paquetes de la distribución y ejecute: # rpm -ivh nss_ldap* pam_ldap* nss_ldap ############################## pam_ldap ############################## Configurando PAM para utilizar el LDAP En el directorio /usr/doc/pam_ldap-XX, donde XX es la versión del módulo instalado, se encontrará el directorio pam.d.conectiva que es la recomendación de Conectiva para el contenido del directorio /etc/pam.d. Haga una copia de seguridad de su directorio /etc/pam.d original y copie el nuevo directorio recomendado para el mismo local: # mv /etc/pam.d /etc/pam.d.org # cp -R /usr/doc/pam_ldapXX/pam.d.conectiva /etc/pam.d 171 Capítulo 4. LDAP Ejecute la aplicación authconfig como superusuario; tendrá la Figura 4-5 ilustrando la configuración para nuestro ejemplo: # authconfig Figura 4-5. Configuración de Autenticación La opción USAR SSL solamente estará habilitada si el authconfig logra detectar la instalación del paquete stunnel. Con dicha instalación su sistema intentará autenticar el usuario localmente (a través de los archivos /etc/shadow, /etc/passwd, etc.); en el caso que la respuesta sea, usará LDAP con la misma contraseña, sin pedirle dos contraseñas al usuario. 172 Capítulo 4. LDAP Probando la autenticación y el NSS Para probar la autenticación y el NSS, haga una copia del /etc/passwd: # cp /etc/passwd /etc/passwd.org Retire de este archivo un usuario con el comando # userdel nombre-delusuario, para tener la seguridad que no será encontrado en /etc/passwd. Después teclee: $ ls -la /home Será posible visualizar el nombre del usuario, en lugar de su UID. Pruebe también acceder a Conectiva Linux, como usuario eliminado del archivo /etc/passwd. Si no va a utilizar LDAP para autenticación, no se olvide de recuperar su /etc/passwd original para continuar con el uso del sistema: Agregando y eliminando usuarios vía LDAP 173 Capítulo 4. LDAP Para añadir y eliminar usuarios del LDAP, existen dos comandos que son utilizados para esta tarea. Son ellos: ldapadduser y ldapdeluser. Ejecutando estos comandos sin parámetros, aparecerá en la pantalla la forma de uso. Podrá usarlos de la siguiente manera: # ldapadduser mi-usuario o # ldapdeluser mi-usuario -r En la eliminación del usuario, se usó el parámetro -r. Se utiliza este parámetro cuando se quiere eliminar el /home/mi-usuario juntamente con la cuenta del usuario. Si no es ésta la intención, no lo utilice. Agregando el log del LDAP En el archivo /etc/syslog.conf hay la siguiente línea: local4.* /var/log/ldap.log Será posible acompañar posibles errores de autenticación en el /var/log/messages, 174 Capítulo 4. LDAP y el log del LDAP en /var/log/ldap. Herramientas gráficas para LDAP Además de Netscape existen otras herramientas LDAP que se pueden usar en el ambiente gráfico. Búsquedas, visualización e incluso manutenciones en la base de datos se pueden hacer a través de estos programas. El cliente de LDAP GQ GQ es un cliente LDAP gráfico, con una interfaz simple, escrito para Gnome, y es posible ejecutarlo en otros administradores de ventanas. Instálelo de la siguiente forma: como superusuario en el directorio RPMS del CD2 de Conectiva Linux ejecute: # rpm -ivh gq-* gq ############################### 175 Capítulo 4. LDAP Como usuario normal inicie el programa con el comando gq. Su configuración también es simple, basta añadir el servidor LDAP que se quiere usar y la Base DN del Directorio. Un recurso interesante de esta aplicación es el modo de navegación, siendo posible observar el Directorio en árbol y tener una visión completa de todos los datos del Directorio. Observe en la Figura 4-6 los detalles de este ejemplo: $ gq 176 Capítulo 4. LDAP Figura 4-6. El cliente de LDAP GQ 177 Capítulo 4. LDAP Acceso móvil El objetivo del acceso móvil es que en cualquier lugar que se esté, se pueda recuperar la lista de marcadores (bookmarks), preferencias, filtros de correo electrónico, entre otros, utilizando el Netscape Navigator y un servidor LDAP. Ésta es una característica muy buena: imagine que, de cualquier local que se acceda a Internet, será posible tener las propias configuraciones en el navegador. Si se va a viajar y se necesita acceder a algún sitio de noticias que está almacenado en la lista de marcadores local, no habrá problemas: es sólo enviar los marcadores y otros archivos de configuración para un servidor LDAP y se podrá recuperarlos después, independiente del local en que uno se encuentre. Implementando el acceso móvil Para implementar el acceso móvil es necesario seguir estas etapas: • Alterar el archivo de descripción de atributos. • Alterar el archivo de descripción objectclass. • Alterar el archivo LDIF para incluir los perfiles. • Configurar Netscape Navigator para usar el servidor LDAP como un servidor de acceso móvil. 178 Capítulo 4. LDAP • Reiniciar el servidor LDAP con la nueva configuración. Alterando el archivo de atributos Añada estos nuevos atributos a la lista del archivo /etc/openldap/slapd.at.conf: attribute nsLIPtrURL ces attribute nsLIPrefs ces attribute nsLIProfileName cis attribute nsLIData bin attribute nsLIElementType cis attribute nsLIServerType cis attribute nsLIVersion bin attribute nsServerPort cis Alterando el archivo objectclass También se deben añadir algunas clases nuevas para habilitar el acceso móvil. Se puede hacer esto en el archivo /etc/openldap/slapd.oc.conf: 179 Capítulo 4. LDAP objectclass nsLIPtra requires objectclass allows nsLIPtrURL, owner objectclass nsLIProfile requires objectclass, serverhostname allows description, cn, nsServerPort, nsLIServerType, serverroot Personalizando el slapd.conf El próximo paso es editar el archivo 180 /etc/openldap/slapd.conf. A continuación Capítulo 4. LDAP presentamos un ejemplo de este archivo que soporta acceso móvil. Modifique y añada las siguientes líneas en el archivo estándar: suffix "o=top" rootdn "cn=root, o=top" lastmod on access to dn=".*,ou=Roaming,o=top" by dnattr=owner write access to attr=userpassword by self write by * none Alterando el archivo LDIF Ahora es necesario alterar el archivo LDIF, añadiendo entradas de perfil para cada usuario que vaya a utilizar la opción de acceso móvil de Netscape. Cree un archivo /etc/openldap/ldif y agregue las siguientes líneas, como en el ejemplo: dn: o=top objectclass: top 181 Capítulo 4. LDAP dn: ou=People, o=top objectclass: top objectclass: organizationalUnit dn: cn=mi-usuario, ou=People, o=top objectclass: top objectclass: person userpassword: contraseña-del-usuario dn: ou=Roaming, o=top objectclass: top objectclass: organizationalUnit dn: nsLIProfileName=mi-usuario, ou=Roaming, o=top objectclass: top objectclass: nsLIProfile owner: cn=mi-usuario, ou=People, o=top Agregue esta nueva entrada en el directorio con el comando ldapadd: # ldapadd -D "cn=root, o=top" -w mi-contraseña -f ldif 182 Capítulo 4. LDAP Reiniciando el servidor LDAP Para que las alteraciones se efectúen, será necesario reiniciar el servidor LDAP. Para ello, como superusuario ejecute: # /etc/rc.d/init.d/ldap restart Apagando ldap: Iniciando ldap: [ OK ] [ OK ] Configurando Netscape Para configurar Netscape y habilitar el acceso móvil a través del servidor LDAP, haga lo siguiente: • Haciendo clic en Editar→Preferencias en la categoría usuario, marque la opción Habilite acceso móvil para este perfil de usuario. Teclee en el campo Nombre del usuario el login que será usado en el servidor LDAP; si quiere teclear sólo una vez (cuando se inicia Netscape), marque la opción Recuerde mi contraseña de acceso móvil. • En la subcategoría Información del Servidor, teclee en el campo Dirección: url="ldap://localhost/nsLIProfileName=mi-usuario,ou=Roaming,o=top,c=br" 183 Capítulo 4. LDAP En DN del usuario teclee lo siguiente: cn=mi-usuario,ou=People,o=miorganizacion,c=es • Después de haber hecho estas configuraciones, cierre Netscape Archivo→Salir (AltQ) y ábralo nuevamente. Surgirá una ventana pidiendo la contraseña para el servidor de Acceso Móvil; haciendo clic en el botón Opciones se verá una ventana equivalente a la de la Figura 4-7. 184 Capítulo 4. LDAP Figura 4-7. Información del servidor Esta ventana contiene la dirección del servidor y el DN del usuario que fueron configurados anteriormente. Verifique si las informaciones están todas correctas. Con esto se podrá utilizar Netscape remotamente a través de LDAP como un servidor de Acceso Móvil, teniendo disponible sus marcadores, Cookies, filtros de correo, libreta de direcciones y preferencias del usuario. 185 Capítulo 4. LDAP 186 Capítulo 5. DNS En este capítulo presentamos la información a respecto de cómo instalar, configurar y mantener un servidor DNS (Domain Name System1) en un computador con Linux. Usted aprenderá a crear un dominio y podrá administrar los computadores conectados con él. Veremos cómo se hace para que las estaciones puedan utilizar el servidor DNS y accedan unas a otras por medio de sus respectivos nombres. Además, adquirirá nociones sobre cómo DNS logra organizar un gran número de computadores conectados entre sí, haciendo posible que se reconozcan unos a los otros dentro de una red. Introducción y Conceptos El servidor DNS convierte los nombres de los computadores en direcciones IP. Relaciona nombres con IPs e IPs con nombres. Constituye una base de datos distribuida que permite que una sección se administre localmente y al mismo tiempo esté disponible para todos. Cada rama del árbol representa una partición de la base de datos general - un 1. Sistema de nombres de dominio. 187 Capítulo 5. DNS directorio en el sistema de archivos de Conectiva Linux o un dominio en DNS. Cada dominio se puede dividir en otras partes denominadas subdominios. Cada dominio tiene un nombre que se divide en dos partes. La primera identifica su relación con el dominio padre. La segunda es el nombre del dominio que indica su posición en la base de datos. Por ejemplo, podemos ver que en kepler.miorganizacion.com, el nombre del dominio es miorganizacion.com y el nombre del computador es kepler. Cada dominio puede ser administrado por una organización diferente. Estas pueden romper estos dominios y subdominios, delegando su control a otras organizaciones, haciendo muy descentralizada la administración. La estructura puede parecer un poco complicada, pero es más simple de lo que aparenta. Se trata entonces de partir de un dominio e ir bajando hasta llegar a una máquina (o host). Funcionamiento de DNS Espacio de nombres de dominio Como ya se mencionó anteriormente, DNS funciona de forma análoga al sistema de archivos de Conectiva Linux. Cada unidad de datos de la base distribuida de 188 Capítulo 5. DNS DNS está indexada por un nombre. Este nombre es, básicamente, una ruta en un árbol invertido, denominado Espacio de Nombres de Dominios. En lo alto de este árbol está el dominio raíz. De forma semejante a un sistema de archivos, cada rama del árbol de dominios puede tener un número cualquiera de otras ramas. Nombres de dominio Cada rama del árbol de dominios se identifica con un nombre que tiene como máximo 63 caracteres. Estos nombres no pueden ser nulos, porque el nulo se reserva para el dominio raíz del árbol. Cuando el dominio raíz aparece en el nombre de dominio de una rama, el nombre parece terminar sólo en un punto, cuando en realidad termina en punto, más el dominio raíz que se representa con una secuencia nula de caracteres. Por eso, algunos programas interpretan el punto final de un nombre de dominio como que el nombre del dominio es absoluto. Que en ese caso identifica la localización de la rama en la jerarquía sin ambigüedad. Los nombres que no están seguidos de un punto, se denominan nombres relativos. Como no especifican una localización exacta en el árbol, pueden referirse a diversos puntos en la misma. El sistema de nombres de dominios requiere que las ramas hermanas (o sea, las que tienen un origen común) tengan nombres individuales. Si comparamos con el sistema de archivos, de la misma forma que no se puede tener dos /usr/bin, no se puede tener dos copernico.miorganizacion.com. Eso no llega a ser un problema, ya que los nombres sólo tienen que ser individuales para las ramas hijas, o sea que puede haber dos ramas con el mismo nombre, siempre que ellas no sean 189 Capítulo 5. DNS hermanas. Dominios Un dominio no es nada más que un sub-árbol del espacio de nombres de dominio. El nombre de un dominio es el nombre de la rama que está en lo alto de aquel dominio. Por ejemplo, el primer nivel en la jerarquía del dominio miorganizacion.com es una rama denominada com, de la misma forma como usted esperaría encontrar el directorio /usr en lo alto de /usr/lib. Cada sub-árbol se considera parte de un dominio. Así como un nombre de dominio puede estar en distintos sub-árboles, un nombre de dominio puede estar en diversos dominios. Por ejemplo, miorganizacion.com.co forma parte del dominio com.co y también del dominioco. Como un dominio es simplemente un árbol de nombres de dominio, se concluye que los computadores conectados al sistema también deben ser dominios. Recuerde que los nombres de dominio son solamente índices de la base de datos de DNS; por eso los computadores son los nombres de dominio que indican la información sobre los computadores individuales. Los dominios localizados en las puntas de las ramas del árbol de dominios, generalmente representan computadores individuales. Los nombres de dominios pueden señalar hacia una dirección de red o información de encaminamiento del correo electrónico. Los dominios internos pueden señalar hacia un computador específico y pueden indicar información estructural sobre los subdominios. Por 190 Capítulo 5. DNS ejemplo, miorganizacion.com puede ser el nombre de dominio de Mi Organización y también el nombre del dominio de un computador que encamina el correo electrónico entre Internet y la empresa. El espacio de nombres de dominios de Internet El sistema de nombres de dominios no impone muchas reglas a los nombres vinculados con los dominios. Además, ningún significado especial se asocia a los nombres de un nivel en particular. Cuando usted crea un dominio, puede definir sus propias reglas para los nombres. El espacio de nombres de dominios actual de Internet tiene algunas reglas para su estructuración. En especial, los dominios próximos a la raíz siguen ciertas tradiciones. Eso evita que los nombres de los dominios parezcan desorganizados y sin sentido. Dominios de primer nivel Originalmente, se dividió Internet en siete dominios, con el objetivo de especificar el tipo de organización. Estos dominios se llamaron Dominios de Primer Nivel o DPN. Los dominios originales son: 191 Capítulo 5. DNS com: Organizaciones comerciales edu: Organizaciones de ensenanza gov: Organizaciones gubernamentales mil: Organizaciones militares net: Organizaciones de red org: Organizaciones internacionales Se puede notar que los dominios señalados arriba parecieran ser solamente para organizaciones norteamericanas. Eso ocurre porque Internet tuvo como origen ARPANET que era un proyecto norteamericano. En esa época, no se podía prever su enorme éxito, ni tampoco la creación de Internet como consecuencia. Para adecuar el empleo de esta última en el ámbito internacional, fue preciso alterar los DPNs. Se reservaron además de los siete dominios originales, otros que designaban localizaciones geográficas. Estos nombres de dominios siguen una norma internacional denominada ISO 3166. Esta normalización define códigos de dos letras para cada país del mundo (por ejemplo, co para Colombia). Aunque los dominios originales debiesen continuar respetándose dentro de cada uno de los dominios internacionales, esto no ocurrió. Cada país definió sus propias reglas para hacer sus divisiones. La mayoría mantuvo la separación por organizaciones, aunque no necesariamente con los dominios originales. Inglaterra, por ejemplo, define co.uk para instituciones comerciales y ac.uk para instituciones académicas. Mientras que Brasil mantuvo los dominios originales (por ejemplo, com.br, net.br) y recientemente creó dominios suplementarios como eti.br, para especialistas en tecnología de información, psi.br para provee- 192 Capítulo 5. DNS dores de acceso, g12.br para instituciones de enseñanza de 1º y 2º grados, entre otros. Usted puede obtener más información sobre otros dominios en lengua española en las páginas http://www.nic.es/normas/normasreg.html#nombre y en www.nic.co (http://registro.br/), esta última correspondiente a Colombia. Delegación Uno de los requisitos para el sucesor de hosts.txt era la descentralización de la administración, que se obtuvo por medio de delegación. La delegación de dominios no es diferente del proceso de delegación en una empresa: el trabajo se va enviando a los niveles más bajos. Un dominio se puede subdividir en subdominios y cada uno de ellos se puede delegar a otra organización y así por delante. La organización delegada recibe la responsabilidad de mantener los datos de aquél sub dominio. El responsable por el dominio no tiene realmente las informaciones sobre las máquinas conectadas en aquél dominio, sino solamente las informaciones sobre los mantenedores de los subdominios. Servidores de Nombres Los programas que guardan la información sobre los computadores conectados 193 Capítulo 5. DNS se denominan Servidores de Nombres y normalmente mantienen datos completos sobre un determinado espacio de nombres de dominio, que se conoce como zona. Un solo servidor de nombres puede tener autoridad sobre múltiples zonas. La diferencia entre zona y dominio es bastante sutil. Una zona contiene información sobre los nombres de dominios y los datos que contiene un dominio, con excepción de los dominios delegados. Pero, si un sub dominio de un dominio no fue delegado a nadie en particular, la zona contiene los nombres de dominio y los datos de aquel sub dominio también. La diferencia entre zona y dominio queda más clara en Figura 5-1. Figura 5-1. Zona vs. Dominio 194 Capítulo 5. DNS Se puede ver que el uso de zonas en vez de dominios, evita que un dominio deba tener más información que la necesaria, o sea, la información que se delegó a otros servidores de nombres. Note que, cuando se realiza una delegación, el servidor de nombres no tiene información sobre los computadores de un sub dominio, de modo que, cuando se le pide alguna información sobre uno de esos computadores, el servidor de nombres se resume a responder con la dirección del servidor de nombres responsable por aquel sub dominio, para que se le remita la pregunta. Hay dos tipos de servidores de nombres: los primarios y los secundarios. Los servidores de nombres primarios usan los datos extraídos de los archivos localizados en los mismos computadores en que se ejecutan. Un servidor secundario utiliza los datos que vienen de otro servidor de la zona. Un servidor secundario accionado, buscará la información, en la zona de un servidor primario. Estos dos tipos se crearon para facilitar la tarea de administración. Después de crear un servidor de nombres para su zona, no es necesario hacer todo otra vez, para cada nuevo servidor de nombres en la misma zona. Basta crear servidores secundarios que utilicen la información de su servidor primario. Máquina de resolución de nombres Los clientes que acceden a un servidor de nombres se denominan Máquinas de resolución de nombres. Las utilizan programas que se ejecutan en un computador 195 Capítulo 5. DNS y que precisan información sobre el dominio. Se emplea para: • Consultar un servidor de nombres. • Interpretar las respuestas (que pueden ser tanto registros, como errores); • Devolver la información para los programas que la pidieron. Resolución de nombres El proceso a través del cual los servidores de nombres proporcionan información sobre las zonas y dominios se denomina resolución de nombres. Ya que el espacio de nombres se estructura como un árbol invertido, el servidor de nombres sólo precisa de una parte de la información para encontrar su camino hacia cualquier punto del árbol. Cache Una de las posibilidades de acelerar el proceso de búsqueda de un computador es el almacenamiento en cache. Un servidor de nombres que busca un computador puede tener que enviar un número considerable de mensajes hasta encontrarlo. Mientras tanto recibe una 196 Capítulo 5. DNS gran cantidad de informaciones sobre los otros servidores. El servidor de nombres guarda esta información para acelerar futuras búsquedas. La próxima vez que el servidor de nombres tenga que encontrar algo sobre eso, el proceso será más rápido. Aunque no tenga la respuesta en cache, puede tener información sobre el servidor de nombres responsable por su zona. Instalación y configuración de DNS Instalación de los Paquetes 1. Acceda al directorio de paquetes de Conectiva Linux: # cd /mnt/cdrom/conectiva/RPMS/ # 2. Instale el servidor de nombres BIND: # rpm -ivh bind-8.*.rpm bind ############################## # 197 Capítulo 5. DNS Configuración del Servidor DNS La configuración de su servidor de DNS se puede realizar con facilidad por medio de Linux conf, la utilidad de configuración de Conectiva Linux. Se puede configurar la tarea del servidor de nombre, utilizando apenas la edición manual de los archivos de configuración; pero este capítulo se concentrará en la configuración que emplea Linux conf. Entre en Linux conf y vaya entonces al menú Configuración de Red→Tareas como Servidor→DNS. Usted verá la pantalla inicial de configuración como la Figura 5-2. 198 Capítulo 5. DNS Figura 5-2. Pantalla de Configuración del Servidor DNS A partir de esta pantalla, usted puede configurar su servidor DNS completo, sin 199 Capítulo 5. DNS necesidad de editar los archivos de configuración. Para comenzar, necesita tener la configuración básica del servidor, o sea, el nombre del dominio, la dirección del correo electrónico del administrador y de la máquina servidor. Para realizar estas configuraciones presione el botón dominios. Una pantalla aparecerá donde usted puede agregar, editar o excluir los dominios de DNS. Presione Agregar para que podamos agregar un dominio. Aparecerá una pantalla semejante a Figura 5-3 : 200 Capítulo 5. DNS Figura 5-3. Añadiendo un dominio En esta pantalla, usted debe informar los datos referidos a su dominio. 201 Capítulo 5. DNS Dominio: este es el nombre del dominio, en este caso, estamos creando un dominio denominado de miorganizacion. Vea la sección de nombre Dominios para más informaciones. Servidor principal: este es el nombre del computador donde se está ejecutando el servidor de nombres. En nuestro ejemplo, el dominio miorganizacion se controlará con el computador ns.miorganizacion. Administrador de correo: esta es la dirección del correo electrónico del administrador del sistema. En caso de problemas, se podrá avisar a este administrador. Note que se usa un punto (“.”) en lugar de una arroba (“@”) en este campo. También se pueden hacer otras configuraciones en esta pantalla, pero no estarán incluidas en este libro. Son las siguientes: Servidores de nombres (NS): en una configuración simple, basta el nombre del servidor principal. Además de eso, usted podrá informar aquí cuales serán los servidores secundarios de su dominio. Servidores de correo (MX): aquí usted puede definir, cuál servidor encaminará los mensajes de correo electrónico de su dominio, hacia Internet. IPs por defecto: aquí usted puede definir una o más direcciones de IP de computadores a las que se accederá por medio del dominio. Es normal que las búsquedas en servidores de nombres se refieran solamente al dominio; sin embargo, los dominios no tienen IP’s, solamente los computadores los tienen; entonces, al definir IPs patrón, una búsqueda al dominio miorganizacion indicará aquel IP patrón. Características: aquí se pueden definir algunas funcionalidades del dominio. Por ejemplo, se puede definir cada cuanto tiempo se actualizarán los servidores secundarios. 202 Capítulo 5. DNS Control de acceso: usted puede definir algunas opciones de seguridad para su servidor de nombres. Estas configuraciones ya son suficientes para que el servidor de nombres pueda funcionar correctamente. Pero hay muchas más configuraciones que se pueden hacer en su servidor de DNS. 203 Capítulo 5. DNS Configuración de Mapas de IPs Inversos Figura 5-4. Añadiendo un Mapa de IP Inverso 204 Capítulo 5. DNS La tarea principal del servidor de nombres es hacer el registro que relaciona los nombres de los computadores con las direcciones IP. Realiza automáticamente la traducción del nombre del computador para una dirección IP. Pero a veces es necesario hacer la traducción de una dirección IP para un nombre. Esto se hace por medio de los mapas de IPs inversos. La configuración de un mapa de IP inverso, es muy semejante a la configuración de un dominio, basta comparar la Figura 5-3 y la Figura 5-4 para verificar las semejanzas. 205 Capítulo 5. DNS Configuración de un Servidor Secundario Figura 5-5. Configuración de un Servidor Secundario 206 Capítulo 5. DNS La configuración de servidores secundarios es bastante simple, basta especificar el nombre del dominio para el cual este servidor será secundario e informar el IP del servidor primario desde donde este servidor buscará la información. Vea la sección de nombre Servidores de Nombres para obtener más información sobre servidores primarios y secundarios. 207 Capítulo 5. DNS Forward Zones Figura 5-6. Configuración de Forwarders 208 Capítulo 5. DNS Hay casos en los que es mejor que el servidor de nombres no envíe afuera de la red local, un gran número de paquetes. Esto puede suceder por varios motivos, como por ejemplo, cuando las empresas se conectan con la matriz por medio de antenas. Sería ineficaz que el servidor se quedase tratando de localizar algo por medio del servidor de la matriz. Por eso, se pueden crear los servidores de nombres que son útiles para crear un gran cache (vea la sección de nombre Cache). Estos servidores se denominan de forwarders. Por ejemplo, si su empresa tiene un servidor 200.20.57.1 y desea hacer un cache de los servidores 200.20.57.12 y 200.20.57.13, entonces usted podría configurar las zonas de forward según la Figura 5-6. Para configurar un servidor de nombres como forwarder, no se necesita ninguna configuración especial. Sólo se necesitan configurar los otros servidores de nombres para encaminar sus pedidos al forwarder. De esta forma, los servidores intentan solucionar los nombres por medio del forwarder que a su vez, es posible que ya tenga la respuesta en su cache, evitando que la solicitud salga de la red local. 209 Capítulo 5. DNS Repetidores Figura 5-7. Configuración de repetidores Su servidor de nombres puede tener dificultades para resolver nombres fuera del dominio que administra. Esto puede suceder si el DNS está atrás de un firewall y por lo tanto no puede ver Internet, o si DNS está vinculado a una conexión lenta. Esto se puede solucionar, creando repetidores que son servidores de nombres, útiles para resolver los nombres externos en lugar del servidor primario. Cuando el servidor primario no logra solucionar un nombre, pasa la tarea para el repetidor.Como el repetidor se usa mucho más, tiene más información guardada, 210 Capítulo 5. DNS con mayores posibilidades de solucionar nombres. Para configurar un servidor de nombres como repetidor no se necesita ninguna configuración especial. Ella se hace por completo en el servidor que utilizará al repetidor. Para hacer que este servidor utilice uno o más repetidores, usted debe informar las direcciones IP de las mismas en la pantalla que se muestra en la Figura 5-7. Note que el orden es importante, pues el servidor intentará siempre enviar las peticiones para el primero, después para el segundo y así sucesivamente. Por eso, ponga siempre primero al mejor, para obtener un rendimiento apropiado. 211 Capítulo 5. DNS Funcionalidades Figura 5-8. Funcionalidades del Servidor En la pantalla de funcionalidades del servidor (Figura 5-8), usted puede hacer configuraciones diversas para alterar el funcionamiento de su servidor. 212 Capítulo 5. DNS Asignación de bandas de IP Un servidor de nombres generalmente administra una gran cantidad de computadores asociados a direcciones IP. Cada vez que se agrega un nuevo computador al dominio, se le debe asociar una dirección IP; por eso, DNS tiene que saber mucho sobre la organización de la red, para decidir cuál será la dirección IP asociada al nuevo computador. Para simplificar este proceso, Linuxconf le da la posibilidad de crear bandas de direcciones IP que se pueden identificar de modo que se organice la red. Figura 5-9. Atribución de bandas de direcciones IP Por ejemplo, usted puede crear un rango de direcciones que se utilizarán en los computadores de la matriz y bandas para las máquinas de las sucursales. 213 Capítulo 5. DNS 10.0.1.1-27 Matriz 10.0.2.1-15 Sucursal 1 10.0.3.1-21 Sucursal 2 Esto facilita y organiza el proceso de decisión, donde el IP se designará para una máquina. Para crear un rango de direcciones IP, teclee la banda en el campo Un rango IP, la descripción (nombre) en el campo Identificación/descripción y presione Aceptar. Usted puede crear múltiples bandas por medio del botón Agregar. Iniciando el servicio Para iniciar el servicio del servidor de nombres en su servidor, usted debe abrir un terminal como superusuario e iniciar el named: 214 Capítulo 5. DNS # cds atd gpm keytable lpd nfs sendmail syslog crond halt killall mars-nwe pcmcia single xfs dhcpd httpd kudzu named network portma snmpd ypbind functions inet linuxconf netfs random sshd # ./named start Iniciando named: [ OK ] Observe que esto no hará que named se reinicie junto con el servidor. Para hacerlo, se debe usar el comando ntsysv y marcar el servicio named para que se inicie siempre que el servidor sea reiniciado según la Figura 5-10. 215 Capítulo 5. DNS Figura 5-10. Configuración de named A través de ntsysv Al marcar named para reiniciar junto con el servidor, siempre que el sistema operativo entre en acción, el servidor de nombres se iniciará con él. Archivos de Configuración de BIND Como ya se ha dicho anteriormente en este capítulo, la configuración de BIND se puede hacer sin la ayuda de Linuxconf, editando diversos archivos de configu- 216 Capítulo 5. DNS ración. Aunque este capítulo se haya dedicado a demostrar la configuración de BIND a través de Linuxconf, deben constar algunas notas con relación a los archivos de configuración que se han modificado. Para tener más seguridad, es importante conocer estos archivos. Si los pierde o damnifica, usted estará automáticamente diciendo adiós a su dominio. Siendo así, recuerde que: ¡se deben mantener copias de seguridad de estos archivos! El archivo /etc/named.conf El archivo /etc/named.conf es el primero que debe conocer. Es nuevo en BIND, pues hasta en BIND 4 se hacía la configuración con el archivo /etc/named.boot, mientras que el BIND 8 hace todo en /etc/named.conf. El archivo /etc/named.conf del dominio miorganizacion.com se parece a: // Configuración para el dominio miorganizacion.com options { directory "/var/named"; }; zone "." { type hint; file "root.hints"; }; zone "0.0.127.in-addr.arpa" { type master; file "zone/127.0.0"; }; 217 Capítulo 5. DNS zone "miorganizacion.com" { type master; file "zone/miorganizacion.com"; }; zone "177.6.206.in-addr.arpa" { type master; file "zone/206.6.177"; }; Observe las dos últimas secciones de este archivo. La primera define el dominio maestro (éste es un dominio primario). La segunda define el IP inverso que el servidor de nombres usará para hacer el camino inverso, o sea, la resolución de un nombre a partir de una dirección IP. El archivo /var/named/nombre-de-dominio Los dominios sobre los cuales este servidor tiene autoridad, poseen un archivo en el directorio /var/named con el nombre del propio dominio. En nuestro ejemplo, por lo tanto, este archivo se denomina /var/named/miorganizacion. Allí está la información de dominio que se configuró en la pantalla exhibida en Figura 5-11. 218 Capítulo 5. DNS Figura 5-11. Añadiendo un dominio El archivo se parece con: 219 Capítulo 5. DNS @ IN SOA ns.miorganizacion. hostmaster.ns.miorganizacion. ( 2000051001 ; serial 3600 ; refresh 900 ; retry 1209600 ; expire 43200 ; default_ttl ) @ IN MX 5 mx.miorganizacion. ns.miorganizacion. @ IN NS ns IN A 10.0.0.1 El archivo /var/named/named.local El archivo /var/named/named.local define el dominio local del computador. Es un archivo normalizado, que no necesita configuración, es básicamente una versión de /var/named/nombre-de-dominio adaptado para el dominio y el computador local (localdomain y localhost, respectivamente). @ IN SOA localhost. root.localhost. ( 1997022700 ; serial 28800 ; refresh 14400 ; retry 3600000 ; expire 86400 ; default_ttl ) @ IN NS localhost. 1 IN PTR localhost. 220 Capítulo 5. DNS El archivo /var/named/named.ca El archivo /var/named/named.ca es un archivo proporcionado por InterNIC, con la información necesaria para iniciar el cache del servidor de nombres. Este archivo se debe actualizar periódicamente, por ejemplo, por medio de FTP en el servidor FTP ftp://ftp.rs.internic.net/ de la InterNIC, en el directorio /domain ; This file holds the information on root name servers needed to ; initialize cache of Internet domain name servers ; (e.g. reference this file in the "cache . arquivo" ; configuration file of BIND domain name servers). ; ; This file is made available by InterNIC registration services ; under anonymous FTP as ; file /domain/named.root ; on server FTP.RS.INTERNIC.NET ; -OR- under Gopher at RS.INTERNIC.NET ; under menu InterNIC Registration Services (NSI) ; submenu InterNIC Registration Archives ; file named.root ; ; last update: Aug 22, 1997 ; related version of root zone: 1997082200 ; ; ; formerly NS.INTERNIC.NET ; . A.ROOT-SERVERS.NET. A.ROOT-SERVERS.NET. ; formerly NS1.ISI.EDU ; . B.ROOT-SERVERS.NET. C.PSI.NET ; . 3600000 IN NS 3600000 A 198.41.0.4 ; 3600000 NS B.ROOT-SERVERS.NET. 3600000 A 128.9.0.107 ; ; formerly 3600000 NS C.ROOT-SERVERS.NET. C.ROOT-SERVERS.NET. TERP.UMD.EDU ; . 3600000 A 192.33.4.12 ; ; formerly 3600000 NS D.ROOT-SERVERS.NET. 221 Capítulo 5. DNS D.ROOT-SERVERS.NET. NS.NASA.GOV ; . 3600000 A 128.8.10.90 ; ; formerly 3600000 NS E.ROOT-SERVERS.NET. E.ROOT-SERVERS.NET. NS.ISC.ORG ; . 3600000 A 192.203.230.10 ; ; formerly 3600000 NS F.ROOT-SERVERS.NET. F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241 ; ; formerly NS.NIC.DDN.MIL ; . 3600000 NS G.ROOT-SERVERS.NET. G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4 ; ; formerly AOS.ARL.ARMY.MIL ; . H.ROOT-SERVERS.NET. 3600000 NS H.ROOT-SERVERS.NET. NIC.NORDU.NET ; . 3600000 A 128.63.2.53 ; ; formerly 3600000 NS I.ROOT-SERVERS.NET. I.ROOT-SERVERS.NET. 3600000 A 192.36.148.17 ; ; temporarily housed at NSI (InterNIC) ; . J.ROOT-SERVERS.NET. 3600000 A 198.41.0.10 ; ; housed in LINX, operated by RIPE NCC ; . K.ROOT-SERVERS.NET. operated by WIDE ; . M.ROOT-SERVERS.NET. 222 3600000 NS K.ROOT-SERVERS.NET. 3600000 A 193.0.14.129 ; ; temporarily housed at ISI (IANA) ; . L.ROOT-SERVERS.NET. 3600000 NS J.ROOT-SERVERS.NET. 3600000 NS L.ROOT-SERVERS.NET. 3600000 A 198.32.64.12 ; ; housed in Japan, 3600000 NS M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33 ; End of File Capítulo 5. DNS Configuración de los Clientes Configuración a través de Linuxconf La configuración de los computadores clientes de DNS es mucho más sencilla que la del servidor; esta última significa editar el archivo /etc/resolv.conf o pequeñas configuraciones en Linuxconf. Nuevamente, vamos a concentrarnos en la configuración vía Linuxconf porque es mucho más robusta y menos propensa a errores. Entre en Linuxconf y siga para Configuración de Red → Tareas como Cliente → DNS para abrir la pantalla de especificación del servidor de nombres que se puede ver en la Figura 5-12. 223 Capítulo 5. DNS Figura 5-12. Especificación del servidor de nombres En esta pantalla usted pueden configurar las opciones del servidor de nombres que la estación utilizará. Son: Uso de DNS: esta opción sirve solamente para indicar a Linuxconf si debe o no, preocuparse con DNS. No altera el funcionamiento del computador. Dominio por defecto: el dominio predeterminado es el dominio más utilizado. Nor- 224 Capítulo 5. DNS malmente es el dominio de su empresa. Cuando usted busca un nombre sin dominio, el servidor de nombres busca el nombre en el dominio predeterminado. IP del servidor de nombres: aquí usted puede definir hasta tres direcciones IPs de servidores de nombres. Recuerde que el orden es importante, por lo tanto coloque siempre el mejor servidor (el más rápido) en lo alto. Dominio de músqueda: usted puede definir varios dominios en los cuales se podrá encontrar un nombre. Cuando un nombre sin dominio no se encuentra en el dominio predeterminado, el servidor de nombres comienza a buscar en estos dominios. El orden es importante, pero no de la misma manera como en los servidores de nombres. Aquí usted no necesita poner los servidores más rápidos antes, sino los más utilizados. El archivo /etc/resolv.conf La configuración vía Linuxconf es mucho menos propensa a errores y mucho más intuitiva que la edición del archivo resolv.conf. Aun así, este archivo es muy simple, contiene solamente información sobre el(los) servidor(es) para que sea(n) utilizado(s). Generalmente, este archivo será bien pequeño y semejante a éste: domain miorganizacion search miorganizacion.com nameserver 10.0.0.5 225 Capítulo 5. DNS nameserver 10.0.0.7 Lo que nos dice este archivo, es que esta estación está en el dominio miorganizacion, está utilizando los servidores 10.0.0.5 y 10.0.0.7 para resolución de nombres y que el servidor debe buscar nombres en el dominio miorganizacion.com si el mismo no se puede encontrar en el dominio local. Consideraciones finales Este capítulo ha presentado una pequeña introducción sobre el funcionamiento, la instalación y la configuración de BIND para que usted pudiese tener una noción sobre un servidor de nombres. También se ha mostrado cómo configurar las estaciones para utilizar los servidores de nombres. Las configuraciones que se presentaron en este capítulo de carácter genérico, se destinan a la configuración de un servidor de nombre simple. 226 Capítulo 6. Servidor Internet En este capítulo hablaremos sobre los servidores Internet. Vamos a mostrarle cómo configurar un servidor de páginas de web y un servidor FTP. Además verá cómo se monta un servidor proxy. Primero analizaremos brevemente los conceptos que fundamentan Internet. Usted tendrá una breve introducción a los protocolos utilizados en la red. Servidor Web Introducción y Conceptos Desde su comienzo en la década de 90 web tuvo gran crecimiento. Web consiste simplemente en una forma de visualizar documentos en hipertexto. El Hipertexto El término hipertexto se creó en 1965 para diferenciar un texto normal y lineal de textos diferentes. Éstos últimos contienen referencias sobre información extra. 227 Capítulo 6. Servidor Internet Por ejemplo, un texto que contiene la palabra Linux podría contener datos que expliquen su naturaleza. El ejemplo más conocido de hipertexto actualmente es una página web. Donde se siguen las referencias entre las páginas, sin acompañar un guión lineal. El Protocolo HTTP Para que pueda visualizar un documento de hipertexto en Internet, es necesario un protocolo para hacer la comunicación entre usted y el servidor. Este protocolo es el HTTP1. Una sesión HTTP generalmente involucra pocos pasos. Por ejemplo: 1. El cliente establece la conexión con el servidor (eso se hace mediante otros protocolos de la red, generalmente TCP/IP) y solicita un documento: GET /index.html HTTP/1.0 En este ejemplo, el cliente está solicitando el archivo /index.html que normalmente es el archivo predeterminad. Posteriomente, veremos más sobre esos temas. Lo importante ahora es notar que estamos solamente enviando un pedido al servidor HTTP. 2. Después de la solicitud, el servidor contesta. Esta respuesta se divide en tres partes: 1. 228 HyperText Transfer Protocol Capítulo 6. Servidor Internet • Un código de retorno. La gran mayoría de las implementaciones de HTTP retornan este código seguido de un mensaje (generalmente OK o una descripción de error, si fuera el caso). Además, se devuelve un texto identificando la versión del protocolo. En nuestro ejemplo, esta línea es: HTTP/1.1 200 OK significando que el servidor se está comunicando mediante HTTP 1.1 y la operación (la solicitud del archivo) fue exitosa. • Un encabezamiento. Este encabezamiento contiene distinta información sobre el archivo que se envía, como por ejemplo, tamaño e información sobre el propio servidor: Date: Fri, 19 May 2000 20:53:51 GMT Server: Apache/1.3.12 (Unix) (Conectiva/Linux) mod_ssl/2.6.0 OpenSSL/0.9.4 Last-Modified: Thu, 15 Apr 1999 16:38:13 GMT ETag: "177c3-508-371615f5" Accept-Ranges: bytes Content-Length: 1288 Connection: close Content-Type: text/html; charset=iso-8859-1 La información puesta arriba, demuestra que estamos conectados a un computador que ejecuta Apache 1.3.12. Tenemos la fecha de la última modificación del archivo, su tamaño y su tipo. El programa cliente puede 229 Capítulo 6. Servidor Internet utilizar esta información para decidir qué es lo que hay que hacer con un determinado archivo. • El archivo propiamente dicho. Después del encabezamiento, el servidor envía una línea en blanco, indicando que a partir de aquel punto, todo lo que se mande, formará parte del archivo solicitado. Un programa cliente puede controlar el progreso de la transmisión controlando cuánto ya se transmitió y comparando estos datos con el tamaño informado en el encabezamiento. Apache El servidor Apache es el web más popular del mundo. Una investigación reciente demostró que Apache se utiliza más que todos los otros servidores disponibles juntos. La popularización de web en los últimos años, obligó a las empresas a colocar informaciones a disposición de los clientes. Para eso, es imperativo utilizar Apache para cualquier empresa que quiera mostrar presencia en la red. Además de permitirle brindar su información en Internet, Apache le permite publicar contenido en su Intranet,convirtiéndola realmente en un producto indispensable. 230 Capítulo 6. Servidor Internet Instalación de Apache 1. Acceda al CD de la distribución de Conectiva Linux: # cd /mnt/cdrom/conectiva/RPMS 2. Instale el paquete de Apache: # rpm -ivh apache-* apache ######################################## apache-devel ######################################## apache-doc ######################################## Configuración de Apache El servidor Apache que acompaña la distribución de Conectiva Linux ya viene configurado con las opciones más utilizadas, de tal forma que usted sólo necesita iniciar el servidor para que su Conectiva Linux sea un servidor web. Cuando da inicio al servidor web, puede acceder a su computador vía HTTP y visualizar la 231 Capítulo 6. Servidor Internet página estándar como se muestra en Figura 6-1: 232 Capítulo 6. Servidor Internet Figura 6-1. Página Inicial deApache Conectiva Linux Vista en Netscape® 233 Capítulo 6. Servidor Internet Para iniciar el servidor Apache, abra un terminal y teclee: # cds atalk functions keytable lpd network atd gpm killall mars-nwe nfs autofs halt kudzu mysql nfslock crond httpd ldap named pcmcia dhcpd inet linuxconf-setup netfs portmap # ./httpd start Iniciando httpd: [ OK ] # La configuración de Apache depende mucho del perfil del servidor web deseado. En esta sección verá cómo configurar a Apache de la forma más simple posible. Después, usted sabrá un poco sobre los módulos más populares de Apache y cómo instalarlos y configurarlos. Para configurar el Apache, usted debe acceder a Linuxconf y entrar en Configuración de red→Tareas del servidor→Apache - servidor www. Usted verá el menú inicial de la configuración de Apache como se muestra en Figura 6-2. 234 Capítulo 6. Servidor Internet Figura 6-2. Pantalla inicial de configuración de Apache Presione en Predeterminados para alterar las opciones básicas de su servidor WWW. 235 Capítulo 6. Servidor Internet Figura 6-3. Configuración Básica de Apache Hay un gran número de opciones que se pueden configurar en esta pantalla, pero 236 Capítulo 6. Servidor Internet nos atendremos a las más comunes: • E-mail del administrador: aquí usted podrá informar la dirección del correo electrónico del administrador del sitio. • Dirección IP del dominio: en este campo usted podrá informar una dirección IP predefinida para el dominio. Esta dirección IP, generalmente es la dirección IP del servidor www y se utilizará cuando alguien intente acceder a la página por medio del nombre del dominio, en lugar del nombre del computador. Por ejemplo, imagine que el servidor Apache se está ejecutando en el computador kepler.miorganizacion, que tiene la dirección IP 10.0.0.1. Si usted informa la misma dirección IP del computador kepler (10.0.0.1) como Dirección IP del dominio, cuando alguien intente acceder a la dirección miorganizacion (dominio), accederá en realidad a kepler.miorganizacion (el computador que realmente tiene la dirección de IP especificada). • Nombre de servidor: usted podrá informar el nombre del computador donde se está ejecutando Apache . En condiciones normales, este campo no es necesario, ya que Apache es capaz de descubrir el nombre por medio de DNS o del propio archivo hosts. • Directorio root: usted podrá informar aquí el directorio en donde estarán los archivos de su sitio. El directorio estándar es /home/httpd/html. • Script Alias (Directorio alternativo de scripts): podrá informar varios alias para los directorios de CGI. Eso quiere decir que usted va a definir un directorio virtual y asociarlo a un directorio real. Por ejemplo, usted puede definir que cuando una página haga una referencia al directorio virtual /cgi-bin, estará en realidad accediendo a los archivos del directorio /home/httpd/cgi-bin. 237 Capítulo 6. Servidor Internet Una de las características más utilizadas en Apache es su capacidad de trabajar con máquinas virtuales2. Una máquina virtual es, en realidad, un pequeño truco involucrando a Apache y al servicio de nombres del servidor (DNS o el archivo hosts). Básicamente, un computador virtual es un alias para la máquina real. Este alias debe tener un IP propio. Con eso, se consigue que un solo servidor Apache sirva diversos sitios por separado. En nuestro ejemplo, asumimos que nuestra máquina se denomina kepler. Ahora vamos a suponer que quisiéramos ofrecer información de soporte técnico mediante otro nombre de máquina, tal como soporte.miorganizacion. El contenido de este otro sitio deberá localizarse en la misma máquina kepler. Primero, debe establecer un alias de IP para el computador kepler. Para hacerlo, debe pulsar el botón Alias de IP para máquinas virtuales en el menú Configuración de Red de Linuxconf. La Figura 6-4 muestra la pantalla de configuración de los alias de IP. Vea que usted debe elegir la interfaz de red que se va a utilizar. Ésta debe ser la interfaz usada para acceder a la máquina. 2. 238 . En Apache, este concepto se denomina VirtualHost Capítulo 6. Servidor Internet Figura 6-4. Alias de IP 239 Capítulo 6. Servidor Internet Basta informar la nueva dirección de IP para la máquina. En el ejemplo de Figura 6-4, definimos que la máquina kepler (nuestro servidor) responderá a la dirección IP 10.0.1.1 además de su dirección de IP real. Note, sin embargo que, antes de continuar, usted debe configurar su servicio de nombres para que éste asocie el nombre soporte a esta dirección IP. No forma parte de los objetivos de este capítulo el proceso de actualización de DNS, verifique la documentación disponible sobre servidores de nombres para aprender cómo hacer esta configuración. Ahora usted puede volver a la pantalla de configuración de Apache en Linuxconf y teclear Máquinas Virtuales seguido de Agregar. En la pantalla de Figura 6-5, podrá definir las opciones de su máquina virtual. 240 Capítulo 6. Servidor Internet Figura 6-5. Máquina Virtual de Apache Note que las opciones disponibles se asemejan a las utilizadas en la configuración de los patrones de Apache. Pero vamos a ver el significado de los valores definidos en nuestro ejemplo: • Nombre de la máquina virtual: aquí definimos que nuestro computador virtual se denominará soporte. Nuevamente, recuerde que su DNS debe estar configurado para reconocer este nombre y relacionarlo con el alias de IP que elijamos. 241 Capítulo 6. Servidor Internet • E-mail del administrador: aquí solamente definimos que la dirección del correo electrónico del administrador es root@miorganizacion. • Doamin IP address: especificamos la dirección de nuestro dominio. Esta dirección se utilizará cuando se haga un intento de acceso al computador mediante el nombre del dominio sin el nombre de la máquina. • Nombre del servidor: este es el nombre de la máquina servidor. • Directorio root: este es el directorio donde pondremos los archivos de la máquina soporte. Así, todas las páginas y figuras del soporte técnico estarán en el directorio /home/httpd/soporte/html. • Registros de error: cuando algún error ocurra durante un intento de acceder a las páginas de soporte, Apache salvará sus propias informaciones en este archivo. • Registros de transferencia: este archivo contiene un registro de los accesos a la máquina virtual soporte. Estos datos se pueden utilizar para obtener información de seguridad. • Nombres alternativos de script: aquí usted puede definir directorios de los scripts CGI que se utilizarán con la máquina soporte. Note que es posible utilizar el mismo directorio para todas las máquinas, ya sean virtuales o reales. 242 Capítulo 6. Servidor Internet Servidor FTP En esta sección trataremos del servidor FTP. En Conectiva Linux los servicios de FTP los realiza WU-FTPD . De modo que esta sección tratará sobre WU-FTPD. WU-FTPD FTP es una sigla para File Transfer Protocol o Protocolo de Transferencia de Archivos. El protocolo FTP permite las transferencias de archivos binarios y archivos texto con alta eficiencia a través de una red. Instalación y Configuración 1. Para instalar a WU_FTPD, acceda al directorio de paquetes de CD de la distribución de su Conectiva Linux: # cd /mnt/cdrom/conectiva/RPMS 243 Capítulo 6. Servidor Internet 2. Instale el paquete de WU_FTP: # rpm -ivh wu-ftpd-* wu-ftpd ###################################### 3. Asegúrese que la línea abajo esté presente en el archivo esté comentada: /etc/inetd.conf y que no ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a 4. Si hizo alteraciones al archivo /etc/inetd.conf, debe reiniciar el inetd: # cds atd gpm keytable lpd nfs sendmail syslog crond halt killall mars-nwe pcmcia single dhcpd httpd kudzu netfs portmap snmpd linuxconf-setup network random functions inet # ./inet stop 244 sshd xfs ypbind Capítulo 6. Servidor Internet Interrumpiendo los servicios INET: [ OK ] # ./inet start Iniciando los servicios INET: [ OK ] Con el servidor FTP correspondientemente instalado, usted puede acceder a Linuxconf para iniciar el proceso de configuración. En Linuxconf, vaya para Configuración de Red → Tareas del Servidor → Wu-ftp - servidor de ftp para abrir la pantalla inicial de configuración del servidor FTP. Esta pantalla se muestra en Figura 6-6. Figura 6-6. Pantalla inicial de configuración de WU-FTPD Pulse en Configuración básica→ Misc para abrir la pantalla que se muestra en Figura 6-7. 245 Capítulo 6. Servidor Internet Figura 6-7. Configuración Básica del Servidor FTP Estas son las opciones básicas del servidor FTP. Con ellas, usted podrá definir el comportamiento general de su servidor. • Correo del administrador: dirección del correo electrónico del administrador del sis- 246 Capítulo 6. Servidor Internet tema. • Grupo de invitados: aquí usted puede informar el grupo de Linux al que pertenecerá el usuario anonymous . Usted tendrá más información sobre acceso anónimo al servidor enla sección de nombre Accesos Anónimos. Si este campo no se completa, se utilizará el grupo nobody. • Archivo de bienvenida: el contenido del archivo de banner se mostrará a los usuarios en el momento en que ellos accedan con éxito a su servidor. • Mensaje de bajada: si el archivo informado existe, siempre que un usuario intente acceder al servidor, se mostrará el contenido y el servidor cerrará la conexión. El archivo es bastante útil si usted quiere interrumpir temporalmente el servicio de FTP. • Permitir acceso anónimo: aquí usted puede permitir o prohibir los accesos anónimos. Más datos sobre este asunto enla sección de nombre Accesos Anónimos. Ahora presione Controlar en esta misma pantalla para acceder a las opciones de control de acceso del servidor FTP. La pantalla se muestra en Figura 6-8. 247 Capítulo 6. Servidor Internet Figura 6-8. Configuración de Control de Accesos Hay en realidad, tres pantallas de configuración de control de acceso: • Usuarios reales: control de acceso de los usuarios reales de su sistema. Esos son los usuarios que tienen cuentas en su red. 248 Capítulo 6. Servidor Internet • Usuarios invitados: control de acceso para usuarios invitados. • Anónimos: control de acceso de usuarios que se conectan en forma anónima. Las tres pantallas son absolutamente idénticas entre sí. Las opciones disponibles son: • puede pedir archivos comprimidos: define si el usuario podrá comprimir sus archivos. WU-FTPD permite la compresión de archivos durante la transmisión. • puede pedir archivos tar: especifica si el usuario tiene permiso para comprimir archivos transmitidos usando tar. • puede cambiar modoss: especifica si el usuario puede modificar los permisos de los archivos localizados en el servidor FTP. • puede borrar archivos: define si el usuario tiene permiso de borrar archivos localizados en el servidor FTP. • puede sobreescribir: define si el usuario puede sobre-escribir archivos en el servidor. • puede renombrar: especifica si el usuario puede modificar el nombre de los archivos localizados en el servidor. • registrar transferencias entrantes: especifica si el servidor debe mantener un registro de los archivos que lleguen. • registrar transferencias salientes: especifica si el servidor debe mantener un registro 249 Capítulo 6. Servidor Internet de archivos enviados. Accesos Anónimos El usuario podría acceder a su servidor en forma anónima. Eso es muy útil, cuando usted desea proporcionar archivos a personas externas a su organización. Como esas personas no tienen cuentas de usuario en su sistema, la única forma de acceder a sus archivos es por medio del acceso anónimo. Para permitir el acceso anónimo a su servidor: 1. Acceda el directorio de paquetes de CD de Conectiva Linux: # cd /mnt/cdrom/conectiva/RPMS 2. Instale el paquete de acceso anónimo: # rpm -ivh anonftp-* anonftp ############################################## A partir de ese momento, para acceder al servidor FTP anónimamente, el usuario 250 Capítulo 6. Servidor Internet deberá informar el nombre de usuario anonymous y su dirección de correo electrónico como contraseña. $ ftp localhost Conectado en la máquina localhost. 220 einstein.miorganizacion FTP server (Version wu-2.6.0(1) Fri May 12 11:05:03 BRST 2000) ready. Usuario (localhost:albert): anonymous 331 Guest login ok, send your complete e-mail address as password. Contraseña: 230 Guest login ok, access restrictions apply. El tipo de sistema remoto es UNIX. Usando modo binary para transmitir/recibir archivos. ftp> Note que en el ejemplo puesto arriba, la contraseña no se exhibe, pero el usuario tuvo que teclear su dirección de e-mail para poder tener acceso al servidor. El usuario anonymous no necesita (ni debe) ser registrado en su Conectiva Linux, ya que él es un usuario especial para el servidor FTP. Cuando se hace un intento de acceso con el usuario anonymous, el servidor automáticamente trata el acceso como anónimo, aceptando la dirección del correo electrónico como contraseña. 251 Capítulo 6. Servidor Internet Permitiendo el envío de archivos Normalmente, usted no necesitará (ni probablemente querrá) que los usuarios puedan grabar archivos en su servidor FTP. Pero, en algunos casos, puede haber interés en reservar un área para que los usuarios puedan guardar archivos. Se ha convertido en una práctica usual que los usuarios tuvieran un punto específico en los servidores de FTP para grabar archivos. Este lugar es el directorio /incoming. Permitir que los usuarios graben en su servidor FTP, es un gran riesgo, y por eso, se debe pensar muy bien antes de hacerlo. Uno de los mayores problemas que podrían presentarse con eso, es que usted no tenga mucho control sobre lo que se graba en su servidor. No se puede impedir fácilmente que los usuarios guarden en ese sitio, material ilegal. Se recomienda entonces que sea permitido acceder a escritura en su servidor. Si no se puede elegir, se debe determinar alguien como responsable por controlar los archivos que se guardan en el servidor, para evitar los que puedan traer problemas en el futuro. Para crear el /incoming: 252 Capítulo 6. Servidor Internet 1. Acceda al directorio raíz de FTP: # cd /home/ftp 2. Genere el directorio incoming # mkdir incoming 3. Ahora usted debe hacer que el directorio creado sea de propiedad de un usuario y grupo diferentes de root y de ftp. Usted puede crear un usuario y grupo específicos para esto si lo desea, pero utilizaremos nobody.nobody en nuestro ejemplo. # chown nobody incoming # chgrp nobody incoming # chmod 3773 incoming 4. Ahora usted debe editar el archivo /etc/ftpaccess para permitir la escritura en el directorio /incoming. Note que, si usted ha creado un usuario y grupo para que sea dueño de directorio,deberá informarlo en la línea inferior en lugar de nobody. upload /home/ftp /incoming yes nobody nobody 0400 dirs 253 Capítulo 6. Servidor Internet El formato de esta línea es: upload HOME DIR GRABA USUARIO GRUPO PERMS DIRS Donde: 254 • HOME: directorio home del usuario. En nuestro ejemplo, informamos /home/ftp. Eso quiere decir que esta línea se aplica a cualquier usuario cuyo directorio home sea /home/ftp. • DIR: directorio al cual se refiere la línea. Se relaciona con la raíz del directorio de FTP. En nuestro ejemplo, informamos que esta línea se aplica al directorio. /incoming. • GRABA: aquí usted informa si se permite o no grabar en el directorio al cual se refiere la línea. Los valores permitidos son SI o NO. En nuestro ejemplo, estamos permitiendo la escritura. • USUARIO: es el nombre del usuario a quien pertenecerán todos los archivos grabados en el directorio. En nuestro ejemplo, ese usuario es nobody. • GRUPO: es el grupo a quien pertenecerán todos los archivos grabados en el directorio. En nuestro ejemplo ese grupo es nobody. • PERMS: después de grabados, los archivos tendrán los permisos cambiados para éstos. En nuestro ejemplo, definimos que los archivos grabados en este directorio pasarían a tener permisos 0400, o sea, solamente para lectura del dueño (en este caso, el usuario nobody.nobody). Se recomiendan estos tipos de permisos, ya Capítulo 6. Servidor Internet que no autorizan a los usuarios a usar al servidor, en el intercambio de archivos ilegales. Eso asegura que alguien tendrá que verificar el archivo y cambiar sus permisos antes que otro lo pueda acceder vía FTP. • DIRS: especifica si el usuario anónimo puede crear directorios dentro del directorio /incoming. En nuestro ejemplo, el usuario puede crear. Los valores posibles son dirs y nodirs. Archivos de Mensajes y de Bienvenida Si usted ya accedió a algún servidor FTP, entonces ya debe haber notado que es común que aparezcan mensajes informativos cuando se conecta o cuando se cambia de directorio. Estos mensajes son muy útiles para informarle al usuario las posibilidades y reglas que se seguirán en el servidor. Archivo de Bienvenida Cuando usted configura el WU-FTPD en Linuxconf, hay una opción que se denomina Archivo de bienvenida. 255 Capítulo 6. Servidor Internet Usted puede informar un archivo, en donde el usuario verá el contenido antes de realizar la conexión. Esto es útil para breves mensajes de bienvenidas al servidor. Se puede mostrar una breve explicación sobre el servidor y sus derechos de acceso. Recuerde que el archivo de banner se presenta al usuario antes del login. De manera que evite dar mucha información sobre el servidor por medio de este archivo. El Archivo .mensaje Uno de los archivos más comunes y más útiles en un servidor FTP es el archivo .mensaje. Cuando el servidor encuentra este archivo en un directorio, le muestra su contenido al usuario antes de mostrar el contenido del directorio en sí. Puede utilizar este archivo para dar breves explicaciones sobre los propósitos de los directorios a los que se accede. Además, se le puede ayudar al usuario para que encuentre lo que busca. Por ejemplo, digamos que un usuario quiera acceder a su servidor para encontrar una actualización para un programa. Si no tiene mucha experiencia con servidores FTP, no sabe realmente cómo encontrar lo que precisa. Así, usted podría crear archivos .mensaje para guiar al usuario. Cuando el usuario accede al directorio /pub del servidor FTP, por ejemplo, usted podría explicarle lo que allí está disponible. Un ejemplo de cómo se muestra el mensaje al usuario está en Figura 6-9. 256 Capítulo 6. Servidor Internet 257 Capítulo 6. Servidor Internet 258 Figura 6-9. Directorio con .mensaje Visto en Netscape Capítulo 6. Servidor Internet Servidor Proxy En esta sección trataremos de implementar un servidor proxy en un Conectiva Linux. El software servidor proxy que acompaña Conectiva Linux es el Squid y en él se centralizará esta documentación. Caching Cuando usted accede a una página de web o a un archivo de FTP, una solicitud parte de su máquina hasta el servidor, recién entonces se transmiten los datos para su máquina. Como muchas veces la distancia entre el servidor y su máquina es muy grande y la calidad de las líneas de transmisión muy irregulares, este proceso acaba por volverse bastante lento. Además, la mayoría de los datos solicitados son estáticos, no cambiarán con el paso del tiempo. Los logotipos que las empresas colocan en sus páginas, por ejemplo, no tienden a cambiar. Sin embargo, son muchas veces, bastante grandes. Eso es un enorme desperdicio de recursos de la red y también de tiempo. Una solución que se ha encontrado es lo que se denomina caching. Siempre que se hace un pedido de algún objeto de Internet, el servidor proxy consulta al cache para verificar si este objeto ya no se ha solicitado previamente. Si lo fue, entonces el servidor proxy puede responder a la solicitud usando su propia copia local del objeto. Eso acelera significativamente las operaciones en Internet, ya que gran parte de los objetos acaba transitando sólo localmente. 259 Capítulo 6. Servidor Internet El servidor proxy verifica si su copia se actualiza con el objeto original. Si no es así, proxy actualizará su copia. Naturalmente, un servidor de cache no podría guardar para siempre todos los objetos a los que se accedió, porque eso lo saturaría rápidamente. La solución es sencilla: el servidor mantiene solamente los archivos usados hace menos tiempo. Eso garantiza, de forma indirecta, que los objetos usados más frecuentemente estén siempre en cache. Squid El servidor Squid es el proxy de Conectiva Linux. Brinda un alto rendimiento de cache para servidores web. En comparación con otros servidores proxy,Squid ofrece grandes ventajas: • Realiza, además de cache de objetos como archivos de FTP y páginas de web, un cache de procuras de DNS. Eso quiere decir que guarda información sobre la relación entre las direcciones IP y los nombres de máquinas de Internet. Esto acelera la localización de máquinas. • Mantiene los objetos más utilizados en la memoria RAM (cuyo uso se puede limitar por la configuración). • Soporta SSL (acceso a páginas encriptadas) para seguridad en transacciones. • Se puede organizar en jerarquías de servidores de cache para mejorar significativa- 260 Capítulo 6. Servidor Internet mente el rendimiento. • Responde a las solicitudes en un único proceso de acceso al disco. Todo el servidor proxy Squid consiste en un programa principal (Squid) y de su propio programa de resolución de nombres (dnsserver). Cuando Squid se inicia, crea el proceso de dnsserver, disminuyendo el tiempo de espera por la respuesta del DNS. Instalación y configuración Para instalar Squid: 1. Acceda al directorio de paquetes de CD de Conectiva Linux: # cd /mnt/cdrom/conectiva/RPMS 2. Instale el paquete de Squid: rpm -ivh squid-* 261 Capítulo 6. Servidor Internet squid ################################################## 3. Inicie el programa: # cds atd gpm killall named pcmcia single autofs halt kudzu netfs portmap smb crond httpd linuxconf-setup network postgresql snmpd dhcpd inet lpd nfs random squid functions keytable mars-nwe nfslock sendmail sshd [root@gnu init.d]# ./squid start creating directories at /var/spool/squid, wait... [ OK ] Iniciando squid [ OK ] Para efectuar configuraciones en Squid es necesario editar su archivo de configuración, que está localizado en /etc/squid/squid.conf. 262 Capítulo 6. Servidor Internet Memoria para Cache En la memoria RAM, Squid almacena los objetos que se utilizan más. Por eso el rendimiento será mucho mejor que si los objetos fueran almacenados en disco. La cantidad de memoria que se va a utilizar para cache de Squid puede (y debe) ser limitada, para que no interfiera con otros procesos en los sistemas. El valor predefinido es 8MB. Note que este límite de memoria se refiere a la usada para cache y no a la total utilizada por el Squid. En realidad, la que Squid ocupa, deberá estar cercana al triple de este valor. Para especificar la cantidad máxima de memoria que se debe emplear para cache, debe utilizar el parámetro cache_mem en el archivo /etc/squid/squid.conf: cache_mem MEM Donde MEM es la cantidad de memoria máxima que se ocupará para cache. Ejemplo: cache_mem 32 MB Este ejemplo especifica que Squid deberá limitar a 32MB la cantidad de memoria utilizada para cache. 263 Capítulo 6. Servidor Internet Archivos de Cache Los objetos guardados por el Squid se graban en archivos en el disco duro. Usted puede especificar algunas opciones para definir cómo Squid trabajará con archivos. cache_dir TIPO NOMEDIR MB N1 N2 Donde: • TIPO: debe especificar el tipo de sistema de almacenamiento que Squid deberá utilizar. Normalmente, se debe usar ufs. Puede intentar utilizar asyncufs para obtener mejor rendimiento. Si por acaso, asyncufs no funciona correctamente en su sistema, vuelva a usar el ufs. • NOMEDIR: especifique el directorio donde se grabarán los archivos . Note que Squidno generará automáticamente este directorio. • MB: puede modificar el espacio máximo que se va a utilizar para cache en este directorio. El valor predefinido es de 100 MB. • N1: usted puede especificar el número máximo de directorios de primer nivel que se crearán dentro del directorio de cache. El predefinido es 16. • N2: número máximo de directorios de segundo nivel que se crearán dentro de cada directorio de primer nivel. El valor predeterminado es de 256. 264 Capítulo 6. Servidor Internet Ejemplo: cache_dir ufs /var/spool/squid 100 16 256 Este ejemplo define que el directorio de cache será el /var/spool/squid, que podrá tener hasta 100MB, 16 directorios de primer nivel y 256 directorios de segundo nivel dentro de cada directorio de primer nivel. Control de Acceso Por razones de seguridad, la configuración estándar de Squid de Conectiva Linux es bastante conservadora; niega el acceso a cualquier máquina. Usted debe alterar este comportamiento para poder utilizar Squid. Por lo tanto debe establecer reglas de acceso al servidor proxy. Las reglas tienen el formato: http_access PERM QUEM Donde: • PERM: indica si la línea es un permiso o una prohibición de acceso. Los valores permitidos son: allow, para permitir deny, para negar acceso. • QUEM: a quien se refiere este permiso. puede ser una máquina o un dominio o una clase. Se puede todavía usar ALL para indicar que el permiso definido en la línea se 265 Capítulo 6. Servidor Internet refiere a todas las máquinas. Ejemplo: http_access allow all Este ejemplo permite que todas las máquinas de la red puedan utilizar este servidor proxy. Note que, como se ha mencionado anteriormente, Squid se ha configurado previamente para que no permita el acceso de ningún usuario o máquina. Así, usted debe buscar la línea del archivo /etc/squid/squid.conf parecida con: http_acces DENY all Entonces suprimirla o editarla en el archivo. 266 Capítulo 7. Correo electrónico Introducción Correo electrónico1 siempre fue una de las aplicaciones clave en Internet. Es considerado imprescindible por los que utilizan Internet para intercambiar información crucial de manera rápida, eficaz y segura, aunado, por ejemplo a algún mecanismo de encriptación o autenticación, como gnupg http://www.gnupg.org. Este capítulo explica con más detalles cómo suceden intercambios de mensajes electrónicos; cuáles son los protocolos y herramientas utilizados y cómo configurarlos para las tareas más usuales. 1. electronic mail o e-mail 267 Capítulo 7. Correo electrónico La teoría Cómo funciona el intercambio de mensajes electrónicos Para entender mejor los conceptos abordados más adelante, es útil tener una idea global de lo que ocurre durante la transferencia de un mensaje electrónico entre dos puntos (en la práctica, dos máquinas). Por ejemplo, Juan, cuyo alias es juan, quiere enviar un mensaje a su hermano Francisco (francisco). No importa si Juan y Francisco están comunicándose por una intranet (red interna) o por Internet, el proceso es análogo. Además, la máquina de Juan se llama ardilla y el servidor de e-mails de Francisco, pluto. Juan escribe el mensaje a su cliente de email, llamado Agente de mensajes del usuario2 preferido, o simplemente teclee lo siguiente: $ echo "Cena en la casa de la abuela." | \ > mail -s ’Francisco!’ francisco@pluto Se entrega el mensaje al MTA3 de la máquina 2. MUA o Mail User Agent 3. Mail Transport Agent. 268 ardilla. El MTA es el responsa- Capítulo 7. Correo electrónico ble por la entrega de mensajes en el buzón correcto. Así, el MTA de la máquina ardilla determina que se debe entregar el mensaje a la máquina pluto. Para realizar esta tarea, éste se conecta al puerto 25 usando el protocolo SMTP4 y envía el mensaje. El MTA de la máquina pluto, recibe el mensaje y lo deja en el buzón de Francisco (por ejemplo, /var/spool/mail/francisco). Y a partir de ahí, Francisco empieza a prepararse para la cena en familia :)). Protocolos involucrados en el intercambio de mensajes SMTP SMTP es el protocolo responsable por el envío de mensajes de la máquina de origen (en el ejemplo anterior, ardilla) hasta la máquina de destino (pluto). Los MTAs de las dos máquinas y de alguna otra que pueda estar en el medio del camino realizado por el mensaje (si Francisco tiene un redireccionamiento de email, por ejemplo, habrá más máquinas en el proceso) son responsables por el tránsito de mensajes hasta el buzón de Francisco en pluto. Sendmail, por ejemplo, es un MTA y se explicará detalladamente más adelante. Cuando se establezca la conexión, el MTA normalmente muestra un mensaje de 4. Simple Mail Transfer Protocol 269 Capítulo 7. Correo electrónico presentación, básicamente diciendo que es el responsable por el SMTP en esa máquina. El MUA (o el administrador de sistemas que hizo telnet para el puerto 25 de la máquina con el objetivo de probar lo que está leyendo) debe entonces empezar la comunicación enviando el comando HELO: HELO ardilla El MTA normalmente responde con un mensaje simpático como “Mucho gusto en conocerle”. En seguida, el MUA avisa quien es el remitente del mensaje que será transmitido: MAIL FROM: juan@ardilla Si todo ocurre como se espera, el MTA acepta el remitente (“250 juan@ardilla... Sender ok”). En seguida, se informa el destinatario: RCPT TO: francisco@pluto Nuevamente, el servidor debe confirmar que aceptó enviar el mensaje para la dirección especificada (“250 francisco@pluto... Recipient ok”). El mensaje puede ser rechazado, por ejemplo, por alguna protección contra SPAM. Pero, si todo sale bien, sólo falta el mensaje: DATA A partir de ahí, lo que se teclee aparecerá en el mensaje, hasta que se teclee una 270 Capítulo 7. Correo electrónico línea conteniendo solamente un punto (“.”). Vea que es en ese punto en el que se definen los encabezamientos. Así, se podría escribir el mensaje del ejemplo como: DATA 354 Enter mail, end with a "." on a line by itself To: Francisco Serrano <francisco@pluto> From: Juan Serrano <juan@ardilla> Subject: ¡Francisco! Cena en la casa de la abuela. Abrazos de tu hermano, Juan El servidor imprime en la pantalla una línea informando que el mensaje fue aceptado en la cola de procesamiento. Para enviar el mensaje para más de una dirección, ejecute el comando RCPT TO: para cada destinatario. Quien aparece en el campo From:, quién aparece en el campo Cc: y quien no aparece (o sea, que está en el campo Bcc: del mensaje) se define también dentro del comando DATA. Suponiendo que las líneas RCPT TO: relevantes ya hayan sido definidas: MAIL FROM: juan@ardilla 250 juan@ardilla... Sender ok 271 Capítulo 7. Correo electrónico RCPT TO: francisco@pluto 250 francisco@pluto... Recipient ok RCPT TO: [email protected] 250 [email protected]... Recipient ok RCPT TO: [email protected] 250 [email protected]... Recipient ok DATA 354 Enter mail, end with a "." on a line by itself To: Francisco Serrano <francisco@pluto> From: Juan Serrano <juan@ardilla> Cc: Departamento de Filosofia <[email protected]> Subject: ¡Francisco! ... Siempre es bueno recordar que lo que separa el encabezamiento del cuerpo del mensaje es una línea en blanco. Entonces, no deje líneas en blanco entre las líneas del encabezamiento. Para finalizar la sesión, se utiliza el comando QUIT. Usando el SMTP, el mensaje es transportado hasta la máquina de destino. Si Francisco está leyendo sus mensajes directamente en el servidor, no hay otros protocolos involucrados. Pero, si él tiene que bajarlos para otra máquina, es necesario otro protocolo para la recuperación de los mensajes. 272 Capítulo 7. Correo electrónico POP Se utiliza el protocolo POP, inversamente al SMTP, cuando se quiere buscar un mensaje que está en el servidor. El lector debe haberse dado cuenta que no hay autenticación en el protocolo SMTP. En principio, cualquiera puede enviar mensajes para otra persona. Con el recibimiento de mensajes, obviamente, es diferente. El usuario, al conectarse con el servidor POP (usualmente en el puerto 110) envía los comandos USER y PASS para asegurarse el derecho de leer los mensajes en aquel servidor: USER francisco +OK User name accepted, password please PASS notlob +OK Mailbox open, 5 messages Si el servidor confirma la autenticación, se pueden listar los mensajes en el buzón. Vea que se pasa la contraseña en texto puro y es visible (al contrario, por ejemplo, de lo que ocurre en el proceso de login en una máquina Linux). Entonces, si se quiere hacer una prueba, es bueno asegurarse de que no hay nadie alrededor, o su contraseña puede ser descubierta. Además, hay siempre la posibilidad de que alguien haya puesto un sniffer5. Dependiendo de la importancia de la informa5. Programa que observa el tránsito en la red y puede coger datos que se transmiten en formato texto en la red. 273 Capítulo 7. Correo electrónico ción que se transmite y se recibe y de cuán paranoico se desea ser, se aconseja transmitir los mensajes usando criptografía o incluso optar por otro protocolo que ofrezca más seguridad. Después de autenticado, el servidor POP abre el buzón del usuario y le dice cuántos mensajes están disponibles. El usuario puede entonces listarlos y saber su tamaño con el comando LIST. Con eso, el servidor POP muestra en orden, un número para cada mensaje del buzón, y se registra cada mensaje por ese número. Por ejemplo, para ver el contenido de un mensaje, se usa: RETR <número del mensaje de acuerdo con el informe del comando LIST> Es común que se borren mensajes del servidor POP después de bajarlos para una máquina local. O, un buzón puede estar bloqueado debido a un mensaje de tamaño desproporcional, por ejemplo. El comando para borrar un mensaje es: DELE <número del mensaje de acuerdo con el informe del comando LIST> Así como en el SMTP, se cierra una sesión con un “QUIT”, o sea, una sesión estándar usándose el POP sería algo como: $ telnet pluto 110 Trying 200.192.38.238... Connected to pluto. Escape character is ’^]’. 274 Capítulo 7. Correo electrónico +OK POP3 pluto v7.60 server ready USER francisco +OK User name accepted, password please PASS notlob +OK Mailbox open, 5 messages RETR 5 +OK 380 octets Return-Path: <juan@ardilla> Received: (from juan@ardilla) by ardilla (8.9.3/8.9.3) id NAA10331 for francisco; Fri, 19 May 2000 13:53:05 -0300 Date: Fri, 19 May 2000 13:53:05 -0300 From: Juan Serrano <juan@ardilla> Message-Id: <200005191653.NAA10331@ardilla> To: Francisco Serrano <francisco@pluto> Subject: ¡Francisco! Status: Cena en la casa de la abuela. Abrazos de tu hermano, 275 Capítulo 7. Correo electrónico Juan . DELE 5 +OK Message deleted QUIT +OK Sayonara Connection closed by foreign host. $ IMAP El POP es relativamente antiguo y bastante conocido. Un protocolo más nuevo, el IMAP, está llamando la atención. La gran diferencia del IMAP en relación al POP es la posibilidad de manipulación de los mensajes en el propio servidor. Es posible crear carpetas y organizar los mensajes en ellas, hacer búsquedas en los mensajes, ver solamente encabezamientos, etc.. Si todas estas funciones son casi estándar en cualquier cliente de e-mail, seguramente no lo son en un servidor. Esa característica es especialmente atrayente cuando se accede a la misma cuenta de correo electrónico a partir de más de una máquina. Todo comando de IMAP debe ser precedido por un identificador llamado tag, normalmente algo como A0001 (pero no necesariamente). Mensajes de respuesta 276 Capítulo 7. Correo electrónico del servidor son precedidos por el identificador del comando en cuestión, y el comando BAD (en el caso de error como, por ejemplo, no especificar todos los parámetros para un determinado comando), NO (en el caso de una falla “legítima”, como contraseña incorrecta) o OK (en el caso de éxito). El servidor puede también enviar mensajes que no son respuestas a un comando del cliente, como por ejemplo aviso de que hay nuevos mensajes. Esos mensajes no solicitados pueden también ser forzados con el comando NOOP. Ese comando no hace absolutamente nada. La respuesta puede ser un simple OK. Pero, si hay algo nuevo cuando el buzón está abierto, o simplemente algo que el servidor quiera decir, se aprovecha la oportunidad (una respuesta sería enviada al cliente de todas formas). El protocolo IMAP trabaja con estados. Existen 4 estados: en cuanto el usuario accede al servidor, su estado es no autenticado. Tras la autenticación, como el lector debe haber deducido, su estado es llamado autenticado. Cuando un buzón fue seleccionado y abierto, el estado es llamado de seleccionado, y, finalmente, el estado de logout, cuando el usuario sale del sistema (por solicitud propia o por imposición del servidor). Los comandos disponibles varían en cada estado. En el estado no autenticado, los comandos válidos son: NOOP, CAPABILITY, que lista las funciones que el servidor implementa, AUTHENTICATE, que indica para el servidor el mecanismo de autenticación que se desea utilizar, si se le implementa, LOGIN, que justamente inicia el estado autenticado, y LOGOUT, que finaliza la conexión con el servidor. Los dos primeros y el último, en verdad, pueden ser usados en cualquier estado. Así que se acceda a un servidor IMAP (usualmente en el puerto 143 del servidor), como en el POP, el primer paso es normalmente la autenticación. El comando usado es el LOGIN, con nombre de usuario y contraseña como parámetros: 277 Capítulo 7. Correo electrónico $ telnet pluto 143 Trying 200.192.38.238... Connected to pluto. Escape character is ’^]’. * OK pluto IMAP4rev1 v12.252 server ready A0001 LOGIN "francisco" "bolton" A0001 NO LOGIN failed A0002 LOGIN "francisco" "notlob" A0002 OK LOGIN completed Vea que los parámetros están entre comillas dobles (“”). Además, ese ejemplo ya muestra un mensaje de error, como se explica arriba: la sintaxis del comando LOGIN en el primer intento estaba correcta, pero la contraseña no. En el estado autenticado, los comandos permitidos (además de los tres mencionados en el párrafo anterior) son: • APPEND • CREATE • DELETE • EXAMINE 278 Capítulo 7. Correo electrónico • LIST • LSUB • RENAME • SELECT • STATUS • SUBSCRIBE • UNSUBSCRIBE Todos trabajan con buzones de correo. Se pueden mostrar los buzones disponibles con el comando LIST. Ese comando tiene dos argumentos, un camino inicial a partir del cual se buscan los buzones y un nombre de buzón que puede contener metacaracteres. Por ejemplo: A0016 LIST "mail" * * LIST (\NoSelect) "/" mail * LIST (\NoInferiors) "/" mail/juan A0016 OK LIST completed En ese caso, se listan todos los archivos del directorio mail. Es interesante percibir que, si un camino absoluto (empezando con “/”) no es indicado, se asume que el 279 Capítulo 7. Correo electrónico primer argumento debe ser considerado a partir de un camino estándar, donde pueden estar buzones del usuario en el sistema (en ese caso, /home/francisco), o sea, el comando: A0017 LIST "" * lista todos los archivos en el directorio home del usuario autenticado. Los archivos o directorio para los cuales el usuario no tiene permiso de lectura no son listados para que ese comando no genere fallas de seguridad. Un comando más moderado es el LSUB. Éste lista solamente archivos o directorios previamente registrados como buzones de correo (o directorios conteniendo buzones). Registro y cancelación de buzones de correo se hacen con los comandos: SUBSCRIBE <buzón de correo o directorio> UNSUBSCRIBE <buzón de correo o directorio> Así, por ejemplo: A002 SUBSCRIBE mail A002 OK SUBSCRIBE completed A003 LSUB "" * * LSUB () "/" mail A003 OK LSUB completed 280 Capítulo 7. Correo electrónico Con el comando LIST, como ya se vio anteriormente, el resultado sería todos los archivos en el directorio del usuario. Con la combinación SUBSCRIBE / UNSUBSCRIBE + LSUB, sólo se muestran los directorios relevantes. Esto es útil para definir, por ejemplo, los directorios que contienen carpetas que podrán ser accedidas. Además, el registro permanece entre sesiones del IMAP (en verdad, permanece hasta que se haga una cancelación explícita). Después de determinar el directorio que deberá contener las carpetas de mensajes, se puede efectivamente crear nuevas carpetas. Para ello, se usa el comando CREATE: CREATE <nombre de la carpeta> Análogamente, el comando DELETE borra la carpeta especificada y el comando RENAME le cambia el nombre. Es importante recordar que el nombre de la carpeta debe ser relativo, en el caso, /home/francisco, o sea, el directorio estándar a partir del cual es posible crear carpetas. Por ejemplo: A0002 CREATE "mail/juan" A0002 OK CREATE completed A0003 RENAME "mail/juan" "mail/snorman" A0003 OK RENAME completed A0004 DELETE "mail/juan" A0004 NO DELETE failed: Can’t delete mailbox mail/juan: no such mailbox A0005 DELETE "mail/snorman" A0005 OK DELETE completed 281 Capítulo 7. Correo electrónico Para más información sobre una carpeta específica, se puede utilizar el comando STATUS: STATUS <nombre de la carpeta> <lista de ítems> La lista de ítems debe venir entre paréntesis, y dentro de éstos, los ítems deben estar separados por un espacio. Ellos son: • MESSAGES, que indica el número de mensajes en el buzón o carpeta. • RECENT, que muestra cuántas entre las anteriores son recientes. • UNSEEN , que muestra el número de mensajes no leídas. • UIDNEXT, que hace con que cada mensaje reciba un identificador, o uid del servidor ( UIDNEXT es el uid que se marcará al próximo mensaje que llegue a esa carpeta), y • UIDVALIDITY que es un identificador de la carpeta o buzón de correo. Siguiendo nuestro ejemplo: A0002 STATUS INBOX (MESSAGES RECENT UNSEEN) * STATUS INBOX (MESSAGES 3 RECENT 0 UNSEEN 3) A0002 OK STATUS completed El último comando antes de pasar al estado seleccionado trabaja directamente con el contenido del buzón: el comando APPEND recibe como parámetro un mensaje que será incluido en el buzón de correo especificado. 282 Capítulo 7. Correo electrónico Cuando finalmente se decide a qué buzón se debe acceder, se puede hacerlo con los comandos SELECT y EXAMINE. Ambos tienen la misma función, excepto que, usándose el EXAMINE la carpeta se abrirá solamente para lectura. Ningún cambio será permitido, incluyéndose marcar mensajes como leídos, por ejemplo. Como la sintaxis de los comandos y los mensajes de respuesta son idénticos, solamente el SELECT será explicado. Lo mismo vale para el EXAMINE. La sintaxis del comando SELECT es: SELECT <nombre de la carpeta o buzón de correo> El valor INBOX indica el valor del buzón estándar en este sistema, para determinado usuario. Normalmente, /var/spool/mail/<nombre del usuario> o, en nuestro ejemplo, /var/spool/mail/francisco: A0002 SELECT INBOX * 3 EXISTS * NO Mailbox vulnerable - directory /var/spool/mail must have 1777 protection * 1 RECENT * OK [UIDVALIDITY 958755028] UID validity status * OK [UIDNEXT 14] Predicted next UID * FLAGS (\Answered \Flagged \Deleted \Draft \Seen) * OK [PERMANENTFLAGS (\* \Answered \Flagged \Deleted \Draft \Seen)] Permanent flags * OK [UNSEEN 1] first unseen message in /var/spool/mail/francisco A0002 OK [READ-WRITE] SELECT completed 283 Capítulo 7. Correo electrónico Cuando pedimos para que el servidor seleccione la carpeta INBOX, su acción fue abrir el archivo /var/spool/mail/francisco y devolver una serie de informaciones. Tres son particularmente interesantes en este momento: * 3 EXISTS: Esto indica que hay tres mensajes en el buzón de correo /var/spool/mail/francisco * 1 RECENT: Muestra la cantidad de mensajes recientes hay entre los existentes. A0002 OK [READ-WRITE] SELECT completed: Si el comando utilizado hubiera sido el EXAMINE, esa línea sería: A0002 OK [READ-ONLY] SELECT completed La línea: * NO Mailbox vulnerable - directory /var/spool/mail must have 1777 protection se comentará más adelante, cuando se trate de la configuración del servidor IMAP. En el estado seleccionado, además de todos los comandos explicados en los estados mencionados anteriormente, están disponibles: • CHECK • CLOSE • COPY • EXPUNGE 284 Capítulo 7. Correo electrónico • FETCH • SEARCH • STORE • UID El comando CLOSE simplemente cierra la carpeta que estaba seleccionada, y el usuario vuelve al estado autenticado. Para tener acceso nuevamente a algún buzón, el usuario tiene que utilizar otra vez el SELECT o el EXAMINE. El comando CHECK es, básicamente, un pedido de que las pendencias relativas a un determinado buzón se resuelvan. Por ejemplo, escritura en disco de algún cambio que haya sido ejecutado solamente en la memoria del servidor. Si ocurriera algún cambio en el servidor (como por ejemplo, un nuevo mensaje), eso puede revisarse, pero el servidor puede también simplemente contestar que se ejecutó el comando con éxito. El comando EXPUNGE borra definitivamente del buzón cualquier mensaje que haya sido marcado como borrado. No se pueden recuperar más esos mensajes, entonces use el comando con cuidado. En buzones de correo grandes, es común que se quiera determinar cuáles mensajes satisfacen determinado criterio. Por ejemplo, se puede querer saber los mensajes enviados por una determinada persona, o en un determinado día. El comando SEARCH hace una búsqueda (sin diferenciación entre mayúsculas y minúsculas) por una gran variedad de claves, como, por ejemplo, sólo mensajes borrados, mensajes que sobrepasen un cierto tamaño, mensajes no respondidos, 285 Capítulo 7. Correo electrónico entre otros: A0003 SEARCH SUBJECT "francisco" * SEARCH 2 4 A0003 OK SEARCH completed A0004 SEARCH FROM juan TEXT "chinchilla" * SEARCH 4 A0004 OK SEARCH completed A0005 SEARCH FROM "Spiny Norman" * SEARCH A0005 OK SEARCH completed Cuando llegue finalmente el momento de bajar los mensajes, se usa el comando FETCH. Ese comando pide dos argumentos, una lista de mensajes que se deberán recibir y las partes de estos mismos mensajes. Eso quiere decir que se pueden tomar primero los títulos6 de los mensajes y sólo descargar completamente los que interesan, o combinando SEARCH y FETCH, ver la fecha de envío de todos los mensajes de un determinado remitente. Así como en el POP, todos los mensajes en un determinado buzón son numerados en orden. El primer argumento para el FETCH indica los números de los mensajes que serán visualizados. Esa lista puede ser simplemente un número (sólo el mensaje en aquella posición va a ser visualizado), una serie de números separados 6. 286 subjects Capítulo 7. Correo electrónico por comas (sin espacio) o un intervalo, en la forma: <primer número>:<último número>. Hay muchas formas de informar cuál parte del mensaje se quiere visualizar, pero una forma básica es: BODY[<;sección>] donde <sección> puede ser, por ejemplo, TEXT, HEADER o también se puede usar la opción HEADER.FIELDS: A0003 FETCH 2:4 BODY[HEADER.FIELDS (Subject)] * 2 FETCH (BODY[HEADER.FIELDS ("SUBJECT")] {22} Subject: ¡Francisco! ) * 3 FETCH (BODY[HEADER.FIELDS ("SUBJECT")] {43} Subject: My hovercraft is full of eels! ) * 4 FETCH (BODY[HEADER.FIELDS ("SUBJECT")] {22} Subject: ¡Francisco! ) A0003 OK FETCH completed 287 Capítulo 7. Correo electrónico A0004 FETCH 1,3 BODY[HEADER] * 1 FETCH (BODY[HEADER] {310} [Encabezamiento del primer mensaje] * 3 FETCH (BODY[HEADER] {351} [Encabezamiento del tercer mensaje] A0004 OK FETCH completed A0005 FETCH 2 (BODY[HEADER.FIELDS (Subject)] BODY[TEXT]) * 2 FETCH (BODY[HEADER.FIELDS ("SUBJECT")] {22} Subject: ¡Francisco! BODY[TEXT] {38} Cena en casa de la abuela. Abrazos de tu hermano, Juan ) A0005 OK FETCH completed Para mover los mensajes entre carpetas, se puede usar el comando COPY: COPY <mensajes> <carpeta> 288 Capítulo 7. Correo electrónico Por ejemplo: A0003 CREATE "mail/snorman" A0003 OK CREATE completed A0004 COPY 2:4 "mail/snorman" A0004 OK COPY completed A0005 STATUS INBOX (MESSAGES) * STATUS INBOX (MESSAGES 5) A0005 OK STATUS completed A0006 STATUS "mail/snorman" (MESSAGES) * STATUS mail/snorman (MESSAGES 3) A0006 OK STATUS completed Cuando se necesita alterar los atributos de un mensaje (el caso más común es marcarlo como borrado, pero se puede marcarlo como no leído, por ejemplo), se usa el comando STORE. Ese comando recibe como argumentos una lista de números de mensajes (en el mismo formato del comando FETCH) sobre los cuales debe actuar. Esta opción avisa si es necesario especificar exactamente los atributos del mensaje (FLAGS), cuáles atributos se deben sumar a los ya existentes (+FLAGS) y cuáles atributos se deben sustraer (-FLAGS). Los posibles atributos son: \Answered: mensaje contestado. 289 Capítulo 7. Correo electrónico \Deleted: mensaje marcado para ser borrado, ver el comando EXPUNGE. \Draft: mensaje cuya composición no se finalizó. \Flagged: mensaje simplemente “marcado”, normalmente para llamar la atención posteriormente. \Seen: mensaje ya leído. : Hay un atributo, \Recent (mensaje nuevo en el buzón), que no se puede alterar, porque es intrínseco a un determinado instante en la sesión de un usuario autenticado en el servidor IMAP. A0003 STATUS INBOX (MESSAGES) * STATUS INBOX (MESSAGES 4) A0003 OK STATUS completed A0004 STORE 1 +FLAGS (\Deleted) * 1 FETCH (FLAGS (\Seen \Deleted)) A0004 OK STORE completed A0005 EXPUNGE * 1 EXPUNGE * 3 EXISTS * 0 RECENT 290 Capítulo 7. Correo electrónico A0005 OK Expunged 1 messages A0006 STATUS INBOX (MESSAGES) * STATUS INBOX (MESSAGES 3) A0006 OK STATUS completed Los comandos COPY, FETCH, STORE y SEARCH reciben argumentos especificando sobre cuáles mensajes deben actuar. En los ejemplos, fue utilizado el número secuencial que cada mensaje recibe al entrar en el buzón, pero cada mensaje recibe también un identificador único (no necesariamente secuencial). Se pueden registrar los mensajes de acuerdo con ese identificador por el comando UID, que lleva como parámetros uno de los comandos anteriores y sus argumentos, con los números de los mensajes sustituidos por los identificadores. Finalmente, al terminar las tareas en el buzón, se termina la conexión: A0002 LOGOUT * BYE pluto IMAP4rev1 server terminating connection A0013 OK LOGOUT completed Connection closed by foreign host. [francisco ~]$ 291 Capítulo 7. Correo electrónico La práctica Configuración del POP y del IMAP Hay varios servidores de POP e IMAP vía Internet. Entre ellos, se destacan el Qpopper, el GNU pop3d (servidores POP) y el WU-IMAPd (que, a pesar del nombre, tiene un servidor IMAP y uno POP). Éste último, desarrollado en la Universidad de Washington, es el paquete que implementa ambos protocolos en una configuración estándar de Conectiva Linux. La configuración de los servicios no conlleva grandes dificultades: se debe instalar el paquete imap, descomentar las líneas relevantes en /etc/inetd.conf: pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d imap stream tcp nowait root /usr/sbin/tcpd imapd En seguida, se debe reiniciar el inetd: # /etc/rc.d/init.d/inet restart Y, finalmente, certificarse de que los servicios (o el servicio elegido) estén habilitados en /etc/services: 292 pop-3 110/tcp pop-3 110/udp imap2 143/tcp # POP version 3 imap # Interim Mail Access Proto v2 Capítulo 7. Correo electrónico imap2 143/udp imap Configuración del SMTP De acuerdo con lo que fue dicho anteriormente, se implementa el SMTP por un MTA. La implementación del protocolo SMTP es mucho más crítica de lo que la del POP y del IMAP, pues si estos últimos fallan, los mensajes quedan esperando en el servidor hasta que el usuario pueda recibirlos de alguna manera. Si el SMTP falla, se pueden perder algunos mensajes en el camino entre un servidor y otro. Entre los MTAs disponibles, algunos de los más comúnmente usados son: Qmail, Postfix y el Sendmail (el estándar utilizado en Conectiva Linux). Quizás Sendmail sea el MTA más conocido de todos. Parte de esa fama se debe a fallas de seguridad que, en el pasado, permitían incluso el acceso a la máquina como superusuario7 Esos problemas sucedían en virtud que software es muy complejo. Quien ya trabajó con el archivo de configuración de Sendmail (sendmail.cf) sabe lo que eso significa. Sin embargo, hoy en día, su desarrollo es activo: se desarrolló un método de configuración más simple y Sendmail sigue siendo un predeterminado como MTA. Dos métodos de configuración de sendmail serán discutidos: a través de Linuxconf (el configurador gráfico utilizado en Conectiva Linux) y el m4 (el método “más sencillo ” mencionado). 7. root 293 Capítulo 7. Correo electrónico El m4 no es un método de configuración en sí, sino un procesador de macros. Permite que se use una sintaxis más simple en lugar de tratar de entender el rebuscado archivo de configuración de Sendmail. Se puede generar un archivo de configuración a partir de una serie de reglas usándose el m4. Admitiendo que el archivo con las reglas en m4 sea /usr/lib/sendmail-cf/cf/arquivo.mc y se quiera crear un archivo llamado sendmail.cf: # cd /usr/lib/sendmail-cf/cf # /usr/bin/m4 ../m4/cf.m4 archivo.mc > sendmail.cf En Linuxconf, la configuración de Sendmail está dentro del menú Configuración de Red, con el nombre Sendmail - sistema de envío de e-mails. Un archivo en m4 utilizado para generar un sendmail.cf mínimo, pero funcional, sería algo como: divert(-1) include(‘../m4/cf.m4’) OSTYPE(‘linux’) FEATURE(redirect) FEATURE(always_add_domain) FEATURE(use_cw_file) FEATURE(local_procmail) MAILER(procmail) MAILER(smtp) 294 Capítulo 7. Correo electrónico FEATURE(access_db) FEATURE(relay_hosts_only) Líneas empezando con “#” son consideradas comentarios, tanto en el archivo m4 como en el archivo final de configuración. Comentarios hechos en el archivo m4 son repasados para el sendmail.cf, a no ser que estén al principio del archivo y bajo la directriz divert(-1) La directriz divert(0) revierte para el funcionamiento normal. 295 Capítulo 7. Correo electrónico 296 Capítulo 8. Seguridad en el Servidor Seguridad es un asunto bastante amplio, que podría tratarse en un libro completo. Justamente por eso, el propósito de este capítulo no es el de ser una guía completa de seguridad, sino mostrar cómo aumentar la seguridad de su Conectiva Linux. Visión general sobre seguridad Actualmente, conectar redes locales a Internet es algo bastante común y aunque eso pueda traer ventajas, también puede traer varios problemas. Desafortunadamente, formar parte de Internet significa estar expuesto a una gran variedad de amenazas, lo que obliga a cualquier administrador a preocuparse con la seguridad de sus sistemas. Mientras las redes existen para facilitar el acceso a los computadores, los procedimientos de seguridad existen para controlar dicho acceso. El primer concepto relacionado con seguridad es: “no existe un sistema completamente seguro”. Lo que se puede hacer es dificultar la invasión en su computador. El trabajo necesario para proteger su sistema dependerá básicamente de lo que tenga para proteger y de cuan importante es proteger este sistema. Note que, de manera general, cuánto más seguro se haga el sistema, más com- 297 Capítulo 8. Seguridad en el Servidor pleja será su utilización, pues habrá varias restricciones en su empleo. Es imprescindible tener un buen criterio en el momento de aplicar las medidas de seguridad, para evitar que el remedio sea peor que la enfermedad. Antes de tomar cualquier actitud relacionada con el aumento de seguridad en el sistema, debe saber lo que está protegiendo, por qué y cuánto vale esta información. Además, es necesario verificar a qué tipo de amenazas está expuesto su sistema. El sistema denominado RFC 1244, Site Security Handbook, por Holbrook Reynold et al., identifica tres tipos distintos de amenazas a la seguridad, generalmente asociadas a las conexiones de la red: Acceso no autorizado: Acceso al sistema por alguien no autorizado. Revelación de información: Cualquier problema que se relacione al acceso de información valiosa o confidencial por personas que no deberían acceder a ellas. Negación de Servicio: También conocido como Denial of Service - DoS - es cualquier problema que vuelva imposible o muy difícil, continuar utilizando el sistema en forma productiva. Dependiendo del sistema en cuestión, estas amenazas pueden ser más o menos importantes. Por ejemplo, para un órgano de gobierno o empresa del área de tec- 298 Capítulo 8. Seguridad en el Servidor nología, los accesos no autorizados, pueden desacreditarlos ante el público o los clientes. Mientras que para la gran mayoría de las empresas, el acceso no autorizado, no es un gran problema, si no involucra una de las amenazas: revelación de información y negación de servicio. La extensión del problema en casos de revelación de información varía de acuerdo con la información que se puede comprometer. Aunque sea un hecho notorio que la información reservada, no deba jamás permanecer almacenada en computadores conectados a Internet, en algunos casos, ciertos tipos de información, como las personales de clientes o números de tarjetas de crédito, puede ser necesaria en aplicaciones de comercio electrónico, por ejemplo. En este tipo de caso, el cuidado debe ser redoblado. La negación del servicio puede causar grandes perjuicios a las empresas que conectan los sistemas de misión crítica con Internet. En realidad, las ventajas se deben evaluar muy bien antes de conectar este tipo de sistema a Internet, pues, según el caso , esta conexión puede parar una empresa por completo. Generalmente los servidores menores se conectan a Internet, posiblemente accediendo a la información de un servidor principal a través de un modo más seguro. Obviamente que, si la necesidad es justamente la de prestar un servicio en Internet, todos estos riesgos existirán. Para disminuirlos, es necesario tomar algunas precauciones, como deshabilitar los servicios innecesarios, utilizar el control de acceso por medio de herramientas como tcp_wrappers, instalar y configurar un firewall entre su red local y redes externas (generalmente entre su red local e Internet). También es importante analizar constantemente los logs y la integridad de archivos importantes del sistema. Conectiva Linux cuenta con las herramientas necesarias para ayudarlo en la tarea de hacer su sistema más seguro. 299 Capítulo 8. Seguridad en el Servidor Finalizando esta introducción, mantener un sistema seguro involucra varios procedimientos, entre los cuales el más importante es mantener un control constante del sistema, para anotar cualquier anormalidad antes que se vuelva un problema grave. Deshabilitando servicios innecesarios Los servicios habilitados normalmente en su Conectiva Linux dependen del perfil empleado en la instalación del sistema. Por lo tanto, después de instalarlo, se debe verificar cuáles de ellos realmente necesitan estar habilitados. Básicamente, hay dos tipos de servicios: los que se ejecutan en el modo standalone y los que se ejecutan mediante inetd. Servicios Standalone Servicios que se ejecutan en el modo standalone se ejecutan generalmente durante la iniciación del sistema, mediante los scripts de iniciación. Apache, Sendmail y Samba son ejemplos de servicios que suelen ejecutarse durante el boot del sistema. Una de las herramientas que se pueden utilizar para configurar los servicios que 300 Capítulo 8. Seguridad en el Servidor se ejecutarán es ntsysv. Verifique si está instalado con el comando siguiente: # rpm -q ntsysv Si la respuesta para este comando es “paquete ntsysv no está instalado”, usted debe instalarlo a partir del CD 1 deConectiva Linux. Con el CD montado en/mnt/cdrom, ejecute el comando siguiente , como superusuario, para instalar el programa: # rpm -ivh /mnt/cdrom/conectiva/RPMS/ntsysv* Con el programa instalado, como superusuario, ejecútelo, tecleando el comando: # ntsysv La Figura 8-1 ilustra la pantalla del programa ntsysv. Mediante esta pantalla, usted puede (y debe) deshabilitar todos los servicios que no se utilizan. Para obtener una descripción de un servicio, selecciónelo y pulse la tecla de función F1. Note que otros tipos de servicios se inician automáticamente y no solamente servicios de red. El servicio gpm, por ejemplo, agrega soporte a mouse para aplicaciones que ejecutan en modo texto. Tome el cuidado de deshabilitar solamente los servicios que no se deben utilizar en el computador. Por ejemplo, no deshabilite el servicio httpd si fuera necesario ejecutar un servidor web en el computador. 301 Capítulo 8. Seguridad en el Servidor Figura 8-1. Configuración de iniciación de servicios El ntsysv configura solamente el nivel de ejecución actual. Si usted desea configurar otros niveles de ejecución, estos niveles se pueden especificar en la línea de comando, mediante la opción --levels. Es posible configurar varios niveles de ejecución simultáneamente. Ejecutando el comando # ntsysv --levels 345, por ejemplo, serían configurados los niveles 3, 4 y 5 de una vez. En este caso, si un servicio se marca como habilitado, será habilitado en todos los niveles de ejecución especificados. De manera análoga, al deshabilitar un servicio, el mismo será deshabilitado en todos los niveles de ejecución especificados. Existen dos opciones para salir del programa. Si se utiliza el botón Ok, las alteraciones se guardarán. Si se utiliza el botón Cancelar, no se considerará ninguna alteración efectuada. 302 Capítulo 8. Seguridad en el Servidor Servicios ejecutados mediante inetd Al inetd que también se lo conoce como “internet super-server”, es un daemon que se ejecuta generalmente en la iniciación del sistema y que espera por conexiones en algunos sockets internet específicos. Cuando se establece una conexión en alguno de estos sockets, verifica a cuál servicio corresponde el socket e invoca al programa capaz de servir la requisición en cuestión. Resumiendo inetd invoca daemons bajo demanda, reduciendo la carga del computador. Obviamente, este tiempo necesario para invocar un daemon bajo demanda puede ser perjudicial en servicios muy utilizados y es por eso que muchos servicios no se pueden ejecutar mediante inetd. La configuración de inetd está en el archivo /etc/inetd.conf, aunque el archivo /etc/services se use también para referir los nombres de los servicios hacia sus respectivas puertos y protocolos. Estos archivos se pueden alterar mediante un editor de textos, o si no a través de Linuxconf. Configurar al inetd mediante Linuxconf habitualmente elimina errores groseros, porque hace una validación de los datos antes de agregar la información a los archivos correspondientes. La configuración de inetd en Linuxconf se efectúa mediante la configuración de Configuración →Configuración de Red → Tareas como servidor → Servicios Internet. Esta configuración comprende la administración del archivo /etc/services (opción Servicios de red para Internet) y la administración del archivo /etc/inetd.conf (opción Base de datos de los servidores de internet). A través de la opción Servicios de red para Internet se puede agregar, modificar o retirar la referencia del nombre de un servicio para su respectivo puerto y pro- 303 Capítulo 8. Seguridad en el Servidor tocolo. La Figura 8-2 ilustra la configuración del servicio denominado pop-3. Figura 8-2. Configuración de /etc/services Lo que realmente nos interesa en la configuración de los “Servicios Internet” se encuentra en la opción Base de datos de los servidores de internet. En este lugar es posible deshabilitar todos los servicios innecesarios (o habilitar los necesarios, si fuera el caso). Para deshabilitar un servicio, basta seleccionarlo en la lista y, en la ventana que aparece en seguida, marcarlo como Desactivado, como está ilustrado en la Figura 8-3. 304 Capítulo 8. Seguridad en el Servidor Figura 8-3. Deshabilitando un Servicio Como regla general, mantenga deshabilitados los servicios: • echo, 305 Capítulo 8. Seguridad en el Servidor • discard, • daytime, • chargen, • shell, • login, • exec, • talk (y similares), • tftp, • bootps, • finger (y similares), • systat, • netstat y • time. Estos servicios difícilmente se necesitan en su computador y los posibles invasores, suelen utilizarlos como muestra de lo que está habilitado en la máquina que 306 Capítulo 8. Seguridad en el Servidor pretenden invadir. Además de éstos, deshabilite todos los que no se utilizarán. Por ejemplo, si no se necesita un servidor FTP en el computador, retírele la habilitación y si es posible, desinstale del sistema el paquete correspondiente. Utilización de TCP_Wrappers El paquete tcp_wrappers se puede usar para controlar el acceso a algunos servicios, por ejemplo finger, telnet y ftp, entre otros. Como no todos los daemons soportan usar tcpd 1, para control de acceso, siempre se debe consultar la documentación de los programas antes de intentar configurarlos para utilizar el tcp_wrappers. Algunos de estos programas tienen su propio sistema de administración y control de acceso que se podría emplear en lugar del tcpd. Conectiva Linux ya viene configurado para utilizar al tcpd en todos los daemons posibles y recomendados. De todos modos, configurar un daemon para utilizar al tcpd es muy sencillo, considerando que el daemon en referido soporta el uso de tcp_wrappers. La Figura 8-4 muestra la configuración de un servidor FTP sin el uso de tcp_wrappers y la Figura 8-5 ilustra el mismo servidor, pero esta 1. Este es el nombre del programa responsable por el control de los servicios, en el paquete tcp_wrappers. 307 Capítulo 8. Seguridad en el Servidor vez utilizando tcp_wrappers. Esta configuración se encuentra en Configuración →Configuración de Red→ Tareas del servidor → Servicios de Internet → Base de datos de los servidores de internet → ftp. Figura 8-4. Servidor FTP sin tcp_wrappers 308 Capítulo 8. Seguridad en el Servidor Compare la configuración Ruta del servidor Path entre la Figura 8-4 y la Figura 8-5, a continuación. Figura 8-5. Servidor FTP Utilizando tcp_wrappers 309 Capítulo 8. Seguridad en el Servidor Después de configurar un daemon para utilizar el paquete tcp_wrappers es necesario configurar el control de acceso propiamente dicho. Esta configuración se puede efectuar por medio de los archivos /etc/hosts.allow y /etc/hosts.deny. En el archivo /etc/hosts.deny se configuran reglas para negar los servicios a determinados clientes, al mismo tiempo en el archivo /etc/hosts.allow se configuran las reglas para permitir que determinados clientes tengan acceso a los servicios. Hay decenas de posibilidades de configuración para tcp_wrappers y usted puede estudiarlas por completo por medio de las páginas de manual hosts_access(5) y hosts_options(5). Por lo tanto, ilustraremos solamente algunos casos interesantes del uso de esta herramienta. Las reglas de control de acceso que hay en estos dos archivos tienen el formato siguiente: lista_de_daemons : lista_de_clientes [ : comando ] lista_de_daemons Lista de uno o más nombres de daemons como los especificados en /etc/inetd.conf, o comodines. lista_de_clientes Lista de una o más direcciones, nombres de computadores estándar o comodines que se utilizan para especificar, cuáles son los clientes que pueden y los que no pueden acceder al servicio. 310 Capítulo 8. Seguridad en el Servidor comando (optativo) Es posible ejecutar un comando siempre que la regla coincida con un estándar. Vea los ejemplos siguientes. Como se ha citado anteriormente, los comodines se pueden utilizar tanto en la lista de daemons como en las listas de clientes. Entre los existentes, se pueden destacar los siguientes: ALL Significa todos los daemons o todos los clientes, lo que depende solamente del campo en que se encuentran. LOCAL Este comodín se ajusta a cualquier nombre de computador que no contenga un carácter punto “.”, o sea, un computador local. PARANOID Se ajusta con cualquier nombre de computador que no coincida con su dirección. Esto generalmente ocurre cuando algún servidor DNS está mal configurado o cuando algún computador está intentando hacerse pasar por otro. En la lista de clientes se pueden utilizar los nombres o las direcciones de los 311 Capítulo 8. Seguridad en el Servidor computadores, o también las predefiniciones que especifican a un conjunto de computadores. Si la cadena de caracteres que identifica a un cliente empieza con un punto “.”, el nombre de un computador coincidirá con este patrón, siempre que su final se ajuste a la predefinición especificada. Por ejemplo, si se utilizara la cadena de caracteres “.conectiva.com.br”, el nombre de computador “gateway.conectiva.com.br” coincidiría con el patrón. De manera semejante, si la cadena de caracteres termina con un punto “.”, una dirección de computador coincidirá con el patrón cuando sus campos numéricos iniciales, coincidan con la cadena de caracteres especificada. Como ejemplo, si se utilizase la cadena de caracteres “192.168.220.”, todas las máquinas que tengan una dirección IP que se inicie con estos 3 conjuntos de números coincidirán con el patrón (192.168.220.0 al 192.168.220.255). Además de estos métodos, es posible identificar a un cliente por medio de IP / máscara de red. Puede especificar, por ejemplo, 192.168.220.0 / 255.255.255.128 y cualquier máquina con dirección IP entre 192.168.220.0 y 192.168.220.127 coincidiría con el patrón. Nada mejor que los ejemplos prácticos para facilitar el entendimiento. Una buena política, es la de cerrar completamente el acceso de todos los servicios a cualquier cliente mediante el archivo /etc/hosts.deny y liberar selectivamente el acceso a los servicios necesarios por medio del archivo /etc/hosts.allow. En el Ejemplo 8-1, tenemos una configuración en la que liberamos el acceso a FTP solamente al dominio “red.net”, el acceso al servidor POP3 para cualquier máquina, todos los servicios para “localhost” y negamos los demás servicios para todas las otras máquinas. 312 Capítulo 8. Seguridad en el Servidor Ejemplo 8-1. Ejemplo de Configuración de tcp_wrappers Abajo, el archivo /etc/hosts.deny. # hosts.deny # Este archivo hace una lista con los nombres de los computadores que # _NO_ tienen permiso para usar los servicios ofrecidos por esta # máquina a través de INET, usando el servidor # /usr/sbin/tcpd (tcp_wrapper) para chequear los permisos. # Recomendamos que se lea el manual hosts_access, en la sección # 5; para eso ejecute: # man 5 hosts_access # # Recuerde que el portmap nuevo, utiliza este archivo para decidir cuáles # máquinas pueden acceder a los servicios de NFS ofrecidos por este computador. ALL:ALL Archivo /etc/hosts.allow. # hosts.allow # Este archivo hace una lista con los nombres de los computadores que tienen # permiso para usar los servicios ofrecidos por esta # máquina a través de INET, usando el servidor # /usr/sbin/tcpd (tcp_wrapper) para chequear los permisos. 313 Capítulo 8. Seguridad en el Servidor # Recomendamos que se lea el manual hosts_access, en la sección # 5; para eso ejecute: # man 5 hosts_access ALL: localhost in.ftpd: .rede.net ipop3d: ALL En el Ejemplo 8-2, considere el mismo archivo /etc/hosts.deny del ejemplo anterior. Ejemplo 8-2. Configuración de tcp_wrappers Menos Restrictiva Archivo /etc/hosts.allow. # hosts.allow # Este archivo lista los nombres de los computadores que tienen # permiso para usar los servicios ofrecidos por este # computador mediante INET, usando el servidor # /usr/sbin/tcpd (tcp_wrapper) para chequear permisos. # Recomendamos que se lea el manual hosts_access, en la sección # 5; para eso ejecute: # man 5 hosts_access 314 Capítulo 8. Seguridad en el Servidor ALL: localhost in.ftpd: .rede.net 200.234.123.0/255.255.255.0 200.248. ipop3d: ALL EXCEPT hackerboys.org En este último caso, los computadores de la red “200.234.123.0/255.255.255.0” y computadores en los que la dirección IP se inicia por “200.248.” también pueden acceder al servicio FTP. Note que utilizamos un operador nuevo para el servicio ipop3d: EXCEPT. Esto permitió que el acceso a este servicio se liberara para todos, excepto para los computadores de la red “hackerboys.org”. El operador EXCEPT se puede utilizar ya sea de la lista de clientes, como de la lista daemons. Por ejemplo, la línea: ALL EXCEPT in.ftpd: ALL en el archivo /etc/hosts.allow, se permite el acceso a todos los servicios para cualquier máquina, exceptuando al FTP. Todos los accesos, con o sin éxito, se registran mediante syslog. En Conectiva Linux, esta información se registra en el archivo /var/log/secure. Se recomienda que este archivo se analice periódicamente buscando intentos de invasión. Otros ejemplos de configuración se describen en las páginas del manual de la sección 5 citadas anteriormente (hosts_access y hosts_options). 315 Capítulo 8. Seguridad en el Servidor Firewall mediante el filtro de paquetes Un firewall es un sistema que aisla redes diferentes y permite que se controle el tránsito entre ellas. Un ejemplo típico, donde se recomienda el uso de un firewall es en la conexión de una red local para Internet. Aunque el concepto de firewall sea bastante amplio y pueda involucrar a los servidores proxy, a los analizadores de logs y filtros de paquetes, entre otras características, nos detendremos en esta sección en el filtro de paquetes proporcionado por el núcleo de Linux. El núcleo de Linux cuenta con un filtro de paquetes bastante funcional y permite que su máquina descarte o acepte los paquetes IP, con base en el origen, el destino y la interfaz por la que el paquete se recibió. El origen y el destino de un paquete se caracterizan por una dirección IP, un número de puerto y por el protocolo. Todo el tráfico a través de una red, se envía en el formato de paquetes. El comienzo de cada paquete informa para donde está yendo, de dónde vino y el tipo de paquete entre otros detalles. La parte inicial de este paquete, entre otros detalles, se denomina encabezamiento. El resto del paquete que contiene la información propiamente dicha, suele denominarse, cuerpo del paquete. Un filtro de paquetes analiza el encabezamiento de los paquetes que pasan por el computador y decide lo que hacer con el paquete entero. Las acciones que se pueden tomar con relación al paquete son: aceptar: el paquete puede seguir hasta su destino. rechazar: el paquete será descartado, como si la máquina jamás lo hubiese recibido. 316 Capítulo 8. Seguridad en el Servidor bloquear: el paquete será descartado, pero el origen del paquete tendrá la información sobre la acción que se tomó. El filtro de paquetes del núcleo se controla con reglas de firewall, que se pueden dividir en cuatro categorías: cadena de entrada (input chain), cadena de salida (output chain), cadena de reenvío (forward chain) y las cadenas definidas por el usuario (user defined chain). Para cada una de estas cadenas se mantiene una tabla de reglas separada. Una regla de firewall especifica los criterios de análisis de un paquete y su albo (target). Si el paquete no encaja con el patrón especificado por la regla, se analiza la regla siguiente de la cadena. Si esta vez el paquete se ajusta con el patrón, la regla siguiente se define por el blanco que puede ser el nombre de una cadena definida por el usuario, o uno de los siguientes valores especiales: ACCEPT Significa que el filtro de paquetes debe dejar pasar el paquete. DENY Significa que el filtro de paquetes debe impedir que el paquete siga adelante. REJECT Así como DENY, significa que el paquete no debe seguir adelante, pero un mensaje 317 Capítulo 8. Seguridad en el Servidor ICMP se envía al sistema generador del paquete, avisándole que se rechazó el paquete. Note que DENY y REJECT tienen el mismo significado para paquetes ICMP. MASQ Este blanco solamente es válido para la cadena de reenvío y para cadenas definidas por el usuario y solamente se puede utilizar cuando el núcleo es compilador con soporte para IP Masquerade. En este caso, los paquetes se enmascararán como si hubieran sido originados por la máquina local. REDIRECT Este blanco solamente es válido para la cadena de entrada y para cadenas definidas por el usuario y solamente se puede utilizar si el núcleo fue compilado con la opción de Transparent proxy. Con esto, los paquetes se dirigirán para un socket local, aunque hayan sido enviados para una máquina remota. Obviamente eso sólo tiene sentido si la máquina local se utiliza como gateway para otras máquinas. Si el puerto especificado para cambiar de dirección es “0” que es el valor patrón, el puerto de destino de los paquetes se utilizará como puerto de redireccionamiento. Si se especificó otro puerto cualquiera, éste será utilizado, independientemente de aquél especificado en los paquetes. RETURN Si a la regla que contiene el blanco RETURN, la ha llamado otra de ellas, se analizará la que le sigue en la cadena que la llamó. Si no ha sido llamada por otra regla, se utiliza la política estándar de la cadena, para definir el destino del paquete. 318 Capítulo 8. Seguridad en el Servidor La configuración del filtro de paquetes en el núcleo 2.2 se efectúa mediante el programa de línea de comando ipchains. Sin embargo, Linuxconf tiene un módulo de configuración de filtro de paquetes que facilita bastante esta tarea. Antes de intentar configurar el filtro de paquetes, asegúrese de que el paquete ipchains está instalado y que además el módulo firewall está habilitado en el Linuxconf2. Para verificar si ipchains está instalado, ejecute el comando: # rpm -q ipchains Si la respuesta para este comando fuera “paquete ipchains no está instalado”, usted debe instalarlo a partir del CD 1 de Conectiva Linux. Con el CD montado en /mnt/cdrom, ejecute el comando siguiente , como superusuario, para instalar el programa: # rpm -ivh /mnt/cdrom/conectiva/RPMS/ipchains* Ya para verificar si el módulo de Linuxconf está habilitado, siga los pasos descriptos en el capítulo de Linuxconf. Configuración del filtro de paquetes por Linuxconf La configuración del filtro de paquetes en Linux es bastante flexible y fácilmente 2. Este módulo está habilitado por defecto, en Conectiva Linux. 319 Capítulo 8. Seguridad en el Servidor se puede volver una tarea complicada. El sistema Linuxconf propone una lógica simple que facilita la configuración de las reglas de firewall. Al mismo tiempo que esta lógica ayuda a crear y mantener las configuraciones de un firewall básico, impide que algunas configuraciones más sofisticadas se generen con Linuxconf. Dentro de esta lógica, cuando usted activa cualquiera de las tres cadenas (entrada, salida o reenvío), Linuxconf configurará la política estándar de la cadena como DENY. Todas las reglas que usted agregue son aberturas en el firewall. Si usted no agrega ninguna regla, su computador quedará completamente aislado. Note que, a causa de esta filosofía, Linuxconf no soporta cadenas definidas por el usuario, entre otras funciones. En general, configurando solamente la cadena de entrada llamada firewall por entrada en Linuxconf, ya tenemos un buen control sobre lo que se puede acceder en la máquina. Para habilitar la cadena de entrada, marque la opción “Reglas de entrada” en Configuración → Configuración de Red → Firewalling → Firewalling: valores por defecto . Como se ha mencionado antes, esto hará que la política estándar de la cadena de entrada sea DENY. Por lo tanto, usted debe agregar reglas para reducir esta restricción, de manera que sea posible acceder a algo en el computador. Suponiendo que se quiera permitir solamente el acceso a un servidor web que escucha en el puerto 80 del computador y bloquear todo el resto, una sola regla sería suficiente. Usted debe, entonces, agregar una regla de firewall por entrada (Configuración →Configuración de Red→ Firewalling → Redireccionamiento de entrada). La Figura 8-6 ilustra la ventana de configuración de reglas de entrada. 320 Capítulo 8. Seguridad en el Servidor Figura 8-6. Configuración de reglas de entrada En esta ventana hay un checkbox que permite activar o desactivar la regla. A 321 Capítulo 8. Seguridad en el Servidor continuación están los siguientes campos: Comentario Local para describir la regla de forma sucinta Protocolo Lugar donde se especifica para que protocolos es válida la regla en cuestión. Los valores posibles son: all, para todos los protocolo; tcp; udp e icmp. Política de reglas Define la política de la regla, especificando qué es lo que hará con los paquetes que llegaron hasta la regla. La política puede ser aceptar, rechazar o denegar (ACCEPT, REJECT o DENY, respectivamente). El resto de la información necesaria para configurar una regla, están dispuestas en tres guías. La Figura 8-7 ilustra la guía “Hacia”, que como se puede ver, es idéntica a la guía “Desde”, ilustrada en la Figura 8-6. De todos modos, los datos insertados en la guía “Desde” se refieren al origen del paquete, mientras que en la guía “Hacia” los datos se refieren al destino del mismo. 322 Capítulo 8. Seguridad en el Servidor Figura 8-7. Configuración de guías Los campos que hay en ambas guías (Desde y Hacia) se describen a continuación: 323 Capítulo 8. Seguridad en el Servidor Nombre de máquina o red Lugar para especificar el origen (guía Desde) o destino (guía Hacia) de un paquete. Especifique de preferencia una dirección IP, aunque sea posible especificar un nombre de computador, que se resolverá después por DNS. Máscara de red Lugar para definir la máscara de red referida a la dirección IP (o nombre de máquina) utilizado en el campo indicado arriba. Trate siempre de informar una máscara de red, para evitar que Linuxconf piense por usted. Rango de puertos Lugar para especificar un rango de puertos de origen (guía Desde) o de destino (guía Hacia) del paquete al que se refiere la regla. Otros puertos Lugar para especificar otros puertos de origen (guía Desde) o de destino (guía Hacia) del paquete al que la regla se refiere. Aceptar Paquete Syn de TCP Si esta opción se deshabilita (cuando por defecto está habilitada), no se aceptarán los paquetes que solicitan el comienzo de una conexión. Solamente tiene sentido deshabilitar esta opción, cuando la regla especifica el protocolo TCP y la política de 324 Capítulo 8. Seguridad en el Servidor la regla es “aceptar”. Interfaz de entrada Local para especificar la interfaz por la cual el paquete debe estar entrando. La guía siguiente es la guía “Opciones” (Figura 8-8). 325 Capítulo 8. Seguridad en el Servidor Figura 8-8. Configuración de la Guía Opciones Esta guía cuenta con los siguientes campos: 326 Capítulo 8. Seguridad en el Servidor Esta regla es bidireccional Si esta opción estuviera marcada (por defecto), la regla se repetirá con el origen y destino invertidos. Es por esto que Linuxconf le permite especificar la interfaz dos veces. Si a usted no le gusta este comportamiento, desactive entonces la opción. Factor de ordenación Permite que usted le atribuya un valor para cada regla, de manera que usted pueda ordenarlas como lo desee. Las reglas con factor menor se evaluarán primero. Logging está activado Si se habilita esta opción, el núcleo imprimirá la información sobre el paquete por medio de la función printk(), siempre que un paquete se ajuste con la regla en cuestión. En Conectiva Linux, esto significa que dicha información se grabará en el archivo /var/log/messages. Redirigir a un puerto local Si se habilita esta opción, los paquetes que se ajusten con la regla en cuestión se dirigirán para el computador local. Usted podría, por ejemplo, encaminar todos los paquetes destinados a un servidor FTP de su red, para un puerto local del computador, utilizado como gateway. 327 Capítulo 8. Seguridad en el Servidor Puerto redirigido Si no se especificó ningún puerto en este campo, el puerto de destino del paquete se utilizará como puerto de encaminamiento. Si se especificó algún puerto, éste se utilizará como puerto de encaminamiento. Es posible que, al agregar una regla equivocada, su computador pare de funcionar correctamente. En este caso, utilice el comando netconf --resetfw que todas las reglas del filtro de paquetes, se desactivarán temporalmente. Además de agregar reglas para paquetes que entren en el computador, es posible agregar reglas para paquetes que salgan del computador y para paquetes que pasan a través del computador, de una interfaz de red para otra. En Linuxconf se utilizan los términos “Firewalling de salida” y “Forward firewall ”, respectivamente, para definir estos dos tipos de reglas. Mientras que, las reglas de salida no se usan mucho en gran parte de los casos, reglas de reenvío se utilizan comúnmente cuando se tiene un computador como gateway entre una red local y la Internet (u otra red cualquiera). Por este motivo, nos detendremos en la explicación del “Forward firewalling”. Además, la configuración de las reglas de entrada y de salida son semejantes, aunque la lógica esté invertida. En la Figura 8-9, se puede observar un ejemplo típico de uso de “Forward firewalling”. 328 Capítulo 8. Seguridad en el Servidor 329 Capítulo 8. Seguridad en el Servidor En este diseño, considere que las direcciones IP de la red local son públicos, o sea, se pueden utilizar en Internet y fueron designados por la empresa que proporciona la conexión. Para permitir que las máquinas de la red local, puedan acceder a los computadores que hay en Internet no se necesita ninguna regla de reenvío. La única exigencia, es que el núcleo esté compilado con “IP firewalling” y que el mismo esté habilitado. La forma de habilitar esta característica del núcleo es la de efectuar el siguiente comando, como superusuario: # echo 1 > /proc/sys/net/ipv4/ip_forward Conectiva Linux puede habilitar esta característica automáticamente, durante la iniciación del sistema. Para que ocurra esto, debe haber una línea con: IP_FORWARD="yes" o IP_FORWARD="true" en el archivo /etc/sysconfig/network. Si el valor de esta variable fuera “no” o “falsa”, Conectiva Linux no habilitará esta característica durante la iniciación del sistema. Aunque no se necesite ninguna regla de reenvío para hacer posible que los computadores de la red local accedan a Internet, puede ser interesante bloquear el acceso para algunos servicios. Por ejemplo, puede ser útil bloquear el repase de paquetes que se destinan al puerto 80 (HTTP, generalmente), para forzar el uso 330 Capítulo 8. Seguridad en el Servidor de un servidor proxy para acceder a web. La configuración de esta regla se ilustra en las figuras siguientes. 331 Capítulo 8. Seguridad en el Servidor Figura 8-10. Forward firewalling - Desde 332 Capítulo 8. Seguridad en el Servidor Figura 8-11. Forward firewalling - Hacia 333 Capítulo 8. Seguridad en el Servidor Figura 8-12. Forward firewalling - Opciones Como Linuxconf pone la política estándar de la cadena como “DENY”, en cuanto 334 Capítulo 8. Seguridad en el Servidor se la habilita, se necesita agregar una regla más; explícitamente, libertando el acceso en los demás casos (cuando el destino del paquete no sea el puerto 80 de un computador cualquiera). Añada entonces, una regla de reenvío, según ilustran las figuras siguientes. 335 Capítulo 8. Seguridad en el Servidor Figura 8-13. Añadiendo una regla de origen del paquete 336 Capítulo 8. Seguridad en el Servidor Figura 8-14. Añadiendo una regla de destino del paquete 337 Capítulo 8. Seguridad en el Servidor Figura 8-15. Forward firewalling - Agregando una regla Note que, en esta última regla, el Factor de ordenación se definió como “100”, 338 Capítulo 8. Seguridad en el Servidor para que esta regla sea evaluada por último. Cualquier paquete bloqueado por la regla anterior no llegará hasta esta última. No se olvide de habilitar las “Reglas de reenvío” (Configuración → Configuración de Red → Firewalling → Firewalling: valores por defecto ) o estas reglas no se evaluarán. Otra situación bastante típica está ilustrada en Figura 8-16. 339 Capítulo 8. Seguridad en el Servidor 340 Capítulo 8. Seguridad en el Servidor En esta situación, las direcciones IP de la red local son privadas, o sea, los computadores no forman parte de Internet. Estas máquinas solamente pueden acceder a Internet a través de un servidor proxy o si el gateway hace algún tipo de NAT (Network Address Translation). El núcleo de Linux proporciona esta funcionalidad a través de la característica conocida como “IP Masquerade” (enmascaramiento de IP). Configurar esta funcionalidad en Conectiva Linux es tan simple como configurar las reglas de reenvío demostradas anteriormente. La única diferencia es que se debe marcar la opción enmascarar que hay en la ventana de configuración de la regla. Observe el ejemplo de Figura 8-17. 341 Capítulo 8. Seguridad en el Servidor Figura 8-17. Configurando el enmascaramiento de IP El resto de la regla se debe configurar normalmente (origen del paquete, destino 342 Capítulo 8. Seguridad en el Servidor y opciones). Resumiendo el funcionamiento del “Enmascaramiento de IP”, sirve para que el núcleo traduzca los IPs de la red local que son privados, para el IP de la interfaz que tiene un IP público. Cuando una máquina de la red hace un pedido, éste se encamina por medio del gateway que hace esta traducción de direcciones, rehace el pedido para el computador de destino y cuando recibe la respuesta, la envía para el computador que hizo la solicitud. Esta técnica no funciona en todos los casos, pues algunos protocolos requieren que la máquina remota abra una conexión con el cliente y cuando se utiliza “IP Masquerade” esto generalmente no es posible. Es por este motivo que algunos programas no funcionan con perfección en una red que utiliza enmascaramiento de IP. A pesar de eso, los servicios simples como WWW y el correo electrónico, funcionan perfectamente. El núcleo de Linux cuenta con algunos módulos especiales que aumentan la capacidad del “IP Masquerade”, para que pueda funcionar con más protocolos y programas. A través de Linuxconf, en Configuración → Configuración de Red → Firewalling → Firewalling: valores por defecto , usted puede habilitar estos módulos (CuSeeMe, FTP e IRC, entre otros). La Figura 8-18 ilustra esta pantalla de configuración. 343 Capítulo 8. Seguridad en el Servidor Figura 8-18. Firewall - Enmascaramiento de IP Consulte otras informaciones en Internet en el sitio Linux IP Masquerade Resource (http://ipmasq.cjb.net); usted puede encontrar información sobre la configuración del “Enmascaramiento de IP” en el sitio Masq Apps (http://www.tsmservices.com/ma 344 Capítulo 8. Seguridad en el Servidor Verificando la integridad del sistema Una de las primeras acciones de un invasor suele ser sustituir los archivos y programas del sistema con la intención de enmascarar su visita actual y, principalmente, facilitar las visitas futuras. Por lo tanto, si hubiera la posibilidad de verificar la integridad de los archivos del sistema, hay grandes posibilidades de detectar una invasión. Lo mejor de este recurso es que permite que se sepa cuáles archivos fueron modificados; haciendo posible que el administrador decida entre instalar nuevamente el sistema o solamente sustituir los archivos alterados por los originales. Después de notar que el computador fue invadido, el administrador suele analizar el sistema utilizando programas como ps, ls, netstat y who. Ocurre que estos programas son los primeros que se sustituirán, ocultando así, la invasión y al invasor propiamente dicho. Aunque se tenga la información de la fecha y del tamaño de los archivos originales, estos datos aislados, no pueden utilizarse como parámetro porque se pueden modificar fácilmente. De todos modos, si además de esta información, está disponible, algo como el checksum MD5 de los archivos, se hace mucho más simple encontrar los archivos modificados indebidamente. El programa AIDE (Advanced Intrusion Detection Environment) tiene justamente la finalidad de verificar la integridad de los archivos del sistema. Construye una base de datos con varias informaciones de los archivos especificados en su archivo de configuración. Esta base de datos puede contener varios atributos de los mismos, como: 345 Capítulo 8. Seguridad en el Servidor • permisos; • número de inode, • dueño, • grupo, • tamaño, • fecha y hora de creación, último acceso y última modificación. Además, AIDE también puede generar y almacenar en esta base de datos al checksum criptográfico de los archivos, utilizando uno o una combinación de los siguientes algoritmos : md5, sha1, rmd160 y tiger. El procedimiento que se recomienda es de generar esta base de datos en un sistema recién instalado, antes de conectarlo a una red. Esta base de datos será la fotografía del sistema en su estado normal y el parámetro que se va a utilizar para medir las alteraciones en el sistema de archivos. Obviamente, siempre que usted modifique su sistema, como por ejemplo por medio de la instalación, actualización o retirada de los programas, se debe generar una nueva base de datos. La misma se utilizará en lo sucesivo como parámetro. La base de datos debe contener información sobre los binarios, las bibliotecas y los archivos de encabezamientos importantes del sistema, ya que éstos no suelen alterarse durante el uso normal del sistema. La información sobre los archivos de log, filas de correo electrónico y de impresión, directorios temporales y de usuarios no se deben almacenar en la base de datos, ya que son archivos y directorios que se alteran frecuentemente. 346 Capítulo 8. Seguridad en el Servidor Configuración de AIDE La configuración de AIDE reside en el archivo /etc/aide.conf. Este archivo tiene tres tipos de líneas: líneas de configuración: utilizadas para definir los parámetros de configuración de AIDE. líneas de selección: utilizadas para indicar cuáles archivos tendrá su información agregada a la base de datos. líneas de macro: utilizadas para definir variables en el archivo de configuración. Solamente las líneas de selección son esenciales al funcionamiento del AIDE. A su vez, hay tres tipos de líneas de selección. Estas líneas se interpretan como expresiones regulares. Líneas que comiencen con una barra “/” indican que los archivos que se ajusten con el patrón, tendrán su información agregada a la base de datos. Si la línea se inicia con un punto de exclamación “!”, ocurre lo contrario: los archivos que se ajustan al patrón no se consideran. Las líneas que comienzan por una seña de igualdad “=” informan al AIDE que solamente los archivos que sean exactamente iguales al patrón se deben considerar. A través de las líneas de configuración se pueden definir algunos parámetros de funcionamiento del AIDE. Estas líneas tiene el formato del parámetro=valor. Los parámetros de configuración se describen a continuación: 347 Capítulo 8. Seguridad en el Servidor databas URO del archivo de la base de datos desde donde se lee la información. Puede haber solamente una línea de éstas. Si hubiera más de una, se considera solamente la primera. El valor estándar es ./aide.db. databas_out URL del archivo de la base de datos donde se escribe la información. Así como base de datos, debe haber solamente una línea de éstas. En el caso de que haya varias, solamente se considera la primera vez. El valor estándar es ./aide.db.new. report_url URL donde se escribe la salida del comando. Si existieran varias instancias de este parámetro, la salida se escribirá en todas las URLs. Si usted no define este parámetro, la salida se enviará para la salida estándar (stdout). verbose Define el nivel de mensajes que se envían a la salida. Este valor puede estar en la banda entre 0 y 255 (inclusive) y solamente se considera la primera aparición de este parámetro. Es posible sobrescribir este valor a través de las opciones --version o -V en la línea del comando. 348 Capítulo 8. Seguridad en el Servidor gzip_dbout Informa si la base de datos se debe comprimir o no. Los valores válidos para esta opción son yes, true, no y false. Definiciones de grupos Si el parámetro no fuera ninguno de los anteriores entonces se considera una definición de grupo. Aunque haya algunos grupos pre-definidos que informan al AIDE cuales son las informaciones del archivo que se deben almacenar en la base de datos, usted puede crear sus propias definiciones. La Tabla 8-1 muestra los grupos predefinidos. Tabla 8-1. Grupos Predefinidos p permisos i inode n número de links u dueño g grupo s tamaño m fecha y hora de la última modificación a fecha y hora del último acceso 349 Capítulo 8. Seguridad en el Servidor c fecha y hora de la creación del archivo S verifica el aumento del tamaño del archivo md5 checksum md5 sha1 checksum sha1 rmd160 checksum rmd160 tiger checksum tiger R p+i+n+u+g+s+m+c+md5 L p+i+n+u+g E grupo vacío > archivo de log (aumenta el tamaño) p+u+g+i+n+S Usted podría definir un grupo que verifica solamente al dueño y al grupo del archivo, de la forma siguiente: trivial=u+g Las líneas de macro se pueden utilizar para definir variables y tomar decisiones con base en el valor de las mismas. La información detallada se puede encontrar en la página del manual aide.conf(5). El término URL, utilizado en la configuración de los parámetros base de datos, base de datos_out y report_url, puede asumir uno de los siguientes valores: 350 Capítulo 8. Seguridad en el Servidor stdout: la salida se envía para la salida estándar. stderr: la salida se envía para la salida estándar de error. stdin: la entrada se lee desde la entrada estándar. file:/archivo: la entrada se lee desde el archivo o la salida está escrita en archivo. fd:número: la entrada se lee desde el file-descriptor número o la salida se escribe en file descriptor número. Note que URLs de entrada no pueden utilizarse como salida y viceversa. El Ejemplo 8-3 ilustra una configuración básica para el AIDE. Ejemplo 8-3. Archivo de Configuración de AIDE # Localización de la base de datos database=file:/var/aide/aide.db # Lugar donde se crea una base de datos nueva database_out=file:/var/aide/aide.db.new # Archivo donde se guardará la salida del programa report_url=/var/aide/report.aide # Grupo para verificar el dueño, grupo y permisos trivial=u+g+p 351 Capítulo 8. Seguridad en el Servidor /bin R /sbin R /boot R /etc R # Verifica solamente al dueño, grupo y permisos /etc/passwd trivial /etc/shadow trivial # Ignora el directorio /etc/X11 !/etc/X11 /lib R # Incluido /var /var R # Ignora /var/log, /var/spool y /var/lock !/var/log/.* !/var/spool/.* !/var/lock/.* # Ignora el archivo /var/run/utmp !/var/run/utmp$ Normalmente, lo ideal es ignorar los directorios que se modifican con mucha frecuencia, a no ser que usted quiera logs gigantescos. Un procedimiento que 352 Capítulo 8. Seguridad en el Servidor recomendamos es el de excluir los directorios temporales, las filas de impresión, los directorios de logs y cualquier otra área que se modifique frecuentemente. Por otro lado, se recomienda que se incluyan todos los binarios, las bibliotecas y los archivos de encabezamientos del sistema. Muchas veces es interesante incluir los directorios que usted no solía observar, como /dev/ y el /usr/man. Si desea referirse a un único archivo, usted debe colocar un $ al final de la expresión regular. Con esto, el patrón se ajustará solamente con el nombre exacto del archivo, sin considerar los archivos que tengan el comienzo con nombre semejante. El paquete de AIDE que acompaña Conectiva Linux tiene un archivo de configuración patrón funcional, pero nada lo impide de modificarlo para reflejar sus necesidades. Utilización de AIDE Como el archivo de configuración patrón deberá servir para la mayoría de los casos, para generar la base de datos, es suficiente ejecutar los comandos: # /usr/bin/aide -i # mv /var/aide/aide.db.new /var/aide/aide.db Después de esta operación, usted debe ejecutar el comando: 353 Capítulo 8. Seguridad en el Servidor # /usr/bin/aide-md5 [dispositivo de boot] El parámetro dispositivo de boot es opcional y corresponde al dispositivo de almacenamiento utilizado para la iniciación del sistema (/dev/hda, por ejemplo). El paquete aide-md5 fue desarrollado por Conectiva y suple la falta de firma de la base de datos de AIDE. Informa los sumatorios MD5 de algunos componentes críticos para el funcionamiento de AIDE, inclusive de la propia base de datos recién generada. Usted debe tener en cuenta esos sumatorios para verificarlos posteriormente. Si el dispositivo de boot se informa para aide-md5, el MD5 del sector de boot también se calculará, por lo tanto es interesante informar ese parámetro. Para verificar la integridad del sistema, ejecute el propio AIDE, de esta forma: # /usr/bin/aide -C Los archivos que sufrieron cualquier cambio, sea en el tamaño, contenido, permisos o fecha de creación se registrarán en una lista. Es probable que la mayoría de las veces que AIDE apunta las diferencias en los archivos, ellas hayan sido provocadas por actos legítimos, por ejemplo, actualización de paquetes o intervención del administrador del sistema. En esos casos, el administrador debe, después de una conferencia, reconstruir la base de datos. Para verificar la integridad del propio AIDE, se debe utilizar nuevamente el programa aide-md5, pero esta vez, de un medio físico cambiable, como por ejemplo, de un disquete: 354 Capítulo 8. Seguridad en el Servidor # /mnt/floppy/aide-md5 /dev/hda Si alguno de los códigos MD5 no coincide con los generados anteriormente, el(los) respectivo(s) componentes pueden estar comprometidos, y esto es un problema muy serio. Obviamente que, si usted alteró la configuración de AIDE, regeneró la base de datos o actualizó el núcleo, los códigos serán diferentes. Inmediatamente después de efectuar cualquiera de estas alteraciones, usted debe ejecutar nuevamente el aide-md5 y anotar los códigos. Se recomienda copiar el aide-md5 para un medio físico cambiable, protegido contra grabaciones y una vez que el sistema ha entrado en producción, se lo debe ejecutar siempre a partir de ese medio, eventualmente retirando el aide-md5 original del disco duro. Pues si usa aide-md5 del disco duro, y éste queda comprometido, el invasor puede forjar sumatorias MD5 falsamente perfectas. 355 Capítulo 8. Seguridad en el Servidor 356 Capítulo 9. Alta Disponibilidad Introducción Este capítulo describirá los conceptos y la terminología por detrás de la Alta Disponibilidad, así como las aplicaciones y programas de sistema cuyo objetivo es el aumento de la disponibilidad de servidores Linux, que son parte integrante de Conectiva Linux. También se puede usar como un manual para la configuración de estas aplicaciones. Definición Para que se entienda la Alta Disponibilidad se hace necesario, antes de nada, darse cuenta que ella no es solamente un producto o una aplicación que se instale, y sí una característica de un sistema informático. Hay mecanismos y técnicas, bloques básicos que se pueden utilizar para aumentar la disponibilidad de un sistema. La simple utilización de estos bloques, sin embargo, no garantiza este aumento si no fuese acompañado de un estudio completo y de un proyecto de configuración La Disponibilidad de un sistema de informática, indicado por A(t), es la proba- 357 Capítulo 9. Alta Disponibilidad bilidad de que este sistema esté funcionando y listo para usar en un determinado momento t. Esta disponibilidad puede encuadrarse en tres clases, de acuerdo con la banda de valores de esta probabilidad. Las tres son: disponibilidad básica, alta disponibilidad y disponibilidad continua. Disponibilidad básica La Disponibilidad básica es la que se encuentra en máquinas comunes, sin ningún mecanismo especial, en software o hardware, que tenga como objetivo enmascarar las fallas eventuales de estas máquinas. Se suele decir que computadores en esta clase, presentan una disponibilidad de 99% a 99,9%. Esto equivale a decir que en un año de operación la máquina puede quedar no disponible por un período de 9 horas a cuatro días. Estos datos son empíricos y los tiempos no toman en consideración la posibilidad de paradas planeadas (que se abordarán más adelante), pero se aceptan como sentido común en la literatura del área. Alta disponibilidad Agregando mecanismos especializados de detección, recuperación y enmascaramiento de fallas, se puede aumentar la disponibilidad del sistema, de forma que éste se ajuste a la clase de Alta disponibilidad. En esta clase, las máquinas presentan generalmente disponibilidad en la banda de 99,99% a 99,999%, sin embargo, pueden quedar no disponibles por un período de un poco más de 5 minutos hasta una hora en un año de operación. Aquí se ajusta gran parte de las aplicaciones 358 Capítulo 9. Alta Disponibilidad comerciales de Alta disponibilidad, como las centrales telefónicas. Disponibilidad continua Agregando nueves, se obtiene una disponibilidad cada vez más próxima de 100%, disminuyendo el tiempo que esté inoperante el sistema de manera que se torne despreciable o inexistente. Se llega de esta manera a la Disponibilidad continua, lo que significa que todas las paradas planeadas y no planeadas son enmascaradas y el sistema está siempre disponible. Objetivos Como ya se puede notar por la definición, el objetivo principal de la Alta disponibilidad, es el de buscar una forma de mantener los servicios prestados por un sistema, a otros elementos; aunque el sistema en sí, acabe modificándose internamente por causa de una falla. Ahí está implícito el concepto de enmascaramiento de fallas, a través de redundancia o duplicación (términos que se definirán más adelante). Un servicio determinado que se quiere altamente disponible, se coloca por tras de una capa de abstracción que permita cambios en sus mecanismos internos, manteniendo intacta la interacción con los elementos externos. Este es el corazón de la Alta disponibilidad, la sub-área de Tolerancia a Fallas 359 Capítulo 9. Alta Disponibilidad que procura mantener la disponibilidad de los servicios prestados por un sistema informatizado, mediante hardware redundantes y reconfiguración de software. Varios computadores juntos actuando como uno solo, cada uno controlando a los otros y asumiendo sus servicios si nota que alguno de ellos ha fallado. Otra posibilidad importante de la Alta disponibilidad es la de hacer estas cosas con computadores comunes, como los que se pueden comprar hasta en un supermercado. La complejidad puede estar solamente en el software. Más fácil de desarrollar que el hardware, el software de Alta disponibilidad es quien se preocupa en controlar otros computadores de una red, saber que servicios se están prestando o quien los está prestando y lo que hay que hacer cuando se nota una falla. Cálculo de la Disponibilidad En un sistema real, si falla un componente, se lo repara o sustituye por un nuevo componente. Si este nuevo componente falla, se lo sustituye por otro y así sucesivamente. El componente reparado se considera como igual a uno nuevo. Durante su vida útil, un componente puede considerarse en uno de estos estados: funcionando o en reparación. El estado funcionando indica que el componente está operando y el estado en reparación significa que falló y que todavía no fue sustituido por uno nuevo . En el caso de defectos, el sistema irá de funcionando para en reparación y cuando se hace la sustitución vuelve para el estado funcionando. Se puede decir que a lo largo de su vida, el sistema presenta un tiempo útil medio antes de presen- 360 Capítulo 9. Alta Disponibilidad tar una falla (MTTF) y un tiempo medio de reparación (MTTR). Su tiempo de vida es una sucesión de MTTFs y MTTRs, a medida que va fallando y siendo reparado. El tiempo de vida útil del sistema es la suma de los MTTFs en los ciclos MTTF+MTTR ya vividos. De forma simplificada, se dice que la disponibilidad de un sistema es la relación entre el tiempo de vida útil de este sistema y su tiempo total de vida. Esto se puede representar con la fórmula abajo: Disponibilidad = MTTF / (MTTF + MTTR) Al evaluar una solución de Alta Disponibilidad, es importante tomar en consideración si en la medición del MTTF se observan como fallas las posibles paradas planeadas. Más consideraciones sobre este asunto se presentarán en secciones posteriores. Conceptos Para entender correctamente lo que se está diciendo cuando se discute una solución de Alta disponibilidad, se deben conocer los conceptos involucrados. No son muchos, pero estos términos se utilizan muchas veces de manera equivocada en literatura no especializada. Antes que nada, se debe comprender lo que es una falla, un error y un defecto. Estas palabras, que parecen tan próximas, en realidad 361 Capítulo 9. Alta Disponibilidad designan la ocurrencia de algo anormal en tres universos diferentes de un sistema informatizado. Falla Ocurre una falla en el universo físico, o sea, en el nivel más bajo del hardware. Una fluctuación en la fuente de alimentación, por ejemplo, es una falla. Una interferencia electromagnética también. Estos son dos eventos indeseables que ocurren en el universo físico y afectan el funcionamiento de un computador o de una parte de él. Error Si acontece una falla, puede producirse un error que es la representación de la falla en el universo de la informática. Un computador trabaja con bits, cada uno puede contener 0 ó 1. Una falla puede hacer con que un bit (o más de uno) cambie de valor inesperadamente, lo que seguramente afectará el funcionamiento normal del computador. Una falla, por lo tanto, puede generar un error en alguna información. 362 Capítulo 9. Alta Disponibilidad Defecto Si es que esta información equivocada, no se detecta ni se corrige, podrá generar lo que se conoce como defecto. El sistema simplemente traba o muestra un mensaje de error, también puede perder los datos del usuario sin mayores avisos. Esto se percibe en el universo del usuario. Recapitulando, una falla en el universo físico puede causar un error en el universo de la informática, que a su vez puede causar un defecto notado en el universo del usuario. La tolerancia a las fallas trata exactamente de acabar con las fallas, o tratarlas mientras son todavía errores. Por su parte, la Alta disponibilidad, permite que las máquinas se traben o se equivoquen, siempre y cuando haya otra máquina para asumir su lugar. Para que una máquina asuma el lugar de otra, es necesario que descubra de alguna forma que la otra falló. Esto se hace por medio de pruebas periódicas, cuyo lapso debe ser configurable, en los que la máquina secundaria prueba no solamente si la otra está activa, sino también proporciona respuestas adecuadas a las solicitudes de servicio. Un mecanismo de detección equivocado, puede causar inestabilidad en el sistema. Por ser periódicos, se nota que existe un intervalo de tiempo durante el cual el sistema puede estar no disponible sin que la otra máquina lo detecte. Failover Es el proceso mediante el cual una máquina asume los servicios de otra, cuando 363 Capítulo 9. Alta Disponibilidad esta última presenta una falla. El failover puede ser manual o automático, siendo el segundo lo que normalmente se espera de una solución de Alta disponibilidad. Aún así, algunas aplicaciones no críticas pueden soportar un tiempo mayor, hasta que el servicio se recupere y por lo tanto pueden utilizar el failover manual1. Además del tiempo que habrá entre la falla y el de su detección, también existirá el tiempo entre la detección y el restablecimiento del servicio. Las grandes bases de datos, por ejemplo, pueden exigir un período considerable de tiempo hasta que indexen sus tablas y durante este período el servicio todavía no estará disponible. Para que se ejecute el failover de un servicio, es necesario que las dos máquinas involucradas tengan recursos equivalentes. Un recurso puede ser una tarjeta de red, un disco duro, incluso más importante los datos en este disco, bien como cualquier elemento necesario para prestar un determinado servicio. Es vital que una solución de Alta disponibilidad mantenga recursos redundantes con el mismo estado, de manera que el servicio se pueda volver a ejecutar sin pérdidas. Dependiendo de la naturaleza del servicio, ejecutar un failover significa interrumpir las transacciones en marcha, perdiéndolas y será necesario reiniciarlas después de efectuado ese proceso. En otros casos, significa solamente un retardo hasta que el servicio esté nuevamente disponible. Se nota que el failover puede ser o no, un proceso transparente, depende de la aplicación involucrada. 1. 364 que un administrador o un operador pueden hacer Capítulo 9. Alta Disponibilidad Failback Al notarse la falla de un servidor, además de contar con el failover, es obviamente necesario que se haga el mantenimiento en el servidor fallado. Cuando se recupera de la falla, este servidor, vuelto o ponerse en servicio, tendrá la opción de realizar el proceso inverso del failover, que se llama failback. Que es por lo tanto, el proceso de retorno de un determinado servicio desde otra máquina para su máquina de origen. También puede ser automático, manual o incluso indeseable. En algunos casos, en función de una posible nueva interrupción en la prestación de servicios, el failback puede perder atractivo. Misión Cuando se calcula la disponibilidad de un sistema, es importante que se observe el concepto de misión. Misión de un sistema es el período de tiempo en el cual debe desempeñar sus funciones sin interrupción. Por ejemplo, una farmacia que funcione de las 8 a las 20, no puede tener su sistema fuera del aire durante ese período de tiempo. Si este sistema presentase defectos fuera de este período, aunque sean indeseables, estos defectos no molestan en nada la marcha correcta del sistema cuando es necesario. Una farmacia 24h obviamente tiene una misión continua, de manera que cualquier tipo de parada se debe enmascarar. La Alta disponibilidad tiene como objetivo eliminar las paradas no planeadas. Por ejemplo, en el caso de la primera farmacia, las paradas planeadas no deben ocurrir dentro del período de la misión. Las paradas no planeadas son consecuen- 365 Capítulo 9. Alta Disponibilidad cia de defectos, mientras que las paradas planeadas son aquellas que se deben a las actualizaciones, mantenimiento preventivo y actividades correlativas. De esta forma, toda parada dentro del período de la misión se puede considerar una falla en el cálculo de la disponibilidad. Una aplicación de Alta disponibilidad puede proyectarse incluso para soportar paradas planeadas, lo que puede ser importante, por ejemplo, para permitir la actualización de programas por problemas de seguridad, sin que el servicio deje de ser prestado. La solución Conectiva para Alta disponibilidad Conectiva ha participado en proyectos internacionales de Alta disponibilidad, colaborando con la elaboración de distintos programas que suplen las funciones básicas en la construcción de ambientes de Alta disponibilidad. El interés en trabajar en la integración de diversas tecnologías y extenderlas individualmente vienen del objetivo de proveer una solución simple y flexible, que se pueda optimizar para las particularidades de cada aplicación. Todos estos proyectos siguen la filosofía del Software Libre, así como la solución presentada por Conectiva en su Conectiva Linux. 366 Capítulo 9. Alta Disponibilidad En este espíritu de cosas, la solución se basa en cuatro bloques básicos, que son: duplicación del disco, control de nodos, administración de servicios y sistemas de archivos robusto. Estos cuatro bloques se pueden utilizar en conjunto o individualmente; lo que hace posible crear soluciones con failover y failback, automáticos o manuales; con o sin duplicación de datos y que además soporten paradas planeadas. Esta solución se idealizó para un cluster de dos nodos. Administración de nodos La administración de nodos se realiza por el heartbeat. Que es el responsable de probar periódicamente los nodos del cluster, coordinando las acciones de failover y failback. Las soluciones que utilizan la reactivación automática de servicios se basan en este paquete. Usando heartbeat se pueden ejecutar programas en el proceso de failover y failback, controlando cualquier recurso que se desee. Duplicación de disco La duplicación de disco es de responsabilidad del DRBD, un driver de bloque para el núcleo que crea un dispositivo de bloque2 virtual, consistiendo tanto en un disco real local, como en una conexión de red, que tendrá en la otra punta, otro 2. disco 367 Capítulo 9. Alta Disponibilidad driver DRBD actuando como secundario. Todo lo que se escribe en el dispositivo virtual, se escribe en el disco local y también se envía para otro driver, que hará la misma operación en su disco local. Con esto se obtienen dos nodos con discos exactamente iguales, hasta el instante de la falla. Las aplicaciones que trabajan con datos dinámicos o actualizados con mucha frecuencia, se benefician con este driver. Sistema de archivos Datos duplicados o no, es importante que el sistema de archivos sea consistente. No todos los sistemas de archivos garantizan eso, por lo tanto para esta solución se eligió trabajar utilizando Reiser Filesystem3. Este sistema de archivos trabaja con journal, lo que significa que todas las alteraciones de datos se registran antes en el disco para que, si el sistema viniera a fallar durante el proceso, la transacción se pueda recuperar cuando el sistema vuelva. Eso confiere agilidad al proceso de recuperación de fallas, así como aumenta mucho la confiabilidad de la información almacenada. 3. 368 ReiserFS Capítulo 9. Alta Disponibilidad Control de servicios El control de servicios, se hace por medio de Mon, un súper escalonador de tests que puede verificar cientos de máquinas y servicios en forma rápida y ágil; envía alertas para direcciones de correo electrónico, pagers o teléfonos celulares, garantizando que los administradores de los servicios, estén siempre bien informados sobre su estado de operación. Soporta dependencias entre tests, por lo tanto no pierde tiempo verificando si un servidor de HTTP está respondiendo en una máquina que sabe que está inoperante. Un alerta puede incluso intentar recuperar la situación automáticamente o reiniciar una máquina, si la falla ocurre en un horario de difícil mantenimiento. Configuración de DRBD Si tiene dos computadores, denominados aquí como ha1 y ha2, efectúe estas configuraciones de manera idéntica en los dos. Instale el paquete de utilidades de DRBD: # rpm -ivh drbd* drbd-utils ############################## drbdconf ############################## # 369 Capítulo 9. Alta Disponibilidad Configuración vía Linuxconf Abra Linuxconf y acceda a Configuración→Configuración de red→Tareas como servidor→ Dispositivos DRBD → Agregar . Observe la Figura 9-1. Figura 9-1. Configuración de DRBD En el campo Nodo: coloque el hostname del Maestro y en el campo Partición: la partición para el DRBD. Efectúe estas configuraciones también para el Esclavo, a través de la pestaña Configuración para Esclavo . Haciendo clic en Aceptar surgirá el archivo drbd0, Figura 9-2. 370 Capítulo 9. Alta Disponibilidad Figura 9-2. Archivo de configuración Haciendo clic en Salir el módulo preguntará si usted desea reiniciar los servicios, presione en Sí. Configuración por el modo texto En el directorio /etc/sysconfig/drbd usted encontrará el ejemplo de un archivo descriptivo para un dispositivo DRBD, el drdb.example. Copie este archivo con el nombre de /etc/sysconfig/drbd/drbd0 y efectúe la siguiente configuración: # dirección del master y del slave end[:puerto] # puerto estándar: 7788 371 Capítulo 9. Alta Disponibilidad # Importante: no use nombres de dominio aquí, solamente # los hostnames de la forma reportada por el hostname -s MASTER_NODE="ha1:7788" SLAVE_NODE="ha2:7788" # Aquí usted podrá colocar una dirección IP específica de las interfaces si # fuera necesario. Si se utiliza, la definición de puerto # (7788, 7779, ...) debe estar aquí. Si no se va a utilizar, debe # permanecer en blanco (vacío "") pero nunca comentado (#). MASTER_IF="" SLAVE_IF="" OPTIONS="" # El protocolo usado para este dispositivo o protocolo de confirmación # puede ser A, B o C. PROTOCOL="B" # Los dispositivos usados en el master y en el slave (pueden ser diferentes en # cada máquina) MASTER_DEVICE="/dev/nb0" SLAVE_DEVICE="/dev/nb0" 372 Capítulo 9. Alta Disponibilidad # Particiones para el drdb (puede ser una partición diferente en cada # máquina), ellas deben tener un tamaño semejante. MASTER_PARTITION="/dev/hda6" SLAVE_PARTITION="/dev/hda6" Inicie el DRBD: # /etc/rc.d/init.d/drbd start Loading DRBD module [ OK ] Configuring DRBD resource drbd0 [ OK ] Waiting for DRBD resource drbd0 to resynchronize [ OK ] # A través del comando: # /etc/rc.d/init.d/drbd status version : 55 0: cs:WFConnection st:Secondary ns:0 nr:0 dw:0 dr:0 of:0 # Usted podrá verificar el estado del DRBD en el sistema. O incluso verificar el archivo /var/log/messages con el comando # tm y observar lo que hubo durante 373 Capítulo 9. Alta Disponibilidad el inicio del DRBD. Monte la unidad a través del script datadisk de la siguiente forma: # /etc/ha.d/resource.d/datadisk start # No se puede montar simultáneamente la partición en los dos nodos. Sistema de archivos Reiserfs Instale el paquete de utilidades de Reiserfs: # rpm -ivh reiserfs-utils* reiserfs-utils ############################### # Inicie la partición con el comando: # dd if=/dev/zero of=/dev/hda6 Cree un sistema de archivos Linux Reiserfs utilizando el comando: 374 Capítulo 9. Alta Disponibilidad # mkreiserfs /dev/hda6 <-------MKREISERFS, 1999-------> ReiserFS version 3.5.21 Block size 4096 bytes Block count 257032 First 16 blocks skipped Super block is in 16 Bitmap blocks are : 17, 32768, 65536, 98304, 131072, 163840, 196608, 229376 Journal size 8192 (blocks 18-8210 of device 0x3:0x6) Root block 8211 Used 8219 blocks Hash function "tea" ATTENTION: ALL DATA WILL BE LOST ON ’/dev/hda6’! (y/n)y Initializing journal - 0%....20%....40%....60%....80%....100% Syncing.. Configuración de Heartbeat 375 Capítulo 9. Alta Disponibilidad Instale el paquete de Heartbeat: # rpm -ivh heartbeat* heartbeat ############################## heartbeatconf ############################## # Configuración mediante Linuxconf La configuración de heartbeat puede hacerse por medio del módulo Configuración de heartbeat de Linuxconf. Este módulo usted encontrará accediendo al menú en Configuración→Configuración de red→Tareas como servidor→ Configuración heartbeat. Vea la Figura 9-3. 376 Capítulo 9. Alta Disponibilidad Figura 9-3. Configuración de Heartbeat En Nodos y Servicios haga clic en Agregar y agregue un nombre para el nuevo modo, en nuestro ejemplo ha1. Haciendo clic en aceptar surgirá el nodo que usted agregó, Figura 9-4. 377 Capítulo 9. Alta Disponibilidad Figura 9-4. Nodos Haga clic sobre el nombre del nodo (ha1), surgirá la ventana Editando nodo con el botón IPs y Servicios. Mediante este botón elija Agregar y digite un IP4 para este nodo y los recursos que se deben administrar, en el campo Servicios. La Figura 9-5 contiene un ejemplo utilizando un IP para este nodo y algunos recursos separándolos por un espacio en blanco. 4. 378 virtual Capítulo 9. Alta Disponibilidad Figura 9-5. IPs y Servicios Vamos a definir ahora la clave de la autenticación, haciendo clic en el botón Claves de autenticación de la Figura 9-3, surgirá una ventana con tres métodos de autenticación y un campo para la definición de una clave. Rellene de forma semejante a la Figura 9-6. Figura 9-6. Claves de autenticación 379 Capítulo 9. Alta Disponibilidad En este caso el método elegido fue md5 y la clave de autenticación Olá!. Para configurar un dispositivo del tipo UDP, por ejemplo, haga clic en Configuración del dispositivo→Agregar→udp. Teclee un nombre para el dispositivo, en nuestro caso de Figura 9-7 tecleamos en el campo Nombre del Dispositivo eth0. Figura 9-7. Lista de dispositivos Por último haremos algunas configuraciones personalizadas mediante el botón Configuraciones diversas. Aquí configuramos nombres para archivos de mensajes, implementación para el syslog, tiempos opcionales en segundos y el puerto UDP. Note que dejamos la opción Nice failback habilitada. Vea la figura del ejemplo Figura 9-8. 380 Capítulo 9. Alta Disponibilidad Figura 9-8. Configuraciones diversas Más detalles sobre estas configuraciones se podrán ver a continuación , en configuración por el modo texto. Configuración por el modo texto 381 Capítulo 9. Alta Disponibilidad Edite el archivo haresources. Este archivo contiene una lista de recursos que se mueven de computador a computador, según se caigan o levanten los nodos en el cluster. No incluya direcciones de IP fijas o administrativas en este archivo. Ejemplo para el archivo /etc/ha.d/haresources: #nombre-del-nodo dirección-IP-virtual recurso1 recurso2 ... recursoN ha1 10.0.17.26 mysql httpd datadisk Otro archivo a ser modificado es el ha.cf, este archivo tiene muchas opciones. Todo lo que usted necesita es de una lista de conjunto de nodos (node ...) y una lista de interfaces. Ejemplo de configuración para el archivo /etc/ha.d/ha.cf: # keepalive: tiempo en segundos entre heartbeats keepalive 1 # deadtime: tiempo en segundos para declarar el host caído deadtime 5 # puerto UDP usado para comunicación udp udpport 1001 382 Capítulo 9. Alta Disponibilidad # interfaz para el heartbeat, una o varias udp eth0 # Si el cluster estuviera ejecutando cuando el primario inicie, # entonces él actuará como un secundario. nice_failback on # Archivo para grabar mensajes de debug debugfile /var/log/ha-debug # Archivo para escribir otros mensajes logfile /var/log/ha-log # facility usada para o syslog logfacility local0 # Máquinas que están en el cluster, nodo nombre-del-nodo ... (nombre obtenido por # uname -n). node ha1 node ha2 El archivo de autenticación debe estar en el modo 600 (-rw-------), solamente 383 Capítulo 9. Alta Disponibilidad lectura y escritura para el dueño, elija el método y la clave que irá con este identificador del método. Ejemplo para el archivo /etc/ha.d/authkeys: # Se debe especificar solamente una indicación auth # al comienzo. # auth método-de-autenticación auth 3 # El método md5 se considera el más seguro para este caso. 3 md5 Olá! 384 Capítulo 10. Redes Mixtas En este capítulo presentaremos información concerniente a instalación, configuración y mantenimiento de redes heterogéneas. Verá la forma de trabajar para que su servidor Conectiva Linux actúe como si fuera un Windows® o un Netware®, permitiendo que las estaciones no-Conectiva Linux se puedan utilizar de forma transparente. Además, verá cómo crear un servidor de archivos. También aprenderá cómo configurar sus computadores clientes para acceder a estos servicios. NFS Introducción y conceptos La mayor ventaja de usar redes de computadores está en la posibilidad de compartir información y recursos. En realidad, éste es el propósito principal al utilizar una red. La información se puede compartir de varias formas, como por ejemplo, al usar FTP, web, entre otros casos. Mientras que los recursos de una red que se pueden compartir entre varios computadores, como por ejemplo, los discos, se podrán realizar mediante NFS. La sigla NFS indica Network File System, en español, Sistema de Archivos de 385 Capítulo 10. Redes Mixtas Red. Se creó para permitir el acceso transparente a discos remotos. Además permite centralizar mejor la administración de los discos, pues hace posible que haya directorios en un solo computador (o servidor NFS) y compartirlos en todos los sistemas conectados a la red. Además, NFS abre la posibilidad de que haya clientes sin disco. Un esquema NFS bien configurado será totalmente transparente para el usuario. No es importante que sepa en cuál servidor está realmente un directorio. Basta que sus programas funcionen correctamente sin que tenga que realizar cualquier tipo de configuración en especial. Instalación de NFS Instale el servidor NFS 1. Acceda al CD 1 de Conectiva Linux: # cd /mnt/cdrom/conectiva/RPMS/ # 2. Instale los paquetes de NFS: # rpm -ivh nfs-* 386 Capítulo 10. Redes Mixtas nfs-server ############################################# nfs-utils ############################################# # Configuración del Servidor NFS La configuración de un servidor NFS es muy sencilla y se puede hacer tanto con Linuxconf como mediante la edición de archivos de configuración. En realidad, lo que tendrá que hacer, será definir los directorios que se exportarán. Para configurar su servidor, entre en Linuxconf y diríjase al menú Configuración de Red→Tareas como Servidor→NFS: filesystems exportados para que la pantalla de configuración se le muestre tal como en la Figura 10-1. 387 Capítulo 10. Redes Mixtas Figura 10-1. Pantalla de configuración del servidor NFS En esta pantalla usted puede definir un camino para exportar. Las opciones disponibles son: Ruta a exportar: Usted define el directorio que se exportará. A este directorio lo podrá montar un cliente. Comentario (opc): Solamente un comentario ilustrativo. Se puede usar para documen- 388 Capítulo 10. Redes Mixtas tar alguna observación sobre el directorio. Nombre(s) de cliente: En este campo se pueden definir cuáles son los computadores clientes (separados por comas) que podrán acceder a este directorio. Si no se especifica ningún cliente, entonces se podrá conectar cualquier computador. También se pueden utilizar comodines para definir los computadores clientes. Por ejemplo, si se quiere dar acceso a todos los computadores de su dominio, se puede especificar algo como: *.miorganizacion.com Puede escribir: Indica si el directorio se exportará solamente para lectura o si será posible que los usuarios graben en él. Privilegios de root: Normalmente, el superusuario accede a los directorios remotos con privilegios de nobody. Usted puede especificar esta opción para que el superusuario continúe teniendo acceso de superusuario cuando acceda al directorio. Solicitar acceso desde un puerto seguro: Usted puede especificar que solamente las conexiones seguras (con bajo número de puerto de origen) puedan montar el directorio. Como se ha mencionado antes, la configuración también se puede hacer por medio de la edición de archivos de configuración. Esta edición es bastante simple, involucrando solamente la edición de archivos /etc/exports. El archivo /etc/exports es bastante sencillo. Cada línea representa un directorio exportado y la información está separada por espacios. Por ejemplo: /share kepler(rw) copernico 389 Capítulo 10. Redes Mixtas Este ejemplo exporta el directorio /share especificando dos máquinas (kepler y copernico) con opciones diferentes (kepler puede grabar en el directorio, mientras que copernico sólo puede leer. Tabla 10-1. Correspondencia entre Opciones de Linuxconf y de /etc/exports /etc/exports rw no_root_squash link_relative insecure Linuxconf Marcar "puede escribir" Marcar "privilegios de superusuario" Marcar "seguir links simbólicos" Desmarcar "solicitar acceso de puerto seguro" Después que se hacen las configuraciones, usted debe iniciar el servicio nfs. Para hacerlo, es necesario abrir un terminal y teclear el comando (o servicio portmap ya se deberá estar ejecutando): # /etc/rc.d/init.d/nfs start 390 Iniciando servicios NFS : [ OK ] Iniciando cuotas (NFS) [ OK ] Iniciando mountd (NFS) [ OK ] Capítulo 10. Redes Mixtas Iniciando rpc.nfsd (NFS) [ OK ] Configurando un cliente NFS Es muy simple hacer que una máquina utilice un disco remoto. La verdad es que no se necesita ningún tipo de configuración especial para volver cliente NFS a cualquier computador. Usted sólo necesita construir el directorio remoto de la misma forma como se hace un directorio local. 1. Antes que nada, cree un directorio en el computador local. Vamos a montar el directorio remoto en este directorio local. En nuestro ejemplo, montaremos nuestro directorio /usr/local de la máquina asterix dentro del directorio local /mnt/asterix # mkdir /mnt/asterix # 2. Ahora monte el directorio remoto con el comando mount. # mount asterix:/usr/local /mnt/asterix # Hecho esto, usted podrá percibir que el contenido del directorio local /mnt/asterix es el mismo del directorio /usr/local del servidor asterix. 391 Capítulo 10. Redes Mixtas Claro que en muchos casos, querrá que los directorios remotos se construyan automáticamente cuando se inicia el computador cliente. Para hacerlo, usted debe utilizar Linuxconf y entrar en Sistemas de Archivos→Acceder un volumen NFS→Añadir para que se le muestre la pantalla de suma de volúmenes NFS (Figura 10-2). Figura 10-2. Pantalla de acceso a volúmenes NFS Samba El protocolo SMB se utiliza en redes Windows® para compartir recursos, tales como impresoras y discos. Por su intermedio, Windows® permite que una máquina acceda al disco y a la impresora de otro computador en la red. Con el crecimiento de Linux, se hizo necesario que los computadores Windows® y las redes Unix trabajasen en forma armoniosa. Desafortunadamente, esto no era muy sencillo, ya que las dos plataformas venían de culturas muy diferentes y tenían dificultades para trabajar de forma conjunta sin la ayuda de Samba. 392 Capítulo 10. Redes Mixtas Samba, por su parte, es una implementación libre del protocolo SMB. Al utilizarlo se puede simular, de forma transparente, un servidor Windows®. Eso hace posible que se usen las estaciones Windows® en una red Conectiva Linux empleando el protocolo NetBIOS. Configuración del Servidor Samba Figura 10-3. Configuración de Samba La configuración de un servidor Samba es un tópico bastante amplio. Todo depende del tipo de servicios que usted desea ejecutar. Por ejemplo, debe decidir si quiere que el servidor Samba sea un controlador de dominio o no. Instalación de Samba La instalación de Samba es sencilla 393 Capítulo 10. Redes Mixtas 1. Acceda al CD 1 de la distribución de Conectiva Linux: # cd /mnt/cdrom/conectiva/RPMS 2. Instale el paquete de Samba: # rpm -ivh samba-* samba ######################################### samba-clients ######################################### Configuración Esta sección se concentra en la configuración de Samba por medio de Linuxconf. Pero se puede realizar de otra forma, como por ejemplo, editando el archivo /etc/smb.conf y también por medio de SWAT. Veremos SWAT al final de esta sección. Los ejemplos de configuración siempre serán sobre Linuxconf, sin necesidad de editar directamente el archivo. /etc/smb.conf. 394 Capítulo 10. Redes Mixtas Contraseñas codificadas El problema más común durante la instalación de Samba se relaciona con las contraseñas de los usuarios. A partir de la versión 98, Windows® comenzó a hacer la transmisión de contraseñas codificadas por la red NetBIOS. El sistema Windows 95® y las versiones iniciales de Windows NT®, transmitían sin codificar las contraseñas. Esa falta de homogeneidad entre estos sistemas, hizo más complicada la configuración de Samba. Al codificar las contraseñas, se busca protegerlas de intentos groseros de descubrirlas. Lamentablemente los algoritmos para codificar no son muy fuertes. Contraseñas decodificadas en Windows® 95 El estándar de Windows® 95 no es codificar las contraseñas. Por lo tanto, es posible que usted no necesite esta configuración. Pero las versiones más recientes de Windows® 95 (como, por ejemplo, Windows® 95 OSR2) cambiaron su comportamiento. Si tiene problemas con contraseñas siga el procedimiento descrito en esta sección. La configuración de Windows 95® puede ser efectiva de dos formas. Una de ellas sería utilizar el archivo Win95_PlainPassword.reg que viene con Samba. Este archivo se puede localizar en el directorio docs/ de la documentación on line de Samba: # cd /usr/doc/samba*/docs 395 Capítulo 10. Redes Mixtas Usted puede copiarlo para las estaciones Windows 95®. Después basta abrir el archivo (haga doble clic) para que se instale. Otra manera de habilitar las contraseñas es editar el registro a través de la utilidad regedit de Windows® para alterar o incluir la clave: [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP] "EnablePlainTextPassword"=dword:00000001 Contraseñas decodificadas en Windows® 98 Por defecto, Windows® 98 codifica todas las contraseñas que transitan por la red. Para poder utilizar las estaciones Windows® 98 con su red, siga el procedimiento que se describe en esta sección. La configuración de las contraseñas no decodificadas en Windows 98® se puede hacer de dos formas. Una, sería la utilización del archivo Win98_PlainPassword.reg que acompaña al Samba. Este archivo se puede localizar en el directorio docs/ de documentación en línea de Samba: # cd /usr/doc/samba*/docs Usted lo puede copiar para las estaciones Windows 98®. Después, basta abrir el archivo (dar doble clic sobre el mismo) para que se instale. 396 Capítulo 10. Redes Mixtas También se pueden habilitar las contraseñas editando el registro empleando la utilidad regedit de Windows® para alterar o incluir la clave: [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP] "EnablePlainTextPassword"=dword:00000001 Contraseñas decodificadas en Windows NT® El sistema Windows® NT codifica las contraseñas en algunas versiones y en otras no. Evidentemente, después del tercer paquete de arreglos de bugs (Service Pack 3 ó SP3), pasó a codificar todas las contraseñas transmitidas por la red. Por lo tanto, se recomienda seguir los procedimientos descritos en esta sección para asegurar que funcione como cliente de una red Samba. También recomendamos que usted tenga al menos Windows® NT SP3 instalado. La configuración de contraseñas no codificadas en Windows® 98 se puede hacer de dos formas. Una de ellas sería utilizar el archivo NT4_PlainPassword.reg que acompaña a Samba. Este archivo se puede localizar en el directorio docs/ de la documentación en línea de Samba: # cd /usr/doc/samba*/docs Usted puede copiarlo para las estaciones Windows® NT. Después, basta abrir el archivo (dando doble clic) para que sea instalado. 397 Capítulo 10. Redes Mixtas Otra manera de habilitar contraseñas es editar el registro por medio de la utilidad regedit de Windows® para alterar o incluir la clave: [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Rdr\Parameters] "EnablePlainTextPassword"=dword:00000001 Configuración Básica Figura 10-4. Pantalla de configuración Global de Samba Una de las primeras configuraciones que usted probablemente deseará hacer es definir el grupo de trabajo. Para eso, abra Linuxconf y vaya a las Tareas como Servidor en Configuración de Red y entre en SMB: Servidor de archivos Samba para comenzar la configuración. En este momento, usted debe ver una pantalla parecida con la Figura 10-3. Pulse en Definiciones para configurar el grupo de trabajo. En el campo Grupo de Trabajo, teclee el nombre deseado. Como Windows® normalmente utiliza el método de seguridad por recurso, usted debe alterar el comportamiento estándar de Samba, que es el de hacer la autenti- 398 Capítulo 10. Redes Mixtas cación por usuario. Para hacerlo, solamente altere la opción Modo de Autenticación para Recurso. Esta opción puede encontrarla en la carpeta Claves. Compartiendo un directorio En esta sección, vamos a mostrar cómo compartir el directorio /home/samba para que éste se pueda montar en una estación Windows®. 1. Abra el cuadro de diálogo Disco Compartido (Figura 10-5). Compartiendo un directorio por medio de Samba Figura 10-5. Compartiendo Discos Note que estamos compartiendo el directorio /home/samba, con el nombre de recurso compartido (aquél que aparecerá en el Configuración de Redes de Windows®) “público”. Permitimos, también que el usuario, cualquier usuario, pueda grabar en el directorio. Además, definimos que solamente los computadores en nuestro dominio, lo pueden acceder. Para compartir un directorio, necesita solamente especificar un nombre, para los recursos compartidos, cuál es el directorio que se exportará y definir las opciones de simple acceso. 399 Capítulo 10. Redes Mixtas Montando un volumen Samba Usted puede tener la necesidad de acceder a un volumen de una máquina Windows® a partir de su Conectiva Linux. Hacerlo no solamente es posible, sino también muy sencillo. El proceso se debe hacer por medio de la línea de comando. Imaginando que usted quiere montar el disco C: del computador copernico, que fue compartido con el nombre C, en su directorio Conectiva Linux /mnt/copernico: # smbmount //copernico/c /mnt/copernico # Note que en algunos casos (usted está montando un volumen de un servidor Windows NT®, por ejemplo), será necesario que informe un usuario y una contraseña para poder utilizar el comando smbmount. # smbmount //copernico/c /mnt/copernico -o username=mara,password=selva Eso funcionará si el usuario mara está registrado en el computador yaguareté con la contraseña selva. Iniciando Samba Para que su servidor Conectiva Linux pueda funcionar como un servidor Samba, 400 Capítulo 10. Redes Mixtas se debe iniciar el servicio smbd . Para eso, abra un terminal y teclee: # /etc/rc.d/init.d/smb start Iniciando servicios SMB : [ OK ] Iniciando servicios NMB : [ OK ] Configuración del cliente Esta sección describe la configuración paso a paso de un cliente Windows® 98. La instalación en las otras versiones de Windows® deberá tener una lista de pasos semejantes. Si tiene alguna duda, deberá consultar la documentación de Windows® concerniente a los pasos de instalación de una red punto a punto. 1. Instale normalmente su tarjeta de red según la documentación de Windows®. Usted precisará del protocolo TCP/IP y del servicio Clientes para Redes Microsoft. Nuevamente, consulte la documentación de Windows® para tener información sobre cómo instalar este servicio. 2. Pulse en la carpeta Identificación en la pantalla de configuración de redes y teclee el nombre de su computador y el nombre de su grupo de trabajo. En nuestro ejemplo, el computador se llamará kepler y formará parte del grupo de trabajo miorganizacion. 3. Pulse en la carpeta Control de Acceso. 401 Capítulo 10. Redes Mixtas 4. Volviendo hacia la pantalla de configuración de redes, abra la pantalla de propiedades de protocolo TCP/IP; pulse en Configuración DNS y agregue la dirección IP del servidor Samba a la lista de servidores DNS. Si ya no lo hubiera hecho, active DNS (opción Activar DNS en la misma pantalla ). Vea que esta configuración solamente se aplica para redes que tengan un servidor DNS. Usted también deberá, editar la pantalla Dirección IP, informando la dirección de IP que va a utilizar la estación (si su red posee un servidor DHCP, no precisará de esta configuración). 5. Presione en OK y deje la configuración de red. No se puede configurar Windows® inmediatamente y así usted tendrá que reiniciarlo cuando se lo solicite. Esos pasos deberán permitirle colocar una estación Windows® 98 en su red Linux. Después que la máquina se haya reiniciado usted podrá abrir Configuración de red para navegar por los computadores disponibles en la red. Utilización de SWAT Además de Linuxconf, es posible configurar Samba a través de otra interfaz amigable: SWAT. Se trata de una interfaz web para la configuración. Una gran ventaja de SWAT es la de permitir la configuración remota de un servidor Samba, ya que sólo es necesario acceder al computador por Internet. Para habilitar a SWAT a partir de su servidor, es necesario editar el archivo /etc/inetd.conf y descomentar (retirar el “#” inicial) de la línea: swat stream tcp nowait.400 root /usr/sbin/swat swat 402 Capítulo 10. Redes Mixtas que está, normalmente, al final del archivo. Si usted no encuentra una línea semejante, se puede agregar la línea de arriba. Después que se hace la edición, el servicio inetd se debe reiniciar: killall -HUP inetd o además: /etc/rc.d/init.d/inet restart La diferencia entre los dos comandos es que el segundo iniciará el servicio, si no está iniciado. A partir del momento en el que inetd se reinicie, SWAT será accesible por medio del puerto 901 de su servidor. Usted puede acceder a SWAT http://localhost:901 por medio de cualquier navegador (vea la Figura 10-6). Figura 10-6. S W A T 403 Capítulo 10. Redes Mixtas Mars-NWE Mars-NWE es un emulador de Netware®, o sea, es un programa que define un subconjunto de protocolo NCP de la Novell®, de forma que las estaciones lo reconozcan como un servidor Netware®. Mars es una buena opción al Netware en redes en las que hay por lo menos un administrador con buen conocimiento de Linux. Además, las empresas que iniciaron un proceso de migración para Linux y poseen algunas estaciones DOS también pueden utilizar a Mars-NWE. Como Mars-NWE es un emulador, algunas utilidades de configuración de la Novell® no funcionan con él y su configuración se debe hacer dentro de Linux. Introducción y conceptos El protocolo IPX El IPX es un protocolo de transporte1. La administración de la sesión se realiza por otros protocolos. En el caso de Netware®, este protocolo es el NCP. Al contrario de TCP/IP, en el protocolo IPX no hay necesidad de especificar los números de red, ya que ellos son siempre los números identificadores de la tarjeta 1. 404 Protocolo que se encarga de transportar un paquete de la red de un origen para un destino. Capítulo 10. Redes Mixtas de red2. Además, al protocolo IPX se le puede encaminar. Eso hace que los servidores Netware®, incluso el Mars-NWE, automáticamente desempeñen la función de encaminadores, siempre que estén conectados a más de una red. Estos servidores constantemente se anuncian por medio de paquetes de broadcast de manera que es posible crear tablas de encaminamiento dinámicas. El objeto Bindery Es importante destacar que Mars-NWE no atiende a la mayoría de los objetos bindery del propio servidor, como trustees y limitaciones de horario. Así, la configuración de los permisos se debe hacer por medio del propio Linux. Los únicos objetos bindery reconocidos por el Mars-NWE son las contraseñas de los usuarios. De cualquier modo, todos los objetos bindery se almacenan en el directorio /var/mars_nwe, por lo que, es una buena idea mantener copias de seguridad del mismo. Hay planes para que otros objetos de bindery se soporten en versiones futuras de Mars. 2. Número atribuido a cada tarjeta en la fábrica. Estos números de 48 bits jamás deberían complicarse. 405 Capítulo 10. Redes Mixtas Scripts de Logon Los scripts se almacenan en el directorio SYS:MAIL\, tal como en un servidor Netware®. Además, usted podrá crear/alterar esos archivos por medio de SYSCON. A veces el SYSCON no logra grabar el script de logon; graba un archivo LOGIN.BAK en el directorio del usuario y no consigue cambiarle el nombre para LOGIN. Generalmente esto es un problema de permisos en directorios o archivos viejos (o sea, archivos copiados de un servidor Netware® ya existente). Cambie el nombre manualmente en Linux y atribuya los permisos de usuario. Seguramente eso no ocurrirá de nuevo. Si usted está migrando de Netware® para Mars, seguramente va a montar el volumen Netware® con ncpmount y copiar los datos para un directorio como, por ejemplo, /home/netware/sys. Es bueno que una vez que se haga una copia, usted borre los subdirectorios del directorio SYS:MAIL. Si no lo hace, quedarán allí los directorios antiguos, creados por el servidor Netware®. Y es verdad que los números de usuario atribuidos por el Netware® (que son justamente los nombres de los directorios) no van a coincidir con los números creados por Mars; y usted tendrá que descubrir “de quién es cada uno” y atribuir los permisos correctos con chown y chmod etc. Se recomienda borrar todo e iniciar Mars de manera que todos los directorios se generen automáticamente. Autenticación de Usuarios Cada uno de los usuarios Netware® debe corresponder a un usuario Linux re- 406 Capítulo 10. Redes Mixtas gistrado en el archivo /etc/passwd. Pero, la autenticación de los usuarios de Mars no se hace por medio del archivo /etc/passwd o del /etc/shadow, sino mediante el archivo /etc/nwserv.conf. Como Mars no respeta los trustees es necesario establecer los permisos en el propio Linux mediante los comandos chmod, chgrp y chown. Ya vimos que el archivo de configuración de Mars establece una relación entre usuarios Netware® y usuarios UNIX. Los comandos antes citados trabajan solamente con usuarios UNIX, por lo tanto los permisos se tienen que “pensar” en términos de usuarios UNIX. Es verdad que si los usuarios UNIX tuvieran los mismos nombres de los usuarios Netware®, todo se hace más fácil. El usuario UNIX asociado al “supervisor” puede ser el root, o un usuario común. Si fuera un usuario común, debe tener un grupo primario sólo suyo y también debe participar de todos los grupos donde haya usuarios UNIX asociados con usuarios Netware®. Eso garantiza que el supervisor pueda de hecho leer y grabar cualquier archivo de los volúmenes exportados. Asociar el root al supervisor ahorra bastante tiempo. Sin embargo, si el servidor está en un ambiente inseguro (expuesto a Internet, o con usuarios desconocidos, etc.) es mejor asociar el supervisor a un usuario Unix común. Inicialmente se deben observar los siguientes puntos: • Los directorios y archivos SYS:SYSTEM, SYS:PUBLIC y SYS:LOGIN tienen que pertenecer a root:root y con permisos de lectura para todos los usuarios. • El directorio SYS:MAIL debe pertenecer a root:root (o por el usuario y grupo asociado al supervisor), pero con permiso de lectura para todos los usuarios. 407 Capítulo 10. Redes Mixtas • Los demás directorios y archivos deben pertenecer a los respectivos usuarios y grupos. • Los permisos de todos los directorios deben ser 2775, si son legibles a todos los usuarios y 2770 si son legibles solamente para los usuarios del grupo. El dígito "2" acciona el bit SGID del directorio; así, cualquier archivo y directorio nuevo que se genere dentro del directorio, pertenecerá a los usuarios que los originaron, pero el grupo será siempre el mismo del directorio madre. Así los demás usuarios del grupo también tendrán acceso garantizado a los nuevos archivos y directorios. Note que eso complementa la configuración de las máscaras de permisos del archivo /etc/nwserv.conf; • El directorio raíz de cada volumen (como en el archivo ejemplo, el directorio /home/netware/sys) debe tener permisos 775 y pertenecer al usuario supervisor, salvo en el caso en que los usuarios tengan permisos para crear archivos y directorios en la raíz del volumen. En ese caso los permisos deben ser 777. • Los directorios dentro de MAIL/ deben pertenecer a los respectivos usuarios y grupos. Los archivos LOGIN pueden pertenecer al usuario o también al root (en este último caso, el archivo está protegiendo intentos de alteración que partan del propio usuario). Note que el archivo y el directorio precisan ser, al menos, legibles para el usuario, así como el directorio MAIL. • Vea que, si usted dejó que Mars los origine solo, los permisos de los directorios bajo SYS:MAIL ya estarán todos correctos, sin necesidad de cualquier intervención del usuario. Cuando un usuario no tenga permiso de lectura para algún directorio, éste le aparecerá vacío. • Si, por ejemplo, un usuario necesita tener acceso al archivo VOLUMEN:DIR1\ARCHIVO, pre- 408 Capítulo 10. Redes Mixtas cisará tener, al menos, acceso de lectura al directorio-raíz de VOLUMEN, así como a todos los directorios del camino. Si no puede leer el directorio, el usuario no distinguirá subdirectorios y archivos. Utilidades DOS Muchas operaciones (registro de usuarios, contraseñas, etc.) se pueden hacer mediante el propio Linux con las utilidades /usr/bin/nw*. Sin embargo es verdad que usted necesitará de una u otra utilidad de Novell® (IPX20, SYSCON, LOGIN, SLIST etc.) Hay unas pocas versiones gratuitas de algunas de esas utilidades (LOGIN y SLIST), lo que es insuficiente para una red con estaciones DOS. Será difícil mantener una red Novell® totalmente libre de software comercial. Si tiene un Netware® licenciado, copie los directorios para el servidor Mars. SYS:PUBLIC y SYS:SYSTEM Note que este problema solamente se aplica al caso de redes con estaciones DOS. Como las estaciones Windows® 95/98 incluyen un cliente para las redes Netware® que no dependen de ninguna utilidad DOS, usted será capaz de constituir una red totalmente libre de software comercial Netware® si todas sus estaciones fueran Windows®. Si sus estaciones fuesen todas Linux, tampoco habrá necesidad de las utilidades DOS. Sin embargo, no hay necesidad de Mars-NWE en una red así, ya que es posible y mucho más lógico, construir una red con base en el protocolo TCP/IP. 409 Capítulo 10. Redes Mixtas Rendimiento Según el autor de Mars, “el rendimiento de Mars-NWE es ligeramente inferior al Netware® 3.12, en el mismo hardware, pero es superior al Netware® 4”. Los tests demostraron que Mars-NWE es más rápido (10-15%) que Netware® 3.12 para operaciones comunes en archivos (lectura y grabación de pequeños trechos, etc). Sin embargo, Mars es cerca de 50% más lento en operaciones de lectura/escritura de grandes trechos, como por ejemplo un COPY de DOS. Ese rendimiento se puede mejorar mediante un recurso denominado packet burst, que todavía está en estado experimental. Para obtener más información sobre cómo habilitar este recurso vea la sección de nombre Versión de Netware®. Problemas conocidos Además de saber que algunos procedimientos son un tanto complejos para quien está acostumbrado con Netware®, Mars-NWE tiene una característica indeseable. Si un usuario abre un archivo de forma exclusiva y después intenta abrir de nuevo el mismo archivo, tendrá éxito, mientras que el comportamiento de un servidor Netware® sería el de negar cualquier intento de reapertura. Note que eso ocurre solamente si el archivo se abre múltiples veces por medio de una misma conexión. Si un usuario entra en el sistema con el mismo nombre en diferentes estaciones e intenta abrir un mismo archivo en modo exclusivo en todas ellas, no tendrá éxito a partir de la segunda estación. El impacto de ese bug 410 Capítulo 10. Redes Mixtas de Mars varía en función de los programas utilizados. Si los usuarios suelen abrir múltiples instancias de una misma aplicación y esa aplicación usa apertura de archivos en modo exclusivo para garantizar la integridad de ciertas operaciones, puede haber problemas. Si usted tiene problemas con eso, puede prohibir a los usuarios con estaciones Windows® que abran múltiples instancias de la misma aplicación. Otro problema posible es que Mars no va a cargar/ejecutar sus NLMs. Una extensión eventualmente encontrada en servidores Netware® 3 es el BTrieve®. Ya existe BTrieve® para Linux, pero es un producto comercial. Configuración La configuración de Mars no se puede hacer todavía por medio de Linuxconf. Así, el proceso de configuración de un servidor Mars se debe realizar por medio de la edición de archivos de configuración /etc/nwserv.conf. El archivo /etc/nwserv.conf controla todo el comportamiento de su servidor MarsNWE. Note que las opciones siempre están precedidas por un número identificador. Este número se utiliza por Mars para reconocer la función de cada línea. En esta sección, vamos a mostrarle cómo configurar las opciones más comunes (note que existen varias otras, pero que son poco utilizadas). Usted podrá encontrar información sobre las mismas en el propio archivo /etc/nwserv.conf por defecto o estándar que acompaña la instalación. 411 Capítulo 10. Redes Mixtas Volúmenes del Servidor Usted debe especificar cuáles serán los volúmenes del servidor Mars. Para especificar un volumen de servidor, tendrá que incluir una línea para cada volumen en el archivo de configuración. Esta línea tiene la siguiente sintaxis: 1 VOLUMEN DIR_LINUX OPCIONES MASC_DIR MASC_ARCH donde: VOLUMEN: nombre del volumen como se lo verá por las estaciones. DIR_LINUX: directorio del Conectiva Linux donde este volumen estará almacenado. OPCIONES: las opciones son: opción k, que permite nombres en letras minúsculas en Conectiva Linux. Estos nombres se convertirán automáticamente en letras mayúsculas para estaciones DOS. Si esta opción no se ha especificado, los nombres tienen que tener letras mayúsculas en Conectiva Linux; opción o: especifica que los subdirectorios están en el mismo sistema de archivos. Eso permite que Mars haga algunas optimizaciones. MASC_DIR: aquí usted puede especificar los permisos estándar de directorios. Se crearán nuevos directorios con estos permisos. MASC_ARCH: aquí usted puede especificar los permisos estándar para los archivos. Todos los nuevos archivos se crearán con estos permisos. No se olvide que la presencia del volumen SYS es obligatoria. Ejemplo: 412 Capítulo 10. Redes Mixtas 1 SYS /home/netware/sys ko 1 FABRICA /home/netware/fabrica 1 PERSONAL /home/netware/personal ko 775 775 775 775 ko 775 775 Nombre del Servidor Netware® Para definir el nombre del servidor Netware®, basta incluir una línea que contiene el nombre deseado: 2 NOMBRE_SERVIDOR Donde NOMBRE_SERVIDOR Ejemplo: 2 FABRICA Eso define el nombre del servidor como FABRICA. 413 Capítulo 10. Redes Mixtas Red Interna Usted puede especificar el número de su red interna. Se puede especificar la opción auto, para que Mars elija automáticamente el número de la red interna (utiliza simplemente el número IP de la interfaz de red). 3 NUM_RED Donde NUM_RED es el número de su red interna (opcionalmente, utilice auto). Ejemplo: 3 auto Tarjetas de Red Los parámetros para la configuración de las tarjetas de red son: 4 NUM_RED INTERFAZ PATRÓN_PAQUETE TIEMPO donde: NUM_RED: es el número de la red. INTERFAZ: es la interfaz de red de Linux. 414 Capítulo 10. Redes Mixtas ESTÁNDAR_PAQUETE: es el estándar o predefinido de empaquetamiento utilizado por el servidor. Esta definición puede ser 802.2, 802.3, ethernet_ii, snap, token o auto. Obviamente, este estándar de empaquetamiento debe ser el mismo utilizado por las estaciones. El boot remoto de Netware® exige 802.3. TIEMPO: es el tiempo que lleva un paquete para que se transmita por la interfaz. Para tarjetas de red, utilice siempre 1. Todas las interfaces de red deben tener números de IP, aunque el servidor no esté sirviendo a ningún protocolo con base en TCP/IP. Ejemplo: 4 0x01 eth0 802.3 1 Almacenamiento de Rutas Como estándar, Mars no guarda las rutas cuando se desactiva. Así, siempre que se activa Mars, pasa de 1 a 2 minutos buscándolas. Eso se puede modificar haciendo que Mars guarde las rutas en el momento en que se desactiva. 5 GUARDAR Donde GUARDAR es un valor numérico. "0" hace que Mars no guarde las rutas, "1" hace que Mars guarde las rutas en el momento de desactivación, acelerando 415 Capítulo 10. Redes Mixtas la iniciación posterior. Ejemplo: 5 0 En este ejemplo, Mars está configurado para no guardar las rutas. Versión de Netware® Usted puede indicar la versión de Netware® que Mars aparentará ser. Eso es importante para algunos programas que sólo funcionan con versiones específicas de Netware®. 6 VERSION PACKET_BURST Donde: VERSION: es un código especificando la versión de Netware®. Este código puede ser: 0 para Netware® 2.15, 1 para Netware® 3.11 y 2 para Netware® 3.12. PACKET_BURST: es un código para habilitar o deshabilitar packet burst. Este recurso todavía es experimental en Mars, pero es capaz de aumentar considerablemente el comportamiento del servidor. El código puede ser 0x1 para habilitar o si no 0x0 para deshabilitar el recurso. 416 Capítulo 10. Redes Mixtas Ejemplo: 6 2 0x0 Eso define el servidor como Netware® 3.12 sin packet burst. Tratamiento de Contraseñas Usted puede definir cómo se tratarán las contraseñas de los clientes DOS. 7 MODO Donde MODO es un código que indica cómo tratar las contraseñas: 0: obliga a codificar todas las contrasenas. 1: obliga la codificación de todas las contrasenas, pero soporta la rutina no codificada de cambios de contrasena. 7: permite contrasenas no codificadas, pero no admite contrasenas vacías. 8: permite contrasenas no codificadas y contrasenas vacías. 9: permite solamente contrasenas no codificadas. Ejemplo: 417 Capítulo 10. Redes Mixtas 7 0 Define el comportamiento por defecto. Seguridad de Archivos durante el Proceso de Login Hay muchas opciones que controlan los sistemas de seguridad de los archivos durante la fase de login. 0: los clientes sólo pueden acceder al directorio SYS:LOGIN. Esta es la opción estándar. 1: los clientes pueden acceder a otros archivos además de los SYS:LOGIN/*, pero todavía sujetos a los permisos de Linux. 2: este modo permite acceso a los archivos de la siguiente forma: si el cliente intenta abrir un archivo para escribir, pero el mismo permite solamente que se lea, Mars permite la apertura, pero solamente para lectura. 4: permite que los directorios se nombren nuevamente mediante una llamada denominada NCP que normalmente sólo funcionaría con archivos. 8: ignorar las restricciones de estación y de tiempo en el caso del supervisor. Actualmente, esta opción no hace nada, ya que Mars todavía no soporta este tipo de objeto bindery. 16: permite que no se apague un archivo que está usando otro usuario. 418 Capítulo 10. Redes Mixtas 32: almacena las entradas de los archivos para usarlos después. Normalmente, solamente los directorios se almacenan. Eso es necesario si usted utiliza ncpfs como cliente Mars. 64: limita el espacio libre en casi 2GB. Eso es necesario para algunos clientes antiguos de DOS. 8 MODO Donde MODO es la suma de los códigos de las opciones deseadas. Ejemplo: 8 20 Eso define a cuáles directorios se les puede cambiar el nombre mediante NCP (4) y cuáles archivos en uso se pueden borrar (16). Usuario Invitado Usted debe especificar un usuario de Linux para corresponder al usuario "invitado" (guest). Durante el proceso de boot remoto y login, el servidor le dará ese permiso al cliente, por lo tanto es importante verificar que este usuario tenga acceso a los archivos necesarios (SYS:LOGIN\LOGIN.exe y SYS:LOGIN\NET$DOS.SYS) 10 UID 11 GID 419 Capítulo 10. Redes Mixtas Donde: UID: es el número del usuario "invitado". GID: es el número del grupo del usuario "invitado". Usted puede especificar el usuario: grupo usuario "invitado". nobody:nobody (99:99) para que sea el Ejemplo: 10 99 11 99 Eso define al usuario nobody:nobody como usuario invitado. Usuarios con poder de supervisor Usted debe definir cuáles serán los usuarios con poderes de supervisor. 12 USU_NW USU_LINUX CONTRASEÑA Donde: USU_NW: es el nombre del usuario "supervisor"en Netware®. USU_LINUX: es la cuenta del usuario en Linux. 420 Capítulo 10. Redes Mixtas CONTRASENA: es la contrasena del usuario en Linux. Note que es una buena idea cambiar los permisos del archivo /etc/nwserv.conf para 700, de manera que nadie pueda leerlos y descubrir la contrasena del supervisor. Ejemplo: 12 SUPERVISOR root !92oi28# Eso define que el usuario root será el supervisor y que su contraseña es !92oi28# Usuarios de Netware® Usted puede registrar los usuarios de Netware®. Hay dos maneras de anotar sus contraseñas: como parámetro de esta línea en el archivo de configuración o mediante SYSCON. 13 USU_NW:USU_LINUX:[CONTRASEÑA] Donde: USU_NW: es el nombre del usuario en Netware®. USU_LINUX: es el nombre del usuario Linux asociado. 421 Capítulo 10. Redes Mixtas CONTRASENA: es la contrasena del usuario. Note que este parámetro es opcional, ya que la contrasena puede ser configurada por el supervisor vía SYSCON. Si la contraseña se configura mediante SYSCON, el usuario puede alterar la que el administrador le ha atribuido temporalmente. Un mismo usuario Linux puede estar asociado a varios usuarios Netware®, lo que facilita la instalación de seguridad. Ejemplo: 13 CLARA jefatura 13 JORGE jefatura 13 MARCIO producción 13 DEMERVAL demerval Estas líneas registran algunos usuarios. Note que CLARA y JORGE están registrados para un mismo usuario Linux (jefatura). Registro automático de usuarios Es posible anotar automáticamente los usuarios Linux y los usuarios de Netware®. 15 REGISTRO_AUTOMATICO 422 Capítulo 10. Redes Mixtas Donde REGISTRO_AUTOMATICO es 0 para deshabilitar y 1 para habilitar el registro automático de usuarios. Ejemplo: 15 0 Deshabilita el registro automático. Fíjese que no es conveniente deshabilitar esta opción. Creación de los directorios esenciales Con la opción 16, Mars siempre comprobará la existencia de los directorios esenciales (MAIL, directorios de usuarios, etc..) y los creará, si hubiera necesidad. 16 COMPROBAR Donde COMPROBAR es 0 para no verificar y 1 para comprobar la existencia de los archivos (eso, obviamente, implica en crear los mismos en caso de necesidad). 423 Capítulo 10. Redes Mixtas Script de Login Estándar Hay un problema cuando SYSCON intenta grabar el primer script de login: no logra hacerlo. Si usted habilita esta opción, este problema estará resuelto y se creará un script de login estándar (vacío). 17 CREAR Donde CREAR es 0x0 para no crear y es 0x1 para crear. Ejemplo: 17 0x1 Este ejemplo instruye Mars para que siempre cree un script de login estándar, cuando el usuario no posea uno. Desconexión del Banner de Impresión Con esta opción, usted puede desconectar la impresión del banner incondicionalmente. Eso es útil principalmente cuando se está utilizando estaciones Windows 95® antiguas, ya que las mismas no ofrecen esa importantísima opción. 18 BANNER 424 Capítulo 10. Redes Mixtas Donde BANNER es 0 para no imprimir y 1 para permitir la impresión. Note que, si se especifica el valor 1, la impresión del banner todavía se puede evitar por medio de las opciones de Netware®. Ejemplo: 18 0 Jamás imprima el banner en las impresiones. Colas de Impresión Usted puede especificar las colas de impresión para utilizar las estaciones. Cada cola ocupa una línea: 21 NOMBRE DIRECTORIO COMANDO Donde: NOMBRE: es el nombre de la cola de impresión de Netware®. DIRECTORIO: es el directorio donde las tareas de impresión se graban. Note que este directorio tiene que existir y que no puede ser el directorio de cola de Linux (/var/spool/lpd/*). Ejemplo: 425 Capítulo 10. Redes Mixtas 21 LASER SYS:/PRINT/LP lpr -P text En esta misma guía vamos a presentar otro protocolo para trabajar con redes mixtas, vea en el apéndice B. 426 Apéndice A. Appletalk Conectiva Linux ofrece el paquete Netatalk en su distribución. Este paquete contiene el protocolo Appletalk, que permite al servidor Conectiva Linux servir impresoras y archivos para estaciones Macintosh®. Vea que el camino de vuelta no es posible, o sea, Macintosh no puede ser servidor de una red Linux. Esto depende de la creación de un módulo del núcleo que aún está en sus etapas iniciales de desarrollo. Netatalk acepta conexiones vía protocolo Ethertalk y TCP/IP. Los computadores Macintosh más nuevos dan privilegio al TCP/IP como protocolo de transporte. El paquete Netatalk consiste en 3 servicios que actúan en conjunto, aunque se puedan activar y desactivar independientemente: • atalkd: Sirve a Appletalk vía Ethertalk. • afpd: Sirve a Appletalk vía TCP/IP. • papd: Juega un papel de intermediario de los servicios de impresión para los otros dos servicios. Si no se comparte la impresora y no se necesita el Ethertalk, se puede iniciar sólo el afpd y, así, ahorrar un poco de memoria. 427 Apéndice A. Appletalk Instalando Netatalk Para instalar Netatalk: • Acceda al directorio de paquetes del CD 1 de Conectiva Linux # cd /mnt/cdrom/conectiva/RPMS • Instale los paquetes de Netatalk: # rpm -ivh netatalk-* netatalk ########################################### netatalk-devel ########################################### Configurando Netatalk Netatalk de Conectiva Linux ya viene configurado para las aplicaciones simples. Todo lo que hay que hacer es especificar los directorios que serán exportados como volúmenes para las estaciones Macintosh. 428 Apéndice A. Appletalk Netatalk Concentra todos sus archivos de configuración en el directorio /etc/atalk. Exportando directorios Para especificar cuáles directorios se exportarán como volúmenes para los clientes Macintosh, se debe editar el archivo /etc/atalk/AppleVolumes.default y añadir las líneas correspondientes a los directorios. Las líneas de /etc/atalk/AppleVolumes.default tienen el siguiente formato: PATH [NOMBRE] [casefold=X] [codepage=X] [options=X,Y,Z] \ [access=X,@Y,Z] [dbpath=X] [password=X] Donde: • • NOMBRE: Es una descripción del volumen. casefold: Son opciones de cuadro de texto de los nombres de archivos y directorios. Puede ser: • tolower: Convierte las letras en minúsculas, en el servidor y en los clientes. • toupper: Convierte las letras en mayúsculas, en el servidor y en los clientes. • xlatelower: Convierte en minúsculas en el cliente y en mayúsculas en el servidor. 429 Apéndice A. Appletalk • xlateupper: Convierte en mayúsculas en el cliente y en minúsculas en el servidor. • codepage: Señala la página de códigos que será utilizada. El parámetro es el nombre de un archivo del directorio nls. • options: Son opciones diversas divididas por comas. Puede ser cualquier combinación de: • • • prodos: Permite compatibilidad con clientes AppleII®. • crlf: Habilita la conversión de los caracteres de nueva línea de los archivos textos entre los dos ambientes. • noadouble: No crea los archivos .AppleDouble a no ser que sea necesaria una división de los recursos. Los archivos .AppleDouble son creados para cada archivo en un directorio. Macintosh guarda información como ícono, tipo de archivo, etc, en dichos archivos. Aisladamente ellos son bastante pequeños (589 bytes), pero pueden ocupar mucho espacio debido al gran número de archivos generados. access: Es una lista de nombres de usuarios o grupos que no pueden acceder al volumen. Una arroba ("@") debe preceder a los grupos; dbpath: Directorio donde la base de datos será grabada. 430 Apéndice A. Appletalk • password: Es una contraseña para proteger el directorio. Configurando permisos de acceso Usuarios Para acceder al servidor Netatalk, el cliente Macintosh debe proveer un nombre de usuario y una contraseña, que deben estar registrados en el servidor Conectiva Linux. Se puede crear un usuario único que será utilizado por todas las estaciones Macintosh al mismo tiempo. Aunque eso facilite la administración, perjudica la seguridad ya que cualquier usuario tendrá acceso total a los archivos de los demás. Permisos en el directorio de los volúmenes Los usuarios necesitan tener permiso de escritura en los directorios de los volúmenes que accedan vía Appletalk. 431 Apéndice A. Appletalk Eso porque Netatalk necesita guardar allí la información referente al cliente Macintosh. Además, se crearán en estos directorios sus respectivas “Papeleras”. Como la creación de un directorio con todos los permisos para todos los usuarios no es algo deseable en el servidor Conectiva Linux, se puede crear un grupo atalk, colocar los usuarios de Macintosh en este grupo y sólo permitir escritura en los archivos a los miembros de este grupo. En la estación Para acceder a los volúmenes, utilice Network Browser. Expanda la sección AppleTalk. Si está todo bien configurado, el nombre del servidor Conectiva Linux ya debe aparecer en la lista. Expanda el servidor Conectiva Linux para visualizar los volúmenes exportados. En ese instante, MacOS® solicitará un nombre de usuario y una contraseña, que se deberá haber registrado en Conectiva Linux. Haciendo doble clic sobre cualquier volumen, una nueva ventana se abrirá, mostrando los archivos y directorios del volumen en forma de íconos o en forma de lista. Si se hace doble clic en un volumen y su contenido no aparece, eso indica falta de permisos (ver la la sección de nombre Configurando permisos de acceso). Por otro lado, si se consigue acceder al volumen, pero se tiene permisos insuficientes para manipular determinado archivo, MacOS® informará sobre el problema. 432 Apéndice A. Appletalk MacOS® tiene la característica indeseable de mantener en cache los permisos negativos. O sea, seguirá informando falla de acceso aunque los permisos hayan sido modificados en Conectiva Linux. Habrá necesidad de forzar MacOS® a desconectarse del servidor Linux de alguna forma - sea reiniciando Mac, reiniciando el servicio Netatalk o rompiendo la conexión TCP/IP. Iniciando Netatalk Para iniciar Netatalk: # cds atalk dhcpd httpd kudzu mysql nfs postgresql atd functions inet linuxconf-setup named nfslock random autofs gpm keytable lpd netfs pcmcia sendmail crond halt killall mars-nwe network portmap single # ./atalk start Starting AppleTalk Services: [ OK ] Starting papd service: [ OK ] Starting afpd service: [ OK ] Se puede utilizar ntsysv para configurar estos servicios para que se inicien automáticamente. 433 Apéndice A. Appletalk 434 Apéndice B. Licencias generales Introducción Prácticamente todo el software contenido en el CD-ROM de Conectiva Linux es de libre distribución. Pocos requieren algún tipo de autorización especial para su uso, obtenidos por Conectiva S.A. (http://es.conectiva.com) y algunos software desarrollados por la propia Conectiva, son puestos a disposición bajo licencia comercial de uso. La mayoría de los software se distribuye bajo una de las tres licencias presentadas en este capítulo. Por favor, verifique en cada software cuáles son sus componentes, así como los términos de su distribución. Todos el software de los CD-ROMs producidos por Conectiva es copyright de ® Conectiva S.A. (http://es.conectiva.com). A menos que exista manifestación expresa, el software contenido en los CDs es de libre distribución bajo los términos de la Licencia Pública GNU (GPL). Los términos Red Hat® y rpm® son marcas de propiedad de Red Hat Software, Inc. Los términos Conectiva y WebBatch son marcas de propiedad de Conectiva S.A. (http://es.conectiva.com). 435 Apéndice B. Licencias generales BSD Copyright Copyright ® 1991, 1992, 1993, 1994 The Regents of the University of California. Todos los derechos reservados. Se permite, dentro de las siguientes condiciones, la redistribución y uso en las formas de código fuente o binarios, con o sin modificación: 1. La redistribución del software debe contener toda la información sobre derechos de autor, esta lista de condiciones y el aviso de abajo.; 2. La redistribución de binarios o ejecutables debe contener toda la información sobre derechos de autor, listas de condiciones y el aviso de abajo. 3. Todos los comerciales y anuncios que mencionen funcionalidades de este software deben presentar el siguiente texto: Este producto incluye software desarrollado por la Universidad de California, Berkeley y sus contribuyentes; 4. El nombre de la Universidad, o de sus contribuyentes, no puede ser utilizado para endosar o promover productos derivados de este software sin expresa autorización por escrito. ESTE SOFTWARE SE DISTRIBUYE POR SUS MONITORES Y CONTRIBUYENTES EN LA FORMA EN QUE SE ENCUENTRA, Y CUALQUIER GARANTÍA EXPRESA O IMPLÍCITA, INCLUYENDO, PERO NO LIMITADAS A LAS GARANTÍAS COMERCIALES Y LA ATENCIÓN A DETERMINADOS PROPÓSITOS NO SON RECONOCIDAS. EN NINGUNA HIPÓTESIS LOS MONITORES O SUS CONTRIBUYENTES SERÁN 436 Apéndice B. Licencias generales RESPONSABLES POR NINGÚN DAÑO DIRECTO, INDIRECTO, ACCIDENTAL, ESPECIAL, INCLUYENDO, PERO NO LIMITANDO LA SUSTITUCIÓN DE MERCANCÍAS O SERVICIOS, IMPOSIBILIDAD DE USO, PÉRDIDA DE DATOS, LUCROS CESANTES O INTERRUPCIÓN DE ACTIVIDADES COMERCIALES, CAUSADOS EN CUALQUIER BASE POR EL USO DE ESTE SOFTWARE. X Copyright Copyright® 1987 X Consortium Se concede y garantiza a cualquier persona, libre de costos, la obtención de copia de este software y de los archivos de documentación asociados (el Software), pudiendo trabajar con el Software sin restricciones, incluyendo los derechos de uso, copia, modificación, unificación, publicación, distribución, sublicenciamiento o venta de copias del Software, y el permiso a las personas a las que se entregue el Software, dentro de las siguientes condiciones: Las informaciones de copyright presentadas a continuación deben estar presentes en todas las copias o partes sustanciales del Software: EL SOFTWARE SE PONDRÁ A DISPOSICIÓN EN LA FORMA EN QUE SE ENCUENTRE, SIN GARANTÍAS DE NINGUNA ESPECIE, EXPRESAS O IMPLÍCITAS, INCLUIDAS, PERO NO LIMITADAS A LASGARANTÍAS COMERCIALES, Y A LA ATENCIÓN A DETERMINADOS FINES. 437 Apéndice B. Licencias generales DE NINGUNA MANERA EL CONSORCIO X (XCONSORTIUM) SERÁ RESPONSABLE POR NINGUNA RECLAMACIÓN, DAÑO U OTRAS PÉRDIDAS, A MENOS QUE SE EXPRESE EN CONTRATO, ACUERDO U OTRAS FORMAS, EN LO QUE SE REFIERE A LA UTILIZACIÓN, COMERCIALIZACIÓN, CONEXIÓN U OTROS CONTACTOS CON ESTE SOFTWARE. Excepto por el contenido en ese aviso, el nombre del Consorcio X (X Consortium) no podrá utilizarse en ningún comercial u otra forma de promoción de ventas, uso u otras negociaciones de este Software, sin la autorización expresa del X Consortium. Copyright ® 1987 Digital Equipment Corporation, Maynard, Massachusetts. Todos los derechos reservados. Está garantizado, el permiso de uso, copia, modificación y distribución de este software y su documentación con cualquier objetivo y sin costo, desde que el copyright abajo aparezca en todas las copias y que tanto el copyright, como este aviso y el nombre de Digital aparezcan, no pudiendo ser usados en anuncios o publicidad referente a la distribución del software sin autorización expresa por escrito. DIGITAL NO OFRECE NINGÚN TIPO DE GARANTíA EN EL USO DE ESTE SOFTWARE, INCLUYENDO TODAS LAS COMERCIALES Y DE ATENCIÓN A DETERMINADOS PROPÓSITOS, Y BAJO NINGÚN PUNTO DE VISTA, DIGITAL SERÁ RESPONSABLE POR ALGUNA RECLAMACIÓN, DAÑO U OTRAS PÉRDIDAS, A MENOS QUE SE EXPRESE EN CONTRATO, ACUERDO U OTRAS FORMAS, EN LA UTILIZACIÓN, COMERCIALIZACIÓN, CONEXIÓN U OTROS CONTACTOS CON ESTE 438 Apéndice B. Licencias generales SOFTWARE. 439 Apéndice B. Licencias generales 440 Apéndice C. Licencia de Uso y Garantía del Producto Antes de instalar Conectiva Linux en su computador, o cualquiera de los paquetes o programas incluidos en este producto, por favor, lea este documento cuidadosamente. Este documento contiene información importante sobre los derechos legales de este producto. Le recomendamos considerar los puntos presentados aquí, bien como conocer y entender los términos y condiciones por los que este programa está licenciado para usted. Cuando instala cualquier programa incluido en este producto, usted acepta automáticamente los términos y condiciones siguientes. General Los derechos de autor del Sistema Operativo Conectiva Linux se basan en la Licencia Pública General GNU (“GPL”). Consideramos que la GPL pone a disposición los mejores mecanismos para todos los beneficios y libertades de los programas de “libre distribución”. Usted puede encontrar una copia de la GPL en el manual de instalación de Conectiva Linux, en http://es.conectiva.com (http://es.conectiva.com) y en diversos sitios en Internet. Conectiva Linux es un sistema operativo modular, compuesto por centenas de programas, cada uno de ellos escrito por personas 441 Apéndice C. Licencia de Uso y Garantía del Producto diferentes y con su propio derecho de autor. En este documento, se les hace referencia, individual y colectivamente como “Programas”. Varios Programas tienen su derecho de autor basado en la GPL y otras licencias que permiten la copia, modificación y redistribución. Por favor, verifique la documentación on-line que viene con cada uno de los programas incluidos en Conectiva Linux, para verificar su licencia específica. Le sugerimos que lea estas licencias cuidadosamente, para entender sus derechos y utilizar mejor las ventajas que Conectiva Linux pone a su disposición. Licencia limitada de productos Además de los programas de libre distribución, Conectiva puede incluir en este producto distintos programas y aplicaciones que no están sujetos a la GPL u otras licencias que permiten modificación y redistribución. Algunos de estos programas se muestran a continuación: • AcrobatReader® • AcuCobol-4.3® • Aker® • Arkeia® 442 Apéndice C. Licencia de Uso y Garantía del Producto • BR® • Dataflex® • Domino® • FlagShip® • JRE® • Jade® • MZS® • Oracle8i® • SpoolBiew® • db2® • oss® • vmware® • xni® Generalmente cada uno de estos componentes tiene licencia únicamente en su forma binaria, de manera restringida, es decir que usted podrá instalarlos en un 443 Apéndice C. Licencia de Uso y Garantía del Producto único computador para su uso individual. Está prohibida la copia, redistribución, ingeniería reversa y/o modificación de los mismos . Cualquier violación de los términos de las licencias, cancelará inmediatamente su licencia individual. Para conocer los términos precisos de las licencias de estos componentes, por favor verifique la documentación on-line que viene con cada uno de ellos. Si usted no está de acuerdo en aceptar los términos de la licencia de estos componentes, no los instale en su computador. Si desea instalarlos en más de un computador, entre en contacto con el distribuidor de los programas o aplicaciones correspondientes para adquirir las respectivas licencias. Antes de la instalación ANTES DE INSTALAR CONECTIVA LINUX O CUALQUIERA DE LOS PROGRAMAS O APLICACIONES INCLUIDOS EN ÉL, LEA ATENTAMENTE LOS TÉRMINOS Y CONDICIONES SIGUIENTES. LA INSTALACIÓN DE CUALQUIERA DE ESTOS PROGRAMAS, INDICA SU ACEPTACIÓN DE LOS TÉRMINOS Y CONDICIONES SIGUIENTES. SI USTED NO ESTÁ DE ACUERDO CON ESTOS TÉRMINOS Y CONDICIONES NO INSTALE ESTOS PROGRAMAS. LOS PROGRAMAS, INCLUSO LOS CÓDIGOS FUENTE, DOCUMENTACIÓN, APARIENCIA, ESTRUCTURA Y ORGANIZACIÓN, SON PRODUCTOS DE PROPIEDAD DE CONECTIVA S.A., INC, ORACLE, SUN ENTRE OTROS, Y ESTÁN PROTEGIDOS POR EL DERECHO DE AUTOR, ADEMÁS 444 Apéndice C. Licencia de Uso y Garantía del Producto DE OTRAS LEYES. ESTOS PROGRAMAS ASÍ COMO CUALQUIER COPIA, MODIFICACIÓN O PARTE ORIGINADA A PARTIR DE ELLOS, DEBEN SIEMPRE PERMANECER CON LOS ANTERIORMENTE MENCIONADOS, SOMETIDOS A LOS TÉRMINOS Y CONDICIONES DE LA GPL U OTRAS LICENCIAS RELACIONADAS CON LOS MISMOS. Garantía Limitada EXCEPTO SI SE DICE ESPECIFICAMENTE EN ESTE ACUERDO, LOS PROGRAMAS PUESTOS A DISPOSICIÓN Y LICENCIADOS, “TAL Y COMO ESTÁN”, NO TIENEN GARANTÍA DE NINGÚN TIPO, NI EXPRESA NI IMPLÍCITA, LO CUAL INCLUYE, PERO NO LIMITA, LAS GARANTÍAS DE COMERCIALIZACIÓN Y CONVENIENCIA PARA UN PROPÓSITO PARTICULAR. Conectiva S.A. (http://es.conectiva.com) garantiza que el medio en el cual están grabados los programas está libre de defectos de fabricación y manufactura, en condiciones normales de uso, durante un período de 30 días a partir de la fecha de la compra. Conectiva S.A. (http://es.conectiva.com), no garantiza que las funciones que contienen los programas sean compatibles con los requisitos que usted espera de ellas o que el funcionamiento de los programas esté completamente libre de errores ni que aparezcan exactamente como están descritos en la documentación que se anexa al producto. 445 Apéndice C. Licencia de Uso y Garantía del Producto Limitación de Reparación y Responsabilidad Por el máximo permitido por las leyes aplicables, las reparaciones descritas a continuación, se aceptan como únicas y deben estar disponibles solamente si este producto ha sido registrado en Conectiva S.A. (http://es.conectiva.com), de acuerdo con las instrucciones disponibles en el mismo, hasta diez días después de que usted lo haya recibido. La responsabilidad de Conectiva S.A. (http://es.conectiva.com), y su reparación exclusiva, se limita a los casos en que el medio en el que se puso a disposición el programa está con defecto. En este caso usted podrá devolverlo, dentro de un plazo de 30 días a partir de la fecha de compra, adjuntando una copia de su factura. Conectiva S.A. de acuerdo con su criterio, lo cambiará o procederá a la devolución del dinero. POR EL MÁXIMO PERMITIDO POR LAS LEYES APLICABLES, EN NINGÚN CASO CONECTIVA S.A. SERÁ RESPONSABLE POR CUALQUIER DAÑO. LO CUAL INCLUYE, LUCROS CESANTES, PÉRDIDAS ECONÓMICAS U OTROS DAÑOS ACCIDENTALES O CONSECUENTES DEL USO APROPIADO O INAPROPIADO DE LOS PROGRAMAS Y/O APLICACIONES. INCLUYENDO LOS DEBIDOS A LA INEPTITUD PARA EL USO DE LOS PROGRAMAS Y/O APLICACIONES, AUN EN EL CASO DE QUE CONECTIVA S.A. O ALGÚN DISTRIBUIDOR AUTORIZADO, NO HAYA EFECTUADO LAS ADVERTENCIAS CORRIENTES SOBRE ESTOS TIPOS DE 446 Apéndice C. Licencia de Uso y Garantía del Producto PROBLEMAS. General Si alguna cláusula de este Acuerdo no se considera válida, las otras cláusulas no se deberán afectar por este motivo. El acuerdo se establece según la legislación brasileña. En caso de conflicto de jurisdicción, para solucionar dudas, omisiones o cualquier otro asunto relacionado con el presente convenio, queda definida como competente la Cámara Arbitral del bloque comercial del cual estos países hacen parte u otra Cámara competente, según el arreglo comercial establecido entre estos mismos países, definiéndose en última instancia la OMC (Organización Mundial de Comercio) para solucionar cualquier asunto legal. Derechos de autor ®2000 Conectiva S.A. (http://es.conectiva.com). Todos los derechos reservados. Conectiva y Conectiva Linux son marcas registradas de Conectiva S.A. (http://es.conectiva.com). Linux es una marca registrada de Linus Torvalds en varios países. 447 Apéndice C. Licencia de Uso y Garantía del Producto 448 Apéndice D. Licencia Pública General GNU GNU GENERAL PUBLIC LICENSE Versión 2, Junio 1991 Esta es una traducción no oficial de la Licencia Pública General GNU al español. No ha sido publicada por la Free Software Foundation y no expresa legalmente los términos de distribución que usa la GNU GPL – sólo el texto original en Inglés de la misma lo manifiesta. No obstante, esperamos que esta traducción ayudará a los hispanohablantes a entender mejor la GNU GPL. Copyright \copyright 1989, 1991 Free Software Foundation, Inc. 675 Mass Ave, Cambridge, MA 02139, USA. Se le permite a cualquier persona copiar y distribuir copias inalteradas de este documento de licencia. Introducción Las licencias de muchos software se desarrollan para limitar la libertad de uso, intercambios y modificaciones. La Licencia Pública General de GNU, al contrario, 449 Apéndice D. Licencia Pública General GNU pretende garantizar la libertad de compartir y alterar software de libre distribución - haciéndolos de libre distribución también para cualquier usuario. La Licencia Pública General se aplica a la mayoría de los software de la Free Software Foundation y a cualquier autor que esté de acuerdo en utilizar sus normas (algunos software de la FSF son cubiertos por la GNU Library General Public License). Cuando nos referimos a software de libre distribución, nos referimos a la libertad y no al precio. Nuestra Licencia Pública General se creó para garantizar la libertad de distribución de copias de software de libre distribución (y cobrar por esto, si es de interés del distribuidor), la cual recibió los códigos fuente que pueden ser alterados o utilizados en parte, en los nuevos programas. Para asegurar los derechos de los programadores se hacen algunas restricciones y se prohíbe que las personas nieguen esos derechos o soliciten su derogación. Estas restricciones se aplican incluso a algunas responsabilidades sobre la distribución o modificación del software. Por ejemplo, cuando se distribuyen copias de determinado programa por una tasa determinada o gratuitamente, se debe informar sobre todos los derechos que inciden sobre ellas, asegurándose que los códigos fuentes estén disponibles, inclusive la Licencia Pública General GNU. La protección de los derechos involucra dos pasos: (1) copyright del software y (2) licencia que concede permiso legal para copia, distribución y modificación de software. Además para la protección de la FSF y del autor, es importante que todos entiendan queno existen garantías para software de libre distribución. Si alguien modifica y distribuye el software, no reflejará más el trabajo original del autor y en consecuencia, no podrá gozar de las garantías originales. Finalmente, cualquier programa de libre distribución está constantemente ame- 450 Apéndice D. Licencia Pública General GNU nazado porlas patentes de software. Buscamos evitar el peligro de que los distribuidores de estos programas obtengan patentes individuales, convirtiéndose en sus dueños efectivos. Para evitarlo, se hicieron declaraciones expresas de que cualquier solicitación de patente, debe hacerse permitiendo la utilización a cualquier individuo, sin necesidad de la licencia de uso. Los términos y condiciones precisas para realizar copias, distribución y modificaciones se describen a continuación. Términos y condiciones para copia, distribución y modificaciones 1. Esta licencia se aplica a cualquier programa u otro trabajo que contenga un aviso colocado por el detentor de los derechos de autor, diciendo que puede ser distribuido bajo las condiciones de la Licencia Pública General. El programa se refiere a cualquier software, trabajo o a un trabajo basado en un programa. Significa tanto el propio programa, como cualquier trabajo derivado, de acuerdo con la ley de derechos de autor. Es decir, un trabajo que contenga el programa o una parte de éste, en su forma original, con modificaciones o traducido para otra lengua (la traducción está incluida sin limitaciones en el término modificación). 451 Apéndice D. Licencia Pública General GNU Actividades diferentes de efectuar copias, distribución y modificaciones, no están cubiertas por esta Licencia y quedan fuera de su alcance. El acto de ejecutar el programa no está restringido y su salida está cubierta solamente en caso de que el contenido tenga trabajos con base en el mismo (independientemente de que se hayan creado durante la ejecución del programa). Si esto es así, depende de las funciones ejecutadas por el programa. 2. El código fuente del Programa se puede copiar y distribuir de la forma como fue recibido, en cualquier medio, siempre que se coloque un aviso adecuado sobre los copyrights y la falta de garantías. Todos los avisos que se refieran a la Licencia Pública General y a la ausencia de garantías, deben estar inalterados y todos los productos oriundos del programa deben estar acompañados de esta Licencia Pública General. Está permitido el cobro de tasas por el acto físico de transferencia o grabación de copias. Se pueden dar garantías y soporte a cambio del cobro de valores. 3. Se puede modificar la copia o copias del programa de la forma que se desee o incluso crear un trabajo con base en el programa, copiarlo y distribuir tales modificaciones bajo lostérminos de la sección 1 anterior y de lo siguiente: [a.] Debe haber un aviso destacando que los datos originales fueron alterados en los archivos y las fechas correspondientes a los cambios. [b.] Debe haber un aviso de que el trabajo distribuido o publicado es, en forma total o parcial, derivado del programa o de alguna parte suya 452 Apéndice D. Licencia Pública General GNU y que puede ser licenciado totalmente sin costos para terceros según los términos de esta Licencia. [c.] Si el programa modificado se ejecuta en forma interactiva, es obligatorio, al iniciar su ejecución que presente la información de copyright y de ausencia de garantías (o de que la garantía es de responsabilidad de terceros) y que los usuarios pueden redistribuir el programa bajo estas condiciones, indicándole cómo acceder a esta Licencia completa. 4. Estos requisitos se aplican a trabajos de modificación en general. Si algunas secciones identificables no son derivadas del programa y pueden considerarse como partes independientes,entonces esta Licencia y sus Términos no se aplican a estas secciones cuando sean distribuidas separadamente. Pero si se distribuyen estas secciones como parte de un trabajo basado en el programa, la distribución, como un todo, debe contener los términos de esta Licencia, cuyos permisos se extienden al trabajo en su totalidad y no a cada una de las partes independientemente de quien las haya desarrollado. Más que tener la intención de refutar los derechos sobre la labor desarrollada por alguien, esta sección tiene por objetivo propiciar la correcta distribución de trabajos derivados del programa. Además, la mera inclusión en un volumen de almacenaje (medio de distribución) de trabajos que tengan como base el programa u otros trabajos basados en él, no obliga la aplicación de esta Licencia y de sus términos a dicho trabajo. 453 Apéndice D. Licencia Pública General GNU Están permitidas, la copia y la distribución del Programa (o un trabajo basado en éste) en la forma de código objeto o ejecutable, de acuerdo con los términos de las Secciones 1 y 2 anteriores, desde que se cumpla lo siguiente: [a.] Que se suministren los códigos fuente legibles, que se deben distribuir en la forma de las Secciones 1 y 2 ya mencionadas arriba, de la forma normalmente utilizada para el manejo del software. [b.] Que venga con una oferta escrita, válida por três años como mínimo, de poner a disposición de terceros, una copia completa de los códigos fuente en medio magnético, de acuerdo con las Secciones 1 y 2 arriba. Esto por un costo no superior al costo del medio físico de almacenaje. [c.] Que esté anexada la misma información recibida en relación con la oferta de la distribución del código fuente correspondiente. Esta alternativa solamente está permitida para distribuciones no comerciales y solamente si el programa recibido en la forma de objeto o ejecutable tiene tal oferta, de acuerdo con la sección 2 anterior. El código fuente de un trabajo es la mejor forma de que se produzcan alteraciones en ese trabajo. Cuando se habla de códigos fuente completos se habla de todos los fuentes, de todos los módulos, además de las definiciones de interfaces asociadas, archivos, scripts...utilizados en la compilación e instalación del ejecutable. Como una excepción, el código fuente distribuido podrá no incluir algunos componentes que no se encuentren en su campo de acción, como compilador, núcleo, etc... para el sistema operativo donde el 454 Apéndice D. Licencia Pública General GNU trabajo se ejecute. Si la distribución del ejecutable u objeto se realiza a través de acceso a un determinado punto, se debe hacer, a los códigos fuente oferta equivalente de acceso, aunque terceros no estén obligados a copiar los fuentes juntos con los objetos simultáneamente. 5. No se permite la copia, modificación, sublicenciamiento o distribución del programa, excepto bajo las condiciones expresas en esta Licencia. Cualquier intento de copia, modificación, sublicenciamiento o distribución del programa está prohibido, y los derechos descritos en esta Licencia cesarán inmediatamente. Los terceros, que hayan recibido copias o derechos bajo la forma de esta Licencia, no tendrán sus derechos retirados siempre y cuando permanezcan dentro de las cláusulas de la misma. 6. No es necesaria la aceptación formal de esta Licencia, a pesar de que no habrá documento o contrato que garantice permiso de modificación o distribución del programa o sus trabajos derivados. Esas acciones están prohibidas por ley, en el caso de que no se acepten las condiciones de esta Licencia. La modificación o distribución del programa, o cualquier trabajo basado en éste, implica la aceptación de esta Licencia y de todos los términos de ésta, para copia, distribución o modificación del programa o trabajos basados en éste. 7. Cada vez que el programa se distribuya (o cualquier trabajo basado en éste), el receptor automáticamente recibe una licencia del detentor original de los derechos de copia, distribución o modificación del programa objeto de estos términos y condiciones. No pueden imponerse otras restricciones a los receptores. 8. En caso que decisiones judiciales o alegaciones de uso indebido de patentes o dere- 455 Apéndice D. Licencia Pública General GNU chos de autor, impongan restricciones que contradigan esta Licencia, éstas no inhiben su aplicación. Si no es posible distribuir el programa de tal forma que garantice simultáneamente las obligaciones de esta Licencia y otras que sean necesarias, entonces el programa no podrá distribuirse. Si esta Sección se considera no válida por cualquier motivo particular o general, su resultado implicará en la no validación general de esta Licencia para la copia, modificación,sublicenciamiento o distribución del programa o trabajos basados en éste. El propósito de esta sección no es, de ninguna manera, incitar a nadie a infringir derechos reclamados en cuestiones válidas y procedentes, y sí proteger las premisas del sistema de libre distribución de software. Muchas personas han hecho contribuciones generosas al sistema, en la forma de programas, y es necesario garantizar la consistencia y credibilidad del sistema, cabiendo a éstos, y no a terceros, decidir la forma de distribución de los software. Esta sección pretende aclarar los motivos que generaron las demás cláusulas de esta Licencia. 9. Si la distribución del programa, dentro de los términos de esta Licencia, tiene restricciones en algún País, por patentes o derechos de autor, el detentor original de los derechos de autor del programa cobijado por esta Licencia puede adicionar explícitamente limitaciones geográficas de distribución, excluyendo esos países, haciendo que la distribución solamente puedarealizarse en los países no incluidos en esta limitación. 10. La Fundación de Software de Libre Distribución (FSF - Free Software Foundation) puede publicar versiones revisadas o nuevas versiones de esta Licencia Pública Ge- 456 Apéndice D. Licencia Pública General GNU neral periódicamente. Estas nuevas versiones mantendrán los mismos objetivos y el espíritu de la presente versión, pudiendo variar en detalles referidos a las nuevas situaciones en que se encuentren. A cada versión se le asigna un número distinto. Si el Programa menciona, un número de la versión específica de esta Licencia que tenga en su contenido la expresión “ versión más actualizada”, es posible optar por las condiciones de aquella versión o de cualquier versión más reciente publicada por la FSF. 11. Si se desea incorporar parte del programa a otros programas de libre distribución de software es necesario tener la autorización formal del autor. Para software de los cuales la FSF tenga los derechos de autor, pueden abrirse excepciones siempre que se mantenga el espíritu y objetivos originales de esta Licencia. 12. COMO EL PROGRAMA ESTÁ LICENCIADO SIN COSTO, NO EXISTE NINGUNA GARANTÍA PARA ÉL. EXCEPTO CUANDO TERCEROS SE EXPRESEN FORMALMENTE, EL PROGRAMA SE PONE A DISPOSICIÓN EN SU FORMATO ORIGINAL, SIN GARANTÍAS DE NINGUNA NATURALEZA, EXPRESAS O IMPLÍCITAS, INCLUYENDO, PERO NO LIMITADAS, LAS GARANTÍAS COMERCIALES Y DE ATENCIÓN PARA UN FIN DETERMINADO. LA CALIDAD Y EL RENDIMIENTO SON DE RIESGO EXCLUSIVO DE LOS USUARIOS. CORREN POR SU CUENTA LOS COSTOS DE EVENTUALES ALTERACIONES, CORRECCIONES Y REPARACIONES QUE SE JUZGUEN NECESARIOS. 13. EL AUTOR O TERCEROS QUE HUBIERAN MODIFICADO EL PROGRAMA, NO ASUMEN NINGUNA RESPONSABILIDAD POR LOS DAÑOS O PERJUICIOS QUE PROVENGAN DEL MAL USO O DE LA FALTA DE HABILIDAD EN 457 Apéndice D. Licencia Pública General GNU EL EMPLEO DEL MISMO (INCLUYENDO PERO NO LIMITADA A LA PÉRDIDA DE DATOS O DATOS ERRÓNEOS), AÚN CUANDONO SE HAYA EMITIDO UN AVISO SOBRE LOS POSIBLES ERRORES O DAÑOS. EXCEPTO EN LOS CASOS QUE LO REQUIERA UNA DECISIÓN JUDICIAL O POR LIBRE VOLUNTAD DE LOS MISMOS. FIN DE LA LICENCIA ¿Cómo aplicar estos términos a nuevos programas? Si usted desarrolló un nuevo programa y desea su amplia difusión al público, la mejor forma de conseguirlo es convertirlo en un software de libre distribución que cualquiera pueda distribuir bajo las condiciones de esta Licencia. Para eso basta anexar este aviso al programa. Se recomienda indicar ya en el comienzo de cada archivo fuente, la ausencia de garantías y la anotación de un archivo que contenga el texto general de esta Licencia, por ejemplo: (una línea para colocar el nombre del programa y una breve descripción de lo que hace) 458 Apéndice D. Licencia Pública General GNU Copyright ® 19yy nombre del autor Este programa es un software de libre distribución que puede copiarse y distribuirse bajo los términos de la Licencia Pública General GNU, como la publica Free Software Foundation, versión 2 de la licencia o (a criterio del autor) cualquier versión posterior. Este programa se distribuye con el deseo de que sea útil a sus usuarios, sin embargo NO TIENE NINGUNA GARANTÍA, EXPLÍCITA O IMPLÍCITA, COMERCIAL O DE ATENCIÓN A UN FIN DETERMINADO. Para obtener mÁs detalles consulte la Licencia Pública General GNU. Junto con este software debe haber una copia de la Licencia Pública General GNU, en inglés o español, de no ser así, escriba a Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Incluya también el medio de entrar en contacto con usted, por correo electrónico, dirección comercial o residencial. Si el programa es interactivo, presente en su inicio un breve aviso, como por ejemplo: Gnomovision versión 69, Copyright nombre del autor Gnomovision 459 Apéndice D. Licencia Pública General GNU NO TIENE NINGUNA GARANTÍA; para obtener más detalles teclee “muestre garantía”. Éste es un software de libre distribución y usted está autorizado a distribuirlo siempre que cumpla ciertas condiciones. Para obtener más detalles, teclee “muestre condición” Los comandos hipotéticos “muestre garantía” y “muestre condición” presentarán las partes apropiadas de la Licencia Pública General GNU. Evidentemente los comandos pueden variar o ser accionados por otras interfaces como clic de ratón, etc. Esta Licencia Pública General no permite la incorporación de su programa en programas que no sean de libre distribución. Si su programa es una subrutina de biblioteca, tal vez a usted le parezca más interesante permitir la “implementación” de aplicaciones que no sean de libre distribución con su biblioteca. Si es eso lo que desea hacer, en vez de usar esta Licencia use la Licencia Pública General GNU para Bibliotecas. 460 Índice líneas de configuración, 347 líneas de selección, 347 archivo /etc/host.allow, 310 Símbolos archivo /etc/host.deny, 310 archivo /etc/inetd.conf, 402 /var/log/htmlaccess.log, 43 archivo /var/named, 218 /var/spool/mail, 53 archivo /var/named/named.ca, 221 AIDE, 345 archivo /var/named/named.local, 220 grupos predefinidos, 349 archivo /var/spool/lpd, 425 almacenamiento en cache, 196 archivo resolv.conf, 225 aplicaciones archivo sendmail.cf, 294 AIDE, 345 appletalk Bind afpd, 427 archivos de configuración, 216, 218, 220, 221 atalkd, 427 dominio, 219 papd, 427 comodines, 310 servicios, 427 correo electrónico archivo /etc/aide.conf MTA, 269 461 DNS almacenamiento en cache, 196 archivo /var/named, 218 dominios de Internet, 191 filtro de paquetes acciones posibles, 316 archivo /var/named/name.ca, 221 finger, 307 archivo /var/named/name.local, 220 firewall Bind, 216 configurando, 319 configuración, 206 opciones, 317, 317, 318, 318, 318 configurando, 223 dominio, 219 dominios, 191 FTP tcp_wrappers, 308 IMAP, 269 DPN, 191 buzón, 285 estructura de la base de datos, 187 buzón de correo, 285, 286, 288, 289 forward zones, 208 directorio /var/spool/mail, 284 instalación, 197 opciones de configuración, 282 máquina de resolución de nombres, 196, 196 resolución de nombres, 196 servidor de nombres, 197, 209, 214, 215, 224, 224 462 ipchains instalando, 319 LDAP ACL, 158 comando ldapsearch, 162 named, 214 configurando, 158, 158, 158 NFS linuxconf configuración, 388, 389, 390 información sobre los archivos, 55 configurando, 391 Sendmail, 293 iniciación del servicio nfs, 390 mapas de IPs inversos, 204 Mars-NWE banner de impresión, 424 cola de impresión, 425, 425 ntsysv configurando named, 215 POP configurando, 292 packet burst, 416 portmap, 390 usuario, 421, 422 protocolo versión de Netware, 416 MTA, 269 Postfix, 293 Qmail, 293 Sendmail, 293 máquina de resolución de nombres, 196 funciones, 196 IMAP, 269 SMTP, 269 proxy reglas de acceso, 265, 265 Qmail, 293 resolución de nombres, 196 Samba 463 archivo /etc/inetd.conf, 402 configurando, 402 seguridad SSL, 260 TCP Wrappers, 307 telnet, 307 AIDE, 345 archivo /etc/host.allow, 310 archivo /etc/host.deny, 310 A comodines, 310 control de acceso, 310 acceso móvil, 178 tcpd, 307 habilitando, 179 verificando, 345 incluyendo perfiles, 178 Sendmail acceso remoto, 386 archivo m4, 295 ACL, 151 archivo sendmail.cf, 294 agrupación de discos duros, 99 configurando, 293 AIDE SMTP, 269 configurando, 293 Squid almacenaje, 264, 264 464 configurando, 347 utilizando, 353 aide-m5, 354 alias de IP, 238 almacenamiento de rutas, 415 MTTF, 361 alta disponibilidad, 357 MTTR, 361 administración de nodos, 367 objetivos, 359 administración de servicios, 369 RAID, 112, 139 aplicación, 366 redundancia, 359 cálculo, 360 ReiserFS, 368 defecto, 363 sistema de archivos, 368 DRBD, 368, 369 Apache, 230 duplicación, 359 configuración, 231 duplicación de discos, 367 configurando, 237, 237, 238, 241 error, 362 iniciando, 234 escalonador Mon, 369 instalación, 231 failback, 365 máquina virtual, 241 failover, 364 registros de error, 242 falla, 362 registros de transferencia, 242 heartbeat, 376, 378, 379, 379, 380, 381 scripts CGI, 242 misión, 365 aplicaciones Apache, 230 465 authconfig, 170 archivo /etc/passwd, 407 dnsserver, 261 archivo /etc/raidtab, 125, 130, 136 LDAP, 143 archivo /etc/services, 292, 304 linuxconf, 35 archivo /etc/shadow, 407 Samba, 392 archivo /etc/sysconfig/network, 330 Squid, 261 archivo /proc/mdstat, 134 appletalk Netatalk, 427 archivo /var/log/messages, 327 archivo inetd.conf, 292, 303 archivo .mensaje, 256 archivo ldap.conf, 160 archivo /etc/aide.conf, 347 archivo named.conf, 217 líneas de macro, 347 archivo pam.d, 171 archivo /etc/atalk, 429 archivo passwd, 170, 173 archivo /etc/exports, 389 archivo resolv.conf, 223 archivo /etc/ftpaccess, 253 archivo sladp.conf, 157 archivo /etc/ha.d/ha.cf, 383 archivo slapd.at.conf, 179 archivo /etc/ha.d/haresources, 382 archivo slapd.conf archivo /etc/inetd.conf, 244, 310 archivo /etc/nwserv.conf, 407, 411 466 personalizando, 181 archivo slapd.oc.conf, 179 archivo squid.conf, 262 clases de objetos, 149 archivos cola de impresión, 425 seguridad del login, 418 Compartiendo discos, 399 archivos de configuración, 57 compartiendo un directorio, 399 autenticación, 170, 407 contraseñas configurando, 173, 174 tratamiento, 417 contraseñas codificadas, 395 contraseñas decodificadas, 395 B control de acceso, 265, 310 control de acceso al servidor FTP, 248 Bind archivos de configuración, 217 bindery, 405 control de servicios, 64, 64, 65 correo electrónico, 267 intercambio de mensajes, 268 MUA, 268 protocolo IMAP, 276 C protocolo POP, 273 protocolo SMTP, 270 cache, 264 sniffer, 274, 274 caching, 259 467 D 189, 191 servidor de nombres, 194, 195, 195 disco de reposición, 111 zona, 194 disponibilidad de los servidores DPT-RAID, 101 alta, 359 DRDB, 368 disponibilidad de servidores configuración, 371 básica, 358 continua, 359 configurando, 370, 371 iniciando, 373 DNS, 187 DSP, 101 archivo named.conf, 217 duplicación, 111, 359 configuración, 202, 202, 202, 204, 210 configurando, 198, 200, 211 dirección IP, 213 E dominio, 194, 201 ECC, 112 dominios, 190, 193 enmascaramiento de IP, 340, 341 funcionalidades, 212 funcionamiento, 188 nombres de dominio, 188, 189, 189, 468 F FQDN, 150 FTP filtro de paquetes, 316 archivo .mensaje, 256 configurando, 319 archivo /etc/ftpaccess, 253 firewall caching, 259 archivo /var/log/messages, 327 comando ipchains, 319 configurando, 255 servicios, 243 configurando, 323, 324, 326, 328, 341, 343 filtro de paquetes, 316, 319 Forward, 328, 330, 332, 333, 334, 336 G función printk(), 327 GNOME opciones, 318 por entrada, 320 herramienta para LDAP, 175 GPL, 449 por reenvío, 340 reglas de, 317 reglas de entrada, 321, 322, 322 H forward zones, 208 Heartbeat 469 archivo /etc/ha.d/ha.cf, 383 IPX, 404 archivo /etc/ha.d/haresources, 382 configurando, 377, 382 instalación, 376 L hipertexto, 227 HTTP LDAP requerimiento, 229 acceso móvil, 178, 178, 179, 183 requisición, 228 archivo de atributos, 179 archivo de registros, 174 archivo ldap.conf, 160 archivo LDIF, 181 I archivo objectclass, 179 IMAP, 276 archivo syslog.conf, 174 comando LIST, 280 autenticación, 170, 171 configurando, 292 base de datos, 175 estados, 277 clases de objetos, 149 internet super-server, 303 atributo cn, 149 ipchains, 319 atributo description, 149 470 atributo sn, 149 información opción objectClass, 149 accediendo, 150 opción person, 149 organizando, 148 opción schemacheck, 149 protegiendo, 151 cliente LDAP GQ, 175 registrando, 150 comando ldapadduser, 174 iniciando el servidor, 160 comando ldapdeluser, 174 instalando, 156 comandos, 162 modelo cliente-servidor, 152 configurando, 157, 158, 158, 166 nombre de dominio, 148 control de acceso ACL, 151 NSS, 170, 173 directorio X.500, 154 PAM, 170, 171 directorios, 144 paquetes, 156 DNS, 146 protocolo DAP, 154 entradas, 147 RDN, 150 estructura, 148 reiniciando el servidor, 183 FQDN, 150 RFC, 147 funcionamiento, 152 script migrate_all_offline, 159 Herramientas gráficas, 175 servicios globales, 146 471 slapd, 181 ayuda, 48 slurpd, 156 cambiando configuraciones, 62 usuarios, 174, 174 características, 36 utilizando, 162 comandos y "daemons", 60, 61 utilizando URLs, 169 configuraciones, 35 licencia GPL, 449 linux conf DNS, 198 linuxconf, 35 /usr/sbin/useradd-sql, 63 /var/log/htmlaccess.log, 43 activando configuraciones, 48 activando las configuraciones, 50 alias de IP, 238 Apache, 234 archivos de configuración, 57, 58 atribución de bandas de, 213 472 configurando, 44, 45, 51, 64, 65, 223, 237, 255, 402 control de servicios, 64 filtrado de archivos, 54 informe de alteraciones, 49 iniciando, 39, 41, 42, 42, 43 interfaz, 36, 37, 38, 38, 38 interfaz gráfica de, 39 módulos, 51 NFS, 387 permiso de archivos, 53 personalizando funciones, 62 Qué es, 35 Samba, 394 Netware, 410 secciones de, 41 paquetes de broadcast, 405 seguridad, 303 permisos, 407 servicio, 214 script de login estándar, 424 setuid, 56 scripts de logon, 406 teclas de referencia rápida, 37 seguridad durante el login, 418, 419 utilizando, 39 supervisor, 407 usuario, 419, 420 utilidades DOS, 409 M volúmenes del servidor, 412, 412 mkraid, 138 Macintosh, 427 mapas de IPs inversos añadiendo, 205 Mars-NWE, 404, 407 configurando, 409, 411, 411, 413, 414, 414, 415 modelo cliente-servidor, 152 MTTF, 361 MTTR, 361 MUA, 268 módulos MD, 104 contraseñas, 417, 417 ncpmount, 406 473 N instalación, 386 linuxconf, 388 NAT, 341 nombre de dominio, 148 Netatalk, 427 nombres de dominio, 187 archivo /etc/atalk, 429 absoluto, 189 configurando, 428, 431, 431, 432, 433 configurando, 237 exportando directorios, 429 estructura, 189 iniciando, 433 relativo, 189 instalando, 428 Netscape acceso móvil, 178, 178, 183 NSS, 170 ntsysv, 301 instalando, 301 archivo slapd.at.conf, 179 configurando LDAP, 166 dirección de mensajes, 168, 168 P NFS, 385 PAM, 170 accediendo volúmenes nfs, 392 paridad configuración, 389 configurando, 387 474 información, 114 permiso de archivos, 53 R protocolo RAID, 99 appletalk, 427 Ethertalk, 427 FTP, 243 HTTP, 228 agrupación, 126, 132 alta disponibilidad, 112, 139 comando mkraid, 138 IPX, 404 configurando, 124, 125, 125, 127, 128, 129, 131, 133, 136 NCP, 404 controlador MD, 105, 105 NetBIOS, 393 controladoras, 102, 102, 102 POP, 273 creando particiones, 124 SMB, 392 ECC, 112 TCP/IP, 401 embudo de escritura, 116 protocolos LDAP, 144 proxy caching, 259 implementación, 100 montando para el uso, 135 niveles, 106, 122 rendimiento, 119, 120 reglas de acceso, 265 Squid, 259 475 requisitos de espacio, 123 registro automático de usuarios, 422 segmentación, 108 ReiserFS, 368 SSI, 141 instalación, 374 stripping, 110 repetidores, 210 tipos de hardware, 103, 103 RFC, 147 utilidad GDTMON, 102 réplica de discos, 131 vía hardware, 100, 100, 101, 101 vía software, 104, 106, 107, 108, 111, 111, 112, 114, 116, 118, 118 RDN, 150 recursos compartidos, 392 red iniciando linuxconf, 43 red Windows propiedades, 401 S Samba, 392 configuración, 394 configurando, 393, 395, 398, 399, 399, 401, 401, 401 contraseñas, 395, 396 redes heterogéneas, 385 emulador de Netware, 404 redundancia, 359 iniciando, 401 redundancia y falla de discos, 107 instalación, 393 Mars-NWE, 404 476 protocolo IPX, 404 firewall, 299, 316, 317 protocolo SMB, 392 inetd, 303 red Windows, 401 lista de clientes, 311 servicio inetd, 403 ntsysv, 301 SWAT, 402 paquete tcp_wrappers, 307, 313, 314 volumen, 400 servicios standalone, 300 scripts CGI, 242 verificando, 345 segmentación de datos visión general, 299 stripes, 108 seguridad, 297 AIDE, 347 aide-m5, 354 Sendmail, 293 servicios iniciando, 302 servidor, 156 amenazas a la, 298 de nombres, 194 base de datos, 351 DNS, 187 checksum, 345 FTP, 227 configurando, 303 LDAP, 156 deshabilitando servicios innecesarios, 300, 304 Macintosh, 427 Netware, 404 477 NFS, 385 control de acceso, 265 protección, 151 instalando, 261 proxy, 227, 259 objetos en la memoria, 263 Samba, 393 ventajas, 260 web, 227 SSI, 141 Windows, 393 stripping, 110 servidor web SWAT, 402 Apache, 230 setuid, 56 slapd, 181 U slurpd, 156, 156 SMTP proceso de intercambio de mensajes, 270 sniffer, 274, 274 Squid, 259 archivo squid.conf, 262 archivos de cache, 264 478 usuario anónimo, 249 invitado, 249 real, 249 utilidades DOS, 409 V accesos anónimos, 250 archivo, 255 volúmenes nfs, 392 archivo /etc/inetd.conf, 244 volúmenes Samba, 400 archivos, 252 configuración, 254 configurando, 245, 246, 247, 247 W WU-FTPD, 243 directorio /incoming, 253 instalando, 243 usuario, 248, 249, 249