361
Memoria del Proyecto —– Servidor Linux para conexiones seguras de una LAN a Internet —– Jose Antonio Escart´ ın Vigo Junio de 2005

16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Embed Size (px)

DESCRIPTION

material para tecnicos

Citation preview

Page 1: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Memoria del Proyecto

—–

Servidor Linux

para conexiones seguras de una LAN a Internet

—–

Jose Antonio Escartın Vigo

Junio de 2005

Page 2: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)
Page 3: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Introduccion

En las siguientes lıneas trato de describir los motivos que me llevaron a escoger un proyecto de esteestilo y de donde surgio la idea de realizar un documento informativo para facilitar la tarea de muchosadministradores de sistemas “noveles”, como yo cuando comence este proyecto.

En esta pequena introduccion tambien se especifican los objetivos que se pretenden conseguir y paraentrar en materia se comenta, muy por encima, la historia de Linux.

Motivacion

Me decidı a realizar este proyecto por la inquetud personal que tenıa respecto al sistema operativoLinux. Conozco a mucha gente que lo maneja y que me hablaba muy bien, por pereza y falta de tiempo,nunca me habıa puesto a experimentar a fondo con el. Si bien es cierto que lo tenıa instalado (una versionMandrake 9.0) lo utilizaba solamente para realizar las practicas de la universidad y poca cosa mas.

Siempre me han atraıdo los sistemas operativos, bastante mas que la rama de programacion. Unaprueba de ello es que cuando llege a la FIB (vine del Ciclo formativo de grado superior: Desarrollo deaplicaciones informaticas; es decir, basicamente programacion) me cambie a la rama de sistemas.

Actualmente me encuentro cursando el PFC de la Ingenierıa tecnica en Informatica de Sistemas ytengo la intencion de solicitar plaza de admision en la Ingenierıa superior de informatica, carrera a la queno pude acceder en primera instancia por restricciones legales, al acceder a la universidad por la vıa delos ciclos formativos de grado superior.

A lo largo de la carrera, he cursado las siguientes asignaturas relacionadas con los sistemas operati-vos: ISO (Introduccion a los sistemas operativos), SO (Sistemas Operativos), ASO (Administracion desistemas operativos), CASO (Conceptos avanzados de sistemas operativos), SSI (Seguridad en sistemasinformaticos). Ademas hace unos anos, antes de comenzar la carrera, realizaba trabajos de administradorde sistemas en entornos Windows, para dos institutos (IES Piramide y IES Sierra de Guara) de mi ciudadnatal, Huesca.

El PFC: “Servidor Linux para conexiones seguras de una LAN a Internet” me ha permitido desarrollaramplios conocimientos en el campo de los sistemas operativos, algo que realmente me interesa y supongoque me permitira encarrilar mi carrera hacia el trabajo que pretendo desarrollar como Administrador desistemas.

Si en vez de elegir uno de los proyectos propuestos desde la universidad, hubiera pensado proponeruno, sin duda habrıa elegido hacer un proyecto igual al que propuso el profesor Lluıs Perez Vidal deldepartamente LSI de la UPC. Me siento bastante afortunado de haber realizado un PFC que realmenteme interesaba y motivaba.

Page 4: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

vi Servidor Linux para conexiones seguras de una LAN a Internet

Motivacion del proyecto

Ante el problema de instalar un sistema operativo que controle los servicios de red y ademas sea establese nos plantean principalmente dos alternativas, Linux o Windows.

¿Que ventajas tiene Linux sobre Windows?

Es mas seguro.

Ya que la gran mayorıa de los ataques de hackers son dirigidos a servidores Windows al igual quelos virus los cuales se enfocan principalmente a servidores con este sistema operativo. La plataformaLinux es mas robusta lo cual hace mas difıcil que algun intruso pueda violar la seguridad del sistema.

Es mas rapido.

Al tener una plataforma mas estable, se favorece la utilizacion de aplicaciones de todo tipo deaplicaciones. La eficiencia de su codigo fuente hace que la velocidad de las aplicaciones Linux seansuperiores a las que corren sobre Windows.

Es mas economico.

Ya que requiere menor mantenimiento. Los servidores Windows son mas costosos debido a que esnecesaria una frecuente atencion y monitoreo contra ataques de virus, hackers y errores de codigo.El software Linux ası como tambien un sin numero de aplicaciones, son de codigo abierto y estanprotegidas por la licencia GPL1, motivo por el que son distribuidas gratuitamente. No requierensupervision constante ni pagos de mantenimiento para obtener Service Packs, que no son mas queparches de seguridad para aplicaciones mal diseadas.

¿Que ventajas tiene Windows sobre Linux?

Es mas facil.

Al ser de mayor facilidad de uso Windows en este momento continua siendo el sistema operativo mascomercial lo cual se refleja en la disponibilidad de aplicaciones, facilidad de mantenimiento ası comosoporte en el desarrollo de nuevas aplicaciones.

Las aplicaciones se desarrollan en menor tiempo.

Fruto de la inversion realizada por Microsoft y aunado a una comunidad de programadores cada vezmas grande se ha logrado facilitar el desarrollo de aplicaciones y sistemas que corran sobre servidoresWindows lo cual se ve reflejado en tiempos de desarrollo menores. De la misma forma, la curva deaprendizaje en el sistema Windows es mucho menor.

La alternativa mas sencilla y a la vez mas ineficiente es elegir un sistema operativo Windows. Lo quese busca es seguridad, integridad de datos y eficiencia del sistema, por tanto nos decantaremos por unadistribucion GNU/Linux.

El proyecto surge ante la necesidad de escoger entre las distribuciones Linux actuales, la mas adecuadapara instalar un servidor e implementar las aplicaciones necesarias para dar servicios a clientes de sistemasoperativos Linux y Windows.

Esto es algo no trivial y el proyecto trata de ser una ayuda, apoyo y consulta para facilitar la tarea deuna persona que trate de implementar un servidor.

1GPL: Licencia publica GNU. Segun se cita en [Sha01] expecifica explıcitamente que el software desarrollado es libre yque nadie puede coartar estas libertados. Se puede revender, incluso obteniendo beneficio; sin embargo, en esa reventa elvendedor debe de proveer el codigo fuente completo, incluyendo cualquier modificacion realizada. El paquete continua bajoGPL y puede ser distribuido de modo libre y revendido de nuevo obteniendo tambien beneficio. Es de una importanciaprimordial la clausula de responsabilidad: los programadores no son responsables de cualquier dano causado por su software.

Jose Antonio Escartın Vigo, Junio 2005.

Page 5: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

vii

Objetivos

Este documento esta elaborado para describir la implementacion de un servidor GNU/Linux, ası comoespecificar y resolver los principales problemas que un administrador se encuentra al poner en funcio-namiento un servidor. Se aprendera a configurar un servidor GNU/Linux describiendo los principalesservicios utilizados para compartir archivos, paginas web, correo y otros que veremos mas adelante.

La herramienta de configuracion Webmin, que se detalla en uno de los ultimos capıtulos es indepen-diente de la distribucion GNU/Linux que utilicemos y nos permitira administrar de forma transparentediferentes distribuciones, con la ventaja que eso supone si alguna vez cambiamos de distribucion.

Cuadro 1: Objetivos del proyecto

Estudiar el entorno de composicion de textos LATEX

Analizar e instalar las distribuciones Linux mas importantes

Estudiar la compilacion de kernels

Analizar y configurar los servicios para usuarios Linux y Windows

Establecer sistemas de proteccion

Realizar pruebas de seguridad del servidor

Documentar el proyecto

Marco historico

Como se especifica en [BB00], Linux hizo su aparicion en 1991 cuando el finlandes Linus Torvalds deci-dio publicar en Internet su proyecto de carrera, animando a la comunidad internacional de programadoresa mejorarlo. Nacio como una mejora de Minix, una version de Unix para ordenadores PC basados en elprocesador 8086 de Intel, Linux por su parte utilizaba el procesador 386SX de Intel.

Posiblemente una de las explicaciones del exito de Linux es GNU1 que junto con la FSF2 (Free SoftwareFundation), tratan de promover el desarrollo de programas cuyo codigo sea publico y compartido. Una delas principales aportaciones GNU fue Linux, un sistema operativo de libre distribucion.

A partir de 1994 emperzaron a aparecer las primeras distribuciones de CD-ROM, junto con el codigofuente del sistema operativo, se disponıa de diversas utilidades y aplicaciones sin tener que descargarlas.Ese ano aparecieron los primeros grupos locales de usuarios de Linux y la primera revista on-line especia-lizada. Al ano siguiente se empezo a trabajar en las primeras versiones de Linux para plataforma no Intely los primeros desarrollos de instaladores parcialmente automaticos. A partir de 1996 Linux comienza adifundirse de forma mas general en Espana, ano en el que se inicia el proyecto de documentacion de Linuxen catellano (LUCAS) y se comienzan a organizar los primeros grupos de usuarios.

El futuro es muy prometedor, cada vez es mayor el numero de fabricantes de software y hardware quehan mostrado un creciente interes.

1GNU: GNU no es Unix. Definicion recursiva que representa el humor informatico en su maxima expresion2FSF: Fundacion para el software libre. Es el principal contribuidor del Proyecto GNU, depende de donaciones privadas y

se dedica a preservar, proteger y promover los derechos de los usuarios y su libertad para usar, estudiar, copiar, modificar yredistribuir software. Apoya la libertad de expresion, prensa y asociacion en internet, el derecho a usar software criptograficoen comunicaciones privadas y el derecho a escribir software sin los impedimentos del monopolio.

Jose Antonio Escartın Vigo, Junio 2005.

Page 6: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

viii Servidor Linux para conexiones seguras de una LAN a Internet

Requisitos mınimos Linux

Probablemente la configuracion mınima sobre la que Linux sea capaz de funcionar sea un 386SX con 2Mb de memoria RAM y una disquetera de 1.44, aunque con estas caracterısticas simplemente podremosarrancar el sistema y poco mas. Una configuracion mas realista deberıa incluir 4Mb de Ram si no vamosa utilizar el entorno grafico, 8Mb en caso contrario y un mınimo de 40MB de espacio en disco, aunqueen las distribuciones actuales el espacio deberıa ser mayor de unos 300Mb. Cantidades ridıculas si lascomparamos con los dispositivos disponibles actualmente, pero que permiten reutilizar materiales masantiguos de los que se pueda disponer. Frente a estos requerimientos, se encuentran los sistemas Windows,con unos requerimientos1 desorbitados.

Linux soporta cualquier CPU compatible con los procesadores x86 de Intel, pudiendose encontrarversiones que funcionan con procesadores 680x0 de Motorola utilizados en ordenadores Amiga y Atari.Tambien son compatibles con Linux muchos ordenadores basados en Alpha, ciertas maquinas Sparc, lasmaquinas basadas en PowerPC como por ejemplo los ordenadores Macintosh de Apple, ası como ARM,MIPS y algunos tipos de agendas electronicas, telefonos y consolas de juegos.

Notas Previas

Se van a tomar varias la siguiente notacion para el documento:

Cuando aparezcan frases que el usuario pueda introducir por teclado se hara notar por el tipo deletra mecanografica, Verbatim

Al hacer referencia a un comando que deba de ser introducido por una cuenta con privilegios deroot, ira precedido por el caracter “#”

Al hacer referencia a un comando que puede a ser ejecutado por un usuario cualquiera del sistema,si tiene privilegios para ello, ira precedido por el caracter “$”

Cuando se muestran codigos el caracter “#” al inicio de la frase especifica que esa frase concreta esun comentario dentro del codigo.

1WindowsXP: Procesador 233Mhz, 64Mb Ram y 1.5 Gb de disco; Windows2003 Server: Procesador 550Mhz, 256Mb Ramy 1.5 Gb de disco

Jose Antonio Escartın Vigo, Junio 2005.

Page 7: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Indice general

Introduccion IV

I Tareas previas 1

1. Planificacion 31.1. Fases del proyecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.2. Esquema temporal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2. Seleccion de Herramientas 92.1. Seleccion de Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2.1.1. Servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.1.2. Clientes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2.2. Seleccion de la distribucion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.2.1. Distribuciones Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.2.2. Pruebas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.2.3. Distribucion elegida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.3. Seleccion del Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.3.1. Planner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.3.2. LATEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.3.3. Kile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.3.4. Prosper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.3.5. Programas graficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

II Instalacion base 19

3. Instalacion de la distribucion 213.1. Proyecto Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.1.1. Unstable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213.1.2. Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213.1.3. Stable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223.1.4. Recomendaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3.2. Debian Sarge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223.3. Debian Woody . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233.4. Actualizacion de Woody a Sarge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

4. Primeros pasos 254.1. Particionar el disco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254.2. Gestores de arranque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264.3. Usuarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

4.3.1. Anadir nuevos usuarios al sistemas . . . . . . . . . . . . . . . . . . . . . . . . . . . 274.3.2. Anadir grupos al sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

Page 8: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

x Servidor Linux para conexiones seguras de una LAN a Internet

4.3.3. Bases de datos de usuarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284.4. Permisos de archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

4.4.1. Tipos de archivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314.4.2. Modificar los permisos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314.4.3. Permisos especiales: SUID, SGID y bit de persistencia . . . . . . . . . . . . . . . . 324.4.4. Cambiar un archivo de propietario o grupo . . . . . . . . . . . . . . . . . . . . . . 33

4.5. Instalacion de aplicaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334.5.1. Compilacion de paquetes desde archivos fuente . . . . . . . . . . . . . . . . . . . . 334.5.2. Dpkg: Instalador de paquetes precompilados . . . . . . . . . . . . . . . . . . . . . . 364.5.3. Apt: Gestor de paquetes Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364.5.4. Alien: Convertir paquetes .rpm a .deb (formato Debian) . . . . . . . . . . . . . . . 384.5.5. Encontrar paquetes y sus dependencias . . . . . . . . . . . . . . . . . . . . . . . . 384.5.6. Problemas al instalar paquetes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

4.6. Shells . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394.6.1. Tipos de shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404.6.2. Caracterısticas de la shell Bash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404.6.3. Ejecucion de procesos en la shell Bash . . . . . . . . . . . . . . . . . . . . . . . . . 414.6.4. Variables de entorno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414.6.5. Configuracion del entorno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424.6.6. Redireccionamientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

4.7. Consolas virtuales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

5. Kernel 455.1. ¿Por que compilar? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455.2. Acerca de los modulos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455.3. Kernel-image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455.4. Kernel-source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

5.4.1. Instalar un kernel-source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465.4.2. Crear un paquete .deb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

5.5. Compilar Kernel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475.5.1. Paquetes necesarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475.5.2. Comprobar el hardware disponible . . . . . . . . . . . . . . . . . . . . . . . . . . . 485.5.3. Metodo de compilacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485.5.4. Parchear el kernel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495.5.5. Consejos para la configuracion del kernel . . . . . . . . . . . . . . . . . . . . . . . . 49

6. Interfaz grafico 516.1. X-Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

6.1.1. Configuracion X-Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516.1.2. Arrancar X-Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

6.2. Gestores de ventanas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566.3. Entornos de escritorio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

6.3.1. Kde . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576.3.2. Gnome . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586.3.3. Otros entornos de escritorio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

7. Infraestructura de redes 597.1. Arquitectura de redes (Modelo OSI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597.2. Direcciones IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

7.2.1. Datagramas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 637.2.2. Encaminamiento IP (router y gateway) . . . . . . . . . . . . . . . . . . . . . . . . 637.2.3. Mascaras de red y notacion de barra inclinada . . . . . . . . . . . . . . . . . . . . 647.2.4. Subneting (CIDR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657.2.5. Enmascaramiento IP (NAT, Network Adress Translation) . . . . . . . . . . . . . . 66

7.3. Resolucion de direcciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

Jose Antonio Escartın Vigo, Junio 2005.

Page 9: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Indice general xi

7.3.1. ARP (Adress Resolution Protocol) . . . . . . . . . . . . . . . . . . . . . . . . . . . 687.3.2. RARP (Reverse Address Resolution Protocol) . . . . . . . . . . . . . . . . . . . . . 68

7.4. Protocolos de red, IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697.4.1. ICMP (Internet Control Message Protocol) . . . . . . . . . . . . . . . . . . . . . . 697.4.2. OSPF (Open Shortest Path First) . . . . . . . . . . . . . . . . . . . . . . . . . . . 697.4.3. Protocolo BGP (Border Gateway Protocol) . . . . . . . . . . . . . . . . . . . . . . 707.4.4. IGMP (Internet Group Management Protocol) . . . . . . . . . . . . . . . . . . . . 70

7.5. Protocolos de transporte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 707.5.1. UDP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 717.5.2. TCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

7.6. Protocolos de aplicacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 747.6.1. NFS (Network File System) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 747.6.2. SNMP (Simple network management protocol) . . . . . . . . . . . . . . . . . . . . 747.6.3. DNS (Domain Name Server) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 747.6.4. SMTP (Simple Mail Transfer Protocol) . . . . . . . . . . . . . . . . . . . . . . . . 747.6.5. TELNET (Remote login) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 757.6.6. FTP (File Transfer Protocol) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 757.6.7. HTTP (Hyper Text Transport Protocol) . . . . . . . . . . . . . . . . . . . . . . . . 75

7.7. Protocolo TCP/IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

8. Configuracion de dispositivos de red 798.1. Etherconf: Configurador grafico de red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 798.2. Ifconfig: Configurador de red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 798.3. Route: Tablas de redireccionamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 818.4. Netstat: Estado de las conexiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 838.5. Configuracion de interfaces usando DHCP . . . . . . . . . . . . . . . . . . . . . . . . . . . 838.6. Archivo /etc/network/interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

8.6.1. Direcciones IP estaticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 848.6.2. Direcciones IP dinamicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 848.6.3. Interfaz Wifi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 858.6.4. Interfaz PPPoE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 858.6.5. Puertas de enlace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 858.6.6. Interfaces virtuales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

8.7. Reconfiguracion de la red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 868.7.1. Configuracion de red durante el arranque . . . . . . . . . . . . . . . . . . . . . . . 878.7.2. Hotplug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 878.7.3. Ifplugd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

8.8. Resolvconf: Resolucion de nombres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 888.9. Archivos de configuracion de Hosts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 898.10. Iwconfig: Configuracion wireless . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 898.11. Resolucion de problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

III Instalacion de Servicios 91

9. Servicios de red 939.1. Servidor DHCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

9.1.1. Asignacion de direcciones IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 939.1.2. Parametros configurables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 949.1.3. Implementaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 949.1.4. Anatomıa del protocolo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 949.1.5. Configuracion de un servidor DHCP . . . . . . . . . . . . . . . . . . . . . . . . . . 959.1.6. Configuracion de un cliente DHCP . . . . . . . . . . . . . . . . . . . . . . . . . . . 989.1.7. Configuracion grafica de DHCP, interfaz Webmin . . . . . . . . . . . . . . . . . . . 99

9.2. BIND: Servidor de nombres DNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

Jose Antonio Escartın Vigo, Junio 2005.

Page 10: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

xii Servidor Linux para conexiones seguras de una LAN a Internet

9.2.1. ¿Para que necesitamos un DNS? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1019.2.2. Servicios que activa un DNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1029.2.3. Configuracion del servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1029.2.4. Traduccion de nombres a direcciones IP . . . . . . . . . . . . . . . . . . . . . . . . 1039.2.5. Configuracion grafica de DNS BIND, interfaz Webmin . . . . . . . . . . . . . . . . 1039.2.6. Seguridad en DNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108

9.3. NIS: Servicio de informacion de red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1099.3.1. Funcionamiento basico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1099.3.2. Servidores NIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1099.3.3. Configuracion del servidor NIS maestro . . . . . . . . . . . . . . . . . . . . . . . . 1109.3.4. Cliente NIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1139.3.5. Herramientas basicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1159.3.6. Problemas de seguridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116

9.4. NFS: Sistema de archivos Linux en red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1179.4.1. Cliente NFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1179.4.2. Montaje automatico de particiones NFS . . . . . . . . . . . . . . . . . . . . . . . . 1189.4.3. Propiedades de las particiones montadas . . . . . . . . . . . . . . . . . . . . . . . . 1189.4.4. Servidor de NFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1199.4.5. Configuracion grafica de NFS, interfaz Webmin . . . . . . . . . . . . . . . . . . . . 120

9.5. Samba: Servicio de conexiones para sistemas Microsoft . . . . . . . . . . . . . . . . . . . . 1219.5.1. Comparticion de recursos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1219.5.2. ¿Que es Samba? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1219.5.3. Configuracion grafica de Samba, interfaz SWAT . . . . . . . . . . . . . . . . . . . . 1239.5.4. Funcionamiento de CIFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1249.5.5. Parametros globales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1259.5.6. Impresoras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1269.5.7. Comparticion de directorios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1269.5.8. Limitar acceso de los usuarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1279.5.9. Integracion de Samba en un dominio NT . . . . . . . . . . . . . . . . . . . . . . . 1279.5.10. Configuracion de Samba como controlador de dominio . . . . . . . . . . . . . . . . 1289.5.11. Cliente Samba . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1289.5.12. Configuracion grafica de Samba, interfaz Webmin . . . . . . . . . . . . . . . . . . . 129

9.6. ProFTPD: Servidor FTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1319.6.1. Servidor ProFTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1319.6.2. Configuracion grafica de ProFTP, interfaz Webmin . . . . . . . . . . . . . . . . . . 1329.6.3. Clientes FTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

10.Servicios de usuario 13310.1. Cuotas de usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133

10.1.1. Arrancar el sistema de cuotas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13310.1.2. Asignar cuotas a los usuarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13410.1.3. Configuracion grafica de Quote, interfaz Webmin . . . . . . . . . . . . . . . . . . . 134

10.2. Cups: Servidor de impresion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13610.2.1. Servidor Cups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13610.2.2. Servidor Cups para Samba . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13910.2.3. Clientes Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14010.2.4. Clientes Microsoft . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14010.2.5. Solucionar problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140

10.3. Servidor Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14110.3.1. Servidor Apache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14110.3.2. Apache-SSL: Conexiones seguras . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15010.3.3. Creacion de un servidor web seguro . . . . . . . . . . . . . . . . . . . . . . . . . . 15210.3.4. Apache 2.x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15610.3.5. Ataques al servidor Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156

Jose Antonio Escartın Vigo, Junio 2005.

Page 11: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Indice general xiii

10.4. Servidor de correo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15710.4.1. Exim: Correo corporativo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15710.4.2. Fetchmail: Correo externo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15910.4.3. Horde: Webmail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16110.4.4. Protocolo IMAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16210.4.5. Filtrado de correo, eliminar virus y Spam con Procmail . . . . . . . . . . . . . . . 16310.4.6. ClamAV: Antivirus para correo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16510.4.7. SpamAssassin: Filtro basado en reglas . . . . . . . . . . . . . . . . . . . . . . . . . 16710.4.8. Bogofilter: Filtro bayesiano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169

10.5. Jabber: Mensajerıa instantanea para corporaciones . . . . . . . . . . . . . . . . . . . . . . 17210.5.1. Servidor Jabber . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17310.5.2. Configuracion grafica de Jabber, interfaz Webmin . . . . . . . . . . . . . . . . . . . 17410.5.3. Clientes Jabber . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174

11.Comunicaciones seguras 17711.1. Shell seguro: OpenSSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177

11.1.1. Cliente OpenSSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17711.1.2. Servidor OpenSSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178

11.2. Criptografıa y cifrado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18111.2.1. Tipos de cifrado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18111.2.2. Estandares generales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18211.2.3. Aplicaciones de la criptografıa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18311.2.4. Protocolos de cifrado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18411.2.5. OpenPGP: Aplicacion de cifrado . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185

12.Herramientas de seguridad 19112.1. Herramientas basicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191

12.1.1. Ping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19112.1.2. Traceroute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19212.1.3. Whois . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19312.1.4. Dig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19412.1.5. Finger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195

12.2. Firewall o cortafuegos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19612.2.1. Polıticas de seguridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19612.2.2. Modos de configuracion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19612.2.3. IPTables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197

12.3. Squid: Proxy transparente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20412.4. Bastille Linux: Herramienta de seguridad . . . . . . . . . . . . . . . . . . . . . . . . . . . 206

12.4.1. Ejecucion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20612.4.2. Modos de funcionamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207

12.5. Copias de seguridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20712.5.1. Dispositivos de cinta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20712.5.2. Mt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20812.5.3. Dump y Restore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20812.5.4. Configuracion grafica de backups, interfaz Webmin . . . . . . . . . . . . . . . . . . 21012.5.5. K3B: Grabacion de CDs y DVDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211

13.Sistemas de deteccion de intrusiones 21313.1. Tipos de IDS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213

13.1.1. NIDS (Network Intrusion Detection System) . . . . . . . . . . . . . . . . . . . . . 21313.1.2. IDS (Deteccion de actividades anomalas) . . . . . . . . . . . . . . . . . . . . . . . 21413.1.3. IPS (Intrusion Prevention System) . . . . . . . . . . . . . . . . . . . . . . . . . . . 214

13.2. Ubicacion del NIDS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21413.3. El problema de los falsos positivos de NIDS . . . . . . . . . . . . . . . . . . . . . . . . . . 21513.4. Obtener lo maximo del IDS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217

Jose Antonio Escartın Vigo, Junio 2005.

Page 12: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

xiv Servidor Linux para conexiones seguras de una LAN a Internet

13.4.1. Configuracion apropiada del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . 21713.4.2. Ajuste del IDS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21713.4.3. Herramientas de analisis IDS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217

13.5. IDS Snort (NIDS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21813.5.1. Caracterısticas basicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21813.5.2. Instalacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21813.5.3. Modos de ejecucion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21913.5.4. Modos de alerta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22113.5.5. Optimizar la configuracion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22213.5.6. Clases de reglas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22313.5.7. Ejecutar como servicio del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . 22613.5.8. Configuracion grafica de Snort, interfaz Webmin . . . . . . . . . . . . . . . . . . . 22613.5.9. Personalizar reglas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228

13.6. Deteccion de intrusiones en el host . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22913.7. Integridad de archivos: IDS Tripwire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23113.8. ACIDlab: Analizar alertas IDS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23513.9. Logcheck: Analizar logs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23913.10.PortSentry: Detectar escaneos de puertos . . . . . . . . . . . . . . . . . . . . . . . . . . . 24113.11.Detectores de sniffers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245

13.11.1.Neped . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24713.11.2.Sentinel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247

13.12.Chkrootkit: Detector de rootkits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24813.13.HoneyPots: Entretener a los atacantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250

13.13.1.¿Como funcionan? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25113.13.2.Ventajas y desventajas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25113.13.3.Utilidades de honeypots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25213.13.4.Tipos de honeypots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25313.13.5.Otras caracterısticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25413.13.6.Honeynets: alta interaccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25513.13.7.Honeyd: baja interaccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255

14.Redes inalambricas 25714.1. Estandar 802.11 (Wifi) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25714.2. Peligros de las LAN inalambricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25914.3. El fenomeno del “Wardriving” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26014.4. Seguridad en redes inalambricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262

14.4.1. Clave WEP (Wired Equivalente Privacy) . . . . . . . . . . . . . . . . . . . . . . . 26214.4.2. Clave WPA (Wifi Protected Access) . . . . . . . . . . . . . . . . . . . . . . . . . . 26214.4.3. Clave WPA2 (Estandar 802.11i) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26614.4.4. Medidas preventivas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266

14.5. Servidor Radius: FreeRadius . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26714.5.1. Configurar FreeRadius con EAP-TLS . . . . . . . . . . . . . . . . . . . . . . . . . 26714.5.2. Generar los certificados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26914.5.3. Comprobar el funcionamiento de FreeRadius . . . . . . . . . . . . . . . . . . . . . 27014.5.4. Configurar AP (Router 3Com) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27014.5.5. Clientes Linux: WPA-Supplicant . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27114.5.6. Clientes Windows: WindowsXP + SP2 . . . . . . . . . . . . . . . . . . . . . . . . . 272

14.6. Herramientas de seguridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27314.6.1. Descubrir redes ilegales e intrusos: Kismet Wireless . . . . . . . . . . . . . . . . . . 27314.6.2. Desencriptar claves inalambricas WEP: Airsnort . . . . . . . . . . . . . . . . . . . 275

15.Servicio de administracion por Web: WebMin 27915.1. Usuarios de Webmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27915.2. Secciones Webmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27915.3. Modulos de Webmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283

Jose Antonio Escartın Vigo, Junio 2005.

Page 13: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Indice general xv

16.Servicios de monitorizacion del sistema 28716.1. Monitor del sistema: Top . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28716.2. Rendimiento del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288

16.2.1. CPU, dispositivos y particiones de E/S: iostat . . . . . . . . . . . . . . . . . . . . . 28816.2.2. Memoria: free . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28916.2.3. Memoria virtual: vmstat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28916.2.4. Disco: df, du . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29016.2.5. Usuarios y sus procesos: w . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290

16.3. Gestionar procesos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29016.3.1. Visualizar procesos: ps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29116.3.2. Enviar signals a procesos: kill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29216.3.3. Modificar prioridades: nice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293

16.4. Terminal de root con prioridad maxima . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29316.5. Programacion de tareas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293

16.5.1. At . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29416.5.2. Cron . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29416.5.3. Tareas periodicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29616.5.4. Anacron . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296

IV Valoracion final 297

17.Pruebas del sistema 29917.1. Nessus: Escaner de vulnerabilidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299

17.1.1. Configurar el programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29917.1.2. Ejecucion de Nessus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30017.1.3. Otros interfaces de configuracion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302

17.2. Nmap: Escaner de red y puertos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30317.2.1. Caracterısticas basicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30317.2.2. Tipos de escaneado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30517.2.3. Opciones de descubrimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30517.2.4. Opciones de ajuste de frecuencia de Nmap . . . . . . . . . . . . . . . . . . . . . . . 30517.2.5. Otras opciones de Nmap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30617.2.6. Salida de Nmap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30717.2.7. Configuracion grafica de Nmap, interfaz Nmapfe . . . . . . . . . . . . . . . . . . . 307

17.3. Pruebas de carga . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308

18.Estudio Economico 30918.1. Recursos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30918.2. Costes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31018.3. Resumen economico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31018.4. Modificaciones a los costes economicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310

19.Conclusiones 311

V Apendices 315

A. Comandos basicos 317

B. Debian en castellano 319

C. Archivos de configuracion 321

D. ¿Por que Debian no tiene rc.local? 325

Jose Antonio Escartın Vigo, Junio 2005.

Page 14: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

xvi Servidor Linux para conexiones seguras de una LAN a Internet

E. Puertos por defecto 327

F. Manual del editor Vim (Vi mejorado) 329

G. Guıa rapida de IPTables 331

Debian Sarge, nueva version estable 333

Licencia CC - Reconocimiento-CompartirIgual 335

Paginas Web 339

Bibliografıa 343

Jose Antonio Escartın Vigo, Junio 2005.

Page 15: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Indice de figuras

1.1. Planificacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2.1. Planner, distribucion de recursos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.2. Planner, diagrama temporal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.3. Editor Kile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.4. Prosper, tipos de transparencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

7.1. IP, rango de direcciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617.2. IP, direcciones reservadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627.3. IP, cabecera del datagrama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647.4. UDP, cabecera del datagrama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 727.5. TCP, cabecera del datagrama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

9.1. DHCP, modulo Webmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 999.2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1009.3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1009.4. DNS BIND, modulo Webmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1049.5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1059.6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1069.7. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1069.8. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1079.9. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1079.10. NIS, modulo Webmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1109.11. NFS, modulo Webmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1209.12. Samba, interfaz grafica SWAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1239.13. Samba, modulo Webmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1309.14. ProFTPD, modulo Webmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

10.1. Quota, modulo Webmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13510.2. Cups, interfaz grafica de configuracion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13710.3. Cups, impresora HP815 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13910.4. Apache, modulo Webmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14210.5. Apache, parametros de configuracion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14410.6. Apache, modulo HtAccess Webmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14510.7. Webalizer, modulo Webmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14710.8. Apache, servidores virtuales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14810.9. Apache, comparticion de carpetas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14810.10.Apache, modulos instalados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15010.11.Exim, monitor con la interfaz Webmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15910.12.Fetchmail, modulo Webmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161

Page 16: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

xviii Servidor Linux para conexiones seguras de una LAN a Internet

10.13.Procmail, modulo Webmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16510.14.Procmail, crear acciones de forma grafica . . . . . . . . . . . . . . . . . . . . . . . . . . . 16510.15.SpamAssassin, modulo Webmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16810.16.SpamAssassin, opciones de configuracion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16910.17.Jabber, modulo Webmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17510.18.Kopete, cliente de mensajerıa instantanea . . . . . . . . . . . . . . . . . . . . . . . . . . . 17610.19.Gaim, cliente de mensajerıa instantanea . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176

11.1. SSHD, modulo Webmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180

12.1. Backups, modulo Webmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21112.2. K3B, grabacion de CDs y DVDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211

13.1. Snort, modulo Webmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22713.2. Acidlab, detalle de una alerta de Snort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23813.3. Logcheck, modulo Webmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24213.4. PortSentry, modulo Webmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246

14.1. Sımbolos urbanos de redes wifi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26114.2. WEP-WPA, comparativa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26314.3. WPA/EAP, funcionamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26314.4. WPA, autenticacion servidor Radius . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26414.5. Servidor Radius, sistema de autenticacion . . . . . . . . . . . . . . . . . . . . . . . . . . . 26814.6. Servidor Radius, desvıo en el router . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27014.7. AirSnort, descifrado de claves WEP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277

15.1. Webmin, pantalla de configuracion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28015.2. Webmin, pantallas de la interfaz Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28515.3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286

17.1. Nessus, configuracion de la aplicacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30117.2. Nessus, vulnerabilidades del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302

D.1. Runlevels, modulo Webmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326

G.1. Licencia Reconocimiento-CompartirIgual . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338

Jose Antonio Escartın Vigo, Junio 2005.

Page 17: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Indice de cuadros

1. Objetivos del proyecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii

2.1. Distribuciones Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

4.1. Lilo, archivo de configuracion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264.2. /etc/passwd, ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284.3. /etc/passwd, descripcion de campos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284.4. /etc/shadow, ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294.5. /etc/shadow, descripcion de campos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294.6. /etc/group, ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304.7. /etc/group, descripcion de campos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304.8. Tipos de archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314.9. Chmod, Opciones basicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324.10. Chmod, opciones especiales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324.11. Makefile, ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354.12. Dpkg, opciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364.13. /etc/apt/sources.list, ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364.14. Apt, opciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374.15. Variables habituales del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

5.1. Kernel, paquetes basicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475.2. Kernel 2.6, paquetes necesarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485.3. Metodo de compilacion del kernel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

6.1. /etc/X11/XF86Config-4, ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

7.1. Modelo de referencia OSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597.2. Tipos de redes, n.o de hosts por red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627.3. Notacion de barra inclinada en IPs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657.4. TCP/IP, ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767.5. TCP/IP, esquema de transmision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

8.1. Netstat, opciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

9.1. /var/yp/Makefile, ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

10.1. Apache, archivos de configuracion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143

11.1. SSH cliente, opciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178

12.1. Ping, opciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19212.2. Dig, opciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19512.3. IPTables, especificaciones de reglas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19912.4. IPTables, comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20012.5. IPTables, ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202

Page 18: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

xx Servidor Linux para conexiones seguras de una LAN a Internet

12.6. /etc/squid/squid.conf, ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20412.7. Mt, opciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20812.8. Dump, opciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20912.9. Restore, opciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210

13.1. Snort, opciones de alerta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22113.2. Snort, archivos de reglas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22413.3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22513.4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22613.5. Snort, opciones de personalizacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23013.6. Tripwire, mascaras de propiedad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23113.7. Tripwire, mascaras predefinidas en plantillas . . . . . . . . . . . . . . . . . . . . . . . . . . 23213.8. Acidlab, variables de configuracion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23613.9. PortSentry, opciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244

14.1. Estandares 802.11 inalambricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25814.2. Kismet, configuracion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27414.3. Kismet, configuracion de la interfaz grafica . . . . . . . . . . . . . . . . . . . . . . . . . . 27414.4. Kismet, teclas de la interfaz grafica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275

15.1. Webmin, modulos disponibles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284

16.1. Ps, opciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291

17.1. Nmap, tipos de escaneo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30517.2. Nmap, opciones de descubrimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30517.3. Nmap, configuraciones de frecuencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30617.4. Nmap, otras opciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30617.5. Nmap, codificacion de color de la salida . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307

18.1. Recursos del proyecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30918.2. Costes del proyecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310

Jose Antonio Escartın Vigo, Junio 2005.

Page 19: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Parte I

Tareas previas

Page 20: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)
Page 21: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 1

Planificacion

El numero de creditos asignados al proyecto es de 22,5 y decidı que cada credito me supondrıa unacarga de 20 horas, por lo tanto, la planificacion ha sido realizada para un total de 450 horas.

1.1. Fases del proyecto

Planificacion temporal: 20 horas. Mediante la herramienta de gestion de proyectos Planner, se realizauna division temporal de las actividades a realizar.

Trabajo preliminar: 40 horas. Se eligen una serie de herramientas y sistemas sobre los cuales sedesarrolla el proyecto.

Instalacion base y configuracion: 80 horas. Implementacion y configuracion del entorno de trabajo.

Configuracion de los servicios: 120 horas. Basandose en los servicios tıpicos que implementan losservidores de red, se instalan una serie de servicios estandar para clientes de sistemas operativosLinux y Windows.

Pruebas del sistema y conclusiones: 30 horas. Apoyandose en una serie de pruebas de carga se deter-mina la eficiencia real, de los servicios del servidor. Ası mismo se utilizan varias herramientas paradeterminar la seguridad del servidor y comprobar su resistencia a posibles intrusiones o agresionesexternas.

Aprendizaje del entorno LATEX: 20 horas. A traves de varios libros, que detallo en la bibliografıa, seaprende a utilizar el entorno de composicion de textos LATEX para elaborar la documentacion delproyecto.

Documentacion del proyecto: 140 horas. A lo largo del desarrollo de las fases anteriores se realizanuna serie de informes parciales que son la base de la memoria del proyecto.

1.2. Esquema temporal

Pese a la planificacion inicial, en los siguientes esquemas se detallan la cronologıa real que se siguio enla elaboracion del proyecto.

1PFC: Proyecto fin de carrera

Page 22: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

4 Servidor Linux para conexiones seguras de una LAN a Internet

Figura 1.1: Planificacion (I)

Jose Antonio Escartın Vigo, Junio 2005.

Page 23: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 1. Planificacion 5

Figura 1.2: Planificacion (II)

Jose Antonio Escartın Vigo, Junio 2005.

Page 24: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

6 Servidor Linux para conexiones seguras de una LAN a Internet

Figura 1.3: Planificacion (III)

Jose Antonio Escartın Vigo, Junio 2005.

Page 25: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 1. Planificacion 7

Figura 1.4: Planificacion (IV)

Jose Antonio Escartın Vigo, Junio 2005.

Page 26: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)
Page 27: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 2

Seleccion de Herramientas

En este capitulo explicare cuales fueron las diferentes herramientas utilizadas para la elaboracion delproyecto.

En una primera fase se determina el hardware donde se implementa el servidor y los diferentesclientes utilizados en las pruebas

En la segunda fase se elige la distribucion utilizada y los motivos que me llevaron a su eleccion

En la tercera fase se detalla que herramientas de apoyo se uso para desarrollar los trabajos.

2.1. Seleccion de Hardware

Pese a que el director del proyecto me ofrecio la utilizacion de material del departamento LSI de laUPC, por mi comodidad, el material escogido fue de mi propiedad. Comprando una parte de el paradesarrollar de forma mas eficiente las tareas.

2.1.1. Servidor

Como servidor me decidı por la compra de un ordenador portatil, que permitiera desarrollar un servidorportable con mas utilidades habituales en los servidores fijos, ademas de la ventaja de poder portar elproyecto y trabajar en sitios diferentes. Con este sistema se permite a un grupo corporativo itinerante eldesarrollo de sus actividades en posibles reuniones fuera de su propio edificio. La conexion y seguridad delsistema queda garantizada gracias al sistema de validacion de clientes.

El portatil elegido fue un Acer TravelMate 4002 WLMI con procesador Intel Centrino a 1,6 Ghz.con dos tarjetas de red integradas, una ethernet 10/100Mb y otra wifi 802.11g de 54Mb que permite sinproblemas establecer dos segmentos diferenciados de red. Uno para los usuarios de oficina, es decir losusuarios fijos, y otro para los clientes wifi, dotando al sistema de mayor seguridad.

Se presentaron una serie de problemas directamente derivados de esta eleccion. El hardware era dema-siado nuevo y esto provoco una serie de incompatibilidades que se fueron solucionando con la instalacionde drivers y parches que no se encontraban en las instalaciones Linux estandar.

El servidor realiza tambien la gestion de la conexion a internet. Esta conexion es suministrada, cuandose encuentra fijo, por un router 3com conectado al switch de la red y que solo responde a las peticionesdel servidor.

2.1.2. Clientes

Como clientes se utilizaran varios PC’s de sobremesa, conectados mediante cable RJ45 a un switch.

PC AMD-Duron a 1,3 Ghz., tambien de mi propiedad, donde estara situado el principal clienteLinux y Windows del sistema. En este ordenador se realizaron la mayoria de pruebas de conexion aservicios.

Page 28: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

10 Servidor Linux para conexiones seguras de una LAN a Internet

PC AMD-Athlon a 1,2 Ghz. y PC AMD-Athlon a 2,4 Ghz. con clientes Windows, prestados.

Portatil Pentium-IV Mobile, con sistema Linux y Windows, para la pruebas de conexion de clientesinalambricos.

Los clientes se utilizaron simultaneamente para realizar las pruebas de carga una vez terminada laimplementacion del servidor, para comprobar la efectividad del mismo.

2.2. Seleccion de la distribucion

Completada la infraestructura hardware, comence a leer sobre distribuciones de GNU/Linux, buscandocuales eran las mas adecuadas para desplegar servidores.

A continuacion detallo los tipos de distribuciones valoradas:

Mepis y Ubuntu (basadas en Debian) son consideradas las mejores para aquellos usuarios nuevosen Linux que quieren empezar a ser productivos lo antes posible, sin tener que aprender todas suscomplejidades, son distribuciones orientadas a usuario de escritorio.

En el lado opuesto tenemos a Gentoo, Debian y Slackware que son distribuciones mas avanzadasque requieren un completo aprendizaje antes de poder ser usadas eficientemente.

A medio camino entre ellas se encuentran Mandrake, Fedora (basada en Red Hat) y SuSE, estas dosultimas son distribuciones comerciales.

Knoppix y Mepis-LiveCD (basadas en Debian) son un caso a parte, permiten probar Linux sin tenerque hacer nada, ya que funciona directamente del CD, sin ninguna instalacion.

2.2.1. Distribuciones Linux

Cuadro 2.1: Distribuciones analizadas

SimplyMepis 3.3 - Mepis-LiveCDUbuntu (Warty Warthog 4.10)Gentoo 2004.3 (FreeBSD)Debian Woody 3.r04 - Sarge 3.1)Debian Sarge 3.1)Slackware 10.1Mandrake 10.1Fedora Core 3 (Red Hat)SuSEKnoppix 3.7

Mepis y Mepis-LiveCD

Fue lanzada por Warren Woodford en julio de 2003. Mepis Linux es una fusion entre Debian Sidy Knoppix, una nueva clase de distribucion de Linux que se pueda utilizar como CD en vivo, y comodistribucion completa con un instalador grafico a disco duro. De esta manera, usuarios pueden probar elproducto simplemente “booteando” desde el CD de Mepis, e instalandolo luego a disco duro solamentesi les gusta. Muchas otras distribuciones copiaron esta idea mas adelante, pero fue Mepis quien inicio elconcepto de un CD vivo mas un instalador grafico completo partiendo de un CD.

¿A que se debe el exito de Mepis? A diferencia de la mayorıa de las distribuciones principales de Linux,Mepis viene con muchos paquetes que no son de uso-libre, pero altamente utiles, preconfigurados todos y

Jose Antonio Escartın Vigo, Junio 2005.

Page 29: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 2. Seleccion de Herramientas 11

listos para utilizar. Estos incluyen el driver de video Nvidia, el plugin Flash de Macromedia, Java, varioscodecs de multimedia para manejar archivos populares de audio y video y otros usos. Con Mepis Linux, nohay necesidad de buscar el software para Java y despues tener que buscar la documentacion para descubrircomo permitir el uso de Java en sus navegadores. Todo esta disponible despues de la instalacion.

Esta idea simple resulto ser enormemente popular, no solamente entre los usuarios nuevos de Linux,sino tambien entre los mas experimentados quienes encontraron muy conveniente el no tener que pasarhoras post-instalacion configurando y afinando el sistema. Aparte de las aplicaciones estandard de Debiany del software no-libre antes citado Mepis Linux tiene excelente auto-deteccion del hardware.

Ubuntu (Warty Warthog)

Ubuntu esta basada en Debian, pero el planteamiento esta inspirado en los principios de la corrienteubuntu, un movimiento humanista encabezado por el obispo Desmond Tutu, premio Nobel de la Paz en1984. Economicamente el proyecto se sostiene con aportaciones de la empresa Canonical del millonariosudafricano Mark Shuttleworth.

El proyecto nacio por iniciativa de algunos programadores de los proyectos Debian, Gnome y Archque se encontraban decepcionados con la manera de operar del proyecto Debian. La version estable erautilizada solo por una minorıa debido a la poca o nula vigencia que poseıa en terminos de la tecnologıaLinux actual.

Tras varios meses de trabajo y un breve perıodo de pruebas, la primera version de Ubuntu (WartyWarthog) fue lanzada en el mes de octubre de 2004.

Los desarrolladores se esfuerzan en ofrecer una propuesta que corrija la problematica que advirtieronen Debian. Las versiones estables se liberan al menos dos veces al ano y se mantienen actualizadas.

Contribuye al proyecto Debian de manera continua debido a que ambas distribuciones compartencolaboradores de manera oficial. El administrador de escritorio oficial es Gnome y el navegador oficial esMozilla Firefox. El sistema incluye funciones avanzadas de seguridad y entre sus polıticas se encuentra elno activar procesos latentes por omision al momento de instalarse.

Gentoo (FreeBSD)

Gentoo Linux fue creada por Daniel Robbins, un conocido desarrollador de Stampede Linux y FreeBSD.La primera version estable de Gentoo fu anunciada en Marzo del 2002.

Gentoo Linux es una distribucion basada en codigo fuente. Mientras que los sistemas de instalacionproveen de varios niveles de paquetes pre-compilados, para obtener un sistema Linux basico funcionando,el objetivo de Gentoo es compilar todos los paquetes de codigo en la maquina del usuario. La principalventaja de esto es que todo el software se encuentra altamente optimizado para la arquitectura de lacomputadora.

Tambien, actualizar el software instalado a una nueva version es tan facil como teclear un comando,y los paquetes, mantenidos en un repositorio central, son actualizados a menudo. En la otra cara de lamoneda, instalar Gentoo y convertirla en una distribucion completa, con los ultimos entornos graficos,multimedia y de desarrollo es un trabajo largo y tedioso, puede durar varios dıas incluso en una maquinarapida.

Debian (Woody - Sarge)

Debian GNU/Linux inicio su andadura de la mano de Ian Murdock en 1993. Debian es un proyectototalmente no-comercial; posiblemente el mas puro de los ideales que iniciaron el movimiento del softwarelibre. Cientos de desarrolladores voluntarios de todo el mundo contribuyen al proyecto, que es bien dirigidoy estricto, asegurando la calidad de la distribucion. En cualquier momento del proceso de desarrollo existentres ramas en el directorio principal: “estable”, en “pruebas” e “inestable” (tambien conocida como “sid”,nombre que no varıa). Actualmente la rama “estable” es Woody y la rama en “pruebas” es Sarge.

Cuando aparece una nueva version de un paquete, se situa en la rama inestable para las primeraspruebas, si las pasa, el paquete se mueve a la rama de pruebas, donde se realiza un riguroso proceso quedura muchos meses. Esta rama solo es declarada estable tras una muy intensa fase de pruebas.

Jose Antonio Escartın Vigo, Junio 2005.

Page 30: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

12 Servidor Linux para conexiones seguras de una LAN a Internet

Como resultado de esto, la distribucion es posiblemente la mas estable y confiable, aunque no lamas actualizada. Mientras que la rama estable es perfecta para servidores con funciones crıticas, muchosusuarios prefieren usar las ramas de pruebas o inestable, mas actualizadas, en sus ordenadores personales.Debian es tambien famosa por su reputacion de ser difıcil de instalar, a menos que el usuario tengaun profundo conocimiento del hardware de la computadora. Compensando este fallo esta “apt-get” elinstalador de paquetes Debian. Muchos usuarios de Debian hacen bromas sobre que su instalador es tanmalo por que solo lo han de usar una vez, tan pronto como Debian esta en funcionamiento, todas lasactualizaciones, de cualquier tipo pueden realizarse mediante la herramienta apt-get.

Slackware

Creada por Patrick Volkerding en 1992, Slackware Linux es la distribucion mas antigua que sobrevivehoy en dıa. No ofrece extras vistosos, y se mantiene con un instalador basado en texto, y sin herramientasde configuracion grafica.

Mientras otras distribuciones intentan desarrollar intarfaces faciles de usar para muchas utilidadescomunes, Slackware no ofrece nada amistoso, y toda la configuracion se realiza mediante los archivos deconfiguracion. Es por esto que Slackware solo se recomienda a aquellos usuarios nuevos que deseen perderel tiempo aprendiendo acerca de Linux.A pesar de todo, Slackware tiene una especie de aura magica paramuchos usuarios.

Es extremadamente estable y segura, muy recomendada para servidores. Los administradores conexperiencia en Linux encuentran que es una distribucion con pocos fallos, ya que usa la mayorıa de paquetesen su forma original, sin demasiadas modificaciones propias de la distribucion, que son un riesgo potencialde anadir nuevos fallos. Es raro que se produzcan lanzamientos de nuevas versiones (aproximadamente unaal ano), aunque siempre se pueden encontrar paquetes actualizados para descargar despues del lanzamientooficial. Slackware es una buena distribucion para aquellos interesados en profundizar en el conocimientode las entranas de Linux.

Posiblemente, la mejor caracterıstica de esta distribucion es que si necesitas ayuda con tu sistemalinux, encuentra un usuario de Slackware. Es mas probable que resuelva el problema que otro usuariofamiliarizado con cualquier otra distribucion.

Mandrake

Creada por Gal Duval, Mandrake Linux es una distribucion que ha experimentado un enorme aumentode popularidad desde su primera version de julio de 1998. Los desarrolladores partieron de la distribucionde Red Hat, cambiaron el entorno de escritorio predeterminado por KDE, y anadieron un instalador facilde usar rompiendo el mito de que linux es difıcil de instalar. Las herramientas de deteccion de hardwarede Mandrake y sus programas para el particionamiento de discos son consideradas por muchos como lasmejores de la industria, y muchos usuarios se encontraron usando Mandrake allı donde otras distribucionesno habıan conseguido entregar la usabilidad necesaria.Desde entonces Mandrake Linux ha madurado yse ha convertido en una distribucion popular entre los nuevos usuarios de linux y aquellos hogares quebuscan un sistema operativo alternativo.

El desarrollo de Mandrake es completamente abierto y transparente, con paquetes nuevos que se anadenal directorio llamado ”cooker“ a diario. Cuando una nueva version entra en fase beta, la primera beta secrea a partir de los paquetes que se encuentran en ”cooker“ en ese momento. El proceso de pruebas dela beta solıa ser corto e intensivo, pero desde la versin 9.0 ha pasado ha ser mas largo y exigente. Laslistas de correo sobre la version beta suelen estar saturadas, pero sigue siendo posible recibir una respuestarapida sobre cualquier fallo o duda que envıes. Como resultado de este tipo de desarrollo se obtiene unadistribucion puntera y altamente actualizada. Como contrapartida, los usuarios pueden encontrarse conmas fallos que en otras distribuciones.

Mucha gente encuentra este ’pero’ razonable para sus equipos, ellos obtienen las ultimas versiones desoftware y los cuelgues ocasionales de las aplicaciones es algo con lo que pueden vivir. Tan pronto comoel desarrollo se completa el software se pone a la libre disposicion de la gente desde replicas en todo elmundo.

Jose Antonio Escartın Vigo, Junio 2005.

Page 31: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 2. Seleccion de Herramientas 13

Fedora (Red Hat)

Para muchos el nombre de Red Hat equivale a Linux, ya que probablemente se trata de la companıade linux mas popular del mundo. Fundada en 1995 por Bob Young y Marc Ewing, Red Hat Inc. Solo hamostrado beneficios recientemente gracias a otros servicios en lugar de a la distribucion en si. Aun ası,Red Hat es la primera eleccion para muchos profesionales y parece que seguira siendo un peso pesadodurante mucho tiempo.

Afortunadamente se resistieron a realizar ningun plan de rapida expansion durante el boom de laspunto-com durante los anos 1998-1999, concentrandose en su negocio principal. Este tipo de gestionprudente si sigue ası, es propensa a garantizar estabilidad y dependencia..

¿Que hace a Red Hat Linux tan especial? Su curiosa mezcla de conservadurismo y paquetes punterosmezclados con muchas aplicaciones desarrolladas en casa. Los paquetes no son los mas actuales, una vez seanuncia una nueva version beta, las versiones de los paquetes se mantienen, excepto para actualizacionesde seguridad. Como resultado se obtiene una distribucion bien probada y estable. El programa de betasy las facilidades para enviar fallos estan abiertas al publico y hay un gran espıritu en las listas de correopublicas.

Red Hat Linux se ha convertido en la distribucion linux dominante en servidores en todo el mundo.Otra de las razones del exito de Red Hat es la gran variedad de servicios populares que ofrece la com-

panıa. Los paquetes de software son facilmente actualizables usando la Red Hat Network, un repositoriooficial de software e informacion. Una larga lista de servicios de soporte son accesibles en la companıay, aunque no siempre baratos, tienes virtualmente asegurado un excelente soporte de personal altamentecualificado. La companıa ha desarrollado incluso un programa de certificacion para popularizar su distribu-cion, el RHCE (Certificado de Ingenierıa de Red Hat), academias y centros examinadores estan disponiblesen el casi todas las partes del mundo.

Todos estos factores han contribuido a que Red Hat sea una marca reconocida en el mundo de laindustria de las TI.

SuSE

SuSE es otra companıa orientada a los escritorios, aunque tiene variedad de otros productos paraempresas. La distribucion ha recibido buenas crıticas por su instalador y la herramienta de configuracionYaST, desarrollada por los desarrolladores de la propia SuSE. La documentacion que viene con las versionescomerciales, ha sido repetidas veces evaluada como la mas completa, util y usable con diferencia a la desus competidores. SuSE Linux 7.3 recibio el premio ”Producto del ano 2001”que entrega el Linux Journal.La distribucion tiene un gran porcentaje de mercado en Europa y America del norte, pero no se vende enAsia y otras partes del mundo.

El desarrollo de SuSE se realiza completamente a puerta cerrada, y no se lanzan betas publicas paraprobar. Siguen la polıtica de no permitir descargar el software hasta tiempo despues de que salgan a laventa las versiones comerciales. A pesar de todo, SuSE no entrega imagenes ISO de facil instalacion de sudistribucion, usando el software empaquetado para la gran mayorıa de su base de usuarios.

Actualmente van por la version 9.3 y no la instale porque la unica forma de conseguirla era pagandoy uno puntos claves era que todo el software fuera libre y gratuito. SuSE no cumplıa esos requisitos.

Knoppix

Knoppix es una distribucion CD vivo de Linux basada en Debian y que utiliza como gestor de escritorioKDE. Esta desarrollada por el consultor de GNU/Linux Klaus Knopper. Gnoppix es una variante peroincluye como entorno grafico Gnome en vez de KDE.

A diferencia de la mayorıa de las distribuciones Linux, no requiere una instalacion en el disco duro;el sistema puede iniciarse desde un simple CD de 700 MB. Ademas, Knoppix reconoce automaticamentela mayorıa del hardware del ordenador cuando se inicia. Tambien puede ser instalado en el disco duroutilizando un script de instalacion. Y otra posibilidad de hacerlo mas persistente es guardar el directoriohome en una unidad removible, como un dispositivo de almacenamiento USB.

Se puede usar de distintas formas como:

Jose Antonio Escartın Vigo, Junio 2005.

Page 32: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

14 Servidor Linux para conexiones seguras de una LAN a Internet

Para ensenar y demostrar de manera sencilla el sistema GNU/Linux, especialmente como sistemaoperativo.

Probar rapidamente la compatibilidad de hardware bajo Linux antes de comprarlo o utilizarlo,especialmente para tarjetas de vıdeo.

Utilizar las herramientas incluidas para restaurar un sistema corrupto o sus datos perdidos.

Existen versiones ıntegramente en espanol y catalan.

2.2.2. Pruebas

Los CD’s vivos arrancaron bien, sobre todo MEPIS con el que me lleve una grata sorpresa, muy simpley funciona casi todo.

La distribucion Ubuntu estaba claramente orientada a usuario final y no servidor que era mi objetivo,de todas formas es una buena distribucion que permite estar siempre actualizado.

Gentoo no la llege a probar debido a las dificultades de instalacion que representa la continua compi-lacion de paquetes, paso esencial en esta distribucion. Es muy complicado dejarla a punto.

Debian y Slackware eran las distribuciones que mas se ajustaron a los propositos del proyecto; sobretodo Debian que cuenta con un gran grupo de soporte y recursos. Pese a ser las menos actualizadas,eso no presenta ninguna dificultad para poder actuar como un servidor, mas bien al contrario, son lasdistribuciones mas estables de todas las evaluadas.

Mandrake no presentaba el entorno adecuado y Fedora y SuSE, al ser versiones comerciales, no cubrıanlos requisitos prefijados.

2.2.3. Distribucion elegida

Pese a la dificultad de instalacion y configuracion me decante por Sarge del proyecto Debian, debidoa su caracter al 100 % libre y la gran cantidad de aplicaciones que adjunta. Otro factor decisivo fue elsoporte que tiene dicha distribucion, mantenida por multitud de desarrolladores.

Pese a ser una version en “pruebas”, se encuentra en la ultima fase. La rama de desarrollo Sarge, llevaabierta desde el 2002 y la liberacion de la version “estable” se plantea inminente.

2.3. Seleccion del Software

Las herramientas escogidas no lo han sido al azar, son consecuencia directa de la filosofıa del proyecto,donde el uso exclusivo de software libre y gratuito era un objetivo prioritario.

Paso a detallar el software que utilizo:

2.3.1. Planner

Programa de gestion de proyectos que permite crear planes para el proyecto y seguir su progreso,pudiendo colocar sellos temporales

Lista de caracterısticas

Calendario

Costes de proyecto

Gestion de tareas

Jose Antonio Escartın Vigo, Junio 2005.

Page 33: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 2. Seleccion de Herramientas 15

Gestion de recursos

Figura 2.1: Distribucion de recursos

Diagramas de ghant

Figura 2.2: Diagrama temporal de Ghant

2.3.2. LATEX

Como se menciona en [CSLSMR+03] LATEX es un conjunto de sentencias escritas en un lenguajede programacion llamado TEX. Este no es un lenguaje de programacion usual, sino uno orientado a laescritura de textos de excelente calidad. TEX no es un editor de la familia WYSIWYG, termino empleadopara denominar a los editores que solo trabajan sobre la pantalla del computador, dando un formatovisual al texto, y en los cuales “lo que ves es lo que tienes”. Muy al contrario, en TEX se escribe el textoacompanado de ordenes que el compilador, posteriormente, interpreta y ejecuta para proporcionar untexto perfectamente compuesto.

A estas ventajas hay que anadir otra, es gratuito; Donald E. Knuth el creador de TEX, lo libero enOctubre de 1.990.

El entorno LATEX desarrollado por Leslie Lamport, lo creo en 1982, con la intencion de simplificar latarea a aquellos que desean utilizar TEX. Anade a TEX una coleccion de comandos que simplifican elmecanografiado, permitiendo al usuario concentrarse en la estructura del texto, en vez de en los comandospara dar formato. Tal es la calidad de LATEX que muchas editoriales permiten a sus autores escribir librosen LATEX, dandoles un archivo base y unas directrices sobre la elaboracion de los textos.

Una de las ventajas de LaTeX es que puede ser exportado muy facilmente a Portable Document Format(PDF) y PostScrip.

Utilizare este entorno de composicion de textos para desarrollar la documentacion derivada del pro-yecto.

Jose Antonio Escartın Vigo, Junio 2005.

Page 34: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

16 Servidor Linux para conexiones seguras de una LAN a Internet

2.3.3. Kile

Kile es un editor de textos para LATEX desarrollado por P. Brachet. Tiene una completa interfaz condiversas facilidades que ofrece a un usuario novel un entorno amigable.

Figura 2.3: Imagen del editor Kile

Sus principales caracterısticas son las siguientes:

Los comandos de LATEX estan disponibles a traves de menus, botones y combinaciones de teclas.

La ayuda integrada en el programa nos permitira saber que macro usar ante una necesidad concreta.

Para una edicion comoda de los ficheros de texto, contamos con resaltado de sintaxis, funciones debusqueda (incremental o no), reemplazo, deshacer, . . .

Los mas de 370 sımbolos matematicos posibles son accesibles mediante botones y menus.

Corrector ortografico a traves de ispell

Asistentes para la creacion de distintos tipos de documentos LATEX(cartas, artıculos, etc).

Manejo de bibliografıas a traves de BibTEX.

Navegacion mediante menus de la estructura de un documento o proyecto.

Facilidades para compilar y depurar ficheros LATEX.

Integracion con herramientas externas para la visualizacion e impresion de los documentos editadosen distintos formatos: DVI, Postscript o PDF.

Interfaz con programas de dibujo como xfig o gnuplot.

2.3.4. Prosper

La herramienta Prosper, desarrollada por F. Goualard y P.M.Neergaard es una clase para LATEX quepermite crear presentaciones electronicas con una excelente calidad.

Con ella se pueden producir documentos en formato PDF para realizar exposiciones con un monitor ocon un sistema de proyeccion de vıdeo. Tambien se puede producir documentos PostScript para imprimirla presentacion sobre transparencias para exposiciones con retroproyector.

Dispone de multitud de estilos de presentacion y la posibilidad de conseguir efectos de animacion enpantalla haciendo que el contenido de la misma aparezca o desaparezca en distintas etapas (de formaincremental).

Jose Antonio Escartın Vigo, Junio 2005.

Page 35: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 2. Seleccion de Herramientas 17

Figura 2.4: Varios estilos de transparencias

2.3.5. Programas graficos

Las imagenes y videos que he utilizado en la documentacion y en las transparencias se han generadocon los siguientes programas:

KSnapshot: Para capturar pantallas, es mucho mejor que la tıpica tecla Impr-pant gracias a susmultiples opciones, entre las que se encuentran un temporizador y poder elegir que parte de lapantalla se va a capturar; pudiendo seleccionar entre toda la pantalla, la ventana activa o una regionconcreta. En resumen, una herramienta muy util para la redaccion de tutoriales.

The Gimp: Es el programa estrella de GNU para la creacion y el retoque fotografico de imagenes,comparable al famoso programa comercial Adobe Photoshop.

Xvidcap y Mencoder: Permite capturar una secuencia de imagenes de una parte de la pantalla, ya seauna ventana o una region. De esta manera, obtendremos una coleccion de imagenes del area capturadaseparadas temporalmente un numero de fps1 que se puede especificar. El programa Mencoder formaparte de Mplayer, que es un conjunto de aplicaciones para la grabacion y reproduccion de vıdeos,dvd’s y otros. Una vez obtenida la coleccion de imagenes que conformaran los frames del vıdeo seutilizara el programa Mencoder para componerlo.

1fps: frames por segundo

Jose Antonio Escartın Vigo, Junio 2005.

Page 36: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)
Page 37: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Parte II

Instalacion base

Page 38: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)
Page 39: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 3

Instalacion de la distribucion

Existen varias formas de realizar la instalacion de la distribucion:

Desde CD-ROM: con las imagenes oficiales

Desde disquetes: carga un nucleo y permite hacer una instalacion base por internet si la tarjeta dered es soportada.

Desde dispositivo USB: crea un mini sistema base

Desde el disco duro: a partir de unos ficheros locales.

Desde red: Se realiza a traves de TFTP desde una maquina a la que se tiene acceso, si la tarjeta dered es soporta.

La manera mas sencilla, con mucho, de instalar Debian GNU/Linux, es usar un juego oficial de CDs oDVDs de Debian, las imagenes pueden ser descargadas desde el servidor Debian (www.debian.org/distrib/ )o desde una replica del mismo.

Si el sistema no permite arrancar desde el CD, se puede utilizar una estrategia alternativa (disquete odisco duro) para hacer el arranque inicial del instalador del sistema, los ficheros para arrancar medianteotros medios tambien se encuentran en el CD. Una vez arranque el instalador, se pueden obtener el restode ficheros desde el CD.

Se puede obtener mas informacion respecto a la instalacion de Debian en [PRG+02] y [eidD04].

3.1. Proyecto Debian

El proyecto Debian GNU/Linux posee tres ramas: “stable”, “testing” y “unstable”. En los siguientesapartados se detallan las diferencias entre ellas.

3.1.1. Unstable

Se llama “Sid” y como su nombre indica es la distribucion mas inestable porque contiene paquetesmuy nuevos. La utilizan los desarrolladores de Debian para depuracion. Debian Sid contiene software muyreciente y puede traer problemas de estabilidad graves.

3.1.2. Testing

Actualmente se llama “Sarge”, posee el software que ya paso un tiempo de prueba en inestable peroque aun debe pasar una fase de pruebas para consideralo estable, es la utilizada por aquellos que deseandisfrutar de las nuevas caracterısticas de Debian y de las versiones de software mas reciente sin esperara la liberacion oficial de una nueva version. Es el equivalente a la distribucion mas actual de las demasdistribuciones (Mandrake, Fedora, Slackware, etc).

Page 40: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

22 Servidor Linux para conexiones seguras de una LAN a Internet

3.1.3. Stable

Actualmente es la version 3.0, tambien llamada “Woody” y como su nombre indica es la mas estable delas distribuciones Debian, ya que su software contenido ya supero varios meses de pruebas y correcciones.

En sistemas de produccion, donde no se toleran problemas de estabilidad, se recomienda el uso deDebian Woody.

3.1.4. Recomendaciones

En entornos de prueba y/o desarrollo se recomienda utilizar Debian Woody o Sarge.Para PCs de escritorio se recomienda utilizar Debian Sarge, ya que contiene versiones de software

bastante recientes y ya probadas un tiempo en la rama inestable.

He elegido Sarge, ya que esta rama de desarrollo lleva abierta desde el 2002 y la liberacion de la versionestable se plantea inminente.

3.2. Debian Sarge

Este metodo de instalacion se utilizo en el cliente de pruebas. En el servidor se instalo Debian Woodyy se realizo una actualizacion debido a incompatibilidades de Hw.

Metodo de instalacion

Mediante el siguiente esquema detallo el sistema de instalacion.

1. Configurar la BIOS para arrancar desde el DVD

2. Iniciar el instalador boteando desde el DVD

3. Arrancar el instalador con los metodos y parametros mas adecuados al Hw disponible. PresionandoEnter se arranca con los parametros por defecto que incluyen el kernel 2.6 de GNU/Linux.

4. Elegir idioma

5. Seleccionar paıs

6. Confirmar mapa de teclado

7. Detectar Hw y cargar componentes.

8. Configurar la red

9. Particionar discos. Se puede escoger un particionado automatico o si se elige manual, al menos sehan de crear 2 particiones, una raız y otra de intercambio

10. Formar particiones y realizar la instalacion base

11. Instalar el nucleo

12. Instalar el gestor de arranque, se instala Grub como predeterminado. Si se disponen de varios sistemasoperativos se puede especificar un arranque multiple

13. Retirar el DVD y reiniciar para continuar la instalacion

14. Arrancar y configurar el sistema base

15. Configurar zona horaria

Jose Antonio Escartın Vigo, Junio 2005.

Page 41: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 3. Instalacion de la distribucion 23

16. Configurar usuarios (root y usuarios corrientes)

17. Configurar APT

18. Instalar y configurar paquetes adicionales

19. Configurar correo

Si durante la instalacion se producen errores o cuelgues se pueden especificar opciones restrictivas aliniciar el instalador. En mi caso, no conseguı que ninguna opcion instalara el sistema en el servidor.

3.3. Debian Woody

En la instalacion se incluyen varias imagenes de nucleos disponibles, la mayorıa basados en el kernel 2.2.20:

Vanilla: La imagen estandar de Debian Woody, instala el kernel 2.2.20. Incluye casi todos loscontroladores soportados por Linux, compilados como modulos.

Compact: Igual que Vanilla, pero eliminando controladores de dispositivo que se usan con menosfrecuencia.

Idepci: Un nucleo que solo soporta dispositivos IDE y PCI (y unos pocos ISA). Se debe usar estenucleo si los controladores SCSI producen cuelgues al arrancar, debido a conflictos de hardware o aun compotamiento inadecuado de los controladores o placas de su sistema.

Bf2.4: Usa el kernel 2.4 y da soporte a hardware nuevo ausente en las otras imagenes. Soporta mashardware USB, controladoras IDE modernas, y los sistemas de ficheros Ext3 y Reiser.

Esta fue una de las partes mas desesperantes del proyecto, debido a incompatibilidades de Hw, tuveque instalar un version diferente de la planificada y al arrancar Debian Woody con cualquiera de loskernels disponibles, no cargaba el driver adecuado para la pantalla TFT. Esto supuso tener que utilizarotra pantalla diferente, conectada a la salida VGA del portatil, para realizar toda la instalacion, hastapoder actualizar el kernel a una version 2.6.

El arranque que utilice fue Bf2.4, para que fuera soportado un mayor numero de dispositivos desde elinicio, aunque el problema de la pantalla persistıa.

Este es un pequeno resumen de los pasos a seguir en la instalacion de Debian Woody:

1. Configurar la bios para arrancar desde CD

2. Arrancar el sistema de instalacion, boteando desde el CD

3. Seleccionar la imagen de nucleo deseada

4. Configurar teclado

5. Crear y montar particiones para Debian en el disco duro, con un mınimo de dos, una para el sistemabase y otra de intercambio

6. Seleccionar que controladores de perifericos cargar

7. Configurar la interfaz de red

8. Iniciar la instalacion y configuracion automatica del sistema base.

9. Configurar el gestor de arranque, en este caso Lilo. Si se dispone de varios sistemas operativos sepuede espedificar arranques multiples

10. Arrancar el sistema recien instalado y hacer las configuraciones finales

11. Instalar tareas y paquetes adicionales, a la eleccion de cada usuario.

Una vez terminada la instalacion estandar, es necesario instalar un kernel mas avanzado (2.6 o superior)que nos detecte todos los dispositivos de los que dispone nuestro sistema, y si todavıa no los soporta,parchearlo con los drivers del fabricante.

Jose Antonio Escartın Vigo, Junio 2005.

Page 42: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

24 Servidor Linux para conexiones seguras de una LAN a Internet

3.4. Actualizacion de Woody a Sarge

Esto se realiza mediante la herramienta APT y se puede enfocar de dos formas.

Si disponemos de los DVD’s o CD’s de Debian Sarge, anadiendolos al archivo de fuentes de APT(#apt-cdrom add).

Si disponemos de internet, anadiendo la direccion de una replica de los archivos de Debian Sarge alarchivo de fuentes de APT. La forma de hacerlo se detalla en el siguiente capıtulo.

Una vez tenemos agregadas las fuentes de la nueva distribucion en el APT, solamente tenemos queintroducir los siguientes comandos:

#apt-get update#apt-get upgrade#apt-get dist-upgrade

Jose Antonio Escartın Vigo, Junio 2005.

Page 43: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 4

Primeros pasos

En los apartados que se presentan a continuacion establecen varias cosas que hay que tener en cuentapara administrar un servidor Linux.

4.1. Particionar el disco

En Linux cada particion se monta en tiempo de arranque. El proceso de montaje hace disponible elcontenido de esa particion dentro del sistema. El directorio raız (/) sera la primera particion.

Las particiones, cuando se montan, aparecen como un arbol de directorios unificado en vez de unidadesseparadas, el software de instalacion no diferencia una particion de otra. Solo hay que preocuparse de enque directorio esta cada archivo. Como consecuencia de ello, el proceso de instalacion distribuye automati-camente sus archivos por todas las particiones montadas, ası que las particiones montadas representandiferentes partes del arbol de directorios donde se situan normalmente los archivos.

Debido a que estamos configurando un servidor, debemos conocer que directorios es necesario tener enparticiones separadas:

/usr, donde se situan todos los archivos de programa.

/home, donde estan los directorios de todos los usuarios. Esto es util por si los usuarios consumenel disco entero y dejan a otras aplicaciones crıticas sin espacio (tales como los archivos log).

/var, el destino final de los archivos log. Debido a que estos pueden verse afectados por usuariosexteriores (por ejemplo personas que visiten una pagina web), es importante situarlos en otra par-ticion para que nadie pueda realizar un ataque de Denegacion de servicio (DoS) generando tantasentradas que se llene todo el disco.

/tmp, donde se situan los archivos temporales. Debido a que este directorio esta disenado para quetodos los usuarios puedan escribir en el, necesitaremos asegurarnos de que ningun usuario abuse yllene el disco completo. Podemos conseguir esto situandolo en una particion separada.

swap. Este es un sistema de archivos no accesible para el usuario. Es donde se almacena el archivode memoria virtual, tenerlo en otra particion mejora el rendimiento del sistema.

Se puede observar por que es una buena idea crear varias particiones en un disco en lugar de una solaparticion grande al estilo de Microsoft. Esto da una idea de por que un sistema trabaja mejor que el otro.

Page 44: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

26 Servidor Linux para conexiones seguras de una LAN a Internet

4.2. Gestores de arranque

El gestor de arranque indica al ordenador que sistema operativo o kernel se iniciara y donde se en-cuentran los archivos necesarios para ejecutarlo.

Dependiendo del tipo de distribucion escogida se instalara por defecto uno de estos dos gestores dearranque Lilo o Grub. Durante ese proceso se anadiran automaticamente los diferentes sistemas operativosque tengamos instalados en el sistema. Posteriormente los parametros pueden ser configurados desdeconsola o mediante la herramienta de administracion grafica Webmin.

En el servidor he mantenido Lilo, era un gestor que ya conocıa y con el que me sentıa comodo. Pasoa detallar los dos gestores segun se explican en [BB00].

Lilo

Si hemos optado por utilizar Lilo, al terminar el proceso de instalacion de Linux dispondremos deun archivo de configuracion denominado /etc/lilo.conf el cual podremos editar en cualquier momentopara ajustar el menu o comportamiento de Lilo a nuestras necesidades.

El archivo esta dividido en tres secciones, como se puede observar en el cuadro 4.1.La primera seccion contiene opciones globales, como son el sistema operativo por defecto o si queremos

que aparezca el menu de seleccion y el tiempo por defecto.En la segunda seccion se especifican los parametros necesarios para arrancar Linux, indicandose en

image y initrd el kernel y las opciones de arranque.La ultima seccion especifica la particion desde donde debera ejecutarse los otros sistemas operativos

que tengamos instalados en el ordenador.Si necesitamos realizar alguna modificacion simplemente editaremos el archivo /etc/lilo.conf y pos-

teriormente ejecutaremos el comando lilo para activar los cambios.

#/sbin/lilo

Cuadro 4.1: Archivo de configuracion /etc/lilo.conf

# Global

prompt

timeout=70

default=Kernel-2_6

boot=/dev/hda

map=/boot/map

install=/boot/map

install=/boot/boot.b

message=/boot/message

lba 32

#Linux

image=/boot/vmlinuz-2.6.11-9

label=Kernel-2_6

read-only

root=/dev/hda3

image=/boot/vmlinuz-2.4.18-3

label=Kernel-2_4

initrd=/boot/initrd-2.4.18-3.img

read-only

root=/dev/hda3

#Windows

other=/dev/hda1

optional

label=WindowsXP

Grub

Es el gestor de arranque por defecto en Debian Sarge. Es un poco mas flexible que Lilo, ya que permiteinteractuar en caso de arranque invalido.

Incluye otras funciones como el soporte de multiples modulos, interfaz grafico de arranque, lınea decomandos, descompresion automatica, soporte para LBA y soporte para terminales entre otras muchasopciones.

Jose Antonio Escartın Vigo, Junio 2005.

Page 45: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 4. Primeros pasos 27

4.3. Usuarios

Es muy recomendable crearse un usuario de trabajo dentro del sistema, ya que con el usuario rootes posible crear, modificar o eliminar cualquier archivo del sistema operativo. Al utilizar este usuario sepodrıa danar el sistema en caso de cometer algun error.

Mas adelante se detalla como crear y administrar usuarios con la herramienta grafica Webmin, peroahora voy a explicar como se harıa desde la lınea de comandos.

4.3.1. Anadir nuevos usuarios al sistemas

La instruccion necesaria para crear un nuevo usuario es useradd.

#useradd josan

Este mandato crea una nueva entrada en el archivo /etc/passwd. Este archivo contiene informacioncomo el nombre de usuario, contrasena, directorio de trabajo y shell predeterminado.

Es necesario crear una carpeta /home/josan que sera el directorio del usuario.

#mkdir /home/josan

Una vez creado el usuario le deberemos asignar una contrasena, para ello utilizaremos la instruccionpasswd. Con ella podemos modificar la contrasena de cualquier usuario si hemos iniciado una sesion deroot, o nuestra propia contrasena en cualquier otro caso.

#passwd josan, . . . y introducir la nueva contrasena.

Si el sistema esta bien administrado, se ha de almacenar informacion imprescindible de los usuarios,como el n.o de tlf. y el lugar donde encontrar fısicamente a ese usuario. Esto es necesario por si secompromete la seguridad del sistema y necesitamos ponernos en contacto con el usuario a traves de vıasno informaticas.

Para cambiar la informacion de una cuenta se usa el comando chfn.

#chfn josan

Y para visualizar esa informacion finger.

#finger josan

4.3.2. Anadir grupos al sistema

Para anadir un nuevo grupo al sistema se utiliza el siguiente comando:

#groupadd -g [GID] [nombre_grupo], . . . donde GID es el n.o de grupo que se asignara.

Si tenemos usuarios ya creados y deseamos anadirlos o eliminarlos de un grupo utilizaremos:

#gpasswd -a [nombre_usuario] [nombre_grupo], . . . anadir usuario#gpasswd -d [nombre_usuario] [nombre_grupo], . . . eliminar usuario

Jose Antonio Escartın Vigo, Junio 2005.

Page 46: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

28 Servidor Linux para conexiones seguras de una LAN a Internet

4.3.3. Bases de datos de usuarios

Ahora vamos a especificar con mas detalle como es almacenada la informacion de los usuarios dentrodel sistema.

Esta informacion es almacenada en tres archivos:

/etc/passwd: Informacion de los usuarios

/etc/shadow: Claves encriptadas de los usuarios

/etc/group: Grupos del sistema

Archivo /etc/passwd

Es usado para establecer y configurar las cuentas. Es un archivo de texto plano que puede ser consultadopor todos los usuarios del sistema. Y su contenido podrıa ser algo parecido al siguiente:

Cuadro 4.2: Ejemplo de un archivo /etc/passwd

root:x:0:0:root:/root:/bin/bash

daemon:x:1:1:daemon:/usr/sbin:/bin/sh

bin:x:2:2:bin:/bin:/bin/sh

sys:x:3:3:sys:/dev:/bin/sh

sync:x:4:65534:sync:/bin:/bin/sync

games:x:5:60:games:/usr/games:/bin/sh

man:x:6:12:man:/var/cache/man:/bin/sh

lp:x:7:7:lp:/var/spool/lpd:/bin/sh

mail:x:8:8:mail:/var/mail:/bin/sh

news:x:9:9:news:/var/spool/news:/bin/sh

uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh

proxy:x:13:13:proxy:/bin:/bin/sh

postgres:x:31:32:postgres:/var/lib/postgres:/bin/sh

www-data:x:33:33:www-data:/var/www:/bin/sh

backup:x:34:34:backup:/var/backups:/bin/sh

operator:x:37:37:Operator:/var:/bin/sh

list:x:38:38:Mailing List Manager:/var/list:/bin/sh

irc:x:39:39:ircd:/var/run/ircd:/bin/sh

gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh

nobody:x:65534:65534:nobody:/nonexistent:/bin/sh

josan:x:1000:1000:Jose Antonio Escartin Vigo:/home/josan:/bin/bash

identd:x:100:65534::/var/run/identd:/bin/false

sshd:x:101:65534::/var/run/sshd:/bin/false

Cada lınea representa un usuario. La informacion de cada usuario esta dividida en seis campos delimi-tados por el caracter dos puntos (:). La descripcion de cada uno de los campos aparece listada en la Tabla4.3.

Cuadro 4.3: Descripcion de los campos del archivo /etc/passwdCampo Descripcion1 Nombre de usuario o identificador de inicio de sesion. Tiene que ser unico.2 Contrasena encriptada de usuario. Una “x” minuscula indica que se usan contrasenas ocultas

y que estas estaran en el archivo /etc/shadow3 Identificador de usuario (UID). Este n.o ha de ser unico4 Identificador de grupo (GID). Aquı solo aparece el grupo principal del usuario, aunque puede

pertenecer a mas de un grupo5 Campo de comentarios6 Directorio /home del usuario.7 Shell de trabajo del usuario. Habitualmente es la shell bash

Un caracter “*” en la contrasena indica que la cuenta esta deshabilitada temporalmente. Es una buenapractica no solo anadir el caracter, sino indicar el motivo por el que ha sido deshabilitada.

Se pueden anadir nuevas cuentas de usuario editando directamente el archivo /etc/passwd, pero paracrear las contrasenas hay que usar la utilidad /usr/bin/passwd ya que esta es cifrada.

Jose Antonio Escartın Vigo, Junio 2005.

Page 47: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 4. Primeros pasos 29

Archivo /etc/shadow

Es el archivo de contrasenas ocultas. Este archivo anade un nivel de seguridad adicional, ya que laencriptacion de la clave de usuario solo es visible por el root.

Cuando todavıa no existıan las contrasenas ocultas, la contrasena, aunque cifrada, se almacenaba en elarchivo /etc/passwd. Este archivo puede ser leıdo por cualquier usuario del sistema, pero solo modificadopor el usuario root. Esto representa un problema porque significa que cualquiera puede ver una contrasenacifrada e intentar conseguir una clave que genere ese cifrado. Para combatir esta amenaza potencial, sedefinio el concepto de contrasenas ocultas.

Cuadro 4.4: Ejemplo de un archivo /etc/shadow

root:$1$wzPAR6Nw$RTLX6R4qjZT6KGJI8efJL0:12890:0:99999:7:::

daemon:*:12890:0:99999:7:::

bin:*:12890:0:99999:7:::

sys:*:12890:0:99999:7:::

sync:*:12890:0:99999:7:::

games:*:12890:0:99999:7:::

man:*:12890:0:99999:7:::

lp:*:12890:0:99999:7:::

mail:*:12890:0:99999:7:::

news:*:12890:0:99999:7:::

uucp:*:12890:0:99999:7:::

proxy:*:12890:0:99999:7:::

postgres:*:12890:0:99999:7:::

www-data:*:12890:0:99999:7:::

backup:*:12890:0:99999:7:::

operator:*:12890:0:99999:7:::

list:*:12890:0:99999:7:::

irc:*:12890:0:99999:7:::

gnats:*:12890:0:99999:7:::

nobody:*:12890:0:99999:7:::

josan:$1$tUlRDVd7$6kPCHl4XyLIYnjBt4BpxF0:12890:0:99999:7:::

identd:!:12890:0:99999:7:::

sshd:!:12890:0:99999:7:::

messagebus:!:12891:0:99999:7:::

hal:!:12891:0:99999:7:::

gdm:!:12893:0:99999:7:::

saned:!:12905:0:99999:7:::

Esta formado por entradas de una lınea con campos delimitados por el caracter dos puntos (:). Algunosde estos campos contendran aparentemente numeros raros, demasiado altos para ser correctos. Estoscampos estan referidos a la fecha de comienzo “de la era de la computacion”, el 1 de enero de 1970.

Cuadro 4.5: Descripcion de los campos del archivo /etc/shadowCampo Descripcion1 Nombre de la cuenta de usuario2 Campo de contrasena cifrada3 Dıas transcurridos desde el comienzo de la era hasta la fecha en que la contrasena fue

cambiada por ultima vez4 Numero de dıas tras que deben transcurrir hasta que la contrasena se pueda volver a cambiar5 Numero de dıas tras los cuales hay que cambiar la contrasena (-1 significa nunca)6 Dıas antes de la expiracion de la contrasena en que se avisara al usuario al inicio de la sesion7 Dıas despues de la expiracion de la contrasena en que la cuenta se inhabilita si la contrasena

no se ha cambiado correctamente.8 Dıas transcurridos desde la era en que la cuenta se inhabilitara (con independecia de cambios

de la contrasena)9 Campo reservado

Se utilizara change, la utilidad de cambio de caducidad, para modificar estos valores predeterminados.Para realizar el cifrado de las contrasenas es mejor usar MD5 que el antiguo metodo DES, ya que

el primero permite contrasenas mas largas y si esta es buena implica un tiempo mucho mayor paradescifrarlas.

Jose Antonio Escartın Vigo, Junio 2005.

Page 48: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

30 Servidor Linux para conexiones seguras de una LAN a Internet

Archivo /etc/group

El objetivo de la existencia de un identificador de grupo (GID) es agrupar de forma logica recursoso archivos para asignarlos a miembros de un grupo determinado. Los archivos de un grupo pueden sercompartidos entre los miembros de ese grupo, protegiendose contra el acceso de otros usuarios que nodeban acceder a esos recursos.

Cuadro 4.6: Ejemplo de un archivo /etc/group

root:x:0:

daemon:x:1:

bin:x:2:

sys:x:3:

adm:x:4:

tty:x:5:

disk:x:6:

lp:x:7:lp

mail:x:8:

news:x:9:

uucp:x:10:

proxy:x:13:

kmem:x:15:

dialout:x:20:

fax:x:21:

voice:x:22:

cdrom:x:24:hal

floppy:x:25:hal

tape:x:26:

audio:x:29:josan

dip:x:30:

postgres:x:32:

www-data:x:33:

backup:x:34:

operator:x:37:

list:x:38:

irc:x:39:

src:x:40:josan

gnats:x:41:

shadow:x:42:

utmp:x:43:

video:x:44:

staff:x:50:

games:x:60:

users:x:100:

nogroup:x:65534:

josan:x:1000:

man:*:12:

plugdev:*:46:

ssh:x:101:

crontab:x:102:

messagebus:x:103:

hal:x:104:

lpadmin:x:105:

gdm:x:106:

camera:x:107:

scanner:x:108:

saned:x:109:

Cada lınea del archivo /etc/group indica un grupo. Se puede observar que muchos de los grupospredeterminados corresponden directamente a un servicio especıfico.

Cada cuenta de usuario tiene que pertenecer como mınimo a un grupo.

Cuadro 4.7: Descripcion de los campos del archivo /etc/groupCampo Descripcion1 Nombre de grupo2 Contrasena de grupo. No suele usarse3 Numero de identificacion de grupo4 Lista de usuarios asociadas a este grupo. Si en el archivo /etc/passwd se ha especificado

este grupo, no es necesario que aparezca en la lista. Solo es para usuarios que su grupo inicialno fuera este

Jose Antonio Escartın Vigo, Junio 2005.

Page 49: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 4. Primeros pasos 31

4.4. Permisos de archivos

En Linux hay tres niveles de permisos de archivos y directorios. Estos tres niveles pertenecen a lassiguientes categorıas:

Usuario (el propietario)

Grupo

Otros

Cada nivel o categorıa tiene los privilegios asociados de:

Lectura

Escritura

Ejecucion

Un archivo esta identificado por el grupo al que pertenece y su propietario. Cuando realizamos unlistado de un archivo, encontramos los siguientes parametros:

#ls -l <archivo>- rwx rwx rwx root root 512 Jan 7 10:50 nom_archivo

4.4.1. Tipos de archivo

El primer caracter identifica el tipo de archivo. Podemos encontrar los siguientes:

Cuadro 4.8: Tipos de archivos

Caracter Tipo de archivo- Archivo normal (generalmente un archivo binario o de texto ASCII)d Directoriol Enlace simbolicol Dispositivo de caracterl Dispositivo de bloquel Socket (un proceso de escucha de red)p Canalizacion o pipe con nombre

4.4.2. Modificar los permisos

Para modificar los permisos de acceso a un archivo se utiliza el comando chmod. Es necesario especi-ficar los tres elementos siguientes:

Nivel se va a modificar (propietario, grupo o otros)

Permiso se va a modificar (lectura, escritura o ejecucion)

Archivo o archivos que se van a modificar

La tabla 4.9 especifica las opciones del comando chmod.

Los permisos pueden ser especificados con letras:

#chmod g+w /home/josan/archivo, . . . da permiso de lectura al grupo#chmod g-w /home/josan/archivo, . . . quita permiso de lectura al grupo

Jose Antonio Escartın Vigo, Junio 2005.

Page 50: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

32 Servidor Linux para conexiones seguras de una LAN a Internet

Cuadro 4.9: Opciones de chmod

Opcion Descripcionu Propietariog Grupoo Otrosa Todosr Lecturax Ejecucionw Escritura0 Sin privilegios1 Ejecucion2 Escritura3 Escritura y ejecucion4 Lectura5 Lectura y ejecucion6 Lectura y escritura7 Lectura, escritura y ejecucion

O con numeros:

#chmod 751 /home/josan/archivo

Da lectura, escritura y ejecucion al propietario; Lectura y ejecucion al grupo; Ejecucion a otros.

4.4.3. Permisos especiales: SUID, SGID y bit de persistencia

Con un archivo ejecutable, activar el bit SUID de propietario obliga al archivo ejecutable binario aejecutarse como si lo hubiera lanzado el usuario propietario del archivo y no realmente quien lo lanzo.Normalmente, el usuario root es propietario de los ejecutables binarios con el bit SUID activo, de formaque cualquiera que pueda ejecutar el programa lo ejecuta como usuario root.

Cuando un programa es SUID o SGID, una “s” sustituye a la “x” que corresponde al bit de ejecuciondel usuario o grupo.

Esto es peligroso pero necesario para algunos programas. Por ejemplo, un usuario normal no puedeleer o escribir en el archivo /etc/shadow, para que este usuario normal (sin privilegios) pueda cambiarsu contrasena, el ejecutable passwd debe ser SUID del usuario root. El bit SGID funciona del mismo modopara los grupos.

Cuadro 4.10: Opciones especiales chmod

Opcion Descripcions SUID o SGIDt Bit de persistencia0 Sin permisos especiales (predeterminado)1 Activar el bit de persistencia (t)2 Activar el bit SGID de grupo (s)3 Activar el bit SGID de grupo y el de persistencia4 Activar el bit SUID de propietario5 Activar el bit SUID de propietario y el de persistencia6 Activar el bit SUID de propietario y el bit SGID de grupo7 Activar el bit SUID, el SGID y el de persistencia

Jose Antonio Escartın Vigo, Junio 2005.

Page 51: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 4. Primeros pasos 33

Cuando los bits SUID o SGID se refieren a directorios, los archivos que se almacenan en estos directoriosadoptan el propietario o grupo del directorio, en vez de adoptar el del usuario que creo el archivo.

El bit de persistencia, mostrado como “t” en lugar del bit de ejecucion normal para el nivel “otros” seusa normalmente en directorios tales como /tmp. Este atributo en concreto hace que solo el propietariodel archivo pueda eliminarlo, aunque otros pueden leerlo.

Se puede especificar los permisos especiales SUID, SGID y bit de persistencia con la tabla 4.10La forma de utilizarlo es anadir un numero mas al chmod:

#chmod 2751 /home/josan/archivo

Lo comentado anteriormente y el SGID activado.

4.4.4. Cambiar un archivo de propietario o grupo

La utilidad chown modifica el indicador de propietario.

#chown josan /tmp/archivo

La utilidad chgrp modifica el indicador de grupo.

#chgrp proyecto /tmp/archivo

4.5. Instalacion de aplicaciones

En Debian GNU/Linux tenemos tres aplicaciones para manejar paquetes precompilados dpkg, apt yalien.

Cuando disponemos de los archivos fuente de una aplicacion y los queremos instalar en nuestro sistemahay que tener varias precauciones.

La mejor opcion es que el software a utilizar este incluido en el proyecto Debian, ası se eliminara laposibilidad que un usuario malintencionado haya modificado deliberadamente el paquete. Para asegurarnoses preciso leer atentamente la documentacion de los paquetes (INSTALL y README) y comprobar “amano” los script’s de instalacion.

Si nos vemos en la obligacion de instalar un paquete de una fuente no segura, desconocida o sospechosaes una buena conducta de actuacion instalar el paquete con un usuario con privilegios restringidos, evitandousar root a menos que sea imprescindible. Si los scripts estuvieran modificados, sin privilegios, no podrıanhackear el sistema.

4.5.1. Compilacion de paquetes desde archivos fuente

Las aplicaciones suelen venir comprimidas en uno de estos dos formatos

.tar.gz

.tar.bz2

Lo primero es descomprimir los fichero fuente, para ello debemos disponer de tres aplicaciones: gunzip(.gz), bzip (.bz2) y tar (.tar).

Si el archivo es .tar.gz, el comando es el siguiente:

$tar zxvf archivo.tar.gz, . . . para descomprimir archivo.tar.gz$tar jxvf archivo.tar.bz2, . . . para descomprimir archivo.tar.bz2

Jose Antonio Escartın Vigo, Junio 2005.

Page 52: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

34 Servidor Linux para conexiones seguras de una LAN a Internet

Entramos en el directorio que se haya creado y allı normalmente encontraremos algunos ficheros dedocumentacion especificos de cada paquete y los siguientes ficheros estandar:

README

INSTALL

Es imprescindible leerlos, en ellos se especifica la documentacion del paquete. Aquı encontraremos lahistoria del paquete, la version actual, los paquetes adicionales que debemos de tener instalados, el metodode instalacion y la informacion necesaria para modificar los archivos de configuracion.

Para realizar la instalacion se utiliza el Makefile, un archivo que se pasa al comando make con una seriede parametros dependiendo de las opciones disponibles. En el proximo parrafo se explica en que consisteexactamente un archivo de este tipo.

Makefiles

En proyectos extensos, con varios miles de lıneas de programacion, no resulta muy practico recompilarcada vez que se desea armar un nuevo ejecutable. Es frecuente por lo tanto dividir el proyecto en variosarchivos con codigo fuente, y recompilar solo los archivos que registren cambios.

Existe un programa, que dada esta serie de interdependencias es capaz de generar el ejecutable con lamınima cantidad de pasos necesarios. La especificacion de las dependencias se da en un archivo llamadoMakefile y el programa que interpreta que lo interpreta y genera el ejecutable es Make.

Un Makefile es un archivo de configuracion donde se indicaran que archivos debe compilar, las depen-dencias de compilacion, y los flags que se han de pasar al compilador.

Pueden llegar a ser archivos grandes y complejos. Tratare de explicar las nociones mas basicas de losmismos, para poder leer los que vienen en las instalaciones de las aplicaciones. La sintaxis basica de unarchivo Makefile es la siguiente:

objetivo: dependenciasacciones a ejecutar

El objetivo es el archivo que se desea generar.Las dependencias son los archivos de los cuales el objetivo depende.Las acciones son los comandos para generar el objetivo a partir de las dependencias.

Para ilustrar esto veamos el siguiente ejemplo:

tst: tst.o tstf.ogcc -o tst tst.o tstf.o

tst.o: tst.cgcc -c -o tst.o tst.c

tstf.o: tstf.cgcc -c -o tstf.o tstf.c

El programa make leera el archivo Makefile, al llegar a la primera lınea encuentra que tst depende detst.o y tstf.o. Si tst no existe o tiene fecha de modificacion anterior a la de sus dependencias, debera ejecutarla accion indicada para generarlo nuevamente. Analogamente, si tst.o no existe o tiene fecha de modificacionanterior a la de tst.c, sera necesario recompilar nuevamente su codigo fuente.

Jose Antonio Escartın Vigo, Junio 2005.

Page 53: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 4. Primeros pasos 35

En este tipo de archivos se suelen definir variables para ser utilizadas en las lıneas de acciones. Estasdefiniciones estan al comienzo de los Makefiles y son del tipo:

DEPTST=tst.o tstf.oCFLAGS=-c -o

Con estas modificaciones el archivo original quedarıa de la siguiente forma:

Cuadro 4.11: Ejemplo de un archivo Makefile

DEPTST=tst.o tstf.oCFLAGS=-c -o

tst: $(DEPTST)gcc -o tst $(DEPTST)

tst.o: tst.cgcc $(CFLAGS) tst.o tst.c

tstf.o: tstf.cgcc $(CFLAGS) tstf.o tstf.c

Para abreviar tambien se pueden utilizar las construcciones especiales “$<” para referirse a las depen-dencias y “$@” para referirse al objetivo, en el interior de las acciones.

Para ejecutar el Makefile:

$make, . . . para ejecutar todos los objetivos.$make <objetivo>, . . . para ejecutar un objetivo concreto.

Los objetivos habituales en los instaladores son: check, install, y clean.

Metodo habitual de instalacion

La mayorıa de los paquetes se instalan de la siguiente forma:

$./configure$make$make install

Segun el archivo INSTALL podremos observar las necesidades concretas del paquete, tambien es ha-bitual, entre las distintas fases de instalacion, las directivas:

$make check$make clean

Por ultimo decir que dependiendo del tipo de paquete y los lugares del sistema donde deba escribirpuede ser necesario instalar el paquete mediante un usuario con mas privilegios.

Jose Antonio Escartın Vigo, Junio 2005.

Page 54: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

36 Servidor Linux para conexiones seguras de una LAN a Internet

4.5.2. Dpkg: Instalador de paquetes precompilados

Si en vez de paquetes fuentes lo que tenemos es un paquete precompilado o binario utilizaremos elgestor de paquetes dpkg (Debian Package).

En la tabla 4.12 se especifican las opciones mas comunes.

Cuadro 4.12: Opciones del comando dpkgComando Descripcion#dpkg -i <paquete> Instala paquete#dpkg -r <paquete> Elimina paquete#dpkg --purge <paquete> Borra un paquete incluıdos los ficheros de configuracion#dpkg -f <paquete> Muestra informacion de la version del paquete#dpkg -c <paquete> Lista los ficheros contenidos#dpkg --contents <paquete> Lista los ficheros contenidos y sus directorios#dpkg --info <paquete> Informacion del paquete#dpkg --unpak <paquete> Desempaqueta#dpkg --info <paquete> Informacion del paquete#dpkg --force-help <paquete> Fuerza opciones#dpkg -L <paquetes> Lista el paquetes si esta instalado#dpkg -l Lista paquetes instalados#dpkg-reconfigure --all Reconfigura todos los paquetes#dpkg-reconfigure locales Reconfigura paquetes con la configuracion local, por ejemplo colo-

ca paquetes en el idioma del sistema

4.5.3. Apt: Gestor de paquetes Debian

El programa APT (Advancd Packaging Tool) se encarga de manejar automaticamente las dependenciasde la paqueterıa del sistema.

El archivo /etc/apt/sources.list

Como parte de su funcionamiento, APT utiliza un archivo que contiene las “fuentes” en donde seencuentran los paquetes. En el siguiente cuadro podemos observar un archivo estandar del sources.list.

Cuadro 4.13: Ejemplo de /etc/apt/sources.list

deb cdrom:[Debian GNU/Linux testing _Sarge_ - Official Snapshot i386 Binary-2 (20050225)]/ unstable contrib main main/debian-installer

deb cdrom:[Debian GNU/Linux testing _Sarge_ - Official Snapshot i386 Binary-1 (20050225)]/ unstable contrib main main/debian-installer

deb cdrom:[Debian GNU/Linux 3.0 r4 _Woody_ - Official i386 Binary-2 (20050102)]/ unstable contrib main non-US/contrib non-US/main non-US/non-free non-free

deb cdrom:[Debian GNU/Linux 3.0 r4 _Woody_ - Official i386 Binary-1 (20050102)]/ unstable contrib main non-US/contrib non-US/main non-US/non-free non-free

#Sarge (testing)

deb http://ftp.rediris.es/debian testing main contrib non-free

deb-src http://ftp.rediris.es/debian/ testing main non-free contrib

deb http://ftp.rediris.es/debian-non-US testing/non-US main contrib non-free

deb-src http://ftp.rediris.es/debian-non-US testing/non-US main contrib non-free

deb http://security.debian.org/ testing/updates main contrib non-free

#Woody (stable)

#deb http://ftp.rediris.es/debian testing main contrib non-free

#deb http://ftp.rediris.es/debian-non-US testing/non-US main contrib non-free

#deb http://security.debian.org/ stable/updates main contrib non-free

#Sid (unstable)

#deb http://ftp.rediris.es/debian unstable main contrib non-free

#deb http://ftp.rediris.es/debian-non-US unstable/non-US main contrib non-free

El archivo puede contener varios tipos de lıneas. APT sabe como interpretar lıneas del tipo http, ftp yfile (archivos locales).

Para poder descargar los paquetes a traves de internet utilizamos ftp.rediris.es, replica en Espana delos paquetes Debian.

Jose Antonio Escartın Vigo, Junio 2005.

Page 55: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 4. Primeros pasos 37

La primera palabra de cada lınea indica el tipo de archivo:

deb, indica un paquete pre-compilado (binario)

deb-scr, indica codigo original (fuentes)

Opciones ATP

En el cuadro 4.14 vamos a poder encontrar las opciones mas usuales que se pueden utilizar con elcomando APT

Cuadro 4.14: Opciones del comando APTComando Descripcion#apt-get install <paquete> Instala paquete# apt-get --reinstall install <paquete> Reinstala paquete o una nueva version del mismo#apt-get remove <paquete> Desinstala paquete#apt-get --purge remove <paquete> Desinstala paquete y borra sus archivos de configu-

racion#apt-cdrom ident Identifica un CD#apt-cdrom add Anade un CD al /etc/apt/sources.list#apt-get update Actualiza la lista local de paqutes con el archivo

/etc/apt/sources.list#apt-get upgrade Actualiza a las ultimas versiones todos los paquetes

del sistema#apt-get dist-upgrade Actualiza a la distribucion mas reciente#apt-show-versions -u Muestra los paquetes del sistema que pueden ser ac-

tualizados#apt-cache search <nombre> Muestra los paquetes relacionados con nombre#apt-cache show <paquete> Muestra informacion de un paquete especıfico#apt-cache showpkg <paquete> Muestra mucha mas informacion del paquete#apt-cache depends <paquete> Muestra de que paquetes depende#apt-file search <archivo> Muestra a que paquete pertenece el archivo#apt-file list <paquete> Muestra los archivos del paquete#apt-file update Actualiza los paquetes de apt-file (como apt-get up-

date)#apt-get source <paquete> Descarga las fuentes del paquete#apt-get -b source <paquete> Descarga y compila las fuentes del paquete (genera

un .deb, que hay que instalarlo con dpkg)#apt-get build-dep <paquete> Descarga y compila las fuentes del paquete y des-

carga tambien los paquetes que dependen necesariospara compilarlo.

#apt-cache showscr <paquete> Muestra que paquetes son necesarios para compilarel paquete

#apt-get -f install Reconfigura los paquetes mal instalados (puede sernecesario combinarlo con #dpkg --configure -a)

La opcion -u muestra la lista completa de los paquetes que se actualizaran.

Si utilizamos la opcion apt-cdrom solo tendra efecto si el CD-ROM esta bien configurado en /etc/fstab.

Jose Antonio Escartın Vigo, Junio 2005.

Page 56: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

38 Servidor Linux para conexiones seguras de una LAN a Internet

4.5.4. Alien: Convertir paquetes .rpm a .deb (formato Debian)

Existen muchas distribuciones basadas en Red Hat que utilizan el formato de paquetes .rpm (Red HatPackage Manager), cuando tenemos este tipo de paquetes es posible convertirlos a .deb, formato de Debiany instalable con dpkg. Para ello utilizaremos la herramienta alien que convierte un tipo de paquete en otro.

#apt-get install alien

$alien paquete.rpm

4.5.5. Encontrar paquetes y sus dependencias

En algun momento nos podemos encontrar que necesitamos saber de que paquete proviene un archivo,o lo mas frecuente, que paquete/s tengo que instalar para que me funcione un comando.

Disponemos de apt-cache y dpkg para realizar estas tareas.

Buscar paquetes padre de comandos instalados

Si tenemos un comando instalado y no sabemos de que paquete proviene, se usa dpkg -S.

$dpkg -S <nombre_comando>

Devuelve una lista de todos los paquetes que durante su instalacion crearon un archivo igual a nom-bre comando. Si sabemos el directorio donde se encuentra podemos refinar la busqueda.

$dpkg -S /usr/bin/nombre_comando

Buscar paquetes padre de comandos no instalados

En este caso hay que buscar en la pagina de paquetes Debian, http://packages.debian.org/testing/.

Tambien se puede utilizar el siguiente truco rapido:

$links -dump "http://packages.debian.org/cgi-bin/search_contents.pl?case=insensitive&arch=i386&version=testing&word=nombre_comando"

Donde arch, version y word se ajustan a las necesidades de nuestra busqueda concreta.

Buscar paquetes si sabemos su nombre parcial

En este caso lo mejor es usar una de las opciones de dpkg -l.

$dpkg -l "*cadena_caracteres*"

Busca todos los paquetes que contienen la cadena cadena caracteres.

Buscar paquetes si tenemos una descripcion

Si no conocemos el comando, pero sabemos su descripcion, lo mejor es usar apt-cache search.

$apt-cache search <paquete>

Jose Antonio Escartın Vigo, Junio 2005.

Page 57: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 4. Primeros pasos 39

Buscar dependencias de un paquete

Para conocer las dependencias e informacion de un paquete, podemos usar el apt-cache depends.

$apt-cache depends <paquete>

La informacion que se nos mostrara es la siguiente:

Depende: Paquetes que son necesarios para que funcione

Sugiere: Paquetes recomendables

Entra en conflicto: Paquetes incompatibles

Reemplaza: Paquetes que quedaran obsoletos

4.5.6. Problemas al instalar paquetes

Cuando existe un problema de dependencias entre paquetes podemos utilizar los siguientes comandospara reconfigurarlos.

#dpkg --configure -a, . . . Comprueba problemas de configuracion.#apt-get -f install, . . . Reintenta la instalacion de paquetes que han dado problemas.

Realizando una lectura, completa y a conciencia de las salidas de los comandos anteriores se sueleidentificar el problema. Se puede probar a repetir varias veces estos dos comandos.

Si existe un paquete que ha quedado mal instalado, lo primero que hay que hacer es leer la docu-mentacion que trae, para comprobar si tiene alguna incompatibilidad con nuestro sistema. En caso de noencontrar el problema, es recomendable probar a reinstalar el paquete:

#apt-get remove <paquete>#apt-get install <paquete>

Si esto tampoco funciona, corriendo el consiguiente riesgo, se puede forzar la reescritura de paquetecon el comando:

#dpkg -i --force-overwrite /var/cache/apt/archives/nombre_paquete

. . . y probar a reconfigurar los paquetes otra vez

Estos comandos (dpkg --force-help) son utiles en determinadas ocasiones, pero hay que saber quees lo que se quiere hacer de antemano y asumir las posibles consecuencias.

Por ultimo comentar el siguiente comando que tambien puede ser util en determinadas ocasiones:

# apt-get -s -t <rama_debian> install --reinstall <paquete>

Donde -s simula la instalacion y -t unstable, stable o testing especifica la distribucion Debian utilizada.

4.6. Shells

Un shell es un programa, ejecutado por el usuario, que le proporciona a este una interfaz interactivacon el sistema (una lınea de comandos) para introducir datos o especificar programas que quiera ejecutar.El shell predeterminado en la mayorıa de distribuciones Linux es bash (Bourne Again Shell).

Jose Antonio Escartın Vigo, Junio 2005.

Page 58: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

40 Servidor Linux para conexiones seguras de una LAN a Internet

4.6.1. Tipos de shell

Existe varios shells para Linux. Cada una de ellas tiene ciertas caracterısticas, pero todas estan clasi-ficadas en dos ramas: la shell Bourne o la familia de shells C.

Shell Bourne

La shell Bourne es la mas antigua de las shells modernas. La shell bash, suele ser ejecutada por defectoen todas las distribuciones Linux. Algunas shells disponibles para sistemas Linux, que se inscriben enla familia de shells Bourne, incluyen otro sucesor de Bourne, ksh, la shell de Korn (implementada encasi todas las distribuciones como pdksh); ash, una shell parecida a bash pero de menor tamano, idealpara disquetes de arranque; kiss, otro interprete sencillo de shell (pero solo tiene comandos rudimentariosintegrados), que es tambien ideal para discos de arranque o rescate; y zsh, una shell muy parecida a lashell de Korn.

La shell C

La shell C fue creada en principio para superar las limitaciones de la shell Bourne (como el soportepara calculos numericos). Estaba dirigida a usuarios avanzados y a usuarios mas familiarizados con lasintaxis de la programacion en C. La shell C proporciona una interfaz agradable, pero se considera que esmas difıcil hacer scripts para ella, especialmente para aquellos que no esten familiarizados con la sintaxisC. La sintaxis para las variables de entorno varıa significativamente, y los scripts escritos para shells de lafamilia Bourne, normalmente no se pueden ejecutar en una shell C y viceversa. Entre los sucesores de lashell C (csh) tenemos tsch, recomendada por encima de csh para aquellos que quieran usar este tipo deinterfaz.

4.6.2. Caracterısticas de la shell Bash

La shell bash contiene una serie de herramientas que facilitan la tarea del usuario. Estas quedandescritas en los siguientes puntos:

Escribiendo cd se va directamente al home del usuario.

Si se empieza a escribir una ruta o un nombre de archivo, y esa ruta o ese nombre son unicos entretodas las opciones disponibles, si se pulsa la tecla TAB, el shell rellena el resto de la ruta o nombre.En caso de que no sea unico emite un pitido de opcion ambigua y si se pulsa por segunda vez latecla TAB se muestra el rango de opciones disponibles. A menudo, con solo un caracter mastendremos una seleccion unica otra vez.

Se pueden ejecutar varios comandos en la misma lınea separandolos por el caracter “;”

Permite incrustar comandos como parametros de otros comandos, encerrandolos entre comillasinvertidas (#kill ‘cat /var/run/named.pid‘)

Existe un historial de comandos, que queda almacenado en .bash history. Tiene un tamanoprefijado (normalmente 500 lineas) a partir del cual empieza a borrar las lıneas antiguas paraescribir las nuevas. El comando $history mostrara el contenido de .bash history.

Este historico de comandos facilita la tarea de escribir scripts para la shell. Sencillamente, cortandoy pegando en un script los comandos que funcionaron bien.

Se puede recuperar un comando ya utilizado pulsando repetidas veces la flecha hacia arriba.

Facilita la tarea de cortar y pegar, en entorno X-Windows, funciona entre ventanas de diferentesaplicaciones. Tambien permite seleccionar textos usando el raton.

Jose Antonio Escartın Vigo, Junio 2005.

Page 59: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 4. Primeros pasos 41

4.6.3. Ejecucion de procesos en la shell Bash

Para ejecutar un archivo que se encuentre en el directorio local, siendo que este directorio no se en-cuentra en el $PATH del sistema se emplea el siguiente metodo:

$./<archivo_ejecutable>

Desde una consola tambien podemos hacer que un proceso se ejecute en segundo plano anadiendoleun & al final, y ası seguir trabajando en esa consola:

$comando &

4.6.4. Variables de entorno

Una variable de entorno es una cadena de caracteres con informacion de las diferentes opciones delsistema asociada a un nombre simbolico que pueda utilizar Linux.

Visualizar contenido de variables

Podemos visualizar las variables definidas, ası como sus valores utilizando los comandos:

$printenv$env

El comando printenv se diferencia de env por el hecho de que nos permite visualizar el valor de unavariable en particular:

$printenv <VARIABLE>

Variables mas comunes

La siguiente tabla, obtenida en [BB00] especifica las variables que encontraremos, mas habitualmente,en nuestro sistema.

Si se utiliza el shell bash, se puede encontrar mas informacion sobre las variables de entorno que existenmediante el comando $man bash.

Asignar valores a variables de entorno

Para definir una variable de entorno podemos hacerlo desde la lınea de comandos, con la desventajade que el valor solo sera valido en la sesion actual, o modificando los archivos de perfil.

La forma de realizar esta asignacion desde la lınea de comandos dependera del shell que estemos uti-lizando.

Si utilizamos el shell bash el metodo es el siguiente:

#VARIABLE_DE_ENTORNO=valor#export VARIABLE_DE_ENTORNO

En caso de realizarlo mediante los archivos de perfil, en el interior del /etc/profile o el ˜/.profile secoloca la siguiente instruccion:

export VARIABLE_DE_ENTORNO=valor

Jose Antonio Escartın Vigo, Junio 2005.

Page 60: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

42 Servidor Linux para conexiones seguras de una LAN a Internet

Cuadro 4.15: Variables habituales del sistemaVariable DescripcionEDITOR Indica el editor por defecto utilizado por el sistemaHISTSIZE Es el numero de comandos que recuerda el shell. Podemos acceder a los coman-

dos utilizando los cursores arriba y abajoHOME Determina el directorio de trabajo del usuario actualHOSTNAME Indica el nombre del ordenador o host en el cual estamos trabajandoHOSTTYPE Especifica el tipo o arquitectura del ordenadorLANG Esta variable se emplea para indicar el idioma utilizadoLOGNAME Nombre del usuario actualMAIL Directorio en el cual se almacena el correo entranteOSTYPE Sistema operativo en usoPATH Trayecto o ruta de busqueda de los archivos ejecutablesSHELL Nombre del shell actualmente en usoPWD Path de inicioTERM Tipo de terminal utilizado en la sesion de trabajo actualUSER Nombre de usuarioPATH Conjunto de directorios donde se buscan los comandosPS1 Especifica el aspecto del sımbolo de prompt del sistemaLANG, LANGUAGE Especifica el estandar de lenguaje que se utiliza en la maquinaLC ALL, LC TYPE Especifica el estandar de lenguaje para las configuraciones locales

Eliminar variables de entorno

Para eliminar variables desde la lınea de comando se ejecutara una instruccion diferente dependiendodel shell sobre el que trabajemos. En el shell bash se realiza de la siguiente forma:

#unset VARIABLE_DE_ENTORNO

Tambien es posible utilizar el comando env con la -u:

#env -u VARIABLE_DE_ENTORNO

Hay que tener en cuenta que si la variable se encontraba contenida en uno de los archivos de configu-racion de perfil, cuando volvamos a cargar el entorno del usuario la variable tambien se cargara.

4.6.5. Configuracion del entorno

Cuando se inicia una sesion de trabajo el interprete de comandos bash lee y ejecuta de forma automati-ca las ordenes del archivo /etc/profile. A continuacion1 busca los archivos del usuario ˜/.bash profile,˜/.bash login y ˜/.profile ejecutandolos segun el orden indicado. Al finalizar la ejecucion del shell selee y ejecuta el archivo ˜/.bash logout del directorio del usuario.

Si queremos que se ejecute algo al comienzo o final de cada sesion, o anadir nuevas variables de sistema,elegiremos el archivo a modificar que mas convenga a nuestros objetivos.

Resulta de gran utilidad realizar alguna modificacion a los comandos tıpicos para evitar danos nodeseados en el sistema o anadir las opciones que mas utilizamos. Un ejemplo de esto serıa colocar en elarchivo ˜/.profile:

alias mv="mv -i"

1En el caso de ejecutar un shell interactivo que no sea de entrada se lee y ejecuta el archivo ˜/.bashrc ubicado en eldirectorio del usuario.

Jose Antonio Escartın Vigo, Junio 2005.

Page 61: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 4. Primeros pasos 43

alias cp="cp -i"alias rm="rm -i"alias dir="ls -alF"

Con los tres primeros comandos se redefinira el comando base, pidiendo confirmacion por defecto ycon el ultimo se creara un comando nuevo que llamara a ls pero con mas opciones.

4.6.6. Redireccionamientos

Para redireccionar a un archivo la salida normal de un script, de forma que mas tarde se puedan verlos resultados, se utiliza la redireccion (>).

$ls -l >listado

Si se quiere anadir los resultados de la salida de un comando al final de un archivo, se utiliza la redi-reccion (>>).

$ls -l /bin >>listado

De forma similar, se pude redireccionar la entrada, para ello se utiliza la redireccion(<).

$cat < listado

Canales estandar

En Linux existen una serie de canales estandar que nunca cambian, al menos que los modifiquemos amano:

Dispositivo 0: stdin, o dispositivo de entrada estandar

Dispositivo 1: stdout, o dispositivo de salida estandar

Dispositivo 2: stderr, o dispositivo de error estandar

Dispositivo /dev/null: Todo lo que se redirecciona a este dispositivo se pierde

Estos dispositivos estandar tambien pueden ser redireccionados con: “>” y “<”. Esto se puede observaren los siguientes ejemplos:

$ls > listado 2>&1, . . . redirecciona la salida estandar y el error estandar al archivo listado.$ls > listado 2>/dev/null, . . . redirecciona la salida estandar al archivo listado y descarta errores.$cat < listado 2>&1 listado2, . . . toma como entrada listado, la salida y el error se redireccionan

a listado2.

Filtros o pipes

Los filtros o pipes son un mecanismo por el cual la salida de un programa se puede enviar como en-trada a otro programa. Los programas individuales se pueden encadenar juntos para convertirse en unasherramientas extremadamente potentes.

Podemos ver esto con un ejemplo:

$env | grep "SHELL", . . . el comando env lista las variables y filtramos la variable “SHELL”.

Los comandos more y less paginan (dividen en paginas) uno o varios ficheros y los muestran en laterminal. De no indicarseles un fichero, paginan la entrada estandar. Se diferencian en las facilidades que

Jose Antonio Escartın Vigo, Junio 2005.

Page 62: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

44 Servidor Linux para conexiones seguras de una LAN a Internet

brindan. Por ejemplo more es mas restrictivo en cuanto al movimiento dentro del texto, mientras que lessno limita este aspecto pues acepta el empleo de todas las teclas de movimiento tradicionales. Cuando sealcanza el final del ultimo fichero a paginar, more termina automaticamente, no ası less. Tambien moremuestra sucesivamente el porcentaje del fichero visto hasta el momento.

Proveen una serie de comandos para moverse con facilidad dentro del texto paginado:

q: permite interrumpir el proceso y salir

/p: realiza busquedas del patron p dentro del texto. Para repetir la busqueda del mismo patron soloes necesario escribir /.

n b: en more permite regresar n paginas (por defecto n es 1).

n f: en more se adelantan n paginas y en less, n lıneas.

4.7. Consolas virtuales

Al ser Linux un sistema multiusuario y multitarea, se pueden ejecutar diversos procesos simultanea-mente, en varias consolas virtuales, y estos ser controlados por usuarios diferentes. En cada consola virtualque se utiliza es necesario logearse como usuario del sistema.

Para cambiar de consola:

En modo texto: ALT-F1 . . . ALT-F6

En modo grafico: CTRL-ALT-F1 . . . CTRL-ALT-F6 para consolas de texto y CTRL-ALT-F7 paravolver al modo grafico.

Esto es muy util para tener una consola virtual de root con maxima prioridad, si el sistema se ralen-tiza, podremos observar por que esta pasando y remediarlo. Tambien podemos finalizar algun proceso oaplicacion que haya podido bloquear otra consola, evitando de esta forma tener que reiniciar el sistema.

Jose Antonio Escartın Vigo, Junio 2005.

Page 63: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 5

Kernel

El kernel o nucleo es una de las partes esenciales de un sistema operativo. Proporciona todos los serviciosbasicos requeridos por otras partes del sistema operativo y aplicaciones. Se encarga de la administracionde la memoria, los procesos y los discos. El kernel es independiente de la distribucion Linux utilizada, elmismo kernel deberıa servir para otras distribuciones, usando el mismo ordenador.

Las distribuciones Linux vienen con kernels que necesitan ser instalados en una amplia variedad deescenarios de configuraciones de sistemas y hardware, por lo tanto dan soporte a muchos dispositivos yhardware que no necesitamos. Recompilar el kernel es una buena idea y dara como resultado un kernelmas pequeno y rapido. El kernel 2.6 es mas rapido que los kernels anteriores y tiene soporte para nuevosdispositivos.

La actualizacion del kernel se divide en dos partes: compilacion e instalacion del nuevo kernel.

5.1. ¿Por que compilar?

Hay diversas razones para recompilar el kernel de Linux. Es util por que trabajando con kernels nuevosgeneralmente se obtiene:

1. Un sistema mas rapido, estable y robusto

2. Soporte a elementos de hardware no encontrado en kernels viejos.

3. Soporte a caracterısticas especiales disponibles pero no habilitadas en kernels viejos.

Recompilar el kernel de Linux no es mas que personalizar el kernel. Como en cualquier aplicacion,la personalizacion se hace para sacar un mayor provecho de las diferentes caracterısticas que ofrece elsoftware.

5.2. Acerca de los modulos

Varias partes de codigo del kernel pueden compilarse por separado en forma de modulos, dando flexi-bilidad al sistema. Los modulos no estan enlazados directamente en el kernel, siendo necesario insertarlosen el ya sea durante el proceso de arranque o posteriormente, de tal forma que solo se usan cuando senecesitan, sin utilizar innecesariamente la memoria Ram del sistema.

5.3. Kernel-image

La manera mas sencilla de obtener un nuevo kernel es instalar un paquete kernel-image.deb. Una vezinstalado solo es necesario actualizar el gestor de arranques y reiniciar.

Son kernels bastante estandar y adaptados a distribuciones Debian. Para hacerlos mas utilizables,incluyen soporte para todo tipo de hardware e idiomas imaginados.

Este metodo es rapido y sencillo pero es muy ineficiente, desaprovecha los recursos del sistema.

Page 64: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

46 Servidor Linux para conexiones seguras de una LAN a Internet

5.4. Kernel-source

Es un paquete de codigo fuente del kernel oficial, adaptado a la distribucion Debian. Kernel-source esmucho mas versatil que kernel-image, los binarios no suelen contener configurados correctamente todoslos dispositivos del sistema.

5.4.1. Instalar un kernel-source

Para saber cual es la version mas actual podemos utilizar la siguiente secuencia de comandos:

1. Cargar las fuentes de Apt (/etc/apt/sources.list) con nuestra distribucion, como se puede ver enel ejemplo 4.13 del capıtulo anterior

2. Actualizar el Apt con las nuevas fuentes, #apt-get update

3. Cargar el paquete links, #apt-get install links

4. Averiguar el nombre del kernel-source mas actual,$links -dump "http://packages.debian.org/cgi-bin/search_contents.pl?

case=insensitive&arch=i386&version=testing&word=kernel-sourse-2.6"

5. Descargar la nueva version del kernel-source (se descarga en el directorio /usr/src/),#apt-get install kernel-source-2.6.8

6. Descomprimir el kernel-source, #tar jxvf /usr/src/kernel-source-2.6.8.tar.bz2

7. Crear un enlace simbolico, #ln -s kernel-source-2.6.8 linux

8. Ejecutar el menu de configuracion para el menu texto, #usr/src/linux/make menuconfig,

. . . o para el menu grafico, #usr/src/linux/make xconfig

9. Elegir las opciones que queramos implementar en el kernel

Una vez completadas estas instrucciones podemos elegir entre dos alternativas: o crear un paquete.deb, descrito en el apartado siguiente; o compilar el kernel como si fueran las fuentes oficiales (Apartado5.5).

Esto queda a eleccion del usuario, pero al haber optado por las herramientas Debian la opcion mascoherente es crear un paquete.

5.4.2. Crear un paquete .deb

Usaremos la herramienta make-kpkg de Debian para crear el paquete .deb con nuestro kernel. Ladocumentacion se puede encontrar en /usr/share/doc/kernel-package/. Para evitar danar el sistema conposibles errores se utilizara el paquete fakeroot que proporciona un entorno de root falso, donde podercompilar el kernel. En la pagina del manual se describen las opciones del paquete fakeroot, en el ejemplose muestra el metodo mas simple:

Para crear el kernel-image, hay que introducir los siguientes comandos:

$fakeroot make-kpkg clean$fakeroot make-kpkg -version .fecha kernel_image

Donde version es el numero de la version del kernel, en la secuencia del usuario y .fecha es la fechaen la que se esta compilando el kernel. De esta forma tendremos claramente identificado la version delkernel y la fecha de la compilacion.

Jose Antonio Escartın Vigo, Junio 2005.

Page 65: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 5. Kernel 47

Para instalar el paquete:

#dpkg -i kernel-image-2.6.8_Version.1.050518_i386.deb

Una vez terminado solo es necesario actualizar el gestor de arranque con el nuevo kenel y reiniciar(Como se puede observar en el apartado 4.2 del capıtulo anterior).

5.5. Compilar Kernel

Las fuentes oficiales del kernel mas actual las podemos encontrar en http://www.kernel.org. Las des-cargamos al directorio /usr/src/ y las descomprimimos empleando el metodo adecuado, segun el formatodel kernel descargado.

Para la seguridad y asegurarnos que no danamos involuntariamente el sistema se puede creer un usua-rio capaz de actuar con los archivos fuentes. Para eso se anadira al grupo src.

#gpasswd -a josan src

5.5.1. Paquetes necesarios

Para poder compilar el kernel necesitamos tener los siguientes paquetes instalados.

Paquetes basicos

Cuadro 5.1: Paquetes basicos

gcc

kernel-package

libc6-dev

tk8.0

libncurses5-dev

fakeroot

Paquetes kernel 2.6

Antes de realizar el proceso de compilacion de un kernel de la serie 2.6 es necesario que actualize-mos nuestro sistema con las ultimas versiones de los paquetes que se detallan en el cuador 5.2.

Si alguno no lo tenemos instalado, es necesario realizar su instalacion mediante apt-get. El procesoautomatizado que comprueba las versiones se encuentra implementado en el scrip:

/usr/src/linux/scripts/ver_linux

Jose Antonio Escartın Vigo, Junio 2005.

Page 66: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

48 Servidor Linux para conexiones seguras de una LAN a Internet

Cuadro 5.2: Paquetes necesarios para compilar kernel 2.6

Paquete Version necesaria Comando comprobar versionGnu C 2.95.3 #gcc --versionGnu make 3.78 #make --versionbinutils 2.12 #ld -vutil-linux 2.10 #fdformat --versionmodule-init-tools 0.9.10 #depmod -Ve2fsprogs 1.29 #tune2fsjfsutils 1.1.3 #fsck.jfs -Vreiserfsprogs 3.6.3 #reiserfsck -Vxfsprogs 2.1.0 #xs_db -Vpcmcia-cs 3.1.21 #cardmgr -Vquota 3.09 #quota -VPPP 2.4.0 #pppd --versionisdn-utils 3.1pre1 #isdnctrl 2>&1|grep versionnfs-utils 1.0.5 #showmount --versionprocps 3.1.13 #ps --versionoprofile 0.5.3 #oprofiled --version

5.5.2. Comprobar el hardware disponible

Para comprobar que todos los dispositivos que tenemos son reconocidos vamos a ejecutar una serie decomandos:

#apt-get install hardinfo, instala una serie de utilidades para hw$/bin/lspci, . . . informa sobre los dispositivos disponibles$cat /proc/cpuinfo, . . . lista detalles sobre la CPU reconocida

En caso de que no reconociera alguno, es necesario estudiar mas a fondo el problema concreto. Suele sernecesario descargar los drivers y parchear el kernel para que les de soporte. Normalmente, los fabricantesde software incluyen manuales de instalacion que simplifican esta tarea.

5.5.3. Metodo de compilacion

En el cuadro 5.3 se describe el metodo que utilice para compilar el kenel del servidor. Es un trabajolaborioso y que requiere bastante practica, es necesario realizar varias recompilaciones para ajustar lasopciones del kernel. Al comenzar el usuario se encuentra abrumado ante tal cantidad de opciones, averiguarlas correctas es cuestion de disponer de las especificaciones del hardware y paciencia.

El metodo descrito es una guıa estandar para compilar el kernel, la eleccion de los modulos a colocaren el kernel se deja a eleccion del usuario, ya que cada hardware tiene sus propias caracterısticas.

Es muy recomendable, para mayor seguridad, compilar en kernel en un entorno simulado, que da accesoa recursos pero no permite modificaciones del sistema. Esto se realiza mediante el paquete fakeroot, comose ha explicado anteriormente (seccion 5.4.2). Una vez tenemos descargadas las fuentes en /usr/src/, siqueremos comprobar que hace el Makefile lo podemos encontrar en, /usr/src/linux/arch/i386/Makefile.

El metodo descrito en este apartado es un resumen del documento Kernel-Build-HOWTO, en el queme base para realizar la compilacion del kernel. Se puede encontrar en la direccion:

http://www.digitalhermit.com/linux/Kernel-Build-HOWTO.html

Jose Antonio Escartın Vigo, Junio 2005.

Page 67: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 5. Kernel 49

Cuadro 5.3: Compilacion del KernelAccion ComandoNos situamos en el directorio $cd /usr/srcSi existe enlace /usr/src/linux rm linuxDescomprimimos el kernel $tar zxvf linux-2.6.11.tar.gzCreamos un enlace simbolico alas fuentes del nuevo kernel

$ln -s linux-2.6.11 linux

Entramos en el directorio de lasfuentes

$cd linux

Cambiar a usuario root $su rootSalvamos el archivo antiguo deconfiguracion del kernel

#cp .config config.save

Borramos los mensajes de com-pilaciones anteriores

#make mrproper

Entramos en el menu de configu-racion

#make menuconfig (menu texto) o #make xconfig (menu grafico)

Agregamos dependencias #make depBorramos datos innecesarios #make cleanCompilamos el kernel #make bzImageCompilamos los modulos #make modulesInstalamos los modulos en el ker-nel

#make modules_install

Copiamos a /boot el kernel #cp arch/i386/boot/bzImage /boot/bzImage-VERSION_KERNELBorramos el antiguo enlace aSystem.map

#rm /boot/System.map

Copiamos el archivo System.map #cp System.map /boot/System.map-VERSION_KERNELCreamos el nuevo enlace a Sys-tem.map

#ln -s /boot/System.map-VERION_KERNEL /boot/System.map

Configuramos el gestor de arran-que

#vi /etc/lilo.conf

Cargamos el nuevo arranque #/sbin/liloMarcamos que reinicie con elnuevo kernel

#/sbin/lilo -R <Nombre_del_arranque_en_lilo>

5.5.4. Parchear el kernel

Los parches del kernel son la forma de anadir caracterısticas especiales al kernel. Antes de lanzar#make menuconfig o #make xconfig, es necesario ejecutar los parches con el siguiente comando:

#/usr/src/linux/patch -p1 < [ruta_del_pache]/parche_a_aplicar

Con esto conseguiremos aplicar los parches sobre las fuentes del kernel, es preciso asegurarse que losparches coinciden con la version de nuestro kernel, en caso contrario no funcionaran.

5.5.5. Consejos para la configuracion del kernel

Hay que tomarse todo el tiempo necesario con xconfig o menuconfig. Asegurarse de incluir todo loimprescindible y quitar todo lo que no (modulos para dispositivos zip, soporte usb, video, tarjeta desonido, nic, raid, etc...). Se recomienda usar los modulos siempre que sea posible, esto hace al kernel maspequeno y mas rapido. Si no se esta seguro de que elegir resulta de gran ayuda consultar la documentacion.

Jose Antonio Escartın Vigo, Junio 2005.

Page 68: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)
Page 69: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 6

Interfaz grafico

En los sistemas Linux se tiene una vision diferente del entorno grafico. La interfaz que se presenta alusuario es independiente del nucleo del sistema operativo.

El nucleo de Linux (su kernel) esta completamente desacoplado de la interfaz grafica. Esto permiteseleccionar la interfaz con la que nos resulte mas comoda, en lugar de tener que seguir el dictado de alguieno de la potencialmente aleatoria “investigacion de mercado”.

Sin embargo, lo mas importante de esta decision es la estabilidad que implica tener este programaindependiente del nucleo. Si cae el GUI1 bajo Windows o MacOS, se tiene que volver a arrancar. BajoLinux, se pude matar el proceso y reiniciarlo sin afectar al resto de servicios del sistema (tales comoservicios de archivos, o de red).

6.1. X-Window

A mediados de 1980 se creo una fundacion para entornos de usuario grafico, indepenediente del sistemaoperativo llamado X-Windows. Las “X” simplemente definen el metodo por el cual se pueden comunicarlas aplicaciones con el hardware grafico. Tambien establece un conjunto de funciones de programacionbien definidas que podran ser llamadas para realizar la manipulacion basica de las ventanas.

La definicion basica de como se dibuja una ventana, un boton o un icono no incluye la definicion decomo estos se deberıan ver. En realidad X-Windows en su estado natural no tienen apariencia real. Elcontrol de la apariencia se delega en otro programa externo llamado gestor de ventanas.

Con los entornos de programacion y las interfaces de usuario tan poco amigables X-Windows tenıa elpotencial de convertirse en la interfaz final, pero a cambio contaba con la desventaja de ofrecer un disenoque parecıa como hecho “a trozos”.

El protocolo es abierto, lo cual significa que cualquiera puede escribir un cliente X o un servidor X.

Una de las mejores caracterısticas de X-Windows es que permite que las aplicaciones se ejecuten enuna maquina, pero se visualicen en otra distinta, suministra protocolos de red para realizar esta funcion.

6.1.1. Configuracion X-Windows

Linux ofrece la funcionalidad de poder ejecutar aplicaciones a traves de una red heterogenea, mediantela incorporacion de la implementacion XFree86 del estandar X11 del sistema X-Window, creado por elMIT2.

.

1Interfaz grafica de usuario2Instituto Tecnologico de Massachusetts

Page 70: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

52 Servidor Linux para conexiones seguras de una LAN a Internet

Historicamente, XFree86 ha sido una de las partes mas complejas de Linux en lo referente a instalaciony configuracion. Ya no es este el caso, en la mayorıa de las configuraciones estandar de hardware. Ahora lasdistribuciones mas populares de Linux lo instalan y configuran automaticamente. Ademas, con XFree86 v4,algunas de las partes mas complejas de la configuracion son gestionadas automaticamente.

Actualmente XFree86, el servidor X que usa Linux normalmente, se encuentra en el estandar X11R6.4,que se ha adaptado a los sistemas basados en Intel.

Hay que asegurarse de que se dispone de hardware apropiado para ejecutar XFree86, se debe tener unatarjeta de vıdeo que disponga de un chipset soportado y un monitor que permita la frecuencia escogida. Altrabajar directamente con el hardware, si no fuera compatible, se podrıa danar fısicamente el ordenador.

xf86Config

Es el configurador de X-Windows para Debian. Despues de leer los archivos /usr/X11/lib/doc, hay queejecutar uno de los siguientes comandos:

#xf86config, . . . para modo texto

#xf86cfg, . . . para modo grafico

A continuacion, se seleccionan las especificaciones de la tarjeta y el monitor. Esto generara el archivode configuracion /etc/X11/XF86Config-4.

Para probar la configuracion ejecutamos #startx.Si no arranca ha llegado el momento de adentrarse en el archivo XF86Config-4.

Archivo /etc/X11/XF86Config-4

Si se dispone de hardware poco frecuente, puede que sea necesario configurar manualmente XFree86.No se debe utilizar este archivo copiado y sin revisar, de otro sistema, otro ordenador o el ejemplo

que se expone mas adelante. Es necesario inspeccionar el archivo en busca de valores erroneos, arrancarel monitor con frecuencias no soportadas podrıa danar el equipo.

El archivo de configuracion esta dispuesto en secciones con el siguiente formato:

Section "Nombre de la seccion"Comando1 "Opcion"Comando2 "Opcion"Subsection "Nombre de la subseccion"

Comando3 "Opcion"EndSubSection

EndSection

A continuacion paso a detallar cada una de las secciones que contiene el archivo de configuracion:

Seccion Files

Esta seccion define los archivos y directorios importantes para XFree86. Las rutas de acceso a la basede datos de color (RGB), las definiciones de las fuentes y bibliotecas de modulos.

Seccion Modules

Se proporciona soporte para varios servicios mediante modulos de carga dinamica. Esto aumenta muchola flexibilidad en el modo de suministro de servicios, y en los servicios que los usuarios eligen usar enrealidad.

Jose Antonio Escartın Vigo, Junio 2005.

Page 71: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 6. Interfaz grafico 53

De este modo, tambien se proporciona un mecanismo mas general para ofrecer servicios, como soporteTrueType, que antes suministraban programas externos.

Los modulos pueden cargarse usando el comando Load o usando una SubSection. El uso de unaSubSection activa las opciones que se quieren pasar al modulo.

Seccion InputDevice

Es una de las muchas secciones que puede repetirse en el archivo de configuracion. Cada dispositi-vo (raton, teclado, pantalla tactil, . . . ) tiene su propia seccion InputDevice.

Define simplemente un dispositivo de entrada disponible. No implica que este dispositivo de hecho seuse. La seccion ServerLayout asociara este dispositivo con una presentacion en pantalla.

Seccion Device

Esta seccion define una tarjeta de vıdeo. Como con muchas de las otras secciones, no implica queel dispositivo se este usando, solo que esta disponible. Al igual que que la mayorıa de las secciones, laseccion Device usa un comando Identifier para nombrar a este dispositivo.

El comando Driver indica a XFree86 que modulo cargable debe usar para este dispositivo.Los controladores de dispositivos suelen aceptar multitud de opciones.

Seccion Monitor

Esta seccion define un monitor que este disponible para su uso, pero no implica que este usando enrealidad. Tampoco asocia al monitor con una tarjeta de vıdeo. Esto se hara en la seccion Screen. Cadaseccion Monitor tiene un comando Identifier para nombrarlo.

Todos estos rodeos pueden hacer parecer el sistema confuso, pero hacen que XFree86 sea enorme-mente flexible. Al definir el monitor independiente de la tarjeta de vıdeo, es mucho mas facil definir lasconfiguraciones multipantalla.

Seccion Screen

Esta seccion combina un Monitor y un Device, definidos en las secciones anteriores, para crear unapantalla logica. Tambien define una profundidad de color predeterminada, o el numero de bits de colorpor pixel.

Dentro de esta seccion se encuentran una o mas subsecciones Display. Estas subsecciones definen lascombinaciones de profundidad de color/resolucion para esta pantalla. Tambien suministran el tamano delos espacios de visualizacion o de la pantalla virtual. Despues de seleccionar una pantalla usando unapresentacion o la opcion de la lınea de comandos --screen, la profundidad de color de ese momentodeterminara que visualizacion se usara. La profundidad de color puede configuarse usando la opcion de lalınea de comandos --depth, o se usara la profundidad de color predeterminada.

Seccion ServerLayout

Esta seccion define una presentacion de pantallas y de dispositivos de entrada. Se puden definir unao mas pantallas. Si se definen varias pantallas, las opciones indicaran a XFree86 donde se encuentrafısicamente una con relacion a la otra. Por ejemplo:

Section "ServerLayout"Identifier "Main Layout"Screen "Screen 1" 0Screen "Screen 2" 1 RighOf "Screen 1"Screen "Screen 3" Relative "Screen 1" 2048 0

EndSection

Jose Antonio Escartın Vigo, Junio 2005.

Page 72: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

54 Servidor Linux para conexiones seguras de una LAN a Internet

Aquı se muestra que Screen 1 esta arriba, a la izquierda, Screen 2 se encuentra justo a la derecha deScreen 1, y Screen 3 esta 2048 pixels a la derecha de Screen 1. Esto le permite distribuir sus ventanas envarios monitores y moverse entre ellos con facilidad. Sin embargo, de manera predeterminada, no puedetener ventanas que esten solapadas entre varios monitores.

Al usar un nuevo modulo llamado Xinerama, se pueden tratar varios monitores como si fuese ununico espacio de trabajo, moviendo las ventanas alrededor de ellos sin fragmentarlas. Xinerama ha de sersoportado por el gestor de ventanas, en mi caso que uso Enlightenment si se puede.

Seccion ServerFlags

Esta seccion define varios indicadores de opcion de Xfree86. Las configuraciones predeterminadas pa-ra estos indicadores son validas en casi todas las situaciones y necesitaran modificaciones en contadasocasiones. Si se necesita investigar estas opciones, los comentarios que se encuentran en el archivo deconfiguracion son bastante clarificadores.

Ejemplo de un archivo /etc/X11/XF86Config-4

Cuadro 6.1: Archivo /etc/X11/XF86Config-4

# XF86Config-4 (XFree86 X Window System server configuration file)

#

# This file was generated by dexconf, the Debian X Configuration tool, using

# values from the debconf database.

#

# Edit this file with caution, and see the XF86Config-4 manual page.

# (Type "man XF86Config-4" at the shell prompt.)

#

# This file is automatically updated on xserver-xfree86 package upgrades *only*

# if it has not been modified since the last upgrade of the xserver-xfree86

# package.

#

# If you have edited this file but would like it to be automatically updated

# again, run the following commands as root:

#

# cp /etc/X11/XF86Config-4 /etc/X11/XF86Config-4.custom

# md5sum /etc/X11/XF86Config-4 >/var/lib/xfree86/XF86Config-4.md5sum

# dpkg-reconfigure xserver-xfree86

Section "Files"

FontPath "unix/:7100" # local font server

# if the local font server has problems, we can fall back on these

FontPath "/usr/lib/X11/fonts/misc"

FontPath "/usr/lib/X11/fonts/cyrillic"

FontPath "/usr/lib/X11/fonts/100dpi/:unscaled"

FontPath "/usr/lib/X11/fonts/75dpi/:unscaled"

FontPath "/usr/lib/X11/fonts/Type1"

FontPath "/usr/lib/X11/fonts/CID"

FontPath "/usr/lib/X11/fonts/Speedo"

FontPath "/usr/lib/X11/fonts/100dpi"

FontPath "/usr/lib/X11/fonts/75dpi"

EndSection

Section "Module"

Load "GLcore"

Load "bitmap"

Load "dbe"

Load "ddc"

Load "dri"

Load "extmod"

Load "freetype"

Load "glx"

Load "int10"

Load "record"

Load "speedo"

Load "type1"

Load "vbe"

EndSection

Section "InputDevice"

Identifier "Generic Keyboard"

Driver "keyboard"

Option "CoreKeyboard"

Option "XkbRules" "xfree86"

Option "XkbModel" "pc105"

Option "XkbLayout" "es"

EndSection

Jose Antonio Escartın Vigo, Junio 2005.

Page 73: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 6. Interfaz grafico 55

Section "InputDevice"

Identifier "Configured Mouse"

Driver "mouse"

Option "CorePointer"

Option "Device" "/dev/psaux"

Option "Protocol" "PS/2"

Option "Emulate3Buttons" "true"

Option "ZAxisMapping" "4 5"

EndSection

Section "InputDevice"

Identifier "Generic Mouse"

Driver "mouse"

Option "SendCoreEvents" "true"

Option "Device" "/dev/input/mice"

Option "Protocol" "ImPS/2"

Option "Emulate3Buttons" "true"

Option "ZAxisMapping" "4 5"

EndSection

Section "Device"

Identifier "Generic Video Card"

Driver "vesa"

Option "UseFBDev" "true"

EndSection

Section "Monitor"

Identifier "Generic Monitor"

HorizSync 28-50

VertRefresh 43-75

Option "DPMS"

EndSection

Section "Screen"

Identifier "Default Screen"

Device "Generic Video Card"

Monitor "Generic Monitor"

DefaultDepth 24

SubSection "Display"

Depth 1

Modes "1600x1200" "1280x1024" "1280x960" "1152x864" "1024x768" "800x600" "640x480"

EndSubSection

SubSection "Display"

Depth 4

Modes "1600x1200" "1280x1024" "1280x960" "1152x864" "1024x768" "800x600" "640x480"

EndSubSection

SubSection "Display"

Depth 8

Modes "1600x1200" "1280x1024" "1280x960" "1152x864" "1024x768" "800x600" "640x480"

EndSubSection

SubSection "Display"

Depth 15

Modes "1600x1200" "1280x1024" "1280x960" "1152x864" "1024x768" "800x600" "640x480"

EndSubSection

SubSection "Display"

Depth 16

Modes "1600x1200" "1280x1024" "1280x960" "1152x864" "1024x768" "800x600" "640x480"

EndSubSection

SubSection "Display"

Depth 24

Modes "1600x1200" "1280x1024" "1280x960" "1152x864" "1024x768" "800x600" "640x480"

EndSubSection

EndSection

Section "ServerLayout"

Identifier "Default Layout"

Screen "Default Screen"

InputDevice "Generic Keyboard"

InputDevice "Configured Mouse"

InputDevice "Generic Mouse"

EndSection

Section "DRI"

Mode 0666

EndSection

6.1.2. Arrancar X-Windows

Para entrar en el entorno X-Windows simplemente es necesario ejecutar:

$startx

Para poder elegir entre que sistema de ventanas queremos arrancar tenemos que modificar el archivode configuracion de usuario ˜/.xinitrc.

$vi ~/.xinitrc, . . . para editar el archivo.

Anadir las siguientes lıneas para arrancar KDE:

#!/bin/sh

startkde

Jose Antonio Escartın Vigo, Junio 2005.

Page 74: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

56 Servidor Linux para conexiones seguras de una LAN a Internet

Anadir las siguientes lıneas para arrancar GNOME:

#!/bin/sh

gnome-session

Si el archivo no esta vacıo, probablemente la ultima lınea sea un comando exec. Es necesario cambiarlopor la opcion que hayamos escogido.

6.2. Gestores de ventanas

El gestor de ventanas se preocupa de dibujar los bordes, usar el color y hacer que el entorno seaagradable a la vista. Solo se requiere usar las llamadas estandares al subsistema X-Windows para dibujarsobre la pantalla. El gestor de ventanas no dicta como debe utilizar las ventanas la propia aplicacion. Estosignifica que los programadores de aplicaciones tienen la flexibilidad adecuada para desarrollar la interfazde usuario mas intuitiva para la aplicacion en particular.

Son programas clientes de las “X”, forman parte del entorno de escritorio o, en otros casos, se ejecutanindependientes de un escritorio. Su proposito principal es controlar la forma en que las ventanas graficasson posicionadas, redimensionadas o movidas. Controlan las barras de tıtulos, el comportamiento del foco,los vınculos del boton del raton y teclas especificadas por el usuario.

Los gestores de ventanas generalmente son mas pequenos que los escritorios y estan mas orientadoshacia usuarios expertos, que se sienten mas a gusto con un interfaz de lınea de comandos.

Como las “X” no especifican un gestor de ventanas en particular, a lo largo de los anos han aparecidomuchos. Algunos de los mas populares para Linux son fvwm2, Window Maker, blackbox y AfterStep. Mu-chos gestores estan basados bien en el Tab Window Manger, un administrador de ventanas muy simple yque consume pocos recursos, o bien en NeXTSTEP, muy completo y altamente configurable.

Paso a describir las caracterısticas de los mas extendidos, aunque no todos estan aquı, existen muchosotros:

twm: Tab Windows Manager, gestor de ventanas minimalista que proporciona el conjunto de utili-dades mas basico de cualquier otro.

fvwm2: F Virtual Windows Manager, un derivado de twm que incorpora un aspecto visual en 3D ytiene menos requisitos de memoria. Es uno de los mas extendidos.

AfterSTEP: Emula la interfaz NeXT y esta basado en fvwm2.

wmaker: WindowMaker, completısimo gestor de ventanas GNU diseado para emular el aspecto delentorno NeXT.

blackbox: Tambien inspirado en NeXT. Es un muy ligero y rapido.

Enlightenment: Era el gestor predeterminado de GNOME. Es muy grande, pero muy atractivo a lavista. Posiblemente es el mas configurable de todos.

Sawfish: Enormemente configurable, pero mucho mas ligero que Enlightenment es ahora el gestorpor defecto en el entorno de escritorio GNOME, pero puede ser usado sin el. Se esta convirtiendorapidamente en uno de los gestores con mas aceptacion.

Kwin: El gestor de ventanas KWin es el gestor por defecto para el entorno KDE. Soporta temaspersonalizados.

Jose Antonio Escartın Vigo, Junio 2005.

Page 75: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 6. Interfaz grafico 57

Estos gestores pueden ejecutarse sin los entornos de escritorio para poder observar sus diferencias,mediante el siguiente comando:

$xinit -e <path-gestor-ventanas>

Donde <path-gestor-ventanas> es el path del archivo binario del gestor de ventanas. Si no sabemosel path, lo podemos buscar con el comando which.

Tambien existe un paquete llamado wmanager que permite seleccionar el gestor de ventanas al arrancarlas “X”.

6.3. Entornos de escritorio

A diferencia de los gestores de ventanas, los escritorios incluyen la posibilidad de colocar archivosy directorios directamente sobre el fondo del mismo. Incluyen la capacidad de arrastrar y soltar, estopermite que los iconos que representan archivos sean arrastrados con el raton y soltados sobre un iconoque representa una aplicacion. La aplicacion se abrira entonces, utilizando el archivo. Los escritoriostambien pueden suministrar otras aplicaciones.

En general, los escritorios estan orientados a los usuarios mas novatos (aunque los usuarios avanzadostambien los encuentran increıblemente utiles). A menudo, un usuario de escritorio puede efectuar todo sutrabajo sin invocar nunca a una lınea de comandos.

Desde la aparicion de KDE 3.3, parece haber eclipsado al resto de entornos de escritorio, GNOMEincluido. Ello es debido a que han desarrollado un interfaz mas versatil y agradable a la vista.

Al final, la eleccion del gestor de ventanas es solo cuestion de gustos. En mi caso, para la elaboraciondel proyecto he utilizado GNOME como entorno de escritorio y las bibliotecas KDE para ejecutar laaplicacion Kile, un editor de textos LATEX.

6.3.1. Kde

KDE1 es el entorno de escritorio que actualmente copa el mercado. Es ligeramente diferente de losgestores de ventanas tıpicos. En lugar de describir como se debe ver la interfaz, KDE proporciona unconjunto de bibliotecas que, si se usan, permiten a una aplicacion mejorar algunas caracterısticas especialesque no las ofrecen el resto. Esto incluye cosas como soporte a pinchar y arrastrar, soporte de impresionestandarizado, etc.

El punto negativo de este tipo de tecnicas de gestion de ventanas es que una vez que una aplicacionse disena para ejecutarse con KDE, requiere KDE para trabajar. Esto es un gran cambio con respecto alos primeros gestores de ventanas donde las aplicaciones eran independientes del gestor.

Esta basado en las bibliotecas Qt3. Desde el punto de vista del programador, KDE ofrece unas biblio-tecas que son mucho mas sencillas de usar que el trabajo directo con la interfaz “X”. Se ofrece un conjuntode herramientas orientadas a objetos estandar que permite construir otras herramientas, algo que soloesta disponible con X-Windows.

1K Desktop Environment, entorno de escritorio K.

Jose Antonio Escartın Vigo, Junio 2005.

Page 76: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

58 Servidor Linux para conexiones seguras de una LAN a Internet

6.3.2. Gnome

Hasta hace pocos anos habıa algunos problemas con las restricciones de licencias impuestas por losdesarrolladores de la biblioteca Qt3, en la que KDE esta basado. Estaba prohibido el uso comercial deKDE sin pagar derechos. El proyecto GNOME1 comenzo debido a esta resticcion.

Hace un tiempo se reviso la licencia de KDE. La licencia revisada, conocida como QPL, es ahora masabierta y permite su uso comercial. Sin embargo, es distinta la licencia GPL y el estilo de licencias deBerkley usado por la mayorıa de los paquetes que usan las distribuciones Linux.

Tanto GNOME, como KDE, ofrece un entorno de escritorio completo y un marco de aplicaciones paradesarrollo tan bueno como de facil uso. Lo que hace a GNOME diferente es como alcanza sus objetivos.

A diferencia de KDE, GNOME no es un gestor de ventanas en si mismo. Necesita apoyarse en ungestor de ventanas externo, que se encuentra en lo mas alto de su estructura y muestra la apariencia ge-neral del escritorio. El gestor de ventanas por defecto es Sawfish, pero contamos con multitud de opcionesdisponibles (Vease seccion 6.2

Esta basado en las bibliotecas GTK+2 que permiten el desarrollo del entorno y las caracterısticasde gestion de sesion, que nosotros como usuarios no vemos. Desde el punto de vista del desarrollador,GNOME es muy interesante. Define sus interfaces con el resto del mundo mediante tecnologıa CORBA2.De esta manera, cualquier sistema de desarrollo que pueda comunicarse usando CORBA puede utilizarsepara desarrollar aplicaciones compiladas en GNOME.

6.3.3. Otros entornos de escritorio

No solo existen KDE o GNOME, tambien podemos encontrar estos otros entornos de escritorio:

CDE3: Desarrollado por algunos fabricantes de Unix, es uno de los mas primitivos. A sido portadoa Linux, pero no es libre ni gratuito.

XFce: Esta basado en las bibliotecas GTK+2, al igual que GNOME, y ofrece una interfaz similara CDE. Su ventaja es que es sencillo y utiliza pocos recursos, es ideal para maquinas con pocacapacidad o aquellos que prefieran ahorrar recursos para sus aplicaciones. Trabaja especialmentebien con programas GNOME, peor tambien maneja sin dificultad aplicaciones KDE.

1Entorno de modelo de objeto de red GNU.2Common Object Request Broker Architecture, es un estandar que establece una plataforma de desarrollo de sistemas

distribuidos facilitando la invocacion de metodos remotos bajo un paradigma orientado a objetos.3Common Desktop Environment, entorno de escritorio comun.

Jose Antonio Escartın Vigo, Junio 2005.

Page 77: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 7

Infraestructura de redes

Para podernos situar en el marco de las configuraciones de redes, primero debemos conocer una seriede conceptos y arquitecturas que se describen en las secciones siguientes del presente capıtulo.

Esta seccion se ha basado en la documentacion que se puede obtener en:http://eia.udg.es/ ˜atm/tcp-ip/index.html

7.1. Arquitectura de redes (Modelo OSI)

Antes de conocer realmente los servicios de red y la seguridad en redes, primero se tiene que conocerla arquitectura de redes, como son y como estan disenadas.

Cada diseno de red se divide en siete partes logicas, cada una de las cuales controla una parte diferentede la tarea de comunicacion. Este diseno de siete capas se denomina Modelo de referencia OSI. Dichomodelo fue creado por la Organizacion internacional de estandares (ISO, International Standard Organi-zation) para proporcionar un modelo logico para la descripcion de comunicaciones de red y ayuda a lossuministradores a estandarizar los equipos y el software. La tabla 7.1 muestra la composicion del modelo.

Cuadro 7.1: Estructura del modelo de referencia OSI

N.o de capa OSI Nombre de la capa Protocolos de ejemploCapa 7 Aplicacion DNS, FTP, HTTP, SMTP, TelnetCapa 6 Presentacion XDRCapa 5 Sesion Pipes con nombre, RPCCapa 4 Transporte NetBIOS, TCP, UDPCapa 3 Red ARP, IP, IPX, OSPFCapa 2 Enlace de datos Acrcnet, Ethernet, Token RingCapa 1 Fısica Coaxial, Fibra optica, UTP

Capa Fısica

Esta capa es el medio fısico real que contiene los datos. Los distintos tipos de medios siguen diferentesestandares. Por ejemplo, el cable coaxial, el par trenzado (UTP, Unshielded Twisted Pair) y el cable de fibraoptica sirven para distintos propositos: el cable coaxial se usa en instalaciones LAN antiguas ası como enservicios de Internet a traves de redes de TV por cable. UTP se usa normalmente en cableados domesticos,mientras que la fibra optica se suele usar para conexiones de distancias largas que requieren una capacidadde carga alta.

Page 78: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

60 Servidor Linux para conexiones seguras de una LAN a Internet

Capa de enlade datos

Esta capa relaciona los distintos elementos del hardware de interfaz de red en la red. Ayuda a codificarlos datos y a colocarlos en el medio fısico. Tambien permite que los dispositivos se identifiquen entresı cuando intentan comunicarse con otro nodo. Un ejemplo de una direccion de la capa de enlace de datoses la direccion MAC de nuestra tarjeta de red. En una red Ethernet, las direcciones MAC son el medio porel que se puede encontrar a nuestro ordenador en la red. Las empresas utilizaban muchos tipos diferentesde estandares de enlace entre 1970 y 1980, la mayorıa determinados por su suministrador de hardware.IBM utilizaba Token Ring para sus redes de PC y SNA para la mayor parte de su hardware mas grande;DEC utilizaba un estandar diferente y Apple otro. La mayorıa de las empresas actuales utilizan Ethernetporque es el mas extendido y economico.

Capa de red

Esta capa es la primera parte que podemos ver cuando interactuamos con sistemas de red TCP/IP. Lacapa de red permite las comunicaciones entre diferentes redes fısicas utilizando una capa de identificacionsecundaria. En los sistemas de red TCP/IP, se trata de una direccion IP. Esta direccion IP en nuestroordenador nos ayuda a enrutar los datos de un lugar a otro de la red y sobre Internet. Esta direcciones un numero unico para identificar nuestro ordenador en una red basada en IP. En algunos casos, estenumero es unico para un ordenador; ninguna otra maquina en Internet puede tener dicha direccion. Esel caso de las direcciones IP normales que se pueden enrutar publicamente. En las LAN internas, lasmaquinas normalmente utilizan bloques de direcciones IP. Estas se han reservado solo para su uso internoy no se enrutaran por Internet. Estos numeros pueden no ser unicos de una red a otra, pero siguen siendounicos dentro de cada LAN. Aunque dos ordenadores pueden tener la misma direccion IP privada sobrediferentes redes internas, nunca tendran la misma direccion MAC, ya que es un numero de serie asignadopor el fabricante. Existen excepciones a esta regla pero, en general, la direccion MAC identificara de formaunica dicho ordenador o al menos, la tarjeta de interfaz de red (NIC, Network Interface Card) dentro delordenador.

Capa de transporte

Este nivel lleva el paquete de datos desde el punto A hasta el punto B. Es la capa donde residen losprotocolos TCP y UDP.

El protocolo de control de transmision (TCP, Transmission Control Protocol) basicamente asegura quelos paquetes se envıan y se reciben con consistencia en el otro punto. Permite una correccion de errores anivel de bits, una retransmision de segmentos perdidos y una reorganizacion de los paquetes y el traficodesfragmentado.

El protocolo de datagramas de usuario (UDP, User Datagram Protocol) es un esquema mas ligeroempleado para trafico multimedia y para transmisiones cortas, como las solicitudes DNS. Tambien efectuadeteccion de errores, pero no proporciona ninguna facilidad para reorganizar los datos o asegurar la llegadade datos. Esta capa y la capa de red es donde operan la mayorıa de los cortafuegos.

Capa de sesion

La capa de sesion se encuentra implicada principalmente en la configuracion de una conexion y ensu cierre posterior. Tambien realiza autenticaciones para determinar que partes pueden participar en unasesion. Se utiliza principalmente en aplicaciones especıficas.

Capa de presentacion

Esta capa controla determinadas codificaciones y descodificaciones requeridas para presentar los datosen un formato legible para la parte receptora. Algunas formas de cifrado pueden considerarse como pre-sentacion. La distincion entre la capa de aplicacion y la de sesion es muy delicada y algunos afirman quela capa de presentacion y la de aplicacion son basicamente iguales.

Jose Antonio Escartın Vigo, Junio 2005.

Page 79: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 7. Infraestructura de redes 61

Capa de aplicacion

Este nivel final es donde el programa de la aplicacion obtiene los datos, que pueden ser FTP, HTTP,SMTP, etc. Aquı, algunos programas se encargan de controlar los datos reales dentro del paquete y seajustan las soluciones profesionales de seguridad, ya que la mayorıa de los ataques se producen en estacapa.

7.2. Direcciones IP

Cada computador (host) y cada dispositivo de encaminamiento (router) tendra una direccion unicacuya longitud sera de 32 bits, que sera utilizada en los campos direccion origen y direccion destino dela cabecera IP. Esta direccion consta de un identificador de red y de un identificador de host. La direc-cion esta codificada para permitir una asignacion variable de los bits utilizados al especificar la red y elcomputador. La direccion IP mas pequena es la 0.0.0.0 y la mayor es 255.255.255.255.

Existen tres clases de redes que se pueden clasificar teniendo en cuenta la longitud del campo de red ydel campo host. La clase a la que pertenece una direccion puede ser determinada por la posicion del primer0 en los cuatro primeros bits. Las direcciones estan codificadas para permitir una asignacion variable debits para especificar la red y el host.

Clase A: Pocas redes, cada una con muchos ordenadores. 1 bit de seleccion de clase A, 7 bits de redy 24 bits de host (Por ejemplo ARPANET)

Clase B : Un numero medio de redes, cada una con un numero medio de ordenadores. 2 bits deseleccion de clase B, 14 bits de red y 16 bits de host.

Clase C : Muchas redes, cada una con pocos ordenadores. 3 bits de seleccion de clase C, 21 bits dered y 8 bits de host (LANs).

Clase D : Permite hacer multitransmision (o multicasting) en la cual el datagrama se dirige a multiplesordenadores. Podemos enviar un paquete IP a un grupo de maquinas que por ejemplo pueden estarcooperando de alguna manera mediante la utilizacion de una direccion de grupo

Clase E : No se utiliza, queda reservado para otros usos

Figura 7.1: Rango de direcciones IP

En el siguiente cuadro podemos observar el numero de redes y de ordenadores por red en cada una delas tres clases primarias de direcciones IP.

Jose Antonio Escartın Vigo, Junio 2005.

Page 80: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

62 Servidor Linux para conexiones seguras de una LAN a Internet

Cuadro 7.2: N.o de Hosts por red

Clase Bits en el prefijo Maximo n.o de redes Bits en el sufijo Maximo n.o dehosts por red

A 7 128 24 16777216B 14 16384 16 65536C 21 2097152 8 256

Normalmente las direcciones se suelen escribir en notacion decimal con puntos (calculando cada ochobits). Por ejemplo, la direccion 82CE7C0D (1000 0010 1100 1110 0111 1100 0000 1101 que es de clase B)se escribe como 130.206.124.13.

82 = 8*16 + 2 = 128 + 2 = 130CE = C*16 + E = 12 * 16 + 14 = 192 + 14 = 2067C = 7 * 16 + C = 112 + 12 = 1240D = D = 13

Algunas direcciones de red se utilizan como direcciones especiales (Vease figura 7.2):

Este host : La direccion 0.0.0.0 significa esta red o este host y unicamente es usada por los ordenadorescuando son arrancados, sin que vuelva a utilizarse posteriormente. De esta forma las maquinas sepueden referir a su propia red sin saber su numero, pero la clase s ha de ser conocida para sabercuantos ceros debe incluir.

Un host de esta red : Poniendo el campo red todo a ceros (es necesario saber la clase de la red paradecidir el numero de ceros).

Difusion de red local o limitada: La direccion 255.255.255.255 (todos 1s) se usa como direccion paraindicar todos los ordenadores de la red indicada y es utilizada para hacer difusion.

Difusion de una red distante o dirigida (broadcast): Tambien se puede hacer difusion a una reddistante poniendo la direccion de la red y rellenando el campo ordenador con 1s.

Retrociclo: Las direcciones 127.xx.yy.zz se reservan para pruebas de realimentacion (localhost). Lospaquetes que tienen esta direccion no son enviados por la red sino que son procesados localmente yse tratan como si fueran paquetes de entrada (pasan por la tarjeta de red, pero sin salir del host).Esto permite que los paquetes se envıen a la red local sin que el transmisor conozca su numero. Estacaracterıstica tambien se usa para la deteccion de fallos en el software de red.

Figura 7.2: Direcciones IP reservadas

Jose Antonio Escartın Vigo, Junio 2005.

Page 81: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 7. Infraestructura de redes 63

Para estar seguros de que las direcciones Internet son unicas, todas las direcciones de Internet sonasignadas por un autoridad central. La IANA (Internet Assigned Number Authority) tiene el controlsobre los numeros asignados. Sin embargo, cuando una organizacion quiere una direccion debe obtenerlade INTERNIC (Internet Network Information Center). La autoridad central solo es necesaria para asignarla porcion de la direccion correspondiente a la red, cuando una organizacion ya tiene su prefijo, puedeasignar un unico sufijo a cada ordenador sin contactar con la autoridad central.

Una maquina puede estar conectada a varias redes y tener una direccion IP diferente en cada red. Eneste caso recibe el nombre de “multihomed”. Esto se utiliza para aumentar la seguridad, si una red falla elhost aun esta conectado a internet utilizando la otra red. Por otra parte, tambien es usado para aumentarel rendimiento de la red, pues permite enviar directamente el trafico a una red en concreto sin tener quepasar por los dispositivos de encaminamiento.

Que la direccion de la red este guardada en la direccion Internet tiene algunos inconvenientes:

Si la direccion IP identifica la red a la que se conecta el ordenador, no al ordenador que tenemosconectado, no es posible asignarle a un ordenador una direccion IP permanente. Por lo tanto, simovemos un ordenador de una red a otra su direccion IP debe cambiar. Este problema se da cuando,por ejemplo, nos llevamos un ordenador portatil de un sitio a otro y queremos conectarlo a la red.

Como el numero de ordenadores asignados a la clase C (255) puede resultar insuficiente en muchoscasos y que la transicion a la clase B no es facil debido a que muchos programas no permiten queuna red fısica tenga multiples direcciones, no se pueden introducir nuevas direcciones poco a poco yes necesario reconfigurar toda la red para la nueva clase.

Como existe la facilidad de que una maquina pueda estar conectada a dos redes y por lo tantotenga dos direcciones diferentes, el encaminamiento se hace teniendo en cuenta la direccion IP, elcomportamiento de los paquetes puede ser totalmente diferente dependiendo de la direccion queestemos utilizando. Esto puede resultar sorprendente para los usuarios.

En algunos casos, el conocer una direccion IP puede resultar insuficiente para alcanzar la maquinaque utiliza esta direccion. Debido a la configuracion de la red y dependiendo de por donde se enrutenlos paquetes en nuestra red, algunos equipos pueden resultar inalcazables.

7.2.1. Datagramas

Los datos proporcionados por la capa de transporte son divididos en datagramas y transmitidos atraves de la capa de red (capa internet), por el protocolo IP. Durante el camino puede ser fragmentado enunidades mas pequenas, si deben atravesar una red o subred cuyo tamano de paquete sea mas pequeno.En la maquina destino, estas unidades son reensambladas para volver a tener el datagrama original quees entregado a la capa de transporte.

En la cabecera hay una parte fija de 20 bytes y una parte opcional de longitud variable. En la figura7.3 se puede observar el formato de la cabecera IP.

7.2.2. Encaminamiento IP (router y gateway)

Cuando un paquete llega a un dispositivo de encaminamiento, se debe determinar cual es la direcciondel siguiente dispositivo de encaminamiento teniendo en cuenta la direccion IP destino que hay almace-nada en el campo correspondiente del paquete y de la informacion que hay almacenada en las tablas deencaminamiento. Hay que tener en cuenta que es necesario realizar una conversion entre la direccion IPy la direccion MAC (cuando el enlace entre los dos dispositivos de encaminamiento sea una LAN) que seefectua de manera automatica mediante el protocolo ARP.

Esta tabla puede ser estatica o dinamica. En el primer caso puede contener rutas alternativas queseran utilizadas cuando algun dispositivo de encaminamiento no este disponible. Las tablas dinamicas sonmas flexibles cuando aparecen errores o congestion en la red. Estas tablas tambien pueden proporcionarservicios de seguridad y de prioridad, por ejemplo, para asegurarse que a ciertos datos no se les permitapasar por determinadas redes.

Jose Antonio Escartın Vigo, Junio 2005.

Page 82: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

64 Servidor Linux para conexiones seguras de una LAN a Internet

Figura 7.3: Cabecera del datagrama IP

Otra tecnica de encaminamiento es el encaminamiento en la fuente. En este caso, como ya comentamosanteriormente, el ordenador origen incluye en la cabecera del paquete la direccion de los dispositivos deencaminamiento que debe utilizar el paquete.

7.2.3. Mascaras de red y notacion de barra inclinada

El proposito de configurar una mascara es, en primer lugar, decirle al sistema que bits de la direccionIP corresponden al componente de red y que bits corresponden al componente host. Basados en estos doscomponentes de red, un host puede determinar cual es su direccion de broadcast o de difusion de red (esdecir, la direccion IP que corresponde al envıo de un paquete a todas las maquinas de la red local).

Normalmente nos referiremos a las redes IP como mascaras de red o con una barra inclinada y unnumero. Ambas son formas de definir el tamano de la red. Para entenderlas tenemos que conocer un pocode la estructura de la direccion IP. Una direccion IPv4 estandar esta formada por 32 bits. Normalmentese representa en cuatro secciones, con cuatro octetos de 8 bits cada una. Cada octeto, normalmente seconvierte de un conjunto de bits binarios, a un numero decimal para facilitar su lectura. Por tanto, cuandovemos 192.168.1.1, el ordenador ve lo siguiente:

11000000 10101000 00000001 00000001

Una mascara de red normalmente es un conjunto de cuatro numeros que nos indica donde finalizan losbits de red y donde comienzan los de hosts. Normalmente tiene la siguiente apariencia:

255.255.255.0

Una forma rapida de calcular el tamano de una red representada por una mascara de red es restar cadaocteto de 256 y multiplicar dichos numeros entre sı. Por ejemplo, la mascara de red de 255.255.255.248describe una red de 8 IPs porque:

(256-255) * (256-255) * (256-255) * (256-248) = 8

Una mascara de red de 255.255.255.0 describe una red de 256 IPs ya que:

(256-255) * (256-255) * (256-255) * (256-0) = 256

Jose Antonio Escartın Vigo, Junio 2005.

Page 83: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 7. Infraestructura de redes 65

Y por ultimo, una mascara de red de 255.255.0.0 describe una red de 65.536 direcciones IP porque:

(256-255) * (256-255) * (256-0) * (256-0) = 65.536

La notacion de barra inclinada es algo mas difıcil de entender, aunque utiliza el mismo concepto. Elnumero que se encuentra detras de la barra inclinada indica la cantidad de bits que describen la direccionde red (para una explicacion con mas detalle, vease la seccion 7.2.4). Si restamos de 32 dicho numeroobtenendremos el numero de bits que desciben la direccion de host dentro de la red local. Por ejemplo lanotacion 192.168.0.0/24 describe una red que empieza en 192.168.0.0 que contiene 256 direcciones IP detamano (es decir, el mismo tamano que el de arriba con una mascara de red de 255.255.255.0).

Los 32 bits en una direccion IP menos los 24 bits para el prefijo de red deja 8 bits activados (igual a 1)para los hosts de la red local. Un numero binario de bits de 11111111 convertido en decimal es 255. Si lasmatematicas binarias nos resultan complicadas, podemos utilizaremos la siguiente tabla para recordarlo.

Cuadro 7.3: Notacion de barra inclinada en IPs

Notacion de barra inclinada Tamano de la red/24 256 direcciones IP/25 128 direcciones IP/26 64 direcciones IP/27 32 direcciones IP/28 16 direcciones IP/29 8 direcciones IP/30 4 direcciones IP/31 2 direcciones IP/32 1 direccion IP

7.2.4. Subneting (CIDR)

Incluso si tenemos una clase de direcciones A o B, no es realista configurar la red como un gran grupode maquinas. Aparte de resultar una pesadilla para administrar, resulta muy difıcil encontrar una redcapaz de tener tantas maquinas agrupadas juntas. Por ejemplo, Ethernet solo permite configurar 1.024hosts por segmento.

Para resolver este problema, estas redes enormes se dividen en subredes mas pequenas. Esto se haceexpandiendo el numero de bits usados para representar la direccion de red, una tecnica conocida comosubneting o CIDR (Classless Inter Domain Routing, enrutamiento interdominio sin clases) debido a queviola la descripcion de las redes A, B y C.

Un lugar tıpico para ver esto es en las redes IP privadas. La mayorıa de las organizaciones no tienen 16millones de computadoras, sino que cada division de la organizacion se convierte en una subred. La mayorıade las veces, la eleccion razonable es escoger una mascara de 24 bits (255.255.255.0) para conseguir 254maquinas por red (recordamos que .0 es la direccion de red y .255 la direccion de broadcast), un nivelbastante razonable de agrupamiento de maquinas.

Cuando se utilizan subredes, en las tablas de encaminamiento se agregan entradas de la forma (estared, subred, 0) y (esta red, esta subred, 0). De esa forma, un dispositivo de encaminamiento de la subredk sabe como llegar a todas las subredes y a todos los hosts de la subred k. No necesita saber nada de loshosts de otras subredes. Cada encaminador lo que debe hacer es un AND booleano con la mascara de lasubred para eliminar el numero de host y buscar la informacion resultante en sus tablas.

Jose Antonio Escartın Vigo, Junio 2005.

Page 84: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

66 Servidor Linux para conexiones seguras de una LAN a Internet

7.2.5. Enmascaramiento IP (NAT, Network Adress Translation)

Un escenario comun para los usuarios familiares y de oficinas pequenas es tener una cuenta de conexionpunto a punto para varias computadoras que quieran usarla (con frecuencia, al mismo tiempo). Para haceresto aun mas difıcil, solo tenemos una direccion IP.

El enmascaramiento de IP resuelve este problema permitiendo a nuestro sistema Linux hacer dostrucos: actuar como un enrutador y realizar la traslacion de direcciones de red, NAT.

Nuestra red LAN, usa un rango de direcciones IP privadas, para redes pequenas, el rango 192.168trabaja bien.

Lo que queremos es que nuestro servidor enrute los paquetes entre las maquinas de la LAN de formaque cuando vayan a Internet, parezca que los origina el. Cuando vuelve un paquete como respuesta, elservidor sabe que realmente el paquete va destinado a una maquina de la red y se lo envıa.

No se puede asumir como unica forma de funcionamiento el enmascaramiento de IP con un router.Una interfaz de red ppp0 puede ser cualquier tipo de interfaz de red. Por ejemplo, en una configuracionde firewall la interfaz de salida puede ser, simplemente, una segunda tarjeta Ethernet que la une a la redcorporativa.

Configuracion de IPTables para NAT

Lo primero que necesitamos es asegurarnos de que tenemos cargado el modulo iptables nat en el kernel.

Despues instalaremos el siguiente paquete:#apt-get install ipmasq

Si nuestra red contiene la red 192.168.1.0 y el servidor conectado a un interfaz ppp0 desde el que serecibe el acceso a internet. Para realizar el enmascaramiento IP necesitamos utilizar el firewall IPTables,ejecutamos las siguientes instrucciones

#iptables -t nat -F : Configura el comportamiento de iptables, le dice que va a usar nat y quitalas politicas actuales para nat (-F)

#iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 0.0.0.0/0 -j MASQUERADE :Anade la regla de enmascaramiento. Todos los paquetes que salgan por enrutados desde la red aInternet se enmascaran

#echo 1 > /proc/sys/net/ipv4/ip_forward : Activamos el ip forward

El mecanismo de enmascaramiento se ocupa de reescribir el paquete y dejarlo en Internet. Cuando unpaquete entra en la interfaz ppp0 desde Internet, Linux comprueba con el mecanismo de enmascaramientosi el paquete esta realmente destinado para alguien de dentro de la red. Si es ası, el paquete se desenmascaray despues se envıa al emisor original de la LAN.

Proxies: Problemas con el enmascaramiento

Desafortunadamente, no todos los protocolos enmascaran bien. FTP es un ejemplo perfecto de esto.Cuando un cliente FTP se conecta a un servidor FTP, empieza conectandose al puerto 21 del servidor. Elcliente pasa toda la informacion de usuario/contrasena a traves de este puerto. Sin embargo, cuando elcliente pide al servidor que le envıe un archivo, el servidor inicia una conexion nueva de vuelta al cliente. Siel cliente esta enmascarado, entonces la maquina probablemente rechace la conexion porque no tendra unprograma escuchando en ese puerto y la transferencia se interrumpira.

FTP es uno de los muchos protocolos que hacen cosas extranas. A fin de permitir el enmascaramiento deestos protocolos, debemos colocar un proxy especial. IPTables esta equipado con los proxies mas comunes:FTP, IRC y otros. Para usar estos modulos simplemente hay que incluir la sentencia insmod en tiempode arranque. Por ejemplo, podemos anadir a los scripts de arranque:

insmod ip_masq_ftpinsmod ip_masq_irc

Jose Antonio Escartın Vigo, Junio 2005.

Page 85: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 7. Infraestructura de redes 67

Tambien lo podemos hacer con reglas, anadiendo el redireccionamiento de los puertos que utilice elprotocolo. Esto se observa en el siguiente ejemplo:

Enviamos el trafico que entra, dirigido por eth0 al puerto 80 (web), a nuestro proxy squid (transparente)por el puerto 3128 de nuestra maquina:

#iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

7.3. Resolucion de direcciones

Dos ordenadores de una red fısica solo pueden comunicarse si cada uno de ellos conoce la direccionfısica del otro. Cuando enviamos un paquete IP entre estas dos maquinas solo indicamos la direccion IP.Por lo tanto es necesario tener un mecanismo que nos proporcione la correspondencia entre la direccionIP y la direccion fısica.

Como la direccion IP es virtual, pues es mantenida por software, ningun elemento hardware entiendela relacion: entre el prefijo de la direccion IP y la red, y la relacion entre el sufijo de la direccion IP y elhost.

La traslacion entre direcciones IP y direcciones fısicas es local a la red. Un ordenador solo puede ob-tener la direccion fısica de otro si ambos se encuentran en la misma red fısica.

Existen tres mecanismos para hacer la traslacion:

El primero utiliza un tabla en cada maquina para almacenar para cada direccion IP la correspon-diente direccion fısica. Cada entrada de la tabla contiene una direccion IP y una direccion fısica.Como existe una tabla para cada red fısica, todos las direcciones IP tienen el mismo prefijo. En elsiguiente ejemplo podemos observar la traduccion entre direccion IP y direccion fısica.

Direccion IP Direccion Ethernet130.206.124.13 0F:13:26:36:F3:B4130.203.124.31 A4:34:27:AE:B1:10

El segundo realiza la traduccion mediante una funcion matematica. Aunque muchas tecnologıasutilizan direcciones fısicas estaticas, algunas usan direccionamiento configurable, es decir, el admi-nistrador de la red elige tanto la direccion fısica como la direccion IP. En este caso, los valores puedenser elegidos para que la traslacion sea trivial.

El tercero es el mas interesante pues usa una computacion distribuida en la que los dos ordenadoresintercambian mensajes dinamicamente. En este caso, el ordenador que conoce la direccion IP de otroordenador pero desconoce su direccion fısica, envıa un mensaje a la red con la direccion IP conociday recibe de la red una respuesta con la direccion fısica. Existen dos posibles disenos:

1. En el primero hay uno o mas servidores que se encargan de enviar las respuestas. La principalventaja de este diseno es que es centralizado y por lo tanto facil de configurar, gestionar ycontrolar. Tiene el inconveniente de que estos servidores pueden ser un cuello de botella en unared grande.

2. En el segundo diseno, se hace un broadcast de la peticion (envıo a la direccion de difusion de red)y todos los ordenadores participan en la resolucion de la direccion, en concreto responde el quetiene la direccion pedida. La principal ventaja de este diseno es que el calculo es distribuido.Este diseno es el utilizado en el ARP, una de las ventajas de este metodo sobre tener unosarchivos de configuracion es su sencillez. El propio protocolo se encarga de construir las tablasen lugar de tener que hacerlo el administrador del sistema.

Jose Antonio Escartın Vigo, Junio 2005.

Page 86: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

68 Servidor Linux para conexiones seguras de una LAN a Internet

7.3.1. ARP (Adress Resolution Protocol)

En cada maquina se tiene una tabla que identifica la correspondencia que hay entre la direccion fısicay la direccion IP del resto de maquinas. Cuando tenemos que enviar un paquete a una direccion IP de laque se desconoce la direccion fısica entra el funcionamiento el protocolo ARP para actualizar los valoresde la tabla. Este protocolo es el encargado de obtener la direccion fısica de una maquina de la que conocela direccion IP. Para conseguirlo debe acceder a recursos de bajo nivel.

Unicamente hay dos tipos de mensaje que tienen el mismo formato: peticion ARP y respuesta ARP.Los mensajes ARP van a ser encapsulados directamente en una trama Ethernet. En el campo tipo dela cabecera de la trama Ethernet es necesario especificar que contiene un mensaje ARP. El emisor sedebe encargar de poner el valor correspodiente y el receptor de mirar el contenido de ese campo. ComoEthernet asigna un unico valor para los dos mensajes ARP, el receptor debe examinar el campo operaciondel mensaje ARP para determinar si es el mensaje recibido es una peticion o una respuesta. Es importantedestacar, que este protocolo solo puede ser utilizado en aquellas redes en las cuales es posible hacer unbroadcast (difusion de red).

Cuando no conocemos la direccion fısica de la maquina a la que queremos enviar el mensaje es necesarioenviar tres mensajes; para que esto no se tenga que repetir para cada paquete que queremos enviar yademas se pueda reducir el trafico, en cada maquina tendremos una pequena memoria cache en la queguardaremos una tabla con las parejas de direcciones (fısica, IP). Cuando esta tabla este llena se iranborrando las mas antiguas y las que lleven mas tiempo sin ser utilizadas.

7.3.2. RARP (Reverse Address Resolution Protocol)

Cada maquina, ademas de su direccion fısica que esta en la tarjeta de red, debe tener guardada enalgun dispositivo la direccion IP que le corresponde.

Pero, ¿como una maquina que no disponga de disco duro puede determinar su direccion IP?. Elproblema es crıtico para aquellas estaciones de trabajo que almacenan todos sus ficheros en un servidorremoto ya que ellas deben utilizar los protocolos de transferencia de ficheros de TCP/IP para obtener suimagen de arranque inicial.

La idea para encontrar la direccion IP es simple: una maquina que necesita conocer su direccion envıauna peticion a un servidor que hay en otra maquina y espera hasta que recibe la respuesta. Suponemosque el servidor tiene acceso a un disco que contiene una base de datos de direcciones IP. En la peticion, lamaquina que necesita conocer su direccion IP unicamente debe identificarse a si misma, y de esta manerael servidor puede buscar su direccion IP y enviarle una respuesta. Tanto la maquina que hace la peticioncomo el servidor que responde usan direcciones fısicas durante su breve comunicacion.

¿Como puede la maquina conocer la direccion del servidor?. Generalmente no la conoce, lo que hacees hacer un broadcast (difusion de red) de su peticion a todas las maquina de la red local y esperar quealgun servidor responda. De alguna manera lo que hace la maquina es enviar un mensaje diciendo:

“ mi direccion fısica Ethernet es XX.XX.XX.XX.XX.XX Sabe alguien cual es mi direccion IP?”Como podemos ver en esta pregunta, para identificarse, la maquina utiliza su direccion fısica lo que

tiene la ventaja de que siempre esta disponible y de que es uniforme para todas las maquinas de una red.En realidad lo que queremos es encontrar la direccion IP de una maquina de la que conocemos su

direccion fısica. El protocolo para conseguir esto es el RARP que es una adaptacion del ARP vistoanteriormente y que usa el mismo formato de mensaje. Como ocurre con los mensajes ARP, un mensajeRARP es enviado de una maquina a otra encapsulado en la porcion de datos de la trama fısica, por ejemploen una trama Ethernet.

Jose Antonio Escartın Vigo, Junio 2005.

Page 87: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 7. Infraestructura de redes 69

7.4. Protocolos de red, IP

Entre los protocolos que utilizan IP ‘puro’, es decir encapsulan sus mensajes sobre el protocolo IP,encontramos los siguientes: ICMP, OSPF, BGP y IGMP.

7.4.1. ICMP (Internet Control Message Protocol)

Permite el intercambio de mensajes de control y de supervision entre dos ordenadores. Toda anomalıadetectada por el protocolo IP provoca el intercambio de mensajes ICMP entre los nodos de la red.

Es un protocolo de control que utilizan los dispositivos de encaminamiento para notificar las incidenciasque pueden haber en una red IP. Proporciona informacion de realimentacion sobre los problemas.

Estos son los problemas que mas frecuentemente se encarga de informar:

Un datagrama no puede alcanzar su destino

El dispositivo de encaminamiento no tiene la capacidad de almacenar temporalmente el datagrama-para poderlo reenviar

El dispositivo de encaminamiento indica a un ordenador que envıe el trafico por una ruta mas corta(redireccionamiento de rutas). Cada mensaje se encapsula en un paquete IP y luego es enviado dela forma habitual. Al utilizar IP no se garantiza que llegue a su destino.

En el siguiente esquema podemos observar los diferentes tipos de mensajes ICMP:

• ICMP(3): Detectar destinos inalcanzables

• ICMP(11): Tiempo excedido

• ICMP(12): Problema de parametros

• ICMP(4): Peticion de control de flujo

• ICMP(5): Redireccionando rutas

• ICMP(0) y ICMP(8): Eco y respuesta a eco (para los pings)

• ICMP(13) y ICMP(14): Marca de tiempo y la respuesta

• ICMP(17) y ICMP(18): Peticion de mascara de direccion y la respuesta

• ICMP(15) y ICMP(16): Peticion de informacion y la respuesta

• ICMP(9) y ICMP(10): Peticion de rutas y su publicacion

7.4.2. OSPF (Open Shortest Path First)

El protocolo OSPF (abrir primero la trayectoria mas corta) se usa muy frecuentemente como protocolode encaminamiento interior en redes TCP/IP. Cuando se diseno se quiso que cumpliera los siguientesrequisitos:

Ser abierto en el sentido de que no fuera propiedad de una companıa

Que permitiera reconocer varias metricas, entre ellas, la distancia fısica y el retardo

Ser dinamico, es decir, que se adaptara rapida y automaticamente a los cambio de la topologıa

Ser capaz de realizar en encaminamiento dependiendo del tipo de servicio

Que pudiera equilibrar las cargas dividiendo la misma entre varias lıneas

Que reconociera sistemas jerarquicos pues un unico ordenador no puede conocer la estructura com-pleta de Internet

Que implementara un mınimo de seguridad

Jose Antonio Escartın Vigo, Junio 2005.

Page 88: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

70 Servidor Linux para conexiones seguras de una LAN a Internet

El protocolo OSPF reconoce tres tipos de conexiones y redes:

Lıneas punto a punto entre dos dispositivos de encaminamiento.

Redes multiacceso1 con difusion de red (por ejemplo, la mayorıa de redes LAN).

Redes multiacceso sin difusion (por ejemplo, la mayorıa de redes WAN de conmutacion de paquetes).

La funcion del OSPF es encontrar la trayectoria mas corta de un dispositivo de encaminamiento atodos los demas. Cada dispositivo de encaminamiento tiene almacenada en una base de datos la topologıade la red de la que forma parte.

7.4.3. Protocolo BGP (Border Gateway Protocol)

El protocolo de ‘pasarela frontera’ se encarga de mover paquetes de una red a otra pero en algunos casosdebe preocuparse de otras cuestiones que no tienen porque estar relacionadas con el objetivo de moverlos paquetes de la forma mas eficiente posible. Es posible que se deban considerar algunas restriccionesrelacionadas con cuestiones comerciales o polıticas, como por ejemplo:

“Una empresa no hace de red de transito para los mensajes de la competencia.”“Nuestros mensajes no deben pasar por paıses enemigos.”

Los diferentes dispositivos de encaminamiento BGP se comunican entre sı estableciendo conexionesTCP. Es fundamentalmente un protocolo de vector distancia en el que cada dispositivo de encamina-miento mantiene el coste a cada destino y la trayectoria seguida. Estos valores son dados periodicamentea cada uno de los vecinos enviando mensajes. La esencia de BGP es el intercambio de informacion deencaminamiento entre dispositivos de encaminamiento. La informacion de encaminamiento actualizada seva propagando a traves de un conjunto de redes.

Involucra tres procedimientos funcionales, que son:

Obtener informacion del vecino

Detectar los vecinos alcanzables

Detectar las redes alcanzables

7.4.4. IGMP (Internet Group Management Protocol)

Es usado, por ejemplo, para informar a los dispositivos de encaminamiento que un miembro del grupomulticast2 esta en la red conectada al nodo. Esta informacion de los miembros del grupo multicast tambienes transmitida al emisor del multicast utilizando este protocolo.

7.5. Protocolos de transporte

Los protocolos de transporte tienen la funcion de actuar de interficie entre los niveles orientados a laaplicacion y los niveles orientados a la red dentro de la jerarquıa de protocolos TCP/IP. Se encargan deocultar a los niveles altos del sistema el tipo de tecnologıa a la que se esten conectando los ordenadores.

En la jerarquıa de TCP/IP se definen dos protocolos de transporte: el UDP y el TCP. El UDP es unprotocolo no orientado a la conexion mientras que el TCP es orientado a la conexion.

1Diremos que una red es multiacceso si tiene varios dispositivos de encaminamiento que se pueden comunicar con losdemas.

2Multicast es el envıo de la informacion a multiples destinos simultaneamente usando la estrategia mas eficiente para elenvıo del mensajes sobre cada enlace de la red unicamente una vez y creando copias cuando los enlaces en los destinos sedividen. En comparacion con multicast, los envıos de un punto a otro se le denomina unicast, y el envıo a todos los nodosse le denomina broadcast.

Jose Antonio Escartın Vigo, Junio 2005.

Page 89: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 7. Infraestructura de redes 71

Se definen dos direcciones para relacionar el nivel de transporte con los niveles superior e inferior:

La direccion IP es la direccion que identifica un dispositivo dentro de una red.

El puerto es un numero de 16 bits que se coloca en cada paquete y sirve para identificar la aplicacionque requiere la comunicacion. La utilidad de los puertos es que permite multiplexar aplicacionessobre protocolos del nivel de transporte. Es decir, un mismo protocolo de transporte puede llevarinformacion de diferentes aplicaciones y estas son identificadas por el puerto.

Para establecer una comunicacion entre dos maquinas se ha de utilizar uno de los protocolos de trans-porte (TCP o UDP) y es necesario conocer tanto el puerto que identifica la aplicacion destino como ladireccion IP que identifica el terminal o el servidor dentro del conjunto de redes.

Los datos que se envıan durante la comunicacion son empaquetados por los protocolos del nivel detransporte. Los bytes que se transmiten en el TCP reciben el nombre de segmento TCP y los que setransmiten en el UDP el de datagrama UDP.

Para establecer una comunicacion de utiliza el modelo cliente/servidor. En este caso, el cliente iniciala comunicacion y para hacerlo necesita conocer la direccion IP asignada al ordenador servidor y el puertode la aplicacion que identifica la aplicacion que se quiere utilizar.

El cliente conoce su direccion IP (direccion origen), la direccion del servidor (direccion destino) y elpuerto que identifica su aplicacion cliente. Para que pueda saber el puerto destino que identifica la apli-cacion deseada, se utilizan los llamados puertos conocidos que consiste en un numero de puerto reservadopara identificar una aplicacion determinada (Vease apendice E).

El servidor respondera a las peticiones de cualquier cliente. Como el cliente envıa en el datagramaUDP y en el segmento TCP tanto el puerto origen como el destino, el servidor conoce el puerto origenuna vez ha recibido una peticion.

7.5.1. UDP

Este protocolo es “no orientado a la conexion”, y por lo tanto no proporciona ningun tipo de controlde errores ni de flujo, aunque si que utiliza mecanismos de deteccion de errores. Cuando se detecta unerror en un datagrama en lugar de entregarlo a la aplicacion se descarta.

Este protocolo se ha definido teniendo en cuenta que el protocolo del nivel inferior (el protocolo IP)tambien es no orientado a la conexion y puede ser interesante tener un protocolo de transporte que exploteestas caracterısticas. Cada datagrama UDP existe independientemente del resto de datagramas UDP.

El protocolo UDP es muy sencillo y tiene utilidad para las aplicaciones que requieren pocos retardos opara ser utilizado en sistemas sencillos que no pueden implementar el protocolo TCP. Las caracterısticasdel protocolo UDP son:

No garantiza la fiabilidad. No se puede asegurar que un datagrama UDP llegara al destino.

No preserva la secuencia de la informacion que proporciona la aplicacion. La informacion se puederecibir desordenada (como ocurre en IP) y la aplicacion debe estar preparada por si se pierdendatagramas, llegan con retardo o llegan desordenados.

Un datagrama consta de una cabecera y de un cuerpo en el que se encapsulan los datos. La cabeceraconsta de los siguientes campos:

Los campos puerto origen y puerto destino son de 16 bits e identifican las aplicaciones en la maquinaorigen y en la maquina destino.

El campo longitud es de 16 bits e indica en bytes la longitud del datagrama UDP incluyendo lacabecera UDP. En realidad es la longitud del datagrama IP menos el tamano de la cabecera IP.Como la longitud maxima del datagrama IP es de 65.535 bytes y la cabecera estandar de IP es de20 bytes, la longitud maxima de un datagrama UDP es de 65.515 bytes.

El campo suma de comprobacion (checksum) es un campo opcional de 16 bits que, a diferencia delcampo equivalente de la cabecera IP que solo protegıa la cabecera, protege tanto la cabecera comolos datos.

Jose Antonio Escartın Vigo, Junio 2005.

Page 90: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

72 Servidor Linux para conexiones seguras de una LAN a Internet

Figura 7.4: Cabecera del datagrama UDP

Como el protocolo UDP no esta orientado a la conexion y no envıa ningun mensaje para confirmarque se han recibido los datagramas, su utilizacion es adecuada cuando queremos transmitir informacionen modo multicast (a muchos destinos) o en modo broadcast (a todos los destinos) pues no tiene sentidoesperar la confirmacion de todos los destinos para continuar con la transmision. Tambien es importantetener en cuenta que si en una transmision de este tipo los destinos enviaran confirmacion, facilmente elemisor se verıa colapsado, pues por cada paquete que envıa recibirıa tantas confirmaciones como destinoshayan recibido el paquete.

Lo que realmente proporciona UDP respecto a IP es la posibilidad de multiplexacion de aplicaciones.La direccion del puerto permite identificar aplicaciones gracias a la direccion del puerto.

7.5.2. TCP

La unidad de datos de este protocolo recibe el nombre de segmento TCP. Como la cabecera debeimplementar todos los mecanismos del protocolo su tamano es bastante grande, como mınimo 20 bytes.

Figura 7.5: Cabecera del datagrama TCP

A continuacion muestro una descripcion de cada uno de los campos que forman la cabecera:

Puerto origen (16 bits): Es el punto de acceso de la aplicacion en el origen.

Puerto destino (16 bits): Es el punto de acceso de la aplicacion en el destino.

Numero de secuencia (32 bits): Identifica el primer byte del campo de datos. En este protocolo nose enumeran segmentos sino bytes, por lo que este numero indica el primer byte de datos que hayen el segmento. Al principio de la conexion se asigna un numero de secuencia inicial (ISN, InitialSequence Number) y a continuacion los bytes son numerados consecutivamente.

Jose Antonio Escartın Vigo, Junio 2005.

Page 91: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 7. Infraestructura de redes 73

Numero de confirmacion (ACK) (32 bits): El protocolo TCP utiliza la tecnica de piggybacking1 parareconocer los datos. Cuando el bit ACK esta activo, este campo contiene el numero de secuencia delprimer byte que espera recibir. Es decir, el numero ACK=1 indica el ultimo bit reconocido.

Longitud de la cabecera (4 bits): Indica el numero de palabras de 32 bits que hay en la cabecera. Deesta manera el TCP puede saber donde se acaba la cabecera y por lo tanto donde empieza los datos.Normalmente el tamano de la cabecera es de 20 bytes por lo que en este campo se almacenara elnumero 5. Si el TCP utiliza todos los campos de opciones la cabecera puede tener una longitudmaxima de 60 bytes almacenandose en este campo el valor 15.

Reservado (6 bits): Se ha reservado para su uso futuro y se inicializa con ceros.

Indicadores o campo de control (6 bits): Cada uno de los bits recibe el nombre de indicador y cuandoesta a 1 indica una funcion especıfica del protocolo.

• URG: Hay datos urgentes y en el campo “puntero urgente” se indica el numero de datos urgentesque hay en el segmento.

• ACK: Indica que tiene significado el numero que hay almacenado en el campo “numero deconfirmacion”.

• PSH: Sirve para invocar la funcion de carga (push). Como se ha comentado anteriormente conesta funcion se indica al receptor que debe pasar a la aplicacion todos los datos que tengaen la memoria intermedia sin esperar a que sean completados. De esta manera se consigueque los datos no esperen en la memoria receptora hasta completar un segmento de dimensionmaxima. No se debe confundir con el indicador URG que sirve para senalar que la aplicacionha determinado una parte del segmento como urgente.

• RST: Sirve para hacer un reset de la conexion.

• SYN: Sirve para sincronizar los numeros de secuencia.

• FIN: Sirve para indicar que el emisor no tiene mas datos para enviar.

Ventana (16 bits): Indica cuantos bytes tiene la ventana de transmision del protocolo de control deflujo utilizando el mecanismo de ventanas deslizantes. A diferencia de lo que ocurre en los protocolosdel nivel de enlace, en los que la ventana es constante y se cuentan las tramas, en el TCP la ventanaes variable y cuenta bytes. Contiene el numero de bytes de datos comenzando con el que se indicaen el campo de confirmacion y que el que envıa esta dispuesto a aceptar.

Suma de comprobacion (16 bits): Este campo se utiliza para detectar errores mediante el comple-mento a uno de la suma en modulo 216-1 de todas las palabras de 16 bits que hay en el segmento masuna pseudo-cabecera. La pseudo-cabecera incluye los siguientes campos de la cabecera IP: direccioninternet origen, direccion internet destino, el protocolo y un campo longitud del segmento. Con lainclusion de esta pseudo-cabecera, TCP se protege a sı mismo de una transmision erronea de IP.

Puntero urgente (16 bits): Cuando el indicador URG esta activo, este campo indica cual es el ultimobyte de datos que es urgente. De esta manera el receptor puede saber cuantos datos urgentes llegan.Este campo es utilizado por algunas aplicaciones como telnet, rlogin y ftp.

Opciones (variable): Si esta presente permite anadir una unica opcion de entre las siguientes:

• Tiemstamp: para marcar en que momento se transmitio el segmento y de esta manera monito-rizar los retardos que experimentan los segmentos desde el origen hasta el destino.

• Aumentar el tamano de la ventana.

• Indicar el tamano maximo del segmento que el origen puede enviar.

1Un paquete puede llevar dentro no solo los datos que van en direccion A-B, sino tambien un ACK (acuse de recibo) deotros datos que llegaron anteriormente en direccion B-A. Ası se reduce el numero total de paquetes requeridos, porque deotra manera el ACK tendrıa que ocupar un paquete completo. Es una tecnica de optimizacion que se usa cuando hay traficode datos en ambos sentidos.

Jose Antonio Escartın Vigo, Junio 2005.

Page 92: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

74 Servidor Linux para conexiones seguras de una LAN a Internet

Como TCP ha sido disenado para trabajar con IP, algunos parametros de usuario se pasan atraves de TCP a IP para su inclusion en la cabecera IP. Por ejemplo: prioridad (campo de 3bits), retardo-normal / retardo-bajo, rendimiento-normal / rendimiento-alto, seguridad-normal /seguridad-alta y proteccion (campo de 11 bits).

7.6. Protocolos de aplicacion

Los protocolos de aplicacion se pueden dividir en dos grupos segun su protocolo de transporte:

UDP : NFS, SNMP, DNS

TCP : SMTP, TELNET, FTP, HTTP

7.6.1. NFS (Network File System)

Utiliza el protocolo UDP y esta basado en el RPC (Remote Procedure Call de SUN). El nucleo delsistema operativo de la maquina cliente es modificado con un nuevo tipo de sistema de fichero NFS, demanera que cuando un programa intenta abrir, cerrar, leer o escribir en un fichero remoto, el codigo NFSes llamado en lugar del codigo “normal” para acceder a los manejadores de los discos fısicos. El codigo delsistema de ficheros NFS usa el protocolo RPC de SUN para comunicar con el codigo servidor NFS que seejecuta en la maquina remota, leyendo o escribiendo bloques de ficheros en el.

7.6.2. SNMP (Simple network management protocol)

Es un protocolo cliente/servidor que normalmente es usado para configurar y monitorizar remotamentelos equipos de la red Internet. Este protocolo se basa en el protocolo UDP. En terminologıa SNMP esdescrito como un protocolo manager/agent.

7.6.3. DNS (Domain Name Server)

El servicio de nombres de dominio (DNS) se utiliza para relacionar los nombres de dominio de losnodos con sus direcciones IP. Tal como hemos comentado al explicar el protocolo IP, la asignacion dedirecciones sigue una estructura jerarquica. Para hacer mas sencillo el acceso a los sistemas, cada hostpuede tener asignados uno o varios nombres de dominio DNS, que son identificadores descriptivos quepermiten hacer referencia al equipo y equivalen a su direccion IP. Los nombres DNS tambien se asignan deforma jerarquica, anadiendo a la derecha del nombre del host una serie de identificadores que correspondencon la organizacion o empresa a la que pertenece el sistema.

Cuando en un comando entramos un nombre de maquina, el sistema siempre convierte ese nombre enuna direccion IP antes de establecer la conexion. Desde la maquina que necesita saber la direccion IP,se envıa un paquete UDP a un servidor DNS, que busca el nombre y devuelve la direccion IP. Con ladireccion IP, el programa establece una conexion TCP con el destino, o le envia paquetes UDP.

7.6.4. SMTP (Simple Mail Transfer Protocol)

Este es el protocolo dedicado a la transmision de mensajes electronicos sobre una conexion TCP.El protocolo especifica el formato de los mensajes definiendo la estructura de la informacion sobre elremitente, el destinatario, datos adicionales y naturalmente el cuerpo de los mensajes. Este protocolo noespecifica como los mensajes deben ser editados. Es necesario tener un editor local o un aplicacion nativade correo electronico. Una vez el mensaje es creado, el SMTP lo acepta y usa el protocolo TCP paraenviarlo a un modulo SMTP de otra maquina. El TCP es el encargado de intercomunicar modulos SMTPde las maquina implicadas.

Jose Antonio Escartın Vigo, Junio 2005.

Page 93: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 7. Infraestructura de redes 75

7.6.5. TELNET (Remote login)

Este protocolo permite a los usuarios conectarse a ordenadores remotos y utilizarlos desde el sistemalocal, mediante la emulacion de terminal sobre una conexion TCP. Interconecta el cliente local de unamaquina con el servidor con el que se comunica. Los caracteres que se teclean en un cliente local sonenviados por la red y procesados en el ordenador remoto, utilizando la informacion que ese ordenadorcontiene. El resultado de su ejecucion se muestra en la pantalla del ordenador local. Este protocolo fueuno de los primeros que se definio y ha sido disenado para trabajar con terminales de modo texto. Seimplementa en dos modulos. El modulo cliente relaciona el modulo de entrada y salida del terminal paraque pueda comunicarse con el terminal local. Convierte las caracterısticas de los terminales reales con losstandards de las redes y viceversa. El modulo servidor interactua con una aplicacion, de manera que losterminales remotos sean vistos por la aplicacion como terminal local.

7.6.6. FTP (File Transfer Protocol)

Permite la transferencia de ficheros de texto o binarios desde un ordenador a otro sobre una conexionTCP. FTP implementa un sistema estricto de restricciones basadas en propiedades y permisos sobre losficheros. Hay un control de acceso de los usuarios, y cuando un usuario quiere realizar la transferenciade un fichero, el FTP establece una conexion TCP para el intercambio de mensajes de control. De estamanera se puede enviar el nombre de usuario, el password, los nombre de los ficheros y las acciones quese quieren realizar. Una vez se ha aceptado la transferencia del fichero, una segunda conexion TCP seestablece, del servidor al cliente, para la transferencia de datos. El fichero se transfiere sobre la conexionde datos, sin la utilizacion de ninguna cabecera o informacion de control en la capa de aplicacion. Cuandose completa la transferencia, la conexion de control es usada para transmitir la senalizacion de que latransferencia se ha completado y para aceptar nuevos comandos de transferencia.

7.6.7. HTTP (Hyper Text Transport Protocol)

Este es un sencillo protocolo cliente-servidor que articula los intercambios de informacion entre losclientesWeb y los servidores HTTP. Este protocolo fue propuesto atendiendo a las necesidades de unsistema global de distribucion de informacion multimedia como el World Wide Web. Se utiliza paratransferir paginas de hipertexto. Esta soportado sobre los servicios de conexion TCP/IP. Un procesoservidor espera las solicitudes de conexion de los clientes Web, y una vez se establece la conexion, elprotocolo TCP se encarga de mantener la comunicacion y garantizar un intercambio de datos libre deerrores.

7.7. Protocolo TCP/IP

En su epoca, el protocolo de red TCP/IP era un protocolo oculto utilizado principalmente por ins-tituciones gubernamentales y educativas. De hecho, lo invento la agencia de investigacion militar de losEstados Unidos (DARPA) para proporcionar un sistema de redes sin interrupciones. Su objetivo era crearuna red que pudiera soportar multiples fallos de enlace, en el caso de que se produjese alguna catastrofe,como una guerra nuclear. Las comunicaciones de datos tradicionales siempre se habıan basado en una solaconexion directa y si dicha conexion se degradaba o se saboteaba, la comunicacion cesaba. TCP/IP ofrecıauna forma de empaquetar los datos y dejar que “encontraran” su propio camino por la red. Ası se creo laprimera red tolerante al fallo.

Sin embargo, la mayorıa de las empresas seguıan utilizando los protocolos de red proporcionados porlos fabricantes de su hardware. Las LAN IBM utilizaban normalmente NetBIOS o SNA; las LAN Novellutilizaban un protocolo denominado IPX/SPX y las LAN Windows utilizaban otro estandar denominadoNetBEUI, derivado del NetBIOS de IBM. Aunque TCP/IP se convirtio en algo comun a lo largo de 1980,no fue hasta el surgimiento de Internet, a primeros de 1990, cuando empezo a convertirse en el estandarpara la comunicacion de datos. Por todo lo anteriormente expuesto hizo que cayeran los precios del hard-ware en sistema de red IP, hecho que facilito la interconexion entre redes.

Jose Antonio Escartın Vigo, Junio 2005.

Page 94: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

76 Servidor Linux para conexiones seguras de una LAN a Internet

Una red TCP/IP permite que los nodos de comunicacion establezcan una conexion y despues verifiquencuando se inician y se detienen las comunicaciones de datos. Los datos a transmitir se cortan en secciones,denominadas paquetes y se encapsulan en una serie de “envolturas”, conteniendo cada una informacionespecıfica para la siguiente capa de red. Cada paquete se graba con un numero de secuencia de 32 bitspara que, aunque lleguen en el orden erroneo, la transmision se pueda volver a montar. A medida que elpaquete cruza diferentes partes de la red, se abre y se interpreta cada capa y los datos restantes se pasansegun dichas instrucciones. Cuando el paquete de datos llega a su destino, se entregan a la aplicacion losdatos reales, o carga util.

Parece algo confuso, pero mostrando la siguiente analogıa se entendera mejor. Piensa en una cartadentro de un sobre que se envıa a una empresa de mensajerıa para su distribucion. La empresa de men-sajerıa utiliza su propio sobre para enrutar el paquete al edificio correcto. Cuando se reciba el paquete eneste edificio, se abrira y se tirara el sobre exterior. Esta carta puede estar destinada a otro buzon de correointerno, por lo que pueden colocarla en un sobre de correo ınter-oficinas y enviarla al sitio apropiado. Porultimo, la carta llega al receptor, que quita todos los envoltorios y utiliza los datos que estan dentro. Latabla 7.4 resume como encapsulan datos algunos protocolos de red.

Cuadro 7.4: Paquete de datos TCP/IP de ejemplo

Protocolo Contenido Capa OSIEthernet Direccion MAC Enlace de datosIP Direccion IP RedTCP Encabezado TCP TransporteHTTP Encabezado HTTP AplicacionDatos de aplicacion Pagina Web Aplicacion

Como se puede comprobar, el exterior de nuestro “sobre” de datos tiene la direccion Ethernet, queidentifica el paquete en la red Ethernet. Dentro de esta capa se encuentra la informacion de la red,denominada direccion IP, y dentro se encuentra la capa de transporte, que establece una conexion y lacierra. A continuacion esta la capa de aplicacion, que es un encabezado HTTP, que indica al exploradorWeb como debe formatear una pagina. Por ultimo, entra la carga de datos real del paquete (el contenidode una pagina Web). Todo esto ilustra la naturaleza de multiples capas de las comunicaciones de red.

Existen varias fases durante una comunicacion entre dos nodos de red que utilizan TCP/IP. Suponiendoque estamos utilizando direcciones IP y nombres que no son del anfitrion, lo primero que sucede es quela maquina genera una solicitud de Protocolo de resolucion de direcciones (ARP, Address ResolutionProtocol) para buscar la direccion Ethernet correspondiente a la direccion IP con la que esta intentandocomunicarse. Ahora que puede comunicarse con la maquina utilizando IP, existe una comunicacion de tresvıas entre las maquinas que utilizan el protocolo TCP para establecer una sesion.

Una maquina que desea enviar datos a otra maquina envıa un paquete SYN para sincronizar, o iniciar,la transmision. El paquete SYN esta basicamente diciendo “¿Esta preparada para el envıo de datos?”.La otra maquina, envıa un SYN/ACK, que significa “De acuerdo, he recibido el paquete SYN y estoypreparada”. Por ultimo, la maquina emisora envıa un paquete ACK de respuesta diciendo, “Bien, inicio elenvıo de datos”. Esta comunicacion se denomina Acuerdo de conexion TCP de tres vıas. Si una de las trespartes no se produce, la conexion no tiene lugar. Mientras la maquina esta enviando sus datos, etiquetalos paquetes de datos con un numero de secuencia y reconoce cualquier numero de secuencia anteriorutilizado por el anfitrion en el otro punto. Cuando se han enviado todos los datos, una parte envıa unpaquete FIN a la otra parte del enlace. Esta responde con un FIN/ACK para cerrar esa sesion TCP/IP.

Jose Antonio Escartın Vigo, Junio 2005.

Page 95: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 7. Infraestructura de redes 77

Cuadro 7.5: Esquema de transmision TCP/IP

1 SYN: Inicio la conexion (1.a maquina)2 SYN/ACK: De acuerdo, listo para recibir (2.a maquina)3 ACK: Transmito (1.a maquina)4 Transmision: Comunicacion entre las dos maquinas5 FIN: Finalizo conexion (1.a maquina)6 FIN/ACK: Conexion finalizada (2.a maquina)

Debido a la forma en que TCP/IP controla la iniciacion y finalizacion de una sesion, las comunica-ciones TCP/IP se dice que tienen un estado. Esto significa que podemos saber que parte del dialogo seesta produciendo solo con mirar a los paquetes, algo muy importante para los cortafuegos porque la formamas comun de bloquear el trafico saliente con un cortafuegos es no admitir los paquetes SYN del exterioren maquinas internas de la red. Ası, las maquinas internas pueden comunicarse fuera de la red e iniciarconexiones con el exterior pero las maquinas externas no pueden iniciar nunca la conexion.

En Linux el cortafuegos IPTables integrado en el nucleo, esta disponible en las versiones de kernel 2.4xo superior. Funciona mediante la interaccion directa con el nucleo del sistema y nos sirve para hacer elfiltrado de paquetes TCP/IP.

Generalmente los cortafuegos tienen dos o mas interfaces (tarjetas de red). Una interfaz se conectanormalmente a la LAN interna; esta interfaz se denomina interfaz de confianza o privada. La otra interfazes para la parte publica (WAN) de nuestro cortafuegos. En las redes mas pequenas, la interfaz WAN seconecta a Internet. Tambien puede existir una tercera interfaz denominada DMZ (Desmilitarized Zone),que normalmente es para los servidores que necesitan exponerse mas a Internet de forma que los usuariosexternos pueden conectarse a ellos, disponen de una IP publica. Todos los paquetes que intentan pasar atraves de la maquina, pasan a traves de una serie de filtros. Si coinciden con el filtro, se lleva a cabo algunaaccion. Esta puede ser evitar su paso, pasarlo o enmascararlo con una direccion IP privada interna. Lamejor practica para la configuracion del cortafuegos es denegarlo todo siempre y permitir, a continuacion,el trafico que necesitamos de una forma selectiva.

Los cortafuegos pueden filtrar paquetes en distintos niveles. Pueden mirar una direccion IP y bloquearel trafico proveniente de determinadas direcciones o redes IP, comprobar el encabezado TCP y determinarsu estado y, en niveles superiores, pueden mirar a la aplicacion o al numero de puerto TCP/UDP. Sepueden configurar para evitar categorıas completas de trafico, como ICMP. Los paquetes externos de tipoICMP, como los ping, normalmente se rechazan en los cortafuegos porque dichos paquetes se utilizan amenudo en el descubrimiento de redes y denegacion de servicio (DoS). No existe ninguna razon para quealguien externo a nuestra empresa pruebe nuestra red con un ping. Si no lo rechazamos expresamente, elcortafuegos va a permitir las replicas de eco (respuestas de ping).

Jose Antonio Escartın Vigo, Junio 2005.

Page 96: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)
Page 97: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 8

Configuracion de dispositivos de red

En Debian el archivo de configuracion de los dispositivos de red es:

/etc/network/interfaces

En su interior encontraremos el modo de funcionamiento de todos los dispositivos de red del sistema.En este capıtulo trataremos su configuracion mediante una serie de herramientas.

8.1. Etherconf: Configurador grafico de red

Es el configurador grafico para redes de Debian y se instala con el siguiente comando:

#apt-get install etherconf

Para configurar las tarjetas de red automaticamente hay que ejecutar el comando:

#dpkg-reconfigure etherconf, . . . que arrancara debconf.

Y nos realizara unas preguntas, para configurar nuestro sistema.

8.2. Ifconfig: Configurador de red

El programa ifconfig es responsable de configurar las tarjetas de interfaz de red (NIC, Network InterfaceCard). Todas estas operaciones se realizan a traves de la lınea de comandos, ya que no tiene interfaz grafica.

Existen varias herramientas que se han escrito para cubrir la falta de interfaz grafica o de menus delcomando ifconfig. Muchas de ellas vienen en las distribuciones de Linux, en Debian la interfaz que podemosutilizar es etherconf.

El formato del comando ifconfig es el siguiente:

#ifconfig dispositivo direccion opciones

Donde dispositivo es el nombre del dispositivo ethernet (por ejemplo, eth0), direccion es la direccionIP que se desea aplicar al dispositivo y opciones es una de las siguientes:

Page 98: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

80 Servidor Linux para conexiones seguras de una LAN a Internet

Opcion Descripcionup Activa el dispositivo. Esta opcion es implıcitadown Desactiva el dispositivoarp Activa este dispositivo para responder peticiones, por defecto-arp Desactiva este dispositivo para responder a peticiones arpmtu valor Configura la unidad de transmision maxima (MTU) del dispositivo a valor.

Bajo ethernet, el valor por defecto es 1500netmask direccion Configura la mascara de red de esta interfaz a direccion. Si no se propor-

ciona un valor, ifconfig calcula la mascara basada en la clase de la direccionIP. Una direccion de clase A tiene una mascara 255.0.0.0, una de clase B255.255.0.0 y la clase C 255.255.255.0

broadcast direccion Configura la direccion de broadcast de la interfaz de direccion. Si no seproporciona un valor, ifconfig calcula la direccion de broadcasta basadaen la clase de la direccion IP de manera parecida a la mascara de red

pointtopoint direccion Configura la conexion punto a punto (PPP) donde la direccion remota esdireccion

Un ejemplo de uso simple podrıa ser el siguiente: #ifconfig eth0 192.168.0.3, . . . Donde el dispo-sitivo eth0 quedara configurado con la direccion IP 192.168.0.3. Como es una direccion de clase C, lamascara sera 255.255.255.0 y el broadcast sera 192.168.0.255, asignandolos ifconfig por defecto.

Si la direccion IP que configuramos es una direccion de clase A o B dividida en subredes, necesitaremosdeterminar explıcitamente las direcciones de broadcast y de mascara en la lınea de comandos:

#ifconfig dispositivo ip netmask num_mascara broadcast num_broadcast

Se pueden listar todos los dispositivos activos ejecutando: #ifconfig.Con la opcion -a: #ifconfig -a, . . . se mostraran todos los dispositivos, esten activos o no.

En tiempo de ejecucion, con el comando ifconfig podemos habilitar y deshabilitar los dispositos de red:

#ifconfig dispositivo up, . . . para activar el dispositivo

#ifconfig dispositivo down, . . . para desactivar el dispositivo

Para visualizar los dispositivos del sistema basta con ejecutar:#ifconfigSi estamos en un cliente habra que especificar toda la ruta:$/sbin/ifconfig

A continuacion podemos observar la salida del servidor que se utiliza en el proyecto:

$/sbin/ifconfig

eth0 Link encap:Ethernet HWaddr 00:C0:9F:6E:1D:E0

inet addr:192.168.0.11 Bcast:192.168.0.255 Mask:255.255.255.0

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:2506 errors:0 dropped:0 overruns:0 frame:0

TX packets:5953 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:2280653 (2.1 MiB) TX bytes:707464 (690.8 KiB)

Interrupt:6

eth1 Link encap:Ethernet HWaddr 00:00:00:00:00:00

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:0 errors:0 dropped:0 overruns:0 frame:0

TX packets:0 errors:0 dropped:0 overruns:0 carrier:1

collisions:0 txqueuelen:1000

RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

Interrupt:10

lo Link encap:Local Loopback

inet addr:127.0.0.1 Mask:255.0.0.0

UP LOOPBACK RUNNING MTU:16436 Metric:1

RX packets:139967 errors:0 dropped:0 overruns:0 frame:0

TX packets:139967 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:29170217 (27.8 MiB) TX bytes:29170217 (27.8 MiB)

Jose Antonio Escartın Vigo, Junio 2005.

Page 99: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 8. Configuracion de dispositivos de red 81

Se puede observar que dispone de dos tarjetas de red, en este caso eth0 es una tarjeta de red LAN yeth1 una tarjeta de red wifi, en estos momentos deshabilitada. Ası mismo, tambien podemos observar eldispositivo lo, de loopback.

8.3. Route: Tablas de redireccionamiento

Si la maquina se conecta a una red con varias subredes, necesitamos un enrutador. Este aparato, quese situa entre redes, redirige paquetes a su destino real (normalmente, muchas maquinas no conocen elcamino correcto al destino, solo conocen el propio destino).

En el caso donde una maquina ni siquiera tiene una pista sobre donde enviar el paquete, se usa unaruta por defecto. Este camino apunta a un enrutador, que idealmente sabe a donde deberıa ir el paqueteo, al menos, sabe otra ruta que puede tomar.

Una maquina tıpica Linux conoce al menos tres rutas:

La primera es la ruta de bucle local que simplemente apunta a su dispositivo de loopback.

La segunda es la ruta a la LAN, de forma que los paquetes destinados a las maquinas de esa mismared se envıan directamente a ellas.

La tercera es la ruta por defecto. Esta ruta se usa para paquetes que necesitan abandonar la LANpara comunicarse con otras redes.

Si configuramos la red en tiempo de instalacion, este valor lo configurara el instalador. Ası que no sueleser necesario cambiarlo, lo cual no quiere decir que no se pueda. Suele ser necesario cuando tenemos variastarjetas instaladas en un mismo equipo, como a menudo pasa en los servidores, enrutadores o cortafuegos.

El comando route tıpico se estructura de la siguiente forma:#route cmd tipo direccion netmask masc gw gatw dev destino

Los parametros significan lo siguiente:

Parametro Descripcioncmd Valor add o del dependiendo de si anadimos o borramos una ruta. Si eliminamos

una ruta, solo necesitamos otro parametro, direcciontipo Valor -net o -host dependiendo si direccion representa una direccion de red o una

direccion de un enrutadordireccion La red destino que quiere ofrecer para enrutarnetmask masc Configura la mascara de red de la direccion direccion a mascgw gatw Configura la la direccion de enrutador para direccion a gatew. Normalmente se usa

como ruta por defectodev destino Envıa todos los paquetes destinados a direccion a traves de la red del dispositivo

destino segun se configura con ifconfig

Podemos ver el uso del comando con los siguientes ejemplos:

1. Configurar una ruta por defecto en mi maquina, la cual tiene un dispositivo Ethernet y un enrutadoren 192.168.0.1:

#route add -net default gw 192.168.0.1 dev eth0

2. Configurar un sistema para que todos los paquetes destinados a 192.168.0.3 se envıen a traves delprimer dispositivo PPP:

#route add -host 192.168.0.3 netmask 255.255.255.0 dev ppp0

Jose Antonio Escartın Vigo, Junio 2005.

Page 100: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

82 Servidor Linux para conexiones seguras de una LAN a Internet

3. Ası se borra una ruta destino a 192.168.0.3:

#route del 192.168.0.3

Hay otra cosa a tener en cuenta, si usamos una pasarela (gateway), necesitamos asegurarnos de queexiste una ruta a la pasarela antes de referenciarla como otra ruta. Por ejemplo, si la ruta por defecto usala pasarela de 192.168.1.1, necesitamos asegurarnos primero de que tenemos una ruta a la red 192.168.1.0

Para visualizar la tabla de enrutamiento utilizaremos:#route

Route visualiza los nombres de maquinas a cualquier direccion IP que podrıa buscar y resolver. Aunquees bueno leerlo, presenta un problema cuando hay dificultades de red y no se consigue llegar a los servidoresDNS o NIS. El comando route esperara, tratando de resolver los nombres de maquinas y esperando paraver si los servidores devuelven y los resuelven. Esta espera sera de varios minutos hasta que la peticiondevuelva un timeout.

Para evitar que route realice resolucion de nombres ejecutaremos: #route -n

Este serıa un ejemplo de la salida de una maquina con acceso a la LAN y a internet por una pasarela:

# routeKernel IP routing tableDestination Gateway Genmask Flags Metric Ref Use Iface192.168.0.0 * 255.255.255.0 U 0 0 0 eth0default . 0.0.0.0 UG 0 0 0 eth0

Podemos observar varias columnas como destino, pasarela, mascara (referido como genmask) e iface(interfaz, configurada por la opcion dev de route). Las otras entradas de la tabla tienen el significadosiguiente:

Entrada DescripcionFlags Un sumario de estado de conexion, donde cada letra tiene un significado:

U: la conexion esta arribaH: el destino es una maquinaG: el destino es la pasarela

Metric El “coste” es una ruta, normalmente medida en saltos (hops). Esto es significativo paralos sistemas que tienen varias rutas para llegar al destino, pero se prefiere una rutasobre el resto. Un camino con metrica baja es el preferido. El kernel de Linux no usaesta informacion, pero sı lo hacen algunos protocolos de enrutamiento avanzados.

Ref El numero de referencias de la ruta. Esto no se usa en el kernel de Linux. Esta aquı debidoa que la propia herramienta route es de plataformas cruzadas. Ası se imprime este valor,pues otros sistemas operativos lo usan

Use El numero de bucles de cache de rutas utilizados con exito. Para ver este valor, hay queusar la opcion -F cuando invoquemos route

Jose Antonio Escartın Vigo, Junio 2005.

Page 101: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 8. Configuracion de dispositivos de red 83

8.4. Netstat: Estado de las conexiones

El programa netstat se utiliza para mostrar el estado de todas las conexiones de red de una maquina.

La opciones de netstat son combinables, en la siguiente tabla se muestran las mas comunes:

Cuadro 8.1: Opciones de Netstat

Opcion Descripcion-a Visualiza la informacion de todas las conexiones activas-i Visualiza las estadısticas de todos los dispositivos de red configurados-c Actualiza la informacion visualizada cada segundo-r Muestra la tabla de enrutado-n Visualiza las direcciones locales y remotas en formato numerico-t Muestra tan solo la informacion de TCP-u Muestra tan solo la informacion de UDP-v Visualiza la version de netstat

8.5. Configuracion de interfaces usando DHCP

DHCP (Dynamic Host Configuration Protocol), es un protocolo de red empleado para asignar de formaautomatica una direccion IP a los hosts que se conectan a ella.

En redes pequenas las direcciones IP pueden asignarse de forma manual, equipo por equipo, pero enredes de un cierto tamano esta tarea puede convertirse en agotadora, no solo por tener que editar cadauno de los hosts, sino por la dificultad de mantener un registro con las IPs asignadas para evitar duplicados.

Para que esto funcione debemos instalar uno de los siguientes paquetes:

dhcp3-client (version 3, Internet Software Consortium)

dhcpcd (Yoichi Hariguchi y Sergei Viznyuk)

pump (Red Hat)

Pump es sencillo y ampliamente utilizado. Para instalarlo:#apt-get install pumpY para utilizarlo, simplemente:#pump -i dispositivo, . . . como por ejemplo: #pump -i eth0

Dhcp3-client es complejo pero mas configurable. Para instalarlo:#apt-get install dhcp3-clientY para utilizarlo ejecutamos:#dhclient3 dispositivo, . . . como por ejempo: #dhclient3 eth0

Este comando tiene otras opciones que pueden ser consultadas con el manual del sistema: $man dhclient

Jose Antonio Escartın Vigo, Junio 2005.

Page 102: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

84 Servidor Linux para conexiones seguras de una LAN a Internet

8.6. Archivo /etc/network/interfaces

El archivo especifica la configuracion de nuestros dispositivos de red y puede ser configurado a mano.

Los comandos: #ifdown dispositivo y #ifup dispositivo, utilizan el archivo para habilidar y des-habilitar los dispositivos de red.

En las siguientes secciones se especifica la forma de configurar el archivo /etc/network/interfaces.

Esta seccion esta basada en la configuracion de la red de la guıa de referencia Debian, para masinformacion consultela.

8.6.1. Direcciones IP estaticas

Supongamos que se desea configurar una interfaz ethernet que tiene una direccion IP fija 192.168.0.123.Esta direccion comienza con 192.168.0 por lo tanto debe estar en una LAN. Supongamos ademas que192.168.0.1 es la direccion de la puerta de enlace de la LAN Internet. Editamos /etc/network/interfacesde modo que incluya un fragmento como el siguiente:

iface eth0 inet staticaddress 192.168.0.123netmask 255.255.255.0gateway 192.168.0.1

Si tenemos instalado el paquete resolvconf podemos anadir las siguientes lıneas para especificar lainformacion relativa al DNS:

iface eth0 inet staticaddress 192.168.0.123netmask 255.255.255.0gateway 192.168.0.1dns-search nicedomain.orgdns-nameservers 195.238.2.21 195.238.2.22

Despues de que se activa la interfaz, los argumentos de las opciones dns-search y dns-nameserversquedan disponibles para resolvconf para su inclusion en resolv.conf.

El argumento nicedomain.org de la opcion dns-search corresponde al argumento de la opcin search enresolv.conf.

Los argumentos 195.238.2.21 y 195.238.2.22 de la opcion dns-nameservers corresponde a los argu-mentos de las opciones nameserver en resolv.conf.

Otras opciones reconocidas en el archivo son dns-domain y dns-sortlist.

8.6.2. Direcciones IP dinamicas

Para configurar una interfaz usando DHCP editamos el /etc/network/interfaces de manera que incluyaun fragmento como el siguiente:

iface eth0 inet dhcp

Para que esto funcione debemos tener instalado un cliente DHCP (Vease seccion 8.5).

Jose Antonio Escartın Vigo, Junio 2005.

Page 103: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 8. Configuracion de dispositivos de red 85

8.6.3. Interfaz Wifi

El paquete wireless-tools incluye el script /etc/network/if-pre-up.d/wireless-tools que permite confi-gurar hardware Wifi (802.11a/b/g) antes que se active la interfaz. La configuracion se realiza usando elprograma iwconfig (vease seccion 8.10).

Para cada parametro del comando iwconfig podemos incluir una opcion en /etc/network/interfacescon un nombre como el del parametro con el prefijo “wireless-”. Por ejemplo, para fijar el ESSID de eth1a miessid y la clave de cifrado en 123456789e antes de activar eth1 y usando DHCP, editamos el archivo/etc/network/interfaces de modo que incluya un fragmento como el siguiente :

iface eth1 inet dhcpwireless-essid miessidwireless-key 123456789e

8.6.4. Interfaz PPPoE

Muchos Proveedores de Servicios de Internet (ISPs) de banda ancha utilizan PPP para negociar lasconexiones incluso cuando las maquinas de los clientes estan conectadas mediante ethernet y/o redes ATM.Esto se logra mediante PPP sobre ethernet (PPPoE) que es una tecnica para el encapsulamiento del flujoPPP dentro de las tramas ethernet.

Supongamos que el ISP se llama mi isp. Primero configuramos PPP y PPPoE para mi isp. La maneramas facil de hacerlo consiste en instalar el paquete pppoeconf y ejecutar pppoeconf desde la consola. Acontinuacion, editamos /etc/network/interfaces de modo que incluya un fragmento como el siguiente:

iface eth0 inet pppprovider mi_isp

A veces surgen problemas con PPPoE relativos a la Unidad de Transmisin Mxima (Maximum TransmitUnit o MTU) en lıneas DSL (Digital Subscriber Line). Hay que acudir al manual en estos casos.

Debemos observar que si el modem posee un router, si esto es ası el modem/router maneja por sı mismola conexin PPPoE y aparece del lado de la LAN como una simple puerta de enlace Ethernet a Internet.Ası no hay que realizar la configuracion. En mi caso, mi proveedor de servicios me ha instalado unmodem/router de este estilo y no me es necesario. Me han facilitado un usuario y contrasena que utilizopara validarme en su servidor y recibir el servicio.

8.6.5. Puertas de enlace

Supongamos que eth0 esta conectada a internet con un direccion IP configurada con DHCP y eth1esta conectada a la LAN con una direccion IP estatica 192.168.1.1. Editamos /etc/network/interfaces demodo que incluya un fragmento similar al siguiente:

iface eth0 inet dhcp

iface eth1 inet staticaddress 192.168.1.1netmask 255.255.255.0

Si activamos NAT en esta maquina, mediante una puerta de enlace, podemos compartir la conexionde internet con todas las maquinas de la LAN.

Jose Antonio Escartın Vigo, Junio 2005.

Page 104: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

86 Servidor Linux para conexiones seguras de una LAN a Internet

8.6.6. Interfaces virtuales

Usando interfaces virtuales se puede configurar una unica tarjeta ethernet para que sea la inter-faz de distintas subredes IP. Por ejemplo, supongamos que la maquina se encuentra en una red LAN192.168.0.x/24. Y deseamos conectar la maquina a Internet usando una direccin IP publica proporcionadacon DHCP usando su tarjeta ethernet existente. Editamos /etc/network/interfaces de modo que incluyaun fragmento similar al siguiente:

iface eth0 inet staticaddress 192.168.0.1netmask 255.255.255.0network 192.168.0.0broadcast 192.168.0.255

iface eth0:0 inet dhcp

La interfaz eth0:0 es una interfaz virtual. Al activarse tambien lo hara su padre eth0.

8.7. Reconfiguracion de la red

Aquı es necesario diferenciar entre interfaz fısica y interfaz logica.Una interfaz fısica es lo que hemos estado llamando “interfaz o dispositivo” de red, lo que hemos

designado con eth0, ppp1, etc.Una interfaz logica es un conjunto de valores que pueden asignarse a los parametros variables de una

interfaz fısica.Las definiciones iface en /etc/network/interfaces son, en realidad, definiciones de interfaces logicas no

de interfaces fısicas.No obstante, supongamos que nuestra maquina es un equipo portatil que transportamos de casa al

trabajo. Cuando conectamos la maquina a una red corporativa o a nuestra LAN hogarena, necesitamosconfigurar eth0 adecuadamente. Vamos a definir, en el archivo /etc/network/interfaces dos interfaceslogicas: hogar y trabajo (en vez de eth0 como hicimos antes) que describen como deberıa configurarse lainterfaz para la red hogarena y la del trabajo respectivamente.

iface hogar inet staticaddress 192.168.0.123netmask 255.255.255.0gateway 192.168.0.1

iface trabajo inet staticaddress 81.201.3.123netmask 255.255.0.0gateway 81.201.1.1

De esta forma, la interfaz fısica eth0 se puede activar en la red hogarena con la configuracion apropiada,especificando:

#ifup eth0=hogar

Para reconfigurar eth0 en la red del trabajo, ejecutamos los comandos:#ifdown eth0#ifup eth0=trabajo

Observamos que con el archivo interfaces escrito ası ya no resultara posible activar eth0 haciendosolamente ifup eth0. La razon es que ifup utiliza el nombre de la interfaz fısica como el nombre de lainterfaz logica eth0 predeterminada y, en realidad, en nuestro ejemplo no hay una interfaz logica definida.

Jose Antonio Escartın Vigo, Junio 2005.

Page 105: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 8. Configuracion de dispositivos de red 87

Una vez visto como se reconfiguran las interfaces, hay que precisar que la reconfiguracion necesitarealizarse en el momento apropiado.

Actualmente existe una tendencia en GNU y Linux al soporte de hardware y entornos que cambiandinamicamente. El primer soporte se anadio para la insercion en caliente de tarjetas PCMCIA; masrecientemente ha sido incorporado el mecanismo hotplug para que muchos mas perifericos se puedanenchufar y desenchufar mientras la maquina se encuentra funcionando. Esto incluye el hardware de red.

Se puede observar que los servicios que dependen del hardware que se conecta en caliente solo debeniniciarse despues de que el hardware haya sido insertado y deben detenerse cuando se hayan eliminado.Esto significa que dichos servicios deben liberarse del control del sistema init System V y ponerlos, encambio, bajo el control de ifupdown.

Por ejemplo, supongamos que el servicio ‘loquesea’ controlado por el script de init /etc/init.d/loqueseadepende dinamicamente de la interfaz de red reconfigurada eth0. Deberıamos actuar siguiendo este esque-ma:

Primero eliminamos ‘loquesea’ del control del sistema init. Si esta ultilizando el sistema init sysv-rcentonces hacemos lo siguiente:

# rm /etc/rc?.d/S??loquesea

Luego pongamos ‘loquesea’ bajo el control de ifupdown anadiendo las opciones up y down en laseccion eth0 de /etc/network/interfaces que contiene las llamadas al script init loquesea:

iface eth0 inet dhcpup /etc/init.d/loquesea startdown /etc/init.d/loquesea stop

8.7.1. Configuracion de red durante el arranque

Al arrancar, el script de init, /etc/rcS.d/S40networking se ejecuta el comando ifup -a. Esto activatodas las interfaces fısicas que aparecen en las secciones auto de /etc/network/interfaces.

Actualmente, a menudo resulta mejor manejar la configuracion de la red usando metodos dinamicos.Una vez configurados los mecanismos para el soporte de hardware que cambia en forma dinamica, resultamas sencillo tratar el hardware estatico como si fuera dinamico. El arranque se puede considerar como unsimple evento hotplug (Vease seccion 8.7.2).

No obstante, en casi todos los casos uno desea por lo menos que la interfaz de retorno lo (loopback) seactive en el arranque. Por lo tanto, nos aseguramos de que /etc/network/interfaces incluya las siguienteslıneas:

auto loiface lo inet loopback

Se puede listar los nombres de interfaces fısicas adicionales en las secciones auto si desea que tambiense activen durante el arranque. Nunca debemos de incluir las interfaces PCMCIA en las secciones auto.Para el PCMCIA, cardmgr se inicia durante el arranque despues de /etc/rcS.d/S40networking, si descubrealgun dispositivo lo instala.

8.7.2. Hotplug

Para el soporte del arranque en caliente instalamos el paquete hotplug :#apt-get install hotplug

El hardware de red se puede enchufar en caliente ya sea durante el arranque, tras haber insertado latarjeta en la maquina (una tarjeta PCMCIA, por ejemplo), o despues de que una utilidad como discoverse haya ejecutado y cargado los modulos necesarios.

Jose Antonio Escartın Vigo, Junio 2005.

Page 106: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

88 Servidor Linux para conexiones seguras de una LAN a Internet

Cuando el kernel detecta nuevo hardware inicializa el controlador para el hardware y luego ejecutael programa hotplug para configurarlo. Si mas tarde se elimina el hardware, ejecuta nuevamente hotplugcon parametros diferentes. En Debian, cuando se llama a hotplug este ejecuta los scripts contenidos en/etc/hotplug/ y /etc/hotplug.d/.

El hardware de red recien conectado es configurado por el /etc/hotplug/net.agent. Supongamos quela tarjeta de red PCMCIA ha sido conectada lo que implica que la interfaz eth0 esta lista para usar./etc/hotplug/net.agent hace lo siguiente: #ifup eth0=hotplug

Para que una interfaz pueda ser configurada por hotplug debemos anadir la referencia a hotplug en en/etc/network/interfaces. Para que este comando configure eth0, anadimos las siguientes lıneas:

mapping hotplugscript echo

Si solo deseamos que eth0 se active en caliente y no otras interfaces, utilizamos grep en vez de echocomo se muestra a continuacion:

mapping hotplugscript grepmap eth0

8.7.3. Ifplugd

Ifplugd activa o desactiva una interfaz dependiendo si el hardware subyacente esta o no conectado a lared. El programa puede detectar un cable conectado a una interfaz ethernet o un punto de acceso asociadoa una interfaz wifi. Cuando ifplugd ve que el estado del enlace ha cambiado ejecuta un script que pordefecto ejecuta ifup o ifdown para la interfaz.

ifplugd funciona correctamente en combinacion con hotplug. Al insertar una tarjeta, lo que significa quela interfaz est lista para usar, /etc/hotplug.d/net/ifplugd.hotplug inicia una instancia de ifplugd para dichainterfaz. Cuando ifplugd detecta que la tarjeta es conectada a una red, ejecuta ifup para esta interfaz.

8.8. Resolvconf: Resolucion de nombres

El paquete resolvconf proporciona un marco para la administracion dinamica de la informacion relativaa los servidores de nombres disponibles. Soluciona el antiguo problema de mantener las listas dinamicasde los nombres de los servidores para ser usadas por el sistema de resolucion y los caches DNS. Resolvconfes el intermediario entre los programas que controlan las interfaces de red y suministran informacion delos servidores de nombres, y las aplicaciones que necesitan dicha informacion. Este comando esta disenadopara funcionar sin que sea necesaria ninguna configuracion manual.

Para la resolucion de nombres se utiliza el archivo de configuracion:/etc/resolv.conf

Si no hemos instalado el paquete resolvconf, podemos editar a mano el fichero /etc/resolv.conf. En elpodemos especificar hasta tres servidores de nombres, siendo los dos ultimos utilizados en caso de que nose encuentre disponible el primero.

La lınea domain se emplea para definir el nombre de dominio por defecto que se anadira a losnombres de host que no contengan dominio.

La lınea search se emplea para especificar que busque un dominio.

Jose Antonio Escartın Vigo, Junio 2005.

Page 107: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 8. Configuracion de dispositivos de red 89

Esto podrıa ser un contenido tıpico:

#cat /etc/resolv.conf

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)domain example.comnameserver 192.168.0.1nameserver 194.224.52.4nameserver 194.224.52.6

8.9. Archivos de configuracion de Hosts

Existen varios archivos que tienen que ver con los hosts de nuestro sistema:

Un sistema Debian a veces necesita identificarse por su nombre. Para este proposito /etc/hostnamecontiene el nombre de la maquina. Este archivo unicamente debera contener el nombre de la maquinay no el nombre de dominio completo.

El archivo /etc/hosts contiene un conjunto de nombres de hosts con sus correspondientes direccionesIP.

En redes pequenas y sin conexion a Internet este archivo puede utilizarse en lugar de un servidorDNS. En el especificaremos los nombre de todos los equipos conectados a la red y su correspondientesdirecciones IP. De esta forma podremos hacer referencia a los mismos sin especificar su direccion.Linux se encargara de buscar esta direccion dentro del archivo /etc/hosts

Puede emplearse para proporcionar un conjunto mınimo de nombres de hosts en caso de que elservidor de DNS se encuentre desactivado o durante el proceso de arranque de Linux.

El archivo /etc/host.conf dice al sistema como resolver los nombres de los hosts. Contiene el ordenen el que seran ejecutadas las resoluciones que requiera el host, este archivo normalmente contienela siguiente lınea:

order hosts,bind,nis

El significado de estos parametros es que cualquier tipo de resolucion de nombres primeramente debeser ejecutada en el archivo /etc/hosts, posteriormente se debe consultar a Bind y si aun no se halogrado la resolucion, intentar con NIS (Network Information Server), si despues de consultar esteservicio no es posible la resolucion, el Resolver respondera que no fue posible localizar el host.

/etc/hosts.allow, . . . donde se especifican los hosts que tienen acceso al sistema.

/etc/hosts.deny, . . . donde se especifican los hosts a los que se prohıbe el acceso al sistema

8.10. Iwconfig: Configuracion wireless

Para poder configura la red inalambrica necesitamos instalar los siguientes paquetes:#apt-get install wireless-tools wavemon

El comando iwconfig tiene las mismas funciones que ifconfig, es decir configurar la red, pero en estecaso la red wireless.

Ejecutando el comando: #iwconfig, sin parametros observaremos cuales son las interfaces wireless denuestro sistema.

Jose Antonio Escartın Vigo, Junio 2005.

Page 108: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

90 Servidor Linux para conexiones seguras de una LAN a Internet

Por ejemplo la salida del servidor es la siguiente:

# iwconfig

lo no wireless extensions.

eth0 no wireless extensions.

eth1 unassociated ESSID:off/anyMode:Managed Channel=0 Access Point: 00:00:00:00:00:00Bit Rate=0 kb/s Tx-Power=offRTS thr:off Fragment thr:offEncryption key:offPower Management:offLink Quality:0 Signal level:0 Noise level:0Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0Tx excessive retries:0 Invalid misc:0 Missed beacon:0

Las opciones basicas de iwconfig sirven para determinar el nombre del ESSID, y establecer la claveWEP del sistema, tanto en hexadecimal como en ASCII. Veamoslo con unos ejemplos:

Asignar el nombre de “NodoEjemplo” a nuestra red:

#iwconfig eth1 essid NodoEjemplo

Asignar una clave WEP hexadecimal

#iwconfig eth1 key 1234123412341234abcd

Asignar una clave WEP ASCII, anadiendo al principio “s:”:

#iwconfig eth1 key s:clave-secreta

Este comando tiene multitud de opciones que pueden ser consultadas en el manual del sistema:$man 8 iwconfig.

Para configuraciones mas complejas es mejor que editemos el archivo /etc/network/interfaces como sedescribe en la seccion 8.6.3. Si utilizamos claves WPA, sera necesario instalar un cliente WPA (para estaconfiguracion dirıjase a la seccion 14.5.5).

Podemos tener un monitor de la conexion wireless con:$wavemon, . . . monitor del estilo de top para conexiones wireless.

Para mas informacion dirıjase al capıtulo Redes inalambricas (cap. 14).

8.11. Resolucion de problemas

Si encontramos problemas en la instalacion de red podemos ejecutar los siguientes comandos y consultarlas salidas:

#ifconfig#cat /proc/pci#cat /proc/interrupts#dmesg | more

Jose Antonio Escartın Vigo, Junio 2005.

Page 109: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Parte III

Instalacion de Servicios

Page 110: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)
Page 111: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 9

Servicios de red

9.1. Servidor DHCP

El Protocolo de configuracion dinamica de servidores (DHCP, Dynamic Host Configuration Protocol),es un protocolo de red en el que un servidor provee los parametros de configuracion a las computadorasque lo requieran, conectadas a la red (mascara, puerta de enlace y otros) y tambien incluye un mecanismode asignacion de direcciones de IP.

Este protocolo aparecio como protocolo estandar en octubre de 1993 y existe un proyecto abierto paradesarrollar DHCPv6, en redes IPv6.

La informacion de esta seccion a sido obtenida de la enciclopedia libre: http://es.wikipedia.org

9.1.1. Asignacion de direcciones IP

Sin DHCP, cada direccion IP debe configurarse manualmente en cada ordenador y, si el ordenador semueve a otro lugar en otra parte de la red, se debe de configurar otra direccion IP diferente. El DHCPle permite al administrador supervisar y distribuir de forma centralizada las direcciones IP necesarias y,automaticamente, asignar y enviar una nueva IP si el ordenador es conectado en un lugar diferente de la red.

El protocolo DHCP incluye tres metodos de asignacion de direcciones IP:

Asignacion manual : Donde la asignacion se basa en una tabla con direcciones MAC (pares dedirecciones IP introducidas manualmente por el administrador). Solo las computadoras con unadireccion MAC que figure en dicha tabla recibiran la IP asignada en dicha tabla.

Asignacion automatica: Donde una direccion de IP libre obtenida de un rango determinado por eladministrador se le asigna permanentemente a la computadora que la requiere.

Asignacion dinamica: El unico metodo que permite la reutilizacion dinamica de las direcciones IP.El administrador de la red determina un rango de direcciones IP y cada computadora conectada ala red esta configurada para solicitar su direccion IP al servidor cuando la tarjeta de interfaz de redse inicializa. El procedimiento usa un concepto muy simple en un intervalo de tiempo controlable.Esto facilita la instalacion de nuevas maquinas clientes, en la red.

El DHCP es una alternativa a otros protocolos de gestion de direcciones IP de red como el BOOTP(Bootstrap Protocol), respento a este, DHCP es un protocolo mas avanzado.

Page 112: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

94 Servidor Linux para conexiones seguras de una LAN a Internet

9.1.2. Parametros configurables

Un servidor DHCP puede proveer de una configuracion opcional a la computadora cliente.

La lista de opciones siguientes son configurables mediante DHCP:

Direccion del servidor DNS.

Nombre DNS.

Puerta de enlace de la direccion IP.

Direccion de difusion de red (Broadcast Address).

Mascara de subred.

Tiempo maximo de espera del ARP (Protocolo de Resolucion de Direcciones).

MTU (Unidad de Transferencia Maxima) para la interfaz.

Servidores NIS (Servicio de Informacion de Red).

Dominios NIS.

Servidores NTP (Protocolo de Tiempo de Red).

Servidor SMTP.

Servidor TFTP.

Nombre del servidor WINS.

9.1.3. Implementaciones

Microsoft introdujo DHCP en sus Servidores NT con la version 3.5 de Windows NT a finales de 1994,a pesar de que la llamaron una nueva funcion no fue inventada por ellos.

El Consejo de Software de Internet (ISC: Internet Software Consortium) publico distribuciones deDHCP para Unix con la version 1.0 del ISC DHCP Server el 6 de diciembre de 1997 y una version (2.0) quese adaptaba mejor el 22 de junio de 1999. Se puede encontrar el software en: http://www.isc.org/sw/dhcp/.

Otras implementaciones importantes incluyen:

Cisco: anadio un servidor DHCP habilitado en Cisco IOS 12.0 en febrero de 1999.

Sun: anadio el soporte para DHCP, a su sistema operativo Solaris, en julio de 2001.

Actualmente, la mayorıa de los routers incluyen soporte DHCP.

9.1.4. Anatomıa del protocolo

DHCP usa los mismos puertos asignados por el IANA (Autoridad de Numeros Asignados en Internetsegun siglas en ingles) en BOOTP:

67/udp: Para las computadoras servidor.

68/udp: Para las computadoras cliente.

A continuacion muestro las actuaciones que puede tener el protocolo:

DHCP Discover : La computadora cliente emite peticiones masivamente en la subred local paraencontrar un servidor disponible. El router puede ser configurado para redireccionar los paquetesDHCP a un servidor DHCP en una subred diferente. La implementacion cliente crea un paquete UDP(Protocolo de Datagramas de Usuario) con destino 255.255.255.255 y requiere tambien su ultimadireccion IP conocida, aunque esto no es necesario y puede llegar a ser ignorado por el servidor.

Jose Antonio Escartın Vigo, Junio 2005.

Page 113: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 9. Servicios de red 95

DHCP Offer : El servidor determina la configuracion basandose en la direccion del soporte fısico dela computadora cliente especificada en el registro CHADDR. El servidor especifica la direccion IPen el registro YIADDR.

DHCP Request : El cliente selecciona la configuracion de los paquetes recibidos de DHCP Offer. Unavez mas, el cliente solicita una direccion IP especıfica que indico el servidor.

DHCP Acknowledge: El servidor confirma el pedido y lo publica masivamente en la subred. Se esperaque el cliente configure su interface de red con las opciones que se le asignaron.

9.1.5. Configuracion de un servidor DHCP

El fichero de configuracion de un servidor DHCP es /etc/dhcpd.conf.

El primer paso es comprobar que nuestro kernel esta configurado para que el sistema se pueda utilizarcomo servidor DHCP. Para ello ejecutaremos: #ifconfig -a

#ifconfig -a

eth0 Link encap:Ethernet HWaddr 00:C0:9F:6E:1D:E0

inet addr:192.168.0.10 Bcast:192.168.0.255 Mask:255.255.255.0

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:1792 errors:0 dropped:0 overruns:0 frame:0

TX packets:3719 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:1272847 (1.2 MiB) TX bytes:381723 (372.7 KiB)

Interrupt:6

Si no encontramos la opcion MULTICAST deberemos reconfigurar el kernel para agregarlo. En lamayorıa de sistemas no sera necesario, funcionara por defecto.

Para instalar el servicio DHCP realizamos un apt:#apt-get install dhcp

El primer paso al configurar un servidor DHCP es crear el fichero de configuracion que almacena lainformacion de red de los clientes. Se pueden declarar opciones globales para todos los clientes, o bienopciones para cada sistema cliente. El fichero de configuracion posee dos tipos de informacion:

Parametros: Establece como se realiza una tarea, si debe llevarse a cabo una tarea o las opciones deconfiguracion de red que se enviaran al cliente.

Declaraciones: Describen el tipo de red y los clientes, proporcionan direcciones para los clientes oaplican un grupo de parametros a un grupo de declaraciones.

Algunos parametros deben empezar con la palabra clave option. Los parametros definen valores noopcionales o que controlan el comportamiento del servidor DHCP.

Si cambiamos el fichero de configuracion, para aplicar los cambios, reiniciaremos el demonio DHCP:# /etc/init.d/dhcp restart

Subredes

Debemos incluir una declaracion subnet para cada subred de la red. Si no lo hacemos, el servidorDHCP no podra arrancarse. En el ejemplo siguiente, hay opciones globales para cada cliente DHCP de lasubred y un rango de IPs declarado, a los clientes se les asigna una direccion IP dentro de ese rango.

subnet 192.168.1.0 netmask 255.255.255.0 {

option routers 192.168.1.254;

option subnet-mask 255.255.255.0;

option domain-name "example.com";

option domain-name-servers 192.168.1.1;

option time-offset -5; # Eastern Standard Time

range 192.168.1.10 192.168.1.100;

}

Jose Antonio Escartın Vigo, Junio 2005.

Page 114: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

96 Servidor Linux para conexiones seguras de una LAN a Internet

Redes compartidas

Todas las subredes que comparten la misma red fısica deben declararse dentro de una declaracionshared-network. Los parametros dentro de shared-network, pero fuera de las declaraciones subnet se consi-deran parametros globales. El nombre que le asignemos debe ser el tıtulo descriptivo de la red, como, porejemplo, test-lab para describir todas las subredes en un entorno de laboratorio de tests.

shared-network name {

option domain-name "test.redhat.com";

option domain-name-servers ns1.redhat.com, ns2.redhat.com;

option routers 192.168.1.254;

more parameters for EXAMPLE shared-network

subnet 192.168.1.0 netmask 255.255.255.0 {

parameters for subnet

range 192.168.1.1 192.168.1.31;

}

subnet 192.168.1.32 netmask 255.255.255.0 {

parameters for subnet

range 192.168.1.33 192.168.1.63;

}

}

Grupos

La declaracion group puede utilizarse para aplicar parametros globales a un grupo de declaraciones.Podemos agrupar redes compartidas, subredes, hosts u otros grupos.

group {

option routers 192.168.1.254;

option subnet-mask 255.255.255.0;

option domain-name "example.com";

option domain-name-servers 192.168.1.1;

option time-offset -5; # Eastern Standard Time

host apex {

option host-name "apex.example.com";

hardware ethernet 00:A0:78:8E:9E:AA;

fixed-address 192.168.1.4;

}

host raleigh {

option host-name "raleigh.example.com";

hardware ethernet 00:A1:DD:74:C3:F2;

fixed-address 192.168.1.6;

}

}

Tiempo de lease (asignacion de IP)

Para configurar un servidor DHCP que realiza un lease de la direccion IP dinamica dentro de unasubred, declararemos un tiempo de lease por defecto, un tiempo de lease maximo y los valores de confi-guracion de red para los clientes. Esto se puede ver en el ejemplo siguiente que asigna direcciones a losclientes dentro de un rango:

default-lease-time 600;

max-lease-time 7200;

option subnet-mask 255.255.255.0;

option broadcast-address 192.168.1.255;

option routers 192.168.1.254;

option domain-name-servers 192.168.1.1, 192.168.1.2;

option domain-name "example.com";

subnet 192.168.1.0 netmask 255.255.255.0 {

range 192.168.1.10 192.168.1.100;

}

Asignaciones IP por MAC

Para asignar una direccion IP a un cliente segun la direccion MAC de la tarjeta de interfaz de red,usamos el parametro hardware ethernet de una declaracion host. En el ejemplo siguiente, la declaracionhost apex especifica que la tarjeta de interfaz de red con la direccion MAC 00:A0:78:8E:9E:AA siempredebe ejecutarse en lease con la direccion IP 192.168.1.4. Tambien hay que tener en cuenta, que podemosusar el parametro opcional host-name para asignar un nombre host al cliente.

host apex {

option host-name "apex.example.com";

hardware ethernet 00:A0:78:8E:9E:AA;

fixed-address 192.168.1.4;

}

Jose Antonio Escartın Vigo, Junio 2005.

Page 115: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 9. Servicios de red 97

Mas opciones

Para obtener una lista completa de sentencias de opciones e informacion relacionada, podemos consultarla pagina del manual de dhcp-options: $man dhcp-options

Base de datos lease

En el servidor DHCP, el fichero /var/lib/dhcp/dhcpd.leases almacena la base de datos lease del clienteDHCP. Este fichero no debe modificarse manualmente. La informacion sobre lease de DHCP de cadadireccion IP asignada recientemente se almacena de modo automatico en la base de datos lease. La infor-macion incluye la longitud del lease, al que se ha asignado la direccion IP, las fechas iniciales y finales dellease, y la direccion MAC de la tarjeta de interfaz de red utilizada para recuperar el lease. Todas las horasde la base de datos lease se expresan segun GMT, no con la hora local.

En el cliente DHCP, el fichero /var/lib/dhcp/dhclient.leases almacena la base de datos lease del servidorDHCP, como en el caso anterior. El contenido de este archivo se puede ver en el ejemplo siguiente:

lease {

interface "eth0";

fixed-address 192.168.0.11;

option subnet-mask 255.255.255.0;

option routers 192.168.0.1;

option dhcp-lease-time 604800;

option dhcp-message-type 5;

option domain-name-servers 192.168.0.1;

option dhcp-server-identifier 192.168.0.1;

option domain-name "proyecto";

renew 4 2005/5/26 09:33:21;

rebind 0 2005/5/29 13:16:07;

expire 1 2005/5/30 10:16:07;

}

Arranque y parada del servidor

Antes de arrancar por primera vez el servidor DHCP, nos aseguraremos de que existe un fichero/var/lib/dhcp/dhcpd.leases para que no falle el arranque.

Para interactuar con el servicio DHCP, utilizaremos:#/usr/sbin/dhcpd start,. . . arrancar el servidor.#/usr/sbin/dhcpd stop,. . . parar el servidor.

Si tenemos mas de una interfaz de red conectada al sistema, pero solo deseamos que el servidor DHCParranque en una de las interfaces, podemos modificar el script init para arrancar desde ese dispositivo.

Para ello, anadimos el nombre de la interfaz o interfaces en el archivo /etc/default/dhcpd :INTERFACES="eth0" o INTERFACES="eth0 wlan0"

Esto es util si disponemos de una maquina firewall con dos tarjetas de red. Se puede configurar una tar-jeta de red como cliente DHCP para recuperar una direccion IP en Internet y la otra puede utilizarse comoservidor DHCP para la red interna, detras del firewall. Nuestro sistema sera mas seguro si especificamos latarjeta de red conectada a la red interna, ya que los usuarios no pueden conectarse al demonio por Internet.

Otras opciones que pueden ser especificadas incluyen:

-p <portnum>: Especifica el numero de puerto UDP en el que DHCPD debera escuchar, por defectoes el 67 y el servidor DHCP transmite las respuestas al cliente por el puerto 68. Si especificamosun puerto en este momento y usamos el Agente de Transmision DHCP, este debe escuchar por elmismo puerto.

-f: Ejecuta el demonio como un proceso de en primer plano.

-d: Registra el demonio del servidor DCHP en el descriptor de errores estandar. Se suele usar paradepurar errores, los mensajes son guardados en el archivo /var/log/messages.

Jose Antonio Escartın Vigo, Junio 2005.

Page 116: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

98 Servidor Linux para conexiones seguras de una LAN a Internet

-cf archivo: Especifica la localizacion del archivo de configuracion, por defecto se encuentra en/etc/dhcpd.conf.

-lf archivo: Especifica la localizacion del archivo de base de datos lease. Si ya existe , es muyimportante que el mismo fichero sea usado cada vez que el servidor DHCP se inicia. Por defecto seencuentra en /var/lib/dhcp/dhcpd.leases.

-q : No imprime la version del servidor DHCP cuando se inicia el demonio.

Agente de transmision DHCP

Si lo vamos a utilizar, para instalarlo realizaremos el correspondiente apt:#apt-get install dhcp3-relay

Nos creara un nuevo archivo de opciones: /etc/default/dhcp3-relay.

El agente de transmision DHCP (dhcp-relay) permite transmitir las peticiones DHCP y BOOTP desdeuna subred sin un servidor DHCP, dirigidos a uno o mas servidores en otras subredes.

Cuando un cliente DHCP pide informacion, el agente de transmision DHCP reenvıa la peticion a lalista de servidores DHCP especificada al iniciarlo. Cuando el servidor DHCP devuelve una respuesta, larespuesta puede ser broadcast o unicast, en la red que ha enviado la peticion originaria.

El agente de transmision escuchara las peticiones de todas las interfaces a menos que el argumento -ise use para especificar solo una o varias interfaces donde escuchar. Para iniciar el agente de transmisionDHCP, usamos el comando:

#dhcrelay <servidor>

Donde servidor es el nombre de al menos un servidor DHCP al que se le deben transmitir las peticiones.

Dhcp-relay se puede iniciar con las siguientes opciones:

Opcion Descripcion-i Nombres de interfaces de red que deben configurarse. Si no se especifica ninguna interfaz,

se configuraran todas y se eliminaran las interfaces sin multidifusion, si se puede.-p Puerto en el que debera escuchar dhcp-crelay. Transmite peticiones a los servidores en este

puerto y respuestas a los clientes en el puerto inmediatamente superior.-d Obliga a dhcp-relay a ejecutarse en primer plano.-q Desactiva la impresion de configuracion de red, cuando arranca dhcp-relay.

9.1.6. Configuracion de un cliente DHCP

El primer paso al configurar un cliente DHCP es asegurarse de que el kernel reconoce la tarjeta de lainterfaz de red. La mayorıa de las tarjetas se reconocen durante el proceso de instalacion y el sistema esconfigurado para utilizar el modulo correcto en el kernel. Si instalamos una tarjeta despues de la instala-cion, probablemente tendremos que recompilar el kernel.

Para configurar manualmente un cliente DHCP, debemos modificar el archivo /etc/network/interfaceshabilitando el uso de la red con los dispositivos adecuados.

Para configurar las opciones de red debemos modificar el archivo /etc/network/options.Podemos instalar uno de los siguientes clientes dhcp:

#apt-get install pump, . . . para ejecutar: #pump <dispositivo_red>

#apt-get install dhcp-client-udeb, . . . para ejecutar: #dhclient <dispositivo_red>

#apt-get install dhcp3-client, . . . para ejecutar: #dhclient3 <dispositivo_red>

Jose Antonio Escartın Vigo, Junio 2005.

Page 117: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 9. Servicios de red 99

9.1.7. Configuracion grafica de DHCP, interfaz Webmin

El modulo DHCP para nuestra interfaz web: Webmin, nos facilitara mucho la tarea de administraciondel servidor. Para ello realizaremos un apt:

#apt-get install webmin-dhcpd

En las siguientes pantallas podemos observar como realizar todos los pasos detallados en las seccionesanteriores, pero esta vez de forma grafica.

Figura 9.1: Modulo Webmin para DHCPD

Jose Antonio Escartın Vigo, Junio 2005.

Page 118: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

100 Servidor Linux para conexiones seguras de una LAN a Internet

Figura 9.2: Modulo DHCPD WEBMIN: Subredes y redes compartidas

Figura 9.3: Modulo DHCPD WEBMIN: maquinas y grupos de maquinas

Jose Antonio Escartın Vigo, Junio 2005.

Page 119: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 9. Servicios de red 101

9.2. BIND: Servidor de nombres DNS

Los objetivos de un servidor de nombres de dominio son dos:

1. Por una parte, traducir una direccion canonica en una direccion IP.

2. Por otra parte, traducir una direccion IP en una o varias direcciones canonicas, es lo que se conocecomo traduccion inversa.

DNS (Domain Name Service) es un sistema jerarquico con estructura de arbol. El inicio se escribe “.”y se denomina raız, al igual que en las estructuras de datos en arbol. Bajo la raız se hallan los dominios demas alto nivel (TLD, del ingles, Top Level Domain), cuyos ejemplos mas representativos son ORG, COM,EDU y NET, si bien hay muchos mas (como los dominios de paises, .es, .uk, . . . ). Del mismo modo queun arbol, tiene una raız y ramas que de ella crecen.

Cuando se busca una maquina, la consulta se ejecuta recursivamente en la jerarquıa, empezando porla raız. Ası pues, empezando en “.” encontramos los sucesivos servidores de nombres para cada nivel en elnombre de dominio por referencia. Por supuesto, nuestro servidor de nombres guardara toda la informacionobtenida a lo largo del proceso, a fin de no tener que preguntar de nuevo durante un buen rato. En elarbol analogo, cada “.” en el nombre es un salto a otra rama. Y cada parte entre los “.” son los nombresde los nodos particulares en el arbol.

9.2.1. ¿Para que necesitamos un DNS?

El DNS define:

Un espacio de nombres jerarquico para los hosts y las direcciones IP.

Una tabla de hosts implementada como una base de datos distribuida.

Un traductor (resolver) o librerıa de rutinas que permite realizar consultas a esa base de datos.

Enrutamiento mejorado para el correo electronico.

Un mecanismo para encontrar los servicios en una red.

Un protocolo para intercambiar informacion de nombres.

Para ser autenticos ciudadanos de Internet, los sitios necesitan el DNS. Mantener un fichero local/etc/hosts con un mapeado de todos los hosts que los usuarios puedan querer contactar no es factible.

Cada sitio mantiene una o varias piezas de la base de datos distribuida que posibilita el servicio globaldel sistema DNS. Su pieza de la base de datos consiste en dos o mas ficheros de texto que contienen registrospara cada uno de los hosts. Cada registro es una sencilla lınea consistente en un nombre (normalmente elnombre de un host), un tipo de registro y diversos valores o datos.

Es un sistema cliente/servidor. Los servidores (de nombres) cargan los datos de sus ficheros de DNS enmemoria y los usan para responder las consultas tanto de los clientes de la red interna como de los clientesy otros servidores en Internet. Todos nuestros hosts deberıan ser clientes del DNS, pero relativamentepocos necesitan ser servidores de DNS.

Si nuestra organizacion es pequena (unos pocos hosts en una unica red), podemos ejecutar un servidoren uno de nuestros equipos o pedirle al ISP (Proveedor de servicios) que nos proporcione el servicio. Unsitio de tamano medio con diversas subredes deberıa tener multiples servidores de DNS para reducir lalatencia de las consultas y mejorar la productividad. Un sistema muy grande puede dividir los dominiosde DNS en subdominios y usar algunos servidores para cada subdominio.

Jose Antonio Escartın Vigo, Junio 2005.

Page 120: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

102 Servidor Linux para conexiones seguras de una LAN a Internet

9.2.2. Servicios que activa un DNS

Servicios de los que se puede disponer con un servidor DNS, son los siguientes:

Resolucion de nombres a direcciones IP.

Resolucion inversa (de direcciones IP a nombres).

Listas de control de acceso.

Servidores secundarios.

Transferencia segura de zonas entre servidores primarios y secundarios (y puertos).

Localizacion de servicios.

Respuestas parametrizadas en funcion del origen de la peticion (vistas).

Uso de la herramienta rndc.

Logs a medida.

9.2.3. Configuracion del servidor

Un FQDN (Nombre de Dominio Totalmente Cualificado) esta formado por un host y un nombre dedominio, incluyendo el de mas alto nivel. Por ejemplo, www.upc.es es un FQDN. www es el host, upc esel dominio de segundo nivel y .es es el dominio de de mas alto nivel. Un FQDN siempre comienza con elnombre del host y continua subiendo directo al dominio de mas alto nivel.

Si necesitamos proveer un servicio de nombres para un dominio, podemos utilizar un servidor de nom-bres completo: como named, que viene con el paquete bind o bind9. Para nuevas instalaciones se recomiendabind9, ya que soluciona problemas de seguridad que tenıan las versiones anteriores. DNS es uno de lospuntos mas fragiles y puede ser atacado en cualquier momento, borrando nuestras maquinas de la red.

Para instalar bind9, se necesitan los siguientes paquetes:

bind9

bind9-doc

dnsutils

Para instalarlos simplemente realizamos un apt:#apt-get install bind9 bind9-doc dnsutils

Aunque puede que tambien queramos instalar estos paquetes de utilidades:

bind9-host

dns-browse

dnscvsutil

nslint

bind9-doc

libbind-dev

libnet-dns-perl

dhcp-dns

Jose Antonio Escartın Vigo, Junio 2005.

Page 121: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 9. Servicios de red 103

Los archivos de configuracion que intervendran seran los siguientes:

/etc/bind/named.conf : Para definir las zonas DNS basicas.

/etc/bind/named.conf.local : Para definir las zonas locales.

/etc/bind/named.conf.options: Para configurar opciones.

/etc/bind/db.lan: Para anadir los equipos de una LAN.

/etc/bind/db.192.168.0 : Para anadir el DNS inverso de una LAN.

El archivo /etc/bind/named.conf.options tambien es procesado por resolvconf para producir:/var/run/bind/named.options

Este archivo es el mismo que el original, excepto que la especificacion forwarders es una lista de losservidores de nombres no locales, actualmente disponibles.

Para hacer uso de ello, cambiamos la lınea include del /etc/bind/named.conf de modo que incluya:/var/run/bind/named.options

Los archivos de base de datos sin una ruta explicita, y que se han definido en cualquiera de los archivosde configuracion de named se almacenaran en /var/cache/bind/.

9.2.4. Traduccion de nombres a direcciones IP

El primer paso es editar el fichero /etc/bind/named.conf.options, donde cambiaremos algunos de losvalores por defecto y anadiremos todo lo necesario para que nuestro dominio sea accesible desde el exterior.

A menos que seamos un proveedor de servicios de internet, se nos habran proporcionado una o masdirecciones IP de servidores de nombres estables, que seguramente querremos usar como redireccionadores(forwarders). Para ello deberemos descomentar el bloque al principio del fichero:

// forwarders {// 0.0.0.0;// };

Y dejarlo en algo como esto:

forwarders {194.224.52.4;194.224.52.6; };

Entre las opciones tambien se encuentra ocultar la version de Bind, para una mayor seguridad delsistema: "DNS server";

9.2.5. Configuracion grafica de DNS BIND, interfaz Webmin

Para facilitarnos la compleja tarea de configuracion de DNS BIND es posible utilizar la herramientade administracion web: Webmin.

Para la instalacion del modulo correspondiente, utilizamos el siguiente apt:#apt-get install webmin-bind

En los apartados siguientes ire comentando las opciones a las que se puede acceder desde el moduloweb.

Jose Antonio Escartın Vigo, Junio 2005.

Page 122: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

104 Servidor Linux para conexiones seguras de una LAN a Internet

Pantalla principal

Para acceder al servidor BIND, pulsamos sobre la pestana “Servidores” y despues sobre el icono “Ser-vidor de DNS BIND”, aparecera el menu de configuracion, como se observa en la figura 9.4.

En este menu podemos realizar las siguientes opciones:

Configurar el resto de opciones globales del servidor.

Crear un servidor DNS primario.

Crear un servidor DNS secundario.

Crear un servidor DNS de cache.

Crear un servidor DNS de reenvıo.

Figura 9.4: Interfaz grafica Webmin para el servidor DNS BIND

Para que todos los cambios sean tenidos en cuenta, es necesario reiniciar el servidor DNS BIND, serealiza pulsando el boton “Aplicar Cambios” en la pagina de configuracion principal del servidor DNS.

Pasemos a ver cada una de las secciones a las que podemos acceder.

Jose Antonio Escartın Vigo, Junio 2005.

Page 123: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 9. Servicios de red 105

Opciones generales

Como se puede observar en la figura 9.5, desde estas secciones podemos modificar los valores contenidosen el archivo /etc/bind/named.conf.

Figura 9.5: Webmin BIND: Opciones generales

Jose Antonio Escartın Vigo, Junio 2005.

Page 124: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

106 Servidor Linux para conexiones seguras de una LAN a Internet

Crear zona maestra

En esta seccion podemos crear un servidor DNS primario o editar sus parametros una vez configurado.

Figura 9.6: Webmin BIND: Servidor primario

Crear zona subordinada

En esta seccion podemos crear y modificar todos los parametros de un servidor DNS secundario.

Figura 9.7: Webmin BIND: Servidor secundario

Los servidores DNS son dos (o mas) para evitar que el fallo de uno impida el acceso a los serviciosasociados al dominio, esto es, por motivos de redundancia. Si bien es posible utilizar un unico servidorDNS no es una practica recomendable.

A pesar del nombre servidor “secundario”, la informacion que contienen estos servidores DNS, es elmismo valor que cualquier otro servidor DNS primario, la razon principal por la que se configura un servidorsecundario es para ofrecer un nivel de respaldo y reducir la carga de los servidores DNS principales, perosobre todo para reducir la carga administrativa en el caso de necesitar varios servidores.

La unica diferencia que existe entre un primario y un secundario en DNS, es que el secundario obtiene suinformacion copiando el Archivo de Zona del primario que se le ha indicado en el archivo de configuracion.

La actualizacion de esta copia de Archivo de Zona es conocida como “Zone Transfer” y ocurre depen-diendo de los parametros que hayan sido definidos.

Jose Antonio Escartın Vigo, Junio 2005.

Page 125: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 9. Servicios de red 107

Crear zona de solo cache

En esta seccion podemos crear y modificar todos los parametros de un servidor DNS de cache.

Figura 9.8: Webmin BIND: Crear zona de solo cache

Este tipo de servidor DNS mantiene copias de las resoluciones (“cache”) que ya han sido buscadasen otros servidores DNS primarios o secundarios, esto no implica que los servidores DNS primarios ysecundarios no mantengan copias de sus resoluciones “caches”, lo unico que se evita en este tipo deservidores DNS es mantener Archivos de Zona, toda resolucion que realice un servidor “cache” debe serconsultada con un servidor que primario o secundario.

Una de las principales razones por las cuales se configura un servidor “cache” , es cuando se utiliza unaconexion lenta, esto evita la necesidad de requerir resoluciones que ya fueron resueltas en una ocasion, ypor lo tanto evitan un cierto nivel de trafico, aprovechando la informacion local para buscar resolucionesde nombres.

Crear zona de reenvıo

En esta seccion podemos crear y modificar todos los parametros de un servidor DNS que reenvie laspeticiones a otro servidor.

Figura 9.9: Webmin BIND: Crear zona de reenvıo

Si los clientes de la red tienen que poder resolver nombres DNS externos, puede que necesitemosconfigurar y utilizar servidores de reenvıo en los servidores DNS de nuestra red.

Jose Antonio Escartın Vigo, Junio 2005.

Page 126: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

108 Servidor Linux para conexiones seguras de una LAN a Internet

Para utilizar reenviadores que administren el trafico DNS entre nuestra red e Internet, configuramos elfirewall para permitir que solo un servidor DNS se comunique con Internet. Cuando hayamos configuradolos demas servidores DNS de nuestra red para reenviar a ese servidor DNS consultas que no puedanresolver localmente, ese servidor funcionara como nuestro unico reenviador.

9.2.6. Seguridad en DNS

Los servidores que controlan y mantienen los nombres de dominio de nuestra red, ofrecen a los atacantesun objetivo tentador. El servicio de denominacion de nombres de Internet de Berkley (BIND, BerkleyInternet Naming domain), es decir, el servidor DNS primario, ha estado constantemente en la lista de losdiez servicios mas atacados. DNS es un programa antiguo y su estructura deja brechas potenciales (unbinario monolıtico en lugar de una arquitectura mas modular). Ademas DNS, frecuentemente se ejecutacomo raız, lo que hace que sea mas peligroso.

Ası mismo, como DNS es difıcil de configurar y se conoce poco, se suele configurar y asegurar mal. Lasconfiguraciones de cortafuegos para DNS no se implementan correctamente, permitiendo a casi todos losadministradores acceder de dentro a fuera sin filtros.

Aunque el web, el correo electronico y otros servicios tienen mas visibilidad y captan mas la atenciondel administrador, las brechas DNS ofrecen la forma mas rapida y facil de dejar a nuestra empresa fueradel mapa de Internet. Incluso aunque tengamos conectividad IP con el mundo, sin un servicio DNS validopara nuestros dominios, nadie podrıa llegar a nuestro servidor web y no se producirıa ningun flujo decorreo. De hecho, se ha citado DNS como el punto mas debil en toda la infraestructura de Internet yun objetivo potencial para los ataques del terrorismo cibernetico. En lugar de introducirse en nuestrosservidores o atravesar nuestro cortafuegos, un atacante puede simplemente enviar un DoS (denegacion deservicio) contra nuestro servicio DNS, quitando del aire a nuestra empresa de una forma efectiva, o peoraun, utilizando un tipo de ataque denominado veneno de cache DNS, los exploradores web enlazados anuestro sitio seran redireccionados al sitio que le apetezca al atacante.

Se conocen al menos cuatro vulnerabilidades BIND. Todas permiten a un atacante ejecutar cualquiercodigo con los mismos privilegios que el servidor DNS. Como usualmente BIND se ejecuta en una cuen-ta de root, la este codigo puede lanzarse con los mismos privilegios. Ademas, se puede interrumpir lapropia operacion del servidor BIND, y obtener otro tipo de informacion, que llevarıa a explotar otrasvulnerabilidades diferentes en el sistema.

¿Cuales son los sistemas son afectados?

Estan afectados todos los servidores de nombres de dominio (DNS), que ejecutan las versiones deBIND 4.9.8 y 8.2.3 (y todas las anteriores). Las versiones 9.x, ya se encuentran corregidas. Como elfuncionamiento normal de la mayorıa de los servicios de Internet depende del funcionamiento apropiadode los servidores de DNS, podrıan afectar otros servicios si estas vulnerabilidades son explotadas.

¿Como usuario domestico, nos debemos preocupar por este problema?

Los usuarios comunes, tambien estamos afectados por este problema, aunque en forma indirecta. Ge-neralmente contamos con un proveedor de servicios de Internet (ISP), que es el que nos proporciona elservicio DNS. Es el ISP, quien debe proteger sus sistemas.

Sin embargo, los usuarios de Linux o con otras variantes de Unix instaladas en sus maquinas, deberıanverificar si poseen una version vulnerable de BIND instalada, ya que en ese caso, ellos necesitan desac-tivar o actualizar este software. Son varios los sistemas operativos Unix/Linux que instalan un servidorDNS por defecto. Ası, algunos usuarios podrıan estar ejecutando este servicio, sin haberlo configuradoexplıcitamente.

Jose Antonio Escartın Vigo, Junio 2005.

Page 127: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 9. Servicios de red 109

9.3. NIS: Servicio de informacion de red

El servicio de informacion de red (NIS, Network Information Service) hace posible la comparticionde archivos crıticos a traves de una red de area local. Normalmente, archivos tales como /etc/passwdy /etc/group, que idealmente deberıan permanecer sin cambios entre todas las maquinas, se compartenmediante NIS. De esta forma, cada maquina de red que tiene su cliente NIS correspondiente puede leer losdatos contenidos en esos archivos compartidos y usar las versiones de red de los archivos como extensionesde sus versiones locales.

El beneficio principal que se alcanza mediante el uso de NIS es que puede mantener una copia centralde los datos, y aunque los datos se actualicen, automaticamente se propagan a todos los usuarios de la red.A los usuarios, NIS da la apariencia de un sistema mas uniforme (no importa con que maquina trabaje,que todas sus herramientas y archivos estaran allı).

9.3.1. Funcionamiento basico

Es, simplemente, una base de datos que los clientes pueden consultar. Consta de una serie de tablasindependientes. Cada tabla se origina como un archivo de texto, como el /etc/passwd, el cual tiene unanaturaleza tabular y tiene al menos una columna que es unica por cada archivo. NIS accede a esas tablapor nombre y permite busquedas de dos formas:

Listado de la tabla entera

Presentacion de una entrada especıfica basada en una busqueda por una clave dada

Una vez establecidas las bases de datos en el servidor, los clientes pueden buscar en el servidor lasentradas de la base de datos. Normalmente esto ocurre cuando un cliente se configura para que busque enun mapa NIS cuando no encuentra una entrada en su base de datos local. Una maquina puede tener sololas entradas que necesite para que el sistema trabaje en modo usuario unico (cuando no hay conectividadpor red), por ejemplo, el archivo /etc/passwd. Cuando un programa hace una peticion de busqueda de lainformacion de contrasena de un usuario, el cliente comprueba su archivo passwd local y si el usuario noexiste allı, entonces el cliente hace la peticion a su servidor NIS para buscar la entrada correspondiente enla tabla de contrasenas. Si NIS tiene entrada, la devolvera cliente y al programa que pidio la informacion.El propio programa no se da cuenta de que se ha usado NIS. Lo mismo es cierto si el mapa NIS devuelve larespuesta de que la entrada de contrasena del usuario no existe. El programa deberıa recibir la informacionsin que sepa que ha ocurrido entre medias.

Esto se aplica a todos los archivos que se comparten por NIS.Otros archivos comunes compartidos incluyen a /etc/group y /etc/hosts.

9.3.2. Servidores NIS

NIS puede tener un unico servidor autorizado donde permanecen los archivos de datos originales (enesto es similar a DNS). Este servidor autorizado se llama servidor NIS maestro. Si nuestra organizaciones grande, podemos necesitar distribuir la carga entre mas de una maquina. Esto lo podemos hacerconfigurando uno o mas servidores NIS secundarios. Ademas de ayudar a distribuir la carga, los servidoressecundarios tambien proporcionan un mecanismo de manejo de fallos de servidores, ya que puede continuarcontestando peticiones incluso mientras el maestro u otros secundarios estan caıdos.

Los servidores NIS secundarios reciben actualizaciones si el servidor NIS primario se actualiza, ası quelos maestros y esclavos permanecen sincronizados. El proceso de mantener la sincronizacion del los secun-darios con el primario se llama server push.

El NIS maestro, como parte de sus scripts de actualizacion, tambien pone una copia de sus archivosde mapas en los secundarios. Una vez recibidos los archivos, los servidores secundarios actualizan tambiensus bases de datos. El NIS maestro no se considera completamente actualizado hasta que se actualizantodos sus secundarios.

Hay que senalar que un servidor puede ser a la misma vez servidor y cliente.

Jose Antonio Escartın Vigo, Junio 2005.

Page 128: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

110 Servidor Linux para conexiones seguras de una LAN a Internet

Los servidores NIS primarios establecen dominios que son similares a los dominios de un PDC (Con-trolador Primario de Dominio). Una diferencia significativa es que el dominio NIS no requiere que eladministrador del servidores NIS permita explıcitamente unirse a un cliente. Ademas, el servidor NIS soloenvıa datos, no realiza autenticacion. El proceso de autenticacion de usuarios se deja a cada maquina indi-vidual. Unicamente proporciona una lista de usuarios centralizada, ya que todos los clientes son miembrosdel mismo dominio administrativo y estan gestionados por los mismos administradores de sistemas.

Deberemos dar nombre a los dominios NIS, y es una buena practica (aunque no obligatoria) usarnombres distintos de nuestros nombres de dominios DNS. Nos sera mucho mas facil explicar los dominiosde nuestra red a otros administradores identificando el dominio NIS al que nos referimos.

Es posible facilitar la configuracion mediante un modulo para la herramienta de administracion webWebmin.

Para la instalacion se utiliza el siguiente apt:#apt-get install webmin-nis

Figura 9.10: Interfaz grafica Webmin para el servidor NIS

9.3.3. Configuracion del servidor NIS maestro

La primera cosa que hemos de tener presente es que no podemos montar dos servidores NIS diferentespara un mismo dominio de una red. Si ya existe un dominio en nuestra red deberemos configurar uncliente.

Cuando NIS se desarrollo, en los anos ochenta, se le llamo “paginas amarillas” (Yelow Pages, YPpara abreviar). Cuando Sun Microsystems, los desarrolladores del sistemas operativo SunOS (Solaris),empezaron a vender sus sistemas en el Reino Unido, ocurrio un conflicto: el termino “paginas amarillas”era una marca registrada de British Telecom y para evitar un pleito, Sun renombro el paquete a Serviciode informacion de red, despues otros vendedores de Unix le siguieron.

Por eso hoy encontraremos que todas las herramientas NIS vienen con el prefijo yp en lugar de nis.Por alguna razon los nombres de archivo no se cambiaron con el nombre oficial de paquete.

Jose Antonio Escartın Vigo, Junio 2005.

Page 129: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 9. Servicios de red 111

Para instalar el servidor NIS realizaremos un apt:#apt-get install nis,. . . la instalacion nos pedira que especifiquemos el nombre de dominio

Para obtener mas informacion se instala en el sistema el HowTo de NIS, documento muy clarificador:/usr/share/doc/nis/nis.debian.howto.gz

Disponemos de varios archivos de configuracion:

/etc/yp.conf

/etc/nsswitch.conf

/etc/ypserv.conf

/etc/ypserv.securenets

Una vez configurados el archivo:

#ypserv start, . . . arranca el servidor NIS

#ypserv stop, . . . para el servidor NIS

Despues de la instalacion podemos cambiar el nombre del dominio con el comando:#domainname <dominio>, . . . como por ejemplo: #domainname proyecto.debian.com

Naturalmente, a fin de que se establezca cada vez que volvamos a arrancar el sistema, es necesariosituar el comando domainname en uno de los archivos de inicio rc#.d (Vease apendice D). Para elegirel runlevel del archivo donde realizar el cambio de nombre tenemos que tener en cuenta que hay quecambiarlo antes de que se arranquen los servidores NIS.

Archivos compartidos en NIS

Para compartir los archivos en NIS, necesitamos situarnos en el directorio: /var/yp

Allı encontraremos un Makefile. Este archivo lista los archivos que se compartiran mediante NIS,ası como algunos parametros adicionales sobre como compartirlos. Editamos el Makefile y retocamos lasopciones como se detalla en esta y posteriores secciones. Sin embargo, que se listen aquı no significa quese compartan automaticamente. Este listado simplemente establece los nombres de archivos que se com-partiran una vez compilemos el Makefile.

La mayorıa de las entradas comienzan con: $(YPWDIR) y $(YPSRCDIR), son variables que se configuranal inicio del Makefile, y senalan la ruta donde encontrar los archivos, el valor por defecto es /etc.

Una vez configurado el Makefile, para actualizar los mapas de archivos y configurar el servidor NIScomo primario simplemente ejecutamos:

#ypinit -m, . . . la opcion -m le dice que un servidor primario

Ypinit ejecutara el make, para construir los mapas y ponerlos en los servidores secundarios que se leindiquen en /var/yp/yp-servers.

Jose Antonio Escartın Vigo, Junio 2005.

Page 130: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

112 Servidor Linux para conexiones seguras de una LAN a Internet

En el cuadro 9.1 puede observar un listado tıpico del archivo /var/yp/Makefile.

Cuadro 9.1: Listado del archivo NIS /var/yp/Makefile

# Makefile for the NIS databases

#

# This Makefile should only be run on the NIS master server of a domain.

# All updated maps will be pushed to all NIS slave servers listed in the

# /var/yp/ypservers file. Please make sure that the hostnames of all

# NIS servers in your domain are listed in /var/yp/ypservers.

#

# This Makefile can be modified to support more NIS maps if desired.

...

# If we have only one server, we don’t have to push the maps to the

# slave servers (NOPUSH=true). If you have slave servers, change this

# to "NOPUSH=false" and put all hostnames of your slave servers in the file

# /var/yp/ypservers.

NOPUSH=true

...

# We do not put password entries with lower UIDs (the root and system

# entries) in the NIS password database, for security. MINUID is the

# lowest uid that will be included in the password maps. If you

# create shadow maps, the UserID for a shadow entry is taken from

# the passwd file. If no entry is found, this shadow entry is

# ignored.

# MINGID is the lowest gid that will be included in the group maps.

MINUID=1000

MINGID=1000

...

# Should we merge the passwd file with the shadow file ?

# MERGE_PASSWD=true|false

MERGE_PASSWD=false

# Should we merge the group file with the gshadow file ?

# MERGE_GROUP=true|false

MERGE_GROUP=false

...

# These are the source directories for the NIS files; normally

# that is /etc but you may want to move the source for the password

# and group files to (for example) /var/yp/ypfiles. The directory

# for passwd, group and shadow is defined by YPPWDDIR, the rest is

# taken from YPSRCDIR.

#

YPSRCDIR = /etc

YPPWDDIR = /etc

YPBINDIR = /usr/lib/yp

YPSBINDIR = /usr/sbin

YPDIR = /var/yp

YPMAPDIR = $(YPDIR)/$(DOMAIN)

# These are the files from which the NIS databases are built. You may edit

# these to taste in the event that you wish to keep your NIS source files

# seperate from your NIS server’s actual configurati\’on files.

#

GROUP = $(YPPWDDIR)/group

PASSWD = $(YPPWDDIR)/passwd

SHADOW = $(YPPWDDIR)/shadow

GSHADOW = $(YPPWDDIR)/gshadow

ADJUNCT = $(YPPWDDIR)/passwd.adjunct

ALIASES = $(YPSRCDIR)/aliases

ETHERS = $(YPSRCDIR)/ethers # ethernet addresses (for rarpd)

BOOTPARAMS = $(YPSRCDIR)/bootparams # for booting Sun boxes (bootparamd)

HOSTS = $(YPSRCDIR)/hosts

NETWORKS = $(YPSRCDIR)/networks

PRINTCAP = $(YPSRCDIR)/printcap

PROTOCOLS = $(YPSRCDIR)/protocols

PUBLICKEYS = $(YPSRCDIR)/publickey

RPC = $(YPSRCDIR)/rpc

SERVICES = $(YPSRCDIR)/services

NETGROUP = $(YPSRCDIR)/netgroup

NETID = $(YPSRCDIR)/netid

AMD_HOME = $(YPSRCDIR)/amd.home

AUTO_MASTER = $(YPSRCDIR)/auto.master

AUTO_HOME = $(YPSRCDIR)/auto.home

AUTO_LOCAL = $(YPSRCDIR)/auto.local

TIMEZONE = $(YPSRCDIR)/timezone

LOCALE = $(YPSRCDIR)/locale

NETMASKS = $(YPSRCDIR)/netmasks

YPSERVERS = $(YPDIR)/ypservers # List of all NIS servers for a domain

....

Jose Antonio Escartın Vigo, Junio 2005.

Page 131: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 9. Servicios de red 113

Configuracion de un NIS maestro para poner esclavos

Esto requiere dos tareas:

Editar el archivo /var/yp/yp-servers para colocar todos los servidores NIS secundarios a los que elservidor maestro debera mandar sus mapas. Esto se consigue introduciendo, en una lınea diferente,los nombres de hosts de cada servidor secundario. Por cada nombre de host que listemos en estearchivo tenemos que colocar su entrada correspondiente en el archivo /etc/hosts.

Asegurarnos de que el /var/yp/Makefile tiene la lınea NOPUSH=false

Establecer UID y GID mınimos. Obviamente, no queremos compartir la entrada de root medianteNIS, entonces el mınimo deberıa ser mayor que cero. Estas variables del /var/yp/Makefile son:

MINUID=<numero>

MINGID=<numero>

Configuracion de un servidor NIS secundario

Cuando crece nuestra red, indudablemente encontraremos que necesitamos distribuir la carga de nues-tro servicio NIS entre varias maquinas. Esto es soportado a traves del uso de servidores NIS secundarios.Los servidores no requieren mantenimiento adicional una vez configurados, debido a que el servidor NISmaestro les envıa las actualizaciones si se recontruyen los mapas.

Hay que seguir tres pasos para configurar el servidor NIS secundario:

Configurar el nombre de dominio (domainname)

Configurar el maestro NIS al que se va a unir el esclavo

Ejecutar: #ypinit -s <nis_maestro>, . . . para iniciar el servidor esclavo

Autenticar usuarios mediante NIS

Como NIS se puede usar con otros sistemas para autenticar usuarios, necesitaremos permitir que lasentradas de contrasena encriptadas se compartan. Si usamos contrasenas shadow, NIS automaticamente lomanejara, tomando el campo encriptado del archivo /etc/shadow y mezclandolo con la copia compartidade /etc/passwd en NIS.

Esta opcion se encuentra en el archivo /var/yp/Makefile. A menos que tengamos una razon especıficapara no compartir las contrasenas, dejaremos la variable MERGE PASSWD=true.

El archivo /etc/group permite tener contrasenas de grupo aplicadas en el sistema. Puesto que necesitaser de lectura para todo el mundo, algunos sistemas ofrecen soporte a archivos shadow de grupos. A menosque dispongamos y usemos, el archivo /etc/gshadow, configuraremos la opcion MERGE GROUP=false.

9.3.4. Cliente NIS

El primer paso que deberemos realizar es indicar al cliente NIS, ypbind, cual es el dominio al que se vaa conectar, siendo el comportamiento por defecto de ypbind interrogar al servidor de la red local a la queesta conectado.

De esta forma, si se trata de un ordenador portatil, el cual debera conectarse a diferentes redes pode-mos optar por dejar el archivo /etc/yp.conf vacıo sin especificar el dominio a emplear, de esta forma elypbind realizara la consulta por defecto en la red local en donde se esta conectando.

Para lanzar el cliente NIS, ejecutaremos el siguiente comando:#ypbind

Jose Antonio Escartın Vigo, Junio 2005.

Page 132: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

114 Servidor Linux para conexiones seguras de una LAN a Internet

Configuracion local de NIS: /etc/yp.conf

Si hubiera mas de un dominio en la red especificaremos el servidor NIS de la siguiente forma:

# yp.conf Configurati\’on file for the ypbind process. You can define

# NIS servers manually here if they can’t be found by

# broadcasting on the local net (which is the default).

#

# See the manual page of ypbind for the syntax of this file.

#

# IMPORTANT: For the "ypserver", use IP addresses, or make sure that

# the host is in /etc/hosts. This file is only interpreted

# once, and if DNS isn’t reachable yet the ypserver cannot

# be resolved and ypbind won’t ever bind to the server.

ypserver ypserver.network.com

Donde ypserver.network.com es el nombre del servidor NIS al que nos conectaremos. Evidentementeel ordenador debe saber como resolver el nombre del servidor, ya sea utilizando DNS o especificando elnombre e IP en el archivo /etc/hosts.

Tambien podemos especificar multiples dominios en el archivo /etc/yp.conf de la siguiente forma:

#yp.conf#domain proyecto server debiandomain casa server debian-home

Al arrancar el ordenador podemos emplear el comando domainname para especificar el dominio al quenos estamos conectando. De esta forma el cliente NIS seleccionara el servidor adecuado:

#domainname proyecto

Si no supieramos el nombre o IP del servidor en un determinado dominio se podrıa modificar el archivode configuracion de la siguiente forma:

#yp.conf#domain proyecto server debiandomain casa server debian-homedomain trabajo broadcast

La opcion broadcast indica al cliente NIS que, si nos conectamos al dominio trabajo, debe utilizar elservidor que encuentre en la red local.

Seleccionar los archivos de configuracion del servidor

Una vez establecida la conexion con el servidor NIS, es necesario especificar que archivos de configu-racion importaremos.

Normalmente los archivos de configuracion seran los correspondientes a la configuracion de usuarios,grupos y en el caso de redes que no utilicen DNS, el archivo de hosts. Pudiendo importar cualquier archivode configuracion comun a todos los ordenadores de la red y que sufra modificaciones periodicas, evitandode esta forma tener que realizar manualmente esta tarea en cada ordenador de la red.

Esto se realiza mediante el archivo:/etc/nsswitch, . . . Name Service Switch

El orden correcto de los servicios dependera del tipo de datos que cada uno de ellos ofrezca, ası nor-malmente se consultara en primer lugar el archivo local y posteriormente el ofrecido por NIS.

Como antes he comentado, una de las principales utilidades de NIS es mantener sincronizados en lared los archivos empleados para la administracion de usuarios, de tal forma que podamos tener un controltotal sobre los usuarios que pueden acceder a los diferentes ordenadores de la red sin necesidad de editarmanualmente cada uno de los hosts.

Jose Antonio Escartın Vigo, Junio 2005.

Page 133: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 9. Servicios de red 115

No obstante, con activar este servicio en /etc/nsswitch.conf, no es suficiente, debemos asegurarnos deque el numero o ID de los usuarios locales coinciden con el de los contenidos en el servidor.

Una vez realizada esta comprobacion podremos activar este servicio NIS anadiendo el siguiente codigoal archivo /etc/nsswitch.conf :

passwd: nis filesgroup: nis files

El formato del archivo /etc/nsswitch.conf es el siguiente:nombre-archivo: nombre-servicio

Donde nombre-archivo es el nombre del archivo que necesita referenciarse y nombre-servicio es el nom-bre del servicio que se utiliza para encontrar el archivo. Se pueden listar varios servicios, separados porespacios.

Estos son los servicios validos:

Servicio Descripcionfiles Usa el archivo de la propia maquinayp Usa NIS para realizar la busquedanis Usa NIS para realizar la busqueda (nis es un alias de yp)dns Usa DNS para realizar la busqueda (se aplica solo al archivo hosts)[NOTFOUND=return] Detiene la busquedanis+ Usa NIS+

Prueba de configuracion del cliente NIS

Una vez hayamos configurado los archivos:

/etc/yp.conf

/etc/nsswitch.conf

Y tengamos en funcionamiento el demonio de cliente ypbind, podemos usar el comando ypcat paravolcar un archivo de nuestro servidor NIS en pantalla. Para ello, escribimos: #ypcat passwd

Vuelca el archivo passwd (mapa del archivo) en pantalla (si es que lo estamos compartiendo por NIS).Si no vemos el archivo, necesitamos hacer una comprobacion de las configuraciones del servidor y el clientecliente, y probar de nuevo.

9.3.5. Herramientas basicas

Para trabajar con NIS disponemos de algunas herramientas que extraen informacion de la base dedatos mediante la lınea de comandos:

ypcat : Comentada en la seccion anterior, vuelca los contenidos de un mapa NIS (archivo NIS).

ypwhich: Devuelve el nombre del servidor NIS que responde a las peticiones. Tambien es una buenaherramienta de diagnostico, si NIS parece no funcionar correctamente.

ypmatch: Es muy parecido a ypcat. Sin embargo, en lugar de mostrar el mapa entero, le proporciona-mos un valor clave y solo aparecera la entrada correspondiente a esa clave. Esto es util, por ejemplo,para el passwd: #ypmatch josan passwd

Jose Antonio Escartın Vigo, Junio 2005.

Page 134: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

116 Servidor Linux para conexiones seguras de una LAN a Internet

9.3.6. Problemas de seguridad

NIS se considera seguro, desde el punto de vista del servidor, puesto que no modifica los mapas direc-tamente y los archivos pueden ser leıdos por todo el mundo.

Desde el punto de vista del cliente, la seguridad es bastante pobre. Incluso en una red local, hay quesaber que las contrasenas circulan sin encriptar sobre la red. Cualquier maquina puede “escuchar” losintercambios entre un cliente NIS y el servidor.

Por defecto no se utiliza ningun algoritmo de cifrado en estas comunicaciones. Y como no utiliza au-tenticacion a nivel de RPC, cualquier maquina de la red puede enviar una respuesta falsa, y pasar por elservidor de NIS. Para que el ataque tenga exito, el paquete con la respuesta falsa debe llegar al clienteantes de que responda el servidor. Tambien debe ser capaz de observar la peticion y generar la respuesta,para ello es preciso que la maquina que lleva a cabo el ataque este situada en el camino de comunica-cion entre servidor y cliente. Se puede crear facilmente un mapa NIS para sustituir al del servidor. Unintruso podra acceder al cliente NIS a traves de los comandos de acceso remoto, cambiando en el mapa,la direccion de la maquina que lleva a cabo la intrusion, por otra maquina que se encuentre en el archivo/etc/hosts.allow.

La solucion de estos problemas de seguridad pasa por utilizar autenticacion en el protocolo RPC. NIS+trata de solucionar ese problema, mediante soporte para el cifrado. Elimina la mayor parte de problemasde seguridad que NIS planteaba, puesto que utiliza RPCs seguros, si se configuran de forma adecuada. Enestos momentos NIS+ es bastante experimental e inestable, por eso me he centrado en NIS.

En NIS tambien se han buscado algunas soluciones al problema de la seguridad. Solıa tener un defectograve, dejaba su archivo de contrasenas legible por practicamente cualquier persona en todo Internet, estosuponıa un gran numero de posibles intrusos. Si un intruso sabıa nuestro dominio NIS y la direccion denuestro servidor, simplemente tenıa que enviar una consulta al mapa passwd y recibir al instante todaslas contrasenas encriptadas del sistema. Con un programa rapido para crackear contrasenas, y un buendiccionario, averiguar unas cuantas contrasenas de usuario no tenıa ningun problema.

De todo esto trata la opcion securenets. Simplemente restringe el acceso a su servidor NIS a ciertosnodos, basandose en la direccion IP. La ultima version de ypserv implementa esta caracterıstica de dosformas.

Utilizando un archivo de configuracion especial: /etc/ypserv.securenets.

Utilizando convenientemente los archivos /etc/hosts.allow y /etc/hosts.deny.

Jose Antonio Escartın Vigo, Junio 2005.

Page 135: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 9. Servicios de red 117

9.4. NFS: Sistema de archivos Linux en red

NFS es un protocolo que data de los anos 80. En esas fechas los problemas de seguridad eran menores.Todavıa podıan construirse protocolos basados en la confianza, tanto el servidor como el cliente, confiandoen la informacion que intercambian. Internet convierte este principio en algo absurdo y este es sin dudauno de los mayores problemas de NFS. La segunda version del protocolo es la primera version publicaday sigue la siendo la mas extendida en nuestros dıas. Existen implementaciones sobre varias plataformasdiferentes y se han descrito pocos problemas de compatibilidad.

La tercera version del protocolo data de 1992 y presenta varias mejoras:

Mejora del rendimiento debido a la reescritura del codigo de red y uso de paquetes de datos mayores.

Mejora en la seguridad:

• Listas de ACL (Listas de control de acceso) que permiten definir acceso a los recursos por UIDy archivo a archivo.

• Implementacion de un sistema de autenticacion basado en contrasena.

Por desgracia, la tercera version de NFS para Linux, esta todavıa en panales. NFS para GNU/Linuxes intrınsecamente inseguro y peligroso si se administra mal.

NFS es una interfaz entre el sistema de archivos fısico y un sistema remoto. Cuando NFS recibe unapeticion vıa red, opera las modificaciones sobre el sistema local.

Dispone de todo lo que podemos esperar de un sistema de archivos tipo Unix: gestion de permisos,propiedades avanzadas, enlaces, tuberıas con nombre . . .

Pero como indica su nombre ha sido ideado para ser usado de forma transparente a traves de la red.Desde el punto de vista del cliente, se trata de un sistema de archivos clasico, se monta con mount,

y se integra en la jerarquıa de archivos existente en la maquina. Todas las ordenes de entrada/salida sonenviadas al servidor que se encarga de procesarlas, controlar acceso concurrente a archivos, etc.

9.4.1. Cliente NFS

Montaje de las particiones

Para poner en servicio un cliente de NFS, hay que asegurarse de que el kernel de Linux que estamosusando tiene compilado el soporte para NFS.

Para montar una particion hay que conocer algunos parametros:

El nombre del servidor.

El nombre de la particion a la que se desea acceder.

El nombre del directorio donde vamos a montar la particion NFS.

La sintaxis del comando mount es la siguiente:#mount -t nfs maquina:particion_a_montar punto_de_montaje

Se puede facilitar el montaje de una particion si la incluimos en el /etc/fstab para que se monte aliniciarse el sistema.

Podrıamos usar algunas opciones de montaje para dotar de mayor seguridad al sistema.

La opcion -o nosuid quita el bit SUID sobre los ejecutables montados por NFS. Esto puede resultarmolesto si estamos montando /usr pero tiene sentido si estamos montando particiones de datos.

La opcion -o noexec es todavıa mas radical, ya que imposibilita la ejecucion de programas desdela particion montada por NFS. Si tenemos usuarios que escriben scripts esta opcion puede ser muymolesta.

Jose Antonio Escartın Vigo, Junio 2005.

Page 136: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

118 Servidor Linux para conexiones seguras de una LAN a Internet

Ejemplos de uso

Los ejemplos de uso de una particion NFS son numerosos. Podemos imaginar, entre otros, una particionde lectura/escritura sobre /home. Ası cada usuario puede trabajar sobre cualquier maquina de la redencontrando siempre sus archivos personales sin esfuerzo.

Es frecuente que se exporten los buzones de correo de los usuarios. Esta es una mala idea, ya que lagestion de concurrencia de NFS no es muy fiable y exportar /var/spool/mail por ejemplo, puede producirperdidas de mensajes.

Podemos tambien compartir una particion que contenga ejecutables, como /usr/bin para ganar algode espacio en disco sobre las maquinas locales. Llegando al extremo podrıamos tener ordenadores sin discoduro trabajando directamente sobre particiones NFS.

Las herramientas del cliente: showmount

Estrictamente hablando solo es necesario el programa mount para hacer funcionar un cliente de NFS.Pero las utilidades de cliente son a menudo muy utiles. Showmount en este caso, nos permite ver la listade particiones NFS montadas por otras maquinas dentro de la red.

9.4.2. Montaje automatico de particiones NFS

Utilizaremos a este proposito el /etc/fstab como para cualquier otro sistema de archivos.

maquina:partition_distante punto_montaje nfs defaults 0 0maquina:partition_distante punto_montaje nfs noauto,user 0 0

La primera opcion permite montar la particion automaticamente en el arranque. La segunda opcionpermite que cualquier usuario monte la particion con mount, pero no en el arranque.

9.4.3. Propiedades de las particiones montadas

Los derechos de propiedad (permisos de acceso)

Cuando navegamos por una particion montada, podemos constatar una serie de cosas. Lo primero esque los propietarios de los archivos sobre el servidor y sobre la maquina local no concuerdan. Es que Linuxno usa los nombres de usuario y grupos sino que utiliza los codigos de usuario y de grupo (UID, GID). Lasequivalencias aparecen en /etc/passwd y /etc/groups respectivamente, estos archivos no son compartidospor NFS.

Ahora imaginemos lo siguiente: el usuario Paco dispone de una cuenta en el servidor donde tieneasignado el UID 542 y allı tiene algunos archivos de su posesion. Su particion de trabajo es importadasobre otra maquina donde el UID 542 corresponde al usuario Pepe. Esto es un problema porque ahoraPepe puede acceder a los documentos de Paco, pero Paco no puede acceder ni a sus propios documentos.Se trata de uno de los inconvenientes ligado a NFS.

Varias soluciones son posibles, siendo la mas evidente el uso de servidores NIS para tener un controlde usuarios uniforme.

Los accesos concurrentes

Las diferentes versiones del protocolo NFS dejan en manos del implementador la solucion de los pro-blemas derivados de la concurrencia. Uno de los problemas mas habituales en una red lenta o subestimadaes que las particiones pueden ser desmontadas de forma “violenta” cuando los tiempos de respuestas sonexcesivamente lentos. Esto implica problemas de perdida de datos.

Jose Antonio Escartın Vigo, Junio 2005.

Page 137: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 9. Servicios de red 119

9.4.4. Servidor de NFS

Existen dos servidores NFS en Linux, uno funciona como un servidor tradicional y el otro integrado enel kernel. Este ultimo es frecuentemente llamado knfsd, y ofrece mejores resultados en terminos de rapidezpero le falta estabilidad.

Para realizar la instalacion haremos un apt:#apt-get install nfs-kernel-server nfs-user-server

El archivo /etc/exports

Contiene la lista de las maquinas y de los repertorios que deben ser exportados. Su sintaxis es:

# /etc/exports: the access control list for filesystems which may be exported# to NFS clients. See exports(5).

/directorio maquina1(option) maquina2(option) .../usr pepe(ro) 192.168.0.10(rw)

La mayorıa de implementaciones de NFS no autorizan la exportacion de un subdirectorio de un di-rectorio previamente exportado. El servidor de NFS del kernel si que permite esta opcion y esto puedefavorecer ciertas configuraciones.

Entre las opciones mas corrientes, podemos citar las opciones de seguridad que veremos mas adelantey las opciones de montaje tales como rw o ro que permiten la exportacion en modo lectura/escritura osolo lectura respectivamente.

Por defecto los directorios son exportados en modo rw (lectura/escritura).Los nombres de las maquinas pueden ser nombres DNS, direcciones IP, clases de direcciones IP o do-

minios enteros. Si estamos utilizando NIS podemos tambien precisar el nombre del grupo de NIS.

Modificar dinamicamente las particiones exportadas no es posible, el servidor NFS no actualiza loscambios realizados en el archivo /etc/exports.

Estos cambios hay que activarlos usando el comando exportfs:#exportfs -r, . . . vuelve a cargar la configuracion de /etc/exports

Este comando permite sincronizar la lista de montajes posibles, conservada en /var/lib/nfs/xtab ybasada en el archivo /etc/exports.

Para anular la exportacion de directorios (prohibicion de montaje):#exportfs -u <directorio>

Este comando nos permite interrumpir momentaneamente la exportacion de uno o varios directorios.Este comando no modifica el contenido de /etc/exports y la modificacion no es definitiva. Permite prohibirtodo nivel de montaje, pero los montajes existentes no son desactivados.

Restriccion de los permisos de los clientes

Cuando el administrador de una maquina monta una particion NFS, dispone de permisos de acceso deescritura, como sobre cualquier otra particion del disco local. Si la red es administrada por varios usuariosroot, en maquinas distintas se sugiere el uso de la opcion: root squash en el archivo de /etc/exports.

Esta opcion elimina los privilegios de root sobre la particion montada, lo que asegura la integridadde la misma. En el marco de una exportacion de /home impedirıa que el usuario root de una maquinacualquiera accediera a los directorios personales de todos los miembros de la red NFS.

Se puede usar tambien la opcion all squash que otorga a todos los usuarios los privilegios de “nobody”(usuario anonimo).

Jose Antonio Escartın Vigo, Junio 2005.

Page 138: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

120 Servidor Linux para conexiones seguras de una LAN a Internet

El problema del UID

El problema de propiedad de los archivos es particularmente sensible cuando tratamos con particionesde usuarios. Es posible esquivar el problema usando la opcion all squash en el montaje.

En primer lugar no montamos directamente /home en el conjunto de maquinas cliente, sino que elservidor debe exportarlas una a una sobre cada cliente. Hecho esto, usamos la opcion all squash para quetodas las modificaciones remotas sean consideradas como realizadas por el usuario nobody.

Las opciones anonuid=UID y anongid=GID nos permiten reemplazar nobody por el UID y el GID delusuario en cuestion, para que tenga acceso a su directorio personal. Allı podra usar los archivos de los queel es dueno sin ningun problema.

La autenticacion por maquina funciona relativamente bien si los recursos personales son montados desdeclientes Windows donde solo hay un usuario. Esto, sin embargo, es problematico en entornos multiusuario(como los entornos NT).

Las herramientas del servidor : mountd y nfsd

Si estamos usando el NFS incluido en el kernel, el trabajo lo lleva a cabo directamente el modulo nfsd.ode Linux. El programa rpc.nfsd solo sirve para comunicar el portmapper con el kernel.

El programa rpc.mountd es el programa responsable de la seguridad de los montajes con NFS. Cuandouna maquina cliente solicita la exportacion de una particion, mountd verifica si dicha maquina clienteesta autorizada.

9.4.5. Configuracion grafica de NFS, interfaz Webmin

Para facilitarnos la tarea de la configuracion de archivos, en Debian, disponemos de la herramienta web:Webmin. Esta herramienta nos permitira una configuracion y administracion de forma simple y sencilla.

Para instalar el modulo NFS de Webmin realizaremos un apt:#apt-get install webmin-exports

Figura 9.11: Modulo Webmin para NFS

Jose Antonio Escartın Vigo, Junio 2005.

Page 139: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 9. Servicios de red 121

9.5. Samba: Servicio de conexiones para sistemas Microsoft

En esta seccion configuraremos el servidor Samba, mostrando sus funcionalidades mas habituales.

Basado en los articulos sobre Samba publicados en http://bulma.net

9.5.1. Comparticion de recursos

El servicio de FTP permite intercambiar archivos en red. Pero presenta serios problemas de integracion.Es decir no es transparente al usuario, su uso cambia segun trabajemos con los entornos Linux o Windows.

NFS, solucion limitada a maquinas Linux

Entre maquinas Linux, es posible usar el protocolo NFS para compartir archivos. Se trata de una buenasolucion puesto que permite conservar todas las funcionalidades del sistema de archivos Linux. Pero tieneuna serie de inconvenientes:

NFS presenta problemas de seguridad

No existe una buena implementacion libre de NFS para equipos Windows

Protocolo CIFS, una posible solucion

En lugar de usar una solucion costosa, en los equipos Windows, es mas economico (y lleva menostrabajo) utilizar el protocolo empleado nativamente por las maquinas Windows. El protocolo CIFS (Com-mon Internet FileSystem), tiene implementaciones sobre un gran numero de plataformas. Existiendo unaimplementacion libre, llamada SaMBa, que permite utilizarlo sobre servidores Unix/Linux.

9.5.2. ¿Que es Samba?

Samba es una implementacion bajo Unix/Linux de los protocolos CIFS y NetBIOS (antiguamentellamado SMB, de allı el nombre de Samba)

Este protocolo permite compartir varios recursos diferentes:

El acceso a los directorios compartidos.

El acceso a las impresoras compartidas.

El paquete Samba incluye utilidades para controlar el acceso de los archivos con la misma soltura queun WindowsNT. Ademas Samba puede colaborar con un servidor NT existente, o reemplazarlo del todo.Veremos mas adelante como configurarlo en detalle, pero es posible:

Proteger con una contrasena el acceso a un directorio compartido.

Proteger con una contrasena personificada para cada usuario, y dotar de permisos de acceso indivi-dualizados.

Las herramientas necesarias

Los paquetes relacionados con Samba son los siguientes:

samba-common: Contiene los elementos que van a permitir el buen funcionamiento de los otrospaquetes:

• Herramientas de conversion de tablas de caracteres Windows.

• Archivos de configuracion.

• Documentacion basica de Samba.

Jose Antonio Escartın Vigo, Junio 2005.

Page 140: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

122 Servidor Linux para conexiones seguras de una LAN a Internet

samba: Contiene todos los programas del servidor, es decir:

• Aplicaciones que permiten hacer accesible los recursos a los usuarios.

• Herramientas de configuracion.

• Documentacion esencial de Samba.

smbclient : Contiene los programas clientes, que permiten acceder a los recursos compartidos.

smbfs: Configura el sistema de archivos Samba.

samba-doc: Contiene toda la documentacion necesaria para configurar en detalle todos las funcionesdel servidor Samba.

swat : Es una aplicacion web que permite configurar el servidor Samba facilmente. Pero para ello noshara falta: Apache y varios paquetes de dependencias.

Estos paquetes se pueden instalar facilmente con apt:#apt-get install samba samba-doc smbclient smbfs swat

Los demonios de Samba

Dos demonios se encargan de ofrecer los servicios del conjunto de aplicaciones Samba.

El demonio smbd es el demonio que se encarga de la comparticion de recursos, pero tambien delcontrol del acceso a los mismos. Gestiona los permisos de los diferentes clientes una vez que estoshan sido identificados.

El demonio nmbd se ocupa de publicitar los servicios. Es decir, se encarga de informar a las maqui-nas presentes en la red sobre cuales son los recursos disponibles. Este demonio maneja tambien laresolucion de nombres de NetBIOS. Para ello, puede comunicarse con un servidor WINS (WindowsInternet Naming Service) que se encuentre presente en la red.

Existen dos formas para realizar la configuracion:

Editar directamente los archivos de configuracion con un editor de texto.

Manejar una herramienta grafica que generara el mismo resultado. Aquı veremos, el manejo deSwat (Samba Web Administration Tool), que se trata de una interfaz que se comporta como unservidor Web, conectandose a la maquina por medio de un simple navegador. Es posible leer ladocumentacion, cambiar la configuracion y realizar el resto de tareas administrativas despues dehabernos validado con un usuario y una contrasena. El servidor Swat, por defecto, se ejecuta en elpuerto http://localhost:901.

Herramientas del cliente

Las herramientas para el cliente bajo Microsoft Windows son aquellas utilizadas habitualmente paratrabajar con servidores NT. No hay que cambiar nada en este sentido, el funcionamiento para las maquinasWindows es totalmente transparente.

En Linux, contamos con el paquete smbclient para conectarse con los servicios CIFS, sean proporcio-nados por un servidor Windows o por un servidor Linux que ejecute Samba.

Jose Antonio Escartın Vigo, Junio 2005.

Page 141: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 9. Servicios de red 123

9.5.3. Configuracion grafica de Samba, interfaz SWAT

La herramienta SWAT es el ejemplo de una buena interfaz de administracion grafica. Intenta de formarelativamente transparente proporcionar todas las funcionalidades de la configuracion en modo texto.

Como la configuracion de Samba es sencilla, ha sido posible agrupar todas las posibilidades en unnumero reducido de opciones, sin sobrecargar la interfaz.

Ofrece la posibilidad de generar un archivo /etc/samba/smb.conf de muestra, con el que podremosestudiar la sintaxis del script por si tuvieramos que editarlo a mano en alguna ocasion.

Si no lo realiza la instalacion en el sistema, para poder ejecutar SWAT hay que modificar el archivo/etc/inetd.conf. Y anadir la siguiente lınea:

swat stream tcp nowait.400 root /usr/sbin/swat swat

Figura 9.12: Interfaz grafica Swat para Samba

Presentacion de los archivos en modo texto

/etc/smbpasswd : Contiene los passwords de los usuarios de Samba, de forma cifrada.

/etc/lmhosts: Es un interfaz entre los nombres de maquinas NetBIOS y las direcciones IP numericas.Su formato es parecido al de /etc/hosts.

/etc/smbusers: Contiene una lista de usuarios del sistema, seguida de una lista de los usuarios Sambaque les corresponden.

De esta forma es posible crear varios usuarios Samba sin tener que crear para cada uno de ellos unusuario del sistema.

Jose Antonio Escartın Vigo, Junio 2005.

Page 142: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

124 Servidor Linux para conexiones seguras de una LAN a Internet

Los menus de SWAT

Paso a detallar cada una de las secciones del archivo /etc/samba/smb.conf. Este archivo es parecido alos archivos .ini, habituales del entorno Windows.

HOME : Permite acceder a la version html de la documentacion Samba. Faltan tal vez algunasopciones, en particular la ayuda sobre el propio SWAT deja bastante que desear. Se trata a menudo deuna ayuda relativa a las opciones de los archivos en modo texto, mas configurables que la herramientagrafica. De un modo u otro toda esta documentacion es en el fondo muy descriptiva.

GLOBALS : Contiene variables generales que se aplican al total de los recursos puestos a disposiciondel servidor Samba. Esta seccion contiene tambien informacion de identificacion del servidor dentrode la red NetBIOS : grupo de trabajo, nombre e identificador. Ası mismo, aquı podemos establecerlos modos de funcionamiento de Samba.

SHARES : Contiene la lista de comparticiones de disco efectuadas por la maquina. Es aconsejableprimero crear la particion compartida (o los directorios) y despues precisar para cada particion suspropiedades particulares.

PRINTERS : Es casi identico al anterior, pero permite compartir impresoras en lugar de particionesde disco o directorios.

WIZARD : Permite configurar de una forma rapida los archivos de configuracion, establecer el modode funcionamiento del servidor y el servidor WINS de la red. Desdeaquı, tambien podemos cambiarla configuracion para compartir los directorios /home por Samba.

STATUS : Muestra el estado actual del servidor, el estado de los demonios Samba, las conexionesactivas, los archivos compartidos y los archivos abiertos actualmente.

VIEW : Nos permite ver el archivo smb.conf tal cual ha sido redactado por SWAT. Es posible vertambien la totalidad de las opciones posibles, incluso las que SWAT no ha cambiado, pero que tienenun valor por defecto.

PASSWORD : Permite al usuario cambiar su contrasena. Se trata de un interfaz grafico para elprograma smbpasswd. Sirve tambien al administrador para anadir nuevos usuarios.

9.5.4. Funcionamiento de CIFS

Sobre una misma red, varias maquinas pueden poner recursos a disposicion de otras. CIFS dispone deun sistema para anunciar servicios (browsing), que permite saber que recursos compartidos hay disponibles.

Cada maquina que desea anunciar sus recursos compartidos a las otras maquinas contacta con unamaquina en particular, el Servidor de Anuncios (Master Browser) que se encarga de centralizar estasnotificaciones de presencia. Es posible configurar el servidor Samba para que sea el mismo Servidor deAnuncios o dejar esta tarea a una maquina Windows.

El acceso a los recursos puede controlarse de dos formas:

Escondiendo el recurso, es decir, no anunciandolo a ciertas maquinas de la red.

Estableciendo un sistema de validacion para restringir el acceso, basado en contrasena.

El anuncio de servicios esta limitado al “grupo de trabajo”. Cada maquina Windows puede ser miembrode un solo grupo, y por tanto, solo puede pertener a un conjunto de maquinas que compartan los mismosrecursos. Es posible de este modo separar conjuntos de recursos compartidos, creando distintos gruposde trabajo. Si lo que deseamos es tener maquinas accediendo a los recursos de varios grupos distintos, esnecesario pasar por un sistema de autenticacion.

Jose Antonio Escartın Vigo, Junio 2005.

Page 143: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 9. Servicios de red 125

Existen varias formas de autenticacion, cada una con sus ventajas e inconvenientes:

La autenticacion por usuario y contrasena: Se trata del metodo por defecto. Representa la ventajade permitir una gestion fina de los permisos. Para cada usuario es posible definir el acceso o no aunos recursos. Este metodo presenta un inconveniente: cada usuario debe disponer de una cuenta enla maquina Unix, para permitir la autenticacion.

El control de acceso por comparticiones: Se trata de un metodo mas global: cada recurso compartidoes protegido por un password propio. Para ello es necesario que varios usuarios conozcan el mismopassword y que recuerden la contrasena adecuada para cada recurso compartido al que accedan.

Este metodo presenta la ventaja de que no son necesarias tantas cuentas de usuario como usuarioshaya, sino tantas como recursos se compartan.

Autenticacion contra otro servidor : Existen tambien dos metodos indirectos de control de acceso.

• El metodo server : Consiste en consultar con otro servidor CIFS, que se encargara de la auten-ticacion.

• El metodo domain: Consiste en validarse contra el servidor de dominio NT.

9.5.5. Parametros globales

Es necesario elegir algunos parametros de funcionamiento del servidor y para identificarlo y conseguirque se integre en la red.

El campo server string : Permite elegir la descripcion que acompana al nombre del servidor en lalista de recursos anunciados.

El campo netbios name: Permite definir el nombre de la maquina, no como un nombre de DNS, sinocomo un nombre de resolucion de nombres propio del protocolo NetBIOS. Es importante entenderque son dos cosas totalmente diferentes.

El campo workgroup: Permite elegir el grupo de trabajo del servidor Samba.

El campo interfaces: Permite identificar la o las tarjetas de red que enlazan el servidor con el grupode trabajo.

Tambien disponemos de una serie de parametros referidos al control de acceso:

El campo security : Permite elegir el metodo de autenticacion, podemos elegir uno de los vistosanteriormente.

Los menus hosts allow y host deny permiten controlar el acceso a los recursos de ciertas maquinas.Las configuraciones hechas en esta seccion se aplican a la totalidad de los recursos compartidos,independientemente de la configuracion especifica.

Las configuraciones realizadas por Swat se reflejan en el archivo de configuracion /etc/smb.conf. Sieditamos dicho archivo podremos ver algo de este estilo:

[global]workgroup = nombre_del_gruposerver string = Servidor Sambasecurity = SHARElog file = /var/log/samba/log.%mmax log size = 50

Jose Antonio Escartın Vigo, Junio 2005.

Page 144: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

126 Servidor Linux para conexiones seguras de una LAN a Internet

9.5.6. Impresoras

Samba permite compartir facilmente una impresora conectada fısicamente a una maquina Linux, ha-ciendo asi accesible a todas las maquinas conectadas a la red.

Una impresora de red que no soporte mecanismos de autenticacion puede ser puesta a disposicion delos usuarios gracias a un servidor de impresion de Samba, lo que permite controlar el acceso.

Esta operacion de elegir impresora, se realiza dentro del menu PRINTERS. Este presenta una listade impresoras existentes. Seleccionando una en la lista desplegable y usando el comando Choose Printer(elegir impresora) accederemos a su configuracion.

Por defecto Samba extrae la lista de impresoras disponibles de /etc/printcap. Si la maquina dispone deotras impresoras, es posible anadirlas, introduciendo su nombre en el campo Create Printer y confirmandola accion.

El camino de acceso (PATH), en una impresora se trata de del camino hacia el directorio utilizado porSamba para conservar la cola de impresion. En general se adopta /var/spool/samba.

Autorizar el acceso guest, es permitir a cualquier usuario de una maquina miembro del grupo detrabajo, usar la impresora.

Hay que tener mucho cuidado con esto, la integracion en un grupo de trabajo no es un metodo fiable devalidacion. Cualquier usuario de una maquina Windows puede cambiar su grupo de trabajo tantas vecescomo desee sin que ningun mecanismo de autenticacion se lo impida. De este modo podrıa introducirseen un grupo con permisos de impresion un usuario al que en principio habıamos dejado fuera. Puede sernecesario usar restricciones por nombre de maquina (archivos host allow y host deny) para una mayorseguridad.

El menu browseable indica que este recurso debe ser anunciado por nmbd, y por tanto ser visible paratodos los usuarios.

9.5.7. Comparticion de directorios

Algunas opciones son identicas a la comparticion de impresoras. Las opciones que permiten limitar elacceso a ciertas maquinas, elegir el camino de acceso al recurso (en este caso, directorio a compartir), y laautorizacion de un usuario invitado son identicas a las que hemos encontrado en la seccion PRINTERS.

En el caso de la comparticion de espacio en disco es posible tener un mejor control sobre el acceso.Activando la opcion read only, autorizar solamente el acceso en modo lectura o definir sobre un mismodirectorio varios tipos de permisos. Por ejemplo, se podrıa ofrecer acceso de solo lectura a la totalidad delgrupo y luego afinar un acceso de escritura a ciertos usuarios en concreto.

Si la seguridad esta en modo compartido (share), todos los usuarios disponen, previa autenticacion, delos derechos correspondientes al directorio que es compartido. El sistema usa un metodo heuristico paradeterminar el identificador de un usuario que se conecta, pero este metodo es facilmente manipulable.Ası que mas vale usar la autenticacion en modo usuario. Este modo permite por ejemplo, compartir lascarpetas personales del usuario sin riesgo alguno.

Por defecto, Samba no utiliza contrasenas cifradas. Esta eleccion le permite interoperar con clientesde Windows 3.x y Windows95. Por culpa de esta compatibilidad perdemos seguridad y es necesario tocarel registro del sistema de Windows en maquinas Win98 y posteriores para que todo funcione. Si en la redno hay maquinas windows95 o anteriores, es muy recomendable configurar el servidor de Samba para queuse contrasenas cifradas.

Esto se hace, anadiendo al archivo smb.conf la siguiente lınea:encrypt passwords = Yes, . . . dentro de [global]

Estas contrasenas son almacenadas dentro del archivo /etc/smbpasswd. Las maquinas clientes contactancon el servidor y reciben una clave codificada usando la contrasena cifrada. El resultado es reenviado alservidor, que hace la misma operacion. Si los dos resultados son identicos la autenticacion es correcta.Esto impide a un usuario “malicioso” hacerse con los passwords que atraviesan la red camino al servidoren busca de la autenticacion.

Jose Antonio Escartın Vigo, Junio 2005.

Page 145: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 9. Servicios de red 127

9.5.8. Limitar acceso de los usuarios

Para cada recurso es posible restringir el acceso a ciertos usuarios. Esto se realiza en en /etc/smb.conf,para cada una de las lıneas de recursos compartidos que deseamos limitar, podemos anadir la lınea:

valid users = usuario1, usuario2

En ausencia de valid, el recurso es accesible por todos los usuarios del servidor Samba. Si esta lıneaesta presente el acceso esta reservado unicamente a los usuarios mencionados.

La opcion read only, permite impedir a los usuarios que escriban en el directorio compartido. Pudiendotambien limitar el acceso a unos usuarios concretos.

Para ello tenemos dos posibilidades:

Autorizar el acceso de escritura y bloquear ciertos usuarios con derecho de solo lectura, colocandosu nombre en la seccion read list= del recurso compartido.

Autorizar el acceso en solo lectura y dar el privilegio de escritura a ciertos usuarios gracias a laseccion write list= del recurso compartido.

9.5.9. Integracion de Samba en un dominio NT

Los dominios NT son variantes de los grupos de trabajo. Igual que los grupos, permiten anunciarlos recursos a diferentes clientes. La principal diferencia se encuentra a nivel de autenticacion. Todos losmiembros de un dominio utilizan la misma base de datos de usuarios y contrasenas.

Cuando un cliente miembro de un dominio intenta acceder a un recurso, envıa una peticion a todas lasmaquinas de la red, y se autentica contra la primera que responde. En una red NT, la tarea de responderse lleva a cabo la maquina “mas activa” que tenga acceso a la base de datos de usuarios. Se trata delPrimary Domain Controller (PCD), el controlador del dominio principal. En su ausencia, los servidoressecundarios o BCDs pueden tomar el relevo.

Una vez la maquina cliente se ha autenticado con un controlador del dominio, el cliente no tiene porquevolver a validarse dentro del dominio aunque decida acceder a otro recurso compartido diferente del inicial.El controlador del dominio “memoriza” las autenticaciones satisfactorias.

Es posible configurar un servidor Samba para que se integre dentro de un dominio NT, para ello hayque seguir el siguiente metodo:

Lo primero consiste en declarar Samba como un miembro del grupo de trabajo del servidor NT.Seleccionando en el Swat Security=SERVER, le estamos pidiendo al servidor de Samba que contactecon un servidor NT.

El servidor NT, se encuentra indicado en la seccion password server = nombre del servidor) para laautenticacion. Evidentemente el servidor NT debe estar configurado para responder a las peticionesde autenticacion del servidor de Samba.

Despues hay que crear una cuenta para el servidor:

#smbpasswd -j nombre_del_dominio

Por ultimo, hay que asegurarse de que cada usuario, que el servidor NT va a autenticar, tiene unacuenta en la maquina NT consiguiendo con esto que los permisos funcionen.

Jose Antonio Escartın Vigo, Junio 2005.

Page 146: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

128 Servidor Linux para conexiones seguras de una LAN a Internet

9.5.10. Configuracion de Samba como controlador de dominio

Samba es capaz de comportarse como un PDC (Controlador de Dominio Primario).

Para configurarlo, hay que realizar varias etapas:

1. Autorizar las peticiones de autenticacion de otras maquinas.

2. Configurar la autenticacion usuario por usuario.

3. Declararse Master Browser, es decir invertir el mecanismo de eleccion habitual en las maquinas NTpara llevarlas a nuestra maquina Samba.

En el archivo /etc/samba/smb.conf, la seccion [GLOBAL] debe contener los siguientes elementos:

domain logons = yessecurity = useros level = 34local master = yespreferred master = yesdomain master = yes

Si queremos compartir permitiendo la autenticacion de usuarios, creamos una comparticion ficticia,siguiendo este patron:

[netlogon]path = /export/samba/logonpublic = nowriteable = nobrowsable = no

Esta comparticion no ofrece el acceso a ningun recurso, sin embargo permite la autenticacion de lasdiferentes maquinas.

Autorizar la conexion de las maquinas NT

Las maquinas NT intentan conectarse directamente al servidor y no a un recurso en concreto. Es portanto preciso autorizarlas para ello. Necesitamos que las maquinas (y no los usuarios) dispongan de unacuenta, como no van a conectarse al shell, no es necesario darles un usuario normal, con su directorio.

El identificador de una maquina es su nombre NetBIOS, seguido del caracter $.Ası por ejemplo la maquina iceberg, tendra como identificador iceberg$. Hecho lo cual hay que anadir

esta cuenta de usuario a la base de datos de los usuarios de Samba, con el comando:#smbpasswd -a -m maquina

9.5.11. Cliente Samba

Acceder a los recursos compartidos: smbclient

Este comando permite acceder, desde un cliente Linux, a los recursos disponibles a traves de servidoresCIFS, bien se trate de un servidor Samba o de un servidor basado en Windows. La interfaz es parecida ala del ftp, es de este modo posible transferir archivos sin esfuerzo.

La sintaxis es: #smbclient //maquina/recurso

Jose Antonio Escartın Vigo, Junio 2005.

Page 147: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 9. Servicios de red 129

El recurso puede ser:

Un directorio.

Una impresora.

Un disco compartido.

El nombre de la maquina es su nombre de NetBIOS, que puede (y suele) ser diferente de su nombrede DNS. La opcion -R permite elegir el modo de resolucion del nombre de la maquina:

-R lmhosts: Permite consultar el archivo /etc/lmhosts, que resuelve nombres de IP contra los nombresde NetBIOS de la maquina.

-R wins: Permite lanzar la consulta a un servidor WINS para obtener dicha conversion.

Una vez conectado al servicio en cuestion, disponemos de una interfaz de transferencia de archivosidentica a la del FTP. Tambien podemos acceder a algunas opciones extra, tales como print archivo, paraimprimir un archivo local en el servidor.

Integrar un recursos compartido en nuestros directorios: smbmount y smbumount

El comando smbmount nos permitira movernos de una manera mas comoda por los recursos com-partidos mediante CIFS, se comporta de una forma similar a los montajes mediante NFS. El recursocompartido CIFS se monta en un punto de nuestra jerarquıa de directorios y podemos movernos por elusando los comandos Unix habituales.

Smbclient se encarga de gestionar las interacciones entre los archivos presentes en el servidor. Paradesmontar un recurso compartido usamos el comando smbumount.

Guardar datos de un recurso compartido: smbtar

El comando smbtar es muy similar al comando tar. Permite realizar copias de seguridad de los archivosdel servidor desde la maquina cliente Samba.

La sintaxis es la siguiente:#smbtar -s servidor -x recurso -t lugar_de_almacenamiento

Es necesario disponer de permisos de lectura del directorio que deseamos almacenar. Es tambien posiblecrear copias incrementales con la opcion -N fecha, que no almacena nada mas que los archivos que hansido modificados a partir de la fecha especificada.

9.5.12. Configuracion grafica de Samba, interfaz Webmin

Para facilitarnos la tarea de la configuracion de archivos en Debian, tambien disponemos de otra he-rramienta web, esta vez para el entorno Webmin. Esta herramienta nos permitira una configuracion yadministracion de forma simple y sencilla.

Para instalar el modulo Samba de Webmin realizaremos un apt:#apt-get install webmin-samba

En la figura 9.13 se puede observar una serie de pantallas de la interfaz.

Jose Antonio Escartın Vigo, Junio 2005.

Page 148: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

130 Servidor Linux para conexiones seguras de una LAN a Internet

Figura 9.13: Modulo Webmin para Samba

Jose Antonio Escartın Vigo, Junio 2005.

Page 149: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 9. Servicios de red 131

9.6. ProFTPD: Servidor FTP

El protocolo de transferencia de archivos (FTP, File Transfer Protocol) es empleado en redes IP, comoes el caso de Internet, para la transmision de archivos. Uno de los mejores servidores FTP que podemosencontrar en Linux es ProFTPD. Este servidor soporta la creacion de hosts virtuales permitiendonos dis-poner, de esta forma, de “mas de un servidor FTP” en una sola maquina. Se diseno como un servidorFTP especialmente orientado a sistemas de tipo Unix, tomando muchas de las ideas y conceptos propiosde Apache, como la modularidad.

Para instalarlo desde nuestro sistema Debian realizaremos un apt:#apt-get install proftpd

La instalacion da la opcion de colocarlo en el inetd o utilizarlo como un servicio independiente.

Una vez instalado en el servidor necesitaremos editar el archivo /etc/inetd.conf o /etc/xinted.conf.

Si utilizamos inetd.conf editamos el archivo y anadimos # (comentario) al principio de la lınea:ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a

y, a cambio, agregamos la siguiente:ftp stream tcp nowait root /usr/sbin/proftpd proftpd

Ahora que ya hemos instalado el servidor tendremos que modificar los archivos de configuracion.

9.6.1. Servidor ProFTP

La configuracion se encuentra almacenada en el archivo: /etc/proftpd.conf.

Sera necesario editar este archivo y al menos, realizar los siguente cambios:

1. En ServerName, colocamos el nombre de nuestro servidor.

2. En ServerType, colocamos el tipo de servidor (standalone o inetd) en funcion de lo que hayamosespecificado al instalar.

3. Colocamos, despues de ServerType, la lınea ServerIdent off. De esta forma el servidor no mostrara suversion cuando se establece una conexion.

4. Especificamos el User y el Group, si colocamos nobody nadie podra acceder al servidor. Si queremoscolocar un usuario anonimo, se suele utilizar: user:ftp y group:nogruop.

5. Cambiamos MaxClients por el numero maximo de conexiones simultaneas que deseamos permitir.Este valor lo tendremos que determinar en funcion del numero de usuarios del servidor, el ancho debanda disponible y los recursos de la maquina.

Podemos especificar multiples opciones mas, que se detallan en el archivo mediante comentarios, opodemos instalar el paquete de documentacion y consultarlo allı:

#apt-get install proftpd-doc

El archivo de configuracion /etc/ftpusers contendra los nombres de los usuarios, a los que se les per-mitira el uso del servicio FTP.

Jose Antonio Escartın Vigo, Junio 2005.

Page 150: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

132 Servidor Linux para conexiones seguras de una LAN a Internet

9.6.2. Configuracion grafica de ProFTP, interfaz Webmin

Estas misma tareas administrativas se pueden realizar comodamente con la herramienta web: Webmin.

Para instalar el modulo de ProFTPD para webmin:#apt-get install webmin-proftpd

Figura 9.14: Modulo Webmin para ProFTPD

Desde la ventana de ProFTP accederemos a las opciones de configuracion global del servidor y de losdiferentes servidores virtuales que tengamos definidos.

Algunos de los parametros mas importantes a ajustar son el control de acceso y la autenticacion.Cuando configuramos un servidor virtual podemos volver a ajustar algunos de los parametros establecidosen las opciones globales, como por ejemplo las opciones de autenticacion de los usuarios y grupos en elcaso de que tengamos que establecer una configuracion de seguridad diferente en cada servidor virtual.

Desde las opciones de configuracion del servidor virtual tambien podremos establecer el directorioutilizado para guardar los archivos a disposicion de los usuarios que se conecten a nuestro servidor deforma anonima.

9.6.3. Clientes FTP

En Internet es posible encontrar diversas aplicaciones que nos permiten trabajar con servidores FTPde una forma facil y rapida.

Desde nuestro entorno Debian se ponen a nuestra disposicion: gFTP (GNU FTP).

Para instalarlo:#apt-get install gftp, . . . para ejecutarlo: #gftp

Es un cliente FTP, muy intuitivo y con entorno grafico.

Jose Antonio Escartın Vigo, Junio 2005.

Page 151: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 10

Servicios de usuario

10.1. Cuotas de usuario

Las cuotas permiten especificar lımites en dos aspectos del almacenamiento en disco:

El numero de inodos que puede poseer un usuario o un grupo

El numero de bloques de disco que puede ocupar un usuario o un grupo.

La idea que se esconde detras de las cuotas es que se obliga a los usuarios a mantenerse debajo de sulimite de consumo de disco, quitandoles su habilidad de consumir espacio ilimitado en un sistema.

Las cuotas se manejan en base al usuario o grupo y al sistema de archivos. Si el usuario espera creararchivos en mas de un sistema de archivos, las cuotas deben activarse en cada sistema de archivos porseparado.

Primero deberemos de asegurarnos que la opcion quota esta activada dentro de nuestro kernel (opcionCONFIG QUOTA=yes). Para habilitar las cuotas, tanto para nuestros usuarios Linux, como los usuariosWindows (Samba) necesitaremos instalar el programa: quote, para el manejo de cuotas.

Para ello realizaremos el siguiente apt:#apt-get install quota

10.1.1. Arrancar el sistema de cuotas

Tenemos que que cambiar nuestro /etc/fstab para indicarle que vamos a utilizar quotas, tenemos queinsertar lıneas como las siguientes, ajustandolas al perfil de nuesto sistema:

/dev/hda6 /usr ext2 defaults,grpquota 1 1/dev/hda10 /home ext3 defaults,usrquota 1 1/dev/hda7 /tmp ext2 defaults,usrquota,grpquota 0 2

El parametro grpquota, habilita las cuotas de grupo en la particion que corresponde a /usr. El parame-tro usrquota, habilita las cuotas de usuario en la particion que corresponde a /home. En una mismaparticion pueden haber cuotas de usuario y grupo, colocando los dos parametros (en el ejemplo /tmp).

Ahora debemos de crear los siguientes archivos, para manejar las cuotas de la particion /home:

#touch /home/quota.group#touch /home/quota.user

Ambos archivos de registro, deben pertenecer a root y solo el tendra permisos de lectura y escritura:

Page 152: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

134 Servidor Linux para conexiones seguras de una LAN a Internet

#chmod 600 /home/quota.user#chmod 600 /home/quota.group

Los comandos que se muestran a continuacion nos permiten interactuar con el servicio de cuotas:

Comando Descripcion#repquota -a Produce un resumen de la informacion de cuota de un sistema de archivos.#quotacheck -avug Para realizar el mantenimiento de las cuotas. Se utiliza para explorar el

uso de disco en un sistema de archivos, y actualizar los archivos de registrode cuotas quota.user y quota.gruop, al estado mas reciente. Se recomiendaejecutar quotacheck periodicamente al arrancar el sistema o mediante elanacron cada cierto tiempo (por ejemplo cada semana).

#edquota -g <cuota> Edita la cuota de el grupo.#quotaon -vaug Activa las cuotas.#quotaoff -vaug Desactiva las cuotas.

Para arrancar el sistema de cuotas deberemos de colocar el servicio en uno de los archivos rc#.d(runlevels, para mas informacion vease el apendice D). Es preciso arrancar las cuotas siempre despues deque los sistemas de archivos incluidos en /etc/fstab hallan sido montados, en caso contrario las cuotas nofuncionaran.

Para obtener mas informacion podemos consultar el manual:$man quota$man -k quota

10.1.2. Asignar cuotas a los usuarios

Esta operacion se realiza con el comando edquota. Es recomendable ejecutar quotacheck -avug paraobtener el uso de los sistemas de archivos lo mas actualizado posible antes de editar cuotas.

Si ejecutamos el siguiente comando:#edquota -u <user>

Se editaran todos los dispositivos que permitan tener cuotas de usuario, especificado en /etc/fstab.Permitiendo modificar las cuotas del user.

Los mismo ocurre en los grupos, si ejecutamos el comando:#edquota -g <grupo>

Se editaran todos los dispositivos que permitan tener cuotas de grupo, especificado en /etc/fstab.Permitiendo modificar las cuotas del grupo.

10.1.3. Configuracion grafica de Quote, interfaz Webmin

Para facilitarnos la tarea de administracion de cuotas, podemos utilizar el modulo Webmin para cuotas.

Para instalarlo, realizaremos un sencillo apt:#apt-get install webmin-quota

Desde allı podremos realizar, de forma grafica, los mismos pasos que desde la lınea de comandos.

Jose Antonio Escartın Vigo, Junio 2005.

Page 153: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 10. Servicios de usuario 135

Figura 10.1: Gestion de cuotas de disco, en este caso /tmp

Jose Antonio Escartın Vigo, Junio 2005.

Page 154: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

136 Servidor Linux para conexiones seguras de una LAN a Internet

10.2. Cups: Servidor de impresion

Como servidor de impresion utilizare Cups frente a LPD, este ultimo es un sistema bastante engorrosoen algunas configuraciones.

Como ventajas de Cups respecto a LPD, podemos citar las siguientes:

Es mas sencillo hacer funcionar impresoras extranas, es decir que estan poco difundidas.

Cada usuario puede tener su propia configuracion y no es necesario instalar varias impresoras cuandocambiamos los parametros de una impresora (econofast, presentaciones, color, 600x600, . . . ).

Usa SLP e IPP para descubrimiento/publicacion del servicio e impresion, respectivamente. Estoquiere decir que en una red debidamente configurada se puede encontrar las impresoras de todo elmundo que las tiene compartidas, sin problemas.

Dispone de una interfaz de configuracion por web.

Pero no todo son alegrıas, tambien existen una serie de desventajas respecto a lpd:

LPD es bastante mas sencillo de hacer funcionar, para una maquina aislada con la impresora enlocal.

Si no necesitamos soporte a usuarios Microsoft igual nos estamos complicando la vida con Cups.

10.2.1. Servidor Cups

Para instalar el servidor de impresion y que se pueda compartir por Samba, necesitaremos instalarvarios paquete mediante el siguiente apt:

#apt-get install cupsys cupsomatic-ppd cupsys-driver-gimpprint samba samba-common

Debemos de asegurarnos de tener soporte en el kernel, para puerto paralelo o en mi caso para usb(necesitaremos hotplug). Si lo tenemos activado pero en el kernel lo dejamos como modulo, lo podremoscargar con la herramienta: #modconf, en caso contrario, no tendremos mas remedio que recompilar elkernel, con las opciones adecuadas a nuestro sistema de impresion.

Configuracion del servidor

Una vez tengamos instalados los archivos en el sistema vamos a configurar el servicio Cups. Para elloeditaremos el archivo: /etc/cups/cupsd.conf

Aquı estableceremos el acceso a la interfaz web, que nos permitira realizar la configuracion de unaforma mucho mas visual y agradable. Para conseguirlo modificaremos las siguientes opciones:

ServerName host.dominio.comServerAdmin [email protected] On<Location />Order Deny,AllowDeny From AllAllow From 192.168.0.*</Location>

Jose Antonio Escartın Vigo, Junio 2005.

Page 155: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 10. Servicios de usuario 137

<Location /admin>AuthType BasicAuthClass SystemOrder Deny,AllowDeny From AllAllow From 192.168.0.*</Location>

En la opcion de Allow From pondremos la IP, o rango de IP desde las cuales accederemos al servidorCups. En el ejemplo, se deniega el acceso a todo el mundo y despues se permite a las direcciones del rango192.168.0.*

Como se detalla en los comentarios del archivo, podemos especificar los host y los rangos de IPs, dediversas formas:# All

# None

# *.domain.com

# .domain.com

# host.domain.com

# nnn.*

# nnn.nnn.*

# nnn.nnn.nnn.*

# nnn.nnn.nnn.nnn

# nnn.nnn.nnn.nnn/mm

# nnn.nnn.nnn.nnn/mmm.mmm.mmm.mmm

# @LOCAL

# @IF(name)

Cuando hayamos terminado con la configuracion, reiniciaremos el servidor Cups:#/etc/init.d/cupsys restart

Configuracion grafica vıa web

Una vez hemos configurado los accesos, probaremos a conectarnos al servicio de administracion vıaweb. Para ello, nos conectaremos al host donde se encuentre el servidor, accediendo por el puerto 631 :

http://host.dominio.com:631

http://IP:631

http://localhost:631, si nos encontramos en local.

Utilizaremos el navegador que mas nos guste y el metodo de acceso que resulte mas adecuado a nuestrosistema. En la figura 10.2 podemos observar la pantalla de presentacion.

Figura 10.2: Interfaz grafica de configuracion para Cups

Jose Antonio Escartın Vigo, Junio 2005.

Page 156: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

138 Servidor Linux para conexiones seguras de una LAN a Internet

Una vez situados en la web, para configurar la impresora debemos de seguir los siguientes pasos:

Seguidamente iremos al menu de Administracion y nos autenticaremos como usuario root.

Ahora hacemos clic en Anadir impresora. En este menu estableceremos un nombre a la impresora yestableceremos el tipo de conexion.

Despues solo queda elegir el fabricante y el modelo adecuados.

Jose Antonio Escartın Vigo, Junio 2005.

Page 157: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 10. Servicios de usuario 139

Una vez realizado esto tendremos la impresora configurada, desde el menu impresoras podemos impri-mir una pagina de prueba y comprobar que la configuracion es correcta.

Figura 10.3: Impresora HP815 configurada para usar Cups

10.2.2. Servidor Cups para Samba

Para configurar Cups rn Samba editaremos el archivo /etc/samba/smb.conf, para anadir lo siguiente:[global]

#Nombre del servidor Samba

server string = Paquito

obey pam restrictions = Yes

#Tipo de autenticacion. En este caso la base de datos, tdbsam que viene por defecto

passdb backend = tdbsam, guest

passwd program = /usr/bin/passwd %u

passwd chat = *Enter\snew\sUNIX\spassword:* %n\n *Retype\snew\sUNIX\spassword:* %n\n .

syslog = 0

log file = /var/log/samba/log.%m

max log size = 1000

printcap name = cups

dns proxy = No

panic action = /usr/share/samba/panic-action %d

printing = cups

security = share

# Habilitaremos localhost y nuestra subred

hosts allow = 192.168.0. 127.0.0.1

[HP815]

#El nombre tiene que ser el mismo en Cups y Samba

comment = HP Deskjet 815

browseable=yes

writable=no

printable=yes

create mode = 0700

Una vez realizada la configuracion basica de Samba, deberıamos anadir los usuarios Samba para quese puedan autenticar contra el servidor. Lo realizaremos de la siguiente forma:

#smbpasswd usuario, . . . nos pedira que le establezcamos una contrasena.

Una vez realizado esto, volveremos a la configuracion Cups y realizaremos los siguientes cambios:

Editaremos el archivo /etc/cups/mime.convs y descomentaremos las lınea:application/octet-stream

application/vnd.cups-raw

Editaremos el archivo /etc/cups/mime.types y descomentaremos la lınea:application/octet-stream.

Ahora solo queda reiniciar los servicios Samba y Cups. Despues todo deberıa funcionar.

/etc/init.d/samba restart/etc/init.d/cupsys restart

Jose Antonio Escartın Vigo, Junio 2005.

Page 158: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

140 Servidor Linux para conexiones seguras de una LAN a Internet

10.2.3. Clientes Linux

La configuracion del cliente, es muy similar a la instalacion del servidor Cups.

Para ello seguiremos una serie de pasos:

Agregamos al sistema los paquetes necesarios, con un apt:

#apt-get install cupsys cupsomatic-ppd cupsys-driver-gimpprint

Si no tenemos Ghostscript en el sistema, tambien lo anadimos:

#apt-get install ghostscript ghostscript-fonts

Ahora iniciaremos el servicio Cups:

#/etc/init.d/cupsys restart

Y entraremos vıa web a nuestro host cliente (http://localhost:631 ) para configurar una nueva im-presora. La anadiremos de la misma forma que en el servidor.

La diferencia esta en la conexion, en este caso asignaremos una impresora del tipo Windows Printervıa Samba. Y en el Device URI, colocaremos:

smb://<usuario:password>@<host.dominio.com>/<impresora>

Una vez finalizada podemos imprimir una pagina de prueba, para ver si todo esta configurado correc-tamente.

10.2.4. Clientes Microsoft

Vamos a realizar la instalacion, mediante los siguientes pasos:

Accedemos a Inicio -> Configuracion -> Panel de Control.

Seleccionamos Impresoras y faxes -> Agregar nueva impresora.

En el asistente, especificamos la impresora como local y seleccionamos Crear un nuevo puerto ->Local Port

Establecemos como nombre de puerto: \\host.dominio.com\<nombre_impresora>

Por ultimo, seleccionamos el modelo de impresora que vamos a agregar (en mi caso, HP 815).

Una vez hecho esto la impresora deberıa estar configurada y lista para imprimir.

10.2.5. Solucionar problemas

Si lo hemos configurado bien, pero no tenemos ni idea de porque no funciona podemos consultar loslogs de Cups (/var/log/cups/error log) y buscar allı el problema.

Si queremos aumentar el nivel de debug de los logs, tendremos que cambiar la opcion “LogLevel” delarchivo /etc/cups/cupsd.conf, a nivel debug, de esta forma podremos encontrar el fallo.

Otra cosa primordial es consultar la documentacion Cups, a lo mejor nos encontramos con que elmodelo concreto de impresora que tenemos no esta soportado.

Jose Antonio Escartın Vigo, Junio 2005.

Page 159: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 10. Servicios de usuario 141

10.3. Servidor Web

Un servidor web1 es un programa que implementa el protocolo HTTP (hypertext transfer protocol).Este protocolo esta disenado para transferir lo que llamamos hipertextos, paginas web o paginas HTML(hypertext markup language): textos complejos con enlaces, figuras, formularios, botones y objetos incrus-tados como animaciones o reproductores de sonidos.

Sin embargo, el hecho de que HTTP y HTML esten ıntimamente ligados no debe dar lugar a confundirambos terminos. HTML es un formato de archivo y HTTP es un protocolo.

Un servidor web se encarga de mantenerse a la espera de peticiones HTTP llevada a cabo por uncliente HTTP que solemos conocer como navegador. El navegador realiza una peticion al servidor y este leresponde con el contenido que el cliente solicita. El cliente es el encargado de interpretar el codigo HTML,es decir, de mostrar las fuentes, los colores y la disposicion de los textos y objetos de la pagina; el servidortan solo se limita a transferir el codigo de la pagina sin llevar a cabo ninguna interpretacion de la misma.

Sobre el servicio web clasico podemos disponer de aplicaciones web. Estas son fragmentos de codigoque se ejecutan cuando se realizan ciertas peticiones o respuestas HTTP. Hay que distinguir entre:

Aplicaciones en el lado del cliente: El cliente web es el encargado de ejecutarlas en la maquinadel usuario. Son las aplicaciones tipo Java o Javascript, el servidor proporciona el codigo de lasaplicaciones al cliente y este, mediante el navegador, las ejecuta. Es necesario, por tanto, que el clientedisponga de un navegador con capacidad para ejecutar aplicaciones (tambien llamadas scripts).Normalmente, los navegadores permiten ejecutar aplicaciones escritas en lenguaje javascript y java,aunque pueden anadirse mas lenguajes mediante el uso de plugins.

Aplicaciones en el lado del servidor: El servidor web ejecuta la aplicacion. Una vez ejecutada, generacierto codigo HTML, el servidor toma este codigo recien creado y lo envıa al cliente por medio delprotocolo HTTP.

Las aplicaciones de servidor suelen ser la opcion por la que se opta en la mayorıa de las ocasiones pararealizar aplicaciones web. La razon es que, al ejecutarse esta en el servidor y no en la maquina del cliente,este no necesita ninguna capacidad adicional, como sı ocurre en el caso de querer ejecutar aplicacionesjavascript o java. Ası pues, cualquier cliente dotado de un navegador web basico puede utilizar.

10.3.1. Servidor Apache

El servidor HTTP Apache es un servidor HTTP de codigo abierto para plataformas Unix (BSD,GNU/Linux, etc.), Windows y otras, que implementa el protocolo HTTP/1.1 (RFC 2616) y la nocion desitio virtual. Cuando comenzo su desarrollo en 1995 se baso inicialmente en codigo del popular NCSAHTTPd 1.3, pero mas tarde fue reescrito por completo. Su nombre se debe a que originalmente Apacheconsistıa solamente en un conjunto de parches a aplicar al servidor de NCSA. Era, en ingles, a patchyserver (un servidor parcheado).

El servidor Apache se desarrolla dentro del proyecto HTTP Server (httpd) de la Apache SoftwareFoundation.

Apache presenta entre otras caracterısticas mensajes de error altamente configurables, bases de datosde autenticacion y negociado de contenido, pero fue criticado por la falta de una interfaz grafica que ayudeen su configuracion (en nuestro caso esto queda resuelto con Webmin).

En la actualidad (2005), Apache es el servidor HTTP mas usado, siendo el servidor HTTP del 68 %de los sitios web en el mundo y creciendo aun su cuota de mercado.

1Definicion obtenida de Wikipedia, la enciclopedia libre: http://es.wikipedia.org

Jose Antonio Escartın Vigo, Junio 2005.

Page 160: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

142 Servidor Linux para conexiones seguras de una LAN a Internet

Configuracion de Apache

Para instalar el servidor web y realizar su configuracion de una forma comoda y sencilla, utilizaremosunos modulos para la herramienta web Webmin.

Para instalarlos, realizaremos el siguiente apt:#apt-get install apache apache-doc webmin-apache webmin-htaccess

En la figura 10.4 podemos observar la pantalla de presentacion del modulo Webmin y los parametrosde configuracion que podemos modificar del mismo.

Figura 10.4: Interfaz Webmin para Apache

Directorios y archivos de configuracion

En nuestra distribucion Debian, los directorios de configuracion se encuentran colocados en los siguien-tes puntos del sistema:

ServerRoot: /etc/apache, . . . directorio base de los archivos de configuracion.

DocumentRoot: /var/www, . . . directorio base de las paginas web del servidor.

Ejecutables de Apache: /usr/bin

El directorio base de los archivos de configuracion del servidor web se especifica en el archivo httpd.conf,utilizando la directiva ServerRoot. Cuando el servidor web se inicia mediante los scripts de inicializacion,la ruta de acceso a httpd.conf se especifica en la lınea de comandos del servidor (httpd) y, desde allı, seespecifica el resto de archivos de configuracion (con la opcion -f ).

Jose Antonio Escartın Vigo, Junio 2005.

Page 161: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 10. Servicios de usuario 143

Hay cuatro archivos de configuracion basicos en el directorio de configuracion. Estos archivos, y sucontenido habitual se describen en el cuadro 10.1. Los cambios de configuracion de Apache mas habitualesse realizan en httpd.conf.

Cuadro 10.1: Archivos de configuracion de ApacheArchivo Contenidohttpd.conf Parametros generales de configuracion del servidor. Este archivo tiende ahora a contener

toda la configuracion, suprimiendo la necesidad de srm.conf y access.conf.srm.conf Directrices del procesamiento de las peticiones, entre otras: respuestas de error, opciones

de indexacion del directorio y de procesamiento de scripts. Este archivo define el arbolde documentos (espacio de nombres) visible por todos los usuarios, ademas de como elservidor envıa informacion de ese arbol a clientes remotos. La estructura del arbol dedocumentos no tiene que coincidir necesariamente con la estructura del directorio de susistema de archivos local. Por lo general, este archivo no se sigue utilizando.

access.conf Opciones de cada directorio: entre otras, control de acceso y restricciones de seguridad,este archivo ya no se suele utilizar.

mime.types Definiciones de tipos de archivo MIME para diferentes extensiones de archivos.

Historicamente, los archivos .conf contienen los diferentes tipos de informacion. Sin embargo, todaslas directrices del servidor web se pueden colocar en cualquiera de los tres archivos, y el servidor web lasinterpretara correctamente. Con el fin de reducir la confusion, Apache se distribuye ahora con todas lasopciones en el archivo principal httpd.conf. Si existen los demas archivos .conf, se procesaran en el ordensiguiente: http.conf, srm.conf y access.conf. Los archivos de configuracion adicionales (especialmente losrelacionados con la seguridad) deberan estar presentes en el arbol de documentos real que el servidorprocesa.

Estos archivos pueden ser modificados desde el modulo Webmin de Apache. Los parametros a los quese puede acceder los podemos observar en la figura 10.5.

Sintaxis de los archivos de configuracion:

Los archivos de configuracion de Apache contienen una directiva por lınea. Se puede usar “\” al finalde una lınea para indicar que una directiva continua en la proxima. No puede haber otros caracteres oespacio en blanco entre el caracter “\” y el fin de la lınea.

En las directivas, dentro de los archivos de configuracion, no se hace distincion entre mayusculas yminusculas. Las lıneas que comiencen con el caracter “#” seran consideradas comentarios, siendo ignora-das. No se pueden incluir comentarios en una lınea, despues de una directiva de configuracion. Los espaciosy lıneas en blanco antes de una directiva de configuracion se ignoran, de manera que se puede dejar unasangrıa en las directivas para mayor claridad.

Podemos hacer un chequeo de la sintaxis de sus archivos de configuracion sin tener que reiniciar elservidor, usando apachectl configtest o la opcion -t de la lınea de comandos.

Directivas relevantes en los archivos de configuracion:

Las directivas mas habituales son las siguientes:

<Directory><DirectoryMatch><Files><FilesMatch><Location><LocationMatch><VirtualHost>

Jose Antonio Escartın Vigo, Junio 2005.

Page 162: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

144 Servidor Linux para conexiones seguras de una LAN a Internet

Figura 10.5: Parametros de configuracion de APACHE

Las directivas que se pongan en los archivos principales de configuracion se aplicaran a todo el servidor.Si queremos cambiar unicamente la configuracion de una parte del servidor, podemos cambiar el rango deaccion de las directivas poniendolas dentro de las secciones <Directory>, <DirectoryMatch>, <Files>,<FilesMatch>, <Location>, y <LocationMatch>. Estas secciones limitan el dominio de aplicacion de lasdirectivas dentro de ellas, a locales particulares dentro del sistema de archivos o URLs particulares. Estassecciones pueden ser anidadas, para permitir un grado de seleccion mas fino.

Apache tiene la capacidad de servir varios sitios web diferentes al mismo tiempo, esto se llama Hospe-daje Virtual. El dominio de aplicacion de las directivas tambien puede ser delimitado poniendolas dentrode <VirtualHost>, de manera que solo tendran efecto para pedidos de un sitio web en particular.

Jose Antonio Escartın Vigo, Junio 2005.

Page 163: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 10. Servicios de usuario 145

A pesar de que la mayor parte de las directivas pueden ir dentro de estas secciones, hay algunasdirectivas que pierden su sentido en algunos contextos. Por ejemplo, las directivas que controlan la creacionde procesos solo pueden ir en el contexto del servidor principal. Para descubrir que directivas pueden estardentro de que secciones, revise el contexto de la directiva.

Proteccion implıcita de archivos del servidor:

Una de las caracterısticas de Apache que puede causar problemas de seguridad por ser mal interpretadaes el acceso implıcito.

Si no se configura correctamente Apache es posible recorrer todo el sistema de archivos del servidordesde una pagina web. Para evitarlo hemos de anadir las instrucciones siguientes a la configuracion delservidor:

<Directory />Order Deny, AllowDeny from all

</Directory>

De esta forma evitaremos el acceso implıcito al sistema de archivos. Para dar acceso a un conjuntodeterminado de directorios anadiremos el siguiente codigo:

<Directory /home/*/public_html>Order Deny, AllowAllow from all

</Directory>

Archivos .htaccess

Apache permite una administracion descentralizada de la configuracion, a traves de archivos colocadosdentro del arbol de paginas web. Los archivos especiales se llaman normalmente .htaccess, pero se puedeespecificar cualquier otro nombre en la directiva AccessFileName. Las directivas que se pongan dentro de losarchivos .htaccess se aplicaran unicamente al directorio donde este el archivo, y a todos sus subdirectorios.Siguen las mismas reglas de sintaxis que los archivos principales de configuracion. Como los archivos.htaccess se leen cada vez que hay una peticion de paginas, los cambios en estos archivos comienzan aactuar inmediatamente.

Para ver que directivas se pueden colocar, podemos consultar el contexto de cada directiva. El admi-nistrador del servidor pueden controlar aun mas que directivas son permitidas configurando la directivaAllowOverride en los archivos principales de configuracion.

Con se puede observar en la figura 10.6, en el modulo Webmin-htaccess, podemos especificar los direc-torios a los que se va a tener acceso a traves de Apache.

Figura 10.6: Interfaz Webmin para HtAccess de Apache

Jose Antonio Escartın Vigo, Junio 2005.

Page 164: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

146 Servidor Linux para conexiones seguras de una LAN a Internet

Archivos de log

Cualquier persona que pueda escribir en el directorio donde Apache escribe los logs, seguramentepodra tambien acceder al codigo de usuario (UID) con el que se ha arrancado el servidor, que normalmentees el usuario root. No debemos permitir que los usuarios puedan escribir en el directorio donde se guardanlos logs sin tener presente las posibles consecuencias.

Fichero pid : Al arrancar Apache almacena el numero del proceso padre del httpd en el archivologs/httpd.pid. Este nombre de archivo se puede cambiar con la directiva PidFile. El numero delproceso es para el uso del administrador, cuando quiera terminar o reiniciar el demonio.

Si el proceso muere (o es interrumpido anormalmente), entonces necesitaremos matar los procesoshijos.

Log de errores: El servidor registrara los mensajes de error en un archivo de log, que sera por defectologs/error log. El nombre del archivo se puede alterar usando la directiva ErrorLog ; se pueden usardiferentes logs de error para diferentes anfitriones virtuales.

Log de transferencia: El servidor normalmente registrara cada pedido en un archivo de transferenciaque, por defecto, sera logs/access log. El nombre del archivo se puede alterar usando la directivaCustomLog ; se pueden usar diferentes archivos de transferencia para diferentes anfitriones virtuales.

Estadısticas Webalizer

Para poder ver las estadısticas de uso del apartado Web de nuestro sistema, podemos instalar el pa-quete Webalizer, pudiendose controlar por web mediante un modulo para Webmin.

Para realizaremos el siguiente apt:#apt-get install webalizer webmin-webalizer

La instalacion nos pedira que indiquemos donde esta situado el archivo de logs de Apache. Tambienes capaz de realizar estadisticas para el proxy Squid y los servidores FTP.

El archivo de configuracion de Webalizer es: /etc/webalizer.conf

Si ejecutamos desde el programa desde la lınea de comandos: #webalizer, se generara el reporte deestadısticas, estos reportes quedaran almacenados, en formato html, en el directorio: /var/www/webalizer.

Si utilizamos el modulo para Webmin, lo primero que necesitaremos sera anadir los archivos de log deApache, situados en el directorio: /var/log/apache/.

En la figura 10.7 se muestran diferentes pantallas del modulo Webmin.

Hosts virtuales

El termino Host Virtual se utiliza para referirse a la practica de mantener mas de un servidor web enuna sola maquina, ası como para diferenciarlos por el nombre de servidor que presentan. En determinadascircunstancias puede suceder que una empresa que dispone de un servidor quiera tener mas de un dominioactivo en el servidor, por ejemplo: www.empresa1.com y www.empresa2.com.

El servidor web Apache fue uno de los primeros que incluyo soporte de hosts virtuales basados enIP y basados en nombre. A partir de la version 1.3.13 Apache tiene una nueva funcionalidad en la quesi cualquiera de los archivos de configuracion es un directorio, Apache entrara en ese directorio y anali-zara cualquier archivo (y subdirectorio) que se encuentre allı, tratandolos como archivos de configuracion.Un posible uso de esta funcionalidad consistirıa en anadir servidores virtuales (VirtualHosts), creandopequenos archivos de configuracion para cada servidor virtual, y colocandolos en un directorio de confi-guracion. Ası, se puede insertar o eliminar servidores virtuales sin tener que editar ningun archivo, sinosimplemente quitando o copiando archivos. Esto facilita la automatizacion de estos procesos.

Jose Antonio Escartın Vigo, Junio 2005.

Page 165: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 10. Servicios de usuario 147

Figura 10.7: Modulo de Webmin para Webalizer

Con el boom de Internet y el consiguiente aumento del numero de sitios web, cada vez es mas frecuenteencontrar una sola maquina actuando como servidor para mas de un sitio web.

Existen unas cuantas formas de proporcionar mas de un sitio web desde una maquina. Una de ellasconsiste en ejecutar multiples copias de un servidor web, una para cada sitio; sin embargo, puede resultarimposible por lo que respecta a los recursos de la maquina.

Hay dos metodos para soportar hosts virtuales como un solo servidor. Uno se basa en utilizar multiplesdirecciones IP, una para cada sitio web, y otro se basa en soportar multiples nombres de host en (normal-mente) una sola direccion IP. Se denominan, respectivamente, hospedaje virtual basado en IP y basadoen nombres. Una variante menor del hospedaje virtual basado en IP es el hospedaje virtual basado enpuertos, donde solo el puerto que forma parte de la direccion diferencia los hosts virtuales.

Los procedimientos y los parametros necesarios para configurar el hospedaje virtual utilizando estosmetodos diferentes se tratan en las secciones siguientes. He aquı unas cuantas preguntas que podemosutilizar para seleccionar una de los metodos de hospedaje virtual:

¿Disponemos de mas de una direccion IP?

¿Cuantos sitios web pensamos hospedar?

¿Necesitan todos los sitios utilizar el puerto HTTP predeterminado (80)?

¿Se han asignado multiples nombres a la maquina?

¿Deseamos separar estrictamente los sitios web?

Jose Antonio Escartın Vigo, Junio 2005.

Page 166: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

148 Servidor Linux para conexiones seguras de una LAN a Internet

Para anadir un host virtual en Apache utilizaremos la directiva <VirtualHost>.

En el siguiente ejemplo podemos ver como se definirıa un servidor virtual para el dominio www.aucad.com.

<VirutalHost www.aucad.com aucad.com>ServerName www.aucad.comDocumentRoot /usr/local/etc/httpd/vhost/aucadServerAdmin [email protected] /usr/local/etc/httpd/vhosts/aucad/logs/access_logErrorLog /usr/local/etc/httpd/vhosts/aucad/logs/error_logScripAlias /cgi-bin/ /usr/local/etc/httpd/cgi-bin/

</VirtualHost>

En la figura 10.8, podemos observar la configuracion grafica de Webmin para Servidores virtuales

Figura 10.8: Servidores Virtuales en Apache

Compartir carpetas en el servidor web

Una vez tenemos montado el servidor virtual, en cada servidor podemos colocar las carpetas web quequeramos, en la figura 10.9 podemos observar como se configurara.

Figura 10.9: Comparticion de carpetas en Apache

Jose Antonio Escartın Vigo, Junio 2005.

Page 167: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 10. Servicios de usuario 149

Arrancar el servidor Apache

El proceso httpd, se ejecuta como un demonio en segundo plano para atender las peticiones que serealicen. Es posible que Apache sea invocado por el demonio Internet, inetd o xinetd, cada vez que serealice una conexion al servicio HTTP usando la directiva ServerType, aunque esto no se recomienda.

En el caso de que el puerto especificado en el archivo de configuracion sea el puerto por defecto, 80(o cualquiera por debajo de 1024), sera necesario tener privilegios de root para poder iniciar Apache.

Una vez que el servidor ha arrancado y completado las actividades preeliminares como la apertura delos archivos de registro, ejecutara los procesos hijo que realizan el trabajo de escuchar y responder laspeticiones de los clientes. El proceso principal httpd continuara ejecutandose como root, pero los procesoshijo se lanzaran con un usuario con menos privilegios.

La primera tarea que realiza httpd cuando es invocado es localizar y leer el archivo de configuracionhttpd.conf. Es posible especificar la ruta del archivo en el momento de la ejecucion la opcion -f en la lıneade comandos de la forma:

#httpd -f /etc/apache/httpd.conf

En lugar de ejecutar http directamente, podemos utilizar el script llamando a apachectl que sirve paracontrolar el proceso demonio con comandos simples como:

#apachectl start, . . . para arrancar el servidor

#apachectl stop, . . . para detener el servidor

Si el servidor Apache se ejecuta correctamente volvera a aparecer el sımbolo del sistema y si ejecutamosen un navegador: http://localhost, podremos ver la pagina de prueba ubicada en el directorio especificadoen DocumentRoot.

Si nos da algun fallo al arrancar normalmente es debido a que ya habıa otra instancia de Apache corrien-do o a que estamos intentado arrancar el servidor por un puerto privilegiado, sin utilizar privilegios de root.

Si queremos que Apache arranque automaticamente, lo deberemos colocar en uno de los scripts runlevel(vease apendice D), de inicio del sistema. Si hemos realizado un apt, ya se habra colocado allı.

Modulos Apache

Apache es un servidor modular. Esto implica que en el servidor basico se incluyen unicamente lasfuncionalidades mas basicas. Otras funcionalidades se encuentran disponibles a traves de modulos quepueden ser cargados por Apache. Por defecto, durante la compilacion se incluye en el servidor un juegode modulos base. Los modulos van por separado y pueden ser incluidos en cualquier momento usando ladirectiva LoadModule. Las directivas de configuracion pueden ser incluidas en forma condicional depen-diendo de la presencia de un modulo particular, poniendolas dentro de un bloque <IfModule>. Para verque modulos han sido cargados en el servidor, se puede usar la opcion de lınea de comandos -l.

Para poder realizar las configuracion, en conjunto con el resto del sistema, podrıa ser interesanteutilizar alguno de los siguientes modulos Apache:

apache-utils

libapache-mod-security

apache-perl libapache-mod-perl

apache-php libapache-mod-php4

libapache-mod-jk

libapache-mod-auth-shadow

Jose Antonio Escartın Vigo, Junio 2005.

Page 168: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

150 Servidor Linux para conexiones seguras de una LAN a Internet

libapache-mod-auth-radius

libapache-mod-ldap

libapache-mod-auth-mysql libapache-mod-acct-mysql

libapache-mod-repository

. . .

Como se muestra en la figura 10.10, podemos observar que modulos se encuentran instalados en elsistema y habilitar o deshabilitar su uso.

Figura 10.10: Modulos instalados en APACHE

10.3.2. Apache-SSL: Conexiones seguras

Para instalar Apache con SSL, realizaremos el siguiente apt:#apt-get install apache-ssl libapache-mod-ssl libapache-mod-ssl-doc

La informacion de esta seccion a sido obtenida de [BN00].

En esta seccion nos ocuparemos de otro aspecto de la seguridad: hacer privadas las comunicacionesmantenidas entre los clientes y su servidor web, lo cual se consigue codificando dichas comunicaciones atraves del protocolo SSL (Secure Sockets Layer).

El hecho de que el protocolo SSL este disponible para utilizarlo con los servidores web, supone un in-teresante dilema para los gobiernos que desean controlar los sistemas de codificacion con el fin de impedirque caiga en las manos de entidades extranjeras a las que espiar.

SSL es un protocolo que fue definido, inicialmente, por Netscape Communications Corporation con elfin de posibilitar que dos maquinas que se comunicasen a traves de TCP/IP, codificasen la informacionque se enviaran la una a la otra. Despues de garantizar, de esta manera, la seguridad de una sesion decomunicacion, las dos maquinas pueden intercambiar informacion privada o confidencial sin preocuparsede que alguien pueda escuchar y utilizar la informacion. La seguridad es una caracterıstica fundamentalpara los servidores web utilizados para el comercio en Internet, esta actividad requiere con frecuencia latransferencia de informacion personal y confidencial, como numeros de tarjetas de credito o codigos decuentas bancarias.

Jose Antonio Escartın Vigo, Junio 2005.

Page 169: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 10. Servicios de usuario 151

Sistemas de clave publica-privada

Para codificar los paquetes que viajan entre dos maquinas, las maquinas deben entender una codifica-cion de algoritmos comun, y deben intercambiar informacion que permita a una maquina descodificar loque la otra codifica. Las partes de la informacion de seguridad utilizadas para codificar y descodificar lainformacion se llaman claves.

La codificacion se realiza introduciendo una modificacion en la informacion localizada en una ubicacion,mediante una clave. Se transmite, entonces, la informacion a otra ubicacion, donde se utiliza una clave pararestaurar la informacion a su forma original (descodificarla). En un sistema sencillo, la clave utilizada paracodificar la informacion es la misma que se utiliza para descodificarla. Es a esto a lo que se llama sistemade clave privada, porque el contenido de la clave se debe mantener en secreto para que la informacion semantenga tambien en secreto. Sin embargo, los sistemas de clave privada presentan un problema porquela clave se debe transmitir, de algun modo, de forma segura a la nueva ubicacion. SSL utiliza una formaespecial de codificacion denominada infraestructura de clave publica (PKI), como parte del sistema globalque utiliza para proporcionar sesiones de comunicacion segura.

En un sistema de claves como este, se utilizan dos claves para el proceso de codificacion y descodifica-cion, y una de ellas (la clave publica) se puede hacer disponible para cualquiera sin que se vea afectadala seguridad de las comunicaciones entre dos maquinas. De esta forma se soluciona el problema de laseguridad de la distribucion de claves, inherente a los sistemas de claves.

Certificados: Verificacion de quien esta al otro lado de una sesion segura

Otro asunto relacionado con las comunicaciones seguras es si debemos confiar en el servidor web conel que nos estamos comunicando. Aunque un servidor web puede enviar a un cliente una clave pararealizar una comunicacion segura con el mismo, es posible que el servidor este hablando con el servidorweb erroneo (por ejemplo, el cliente puede proporcionar un numero de tarjeta de credito a un servidorfalso ejecutado por estafadores). Cuando se utiliza un sistema de clave publica-privada, tambien es posibletransmitir informacion adicional, lo que se denomina un certificado, donde se describa al servidor web ya la organizacion que hay detras del mismo.

Este certificado puede estar “firmada” electronicamente por una agencia de confianza. Existen variasagencias que investigan a la organizacion que este ejecutando el sitio web y la informacion recopilada enel certificado y, despues, firman el certificado, por un precio. Los navegadores clientes poseen una lista deagencias de confianza que utilizan para verificar que se esta comunicando con el servidor con el que elusuario desea (es decir, que el servidor esta siendo ejecutado por la organizacion que el usuario espera).

Cuando instalemos un servidor web, debemos crear una pareja de claves publicas-privadas y un certi-ficado para utilizarlos con el servidor. Si deseamos ejecutar un sitio web seguro para uso publico, debemoshacer que una de estas agencias de confianza firme el certificado.

Utilizacion del HTTP seguro: HTTPS

En las comunicaciones a traves de un servidor web seguro, el cliente utiliza un protocolo diferente,denominado HTTPS (o HTTP seguro), en lugar de HTTP. Como se deduce del nombre, es similar alHTTP, pero con seguridad anadida. Para acceder a un servidor web seguro, un usuario debe especificarla URL con el identificador de protocolo HTTPS, como indico a continuacion:

https://www.example.com/cgi-bin/proceso de tarjetas de credito

Uno de los errores mas comunes que cometen los nuevos administradores de servidores de web seguros,es no utilizar el tipo de protocolo correcto (https) en las URL que remiten al sitio web seguro. Mientras elpuerto predeterminado TCP para el protolo HTTP es el puerto 80, el puerto predeterminado para HTTPSes 443. Cuando un navegador intenta acceder a un servidor seguro en un puerto equivocado, parece queel navegador se boquea y, finalmente, se agota el tiempo de espera.

Esto puede desconcertar al usuario final, de modo debemos prestar especial atencion a la comprobacionde todas las URL que creemos y que esten vinculadas al sitio seguro.

Jose Antonio Escartın Vigo, Junio 2005.

Page 170: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

152 Servidor Linux para conexiones seguras de una LAN a Internet

10.3.3. Creacion de un servidor web seguro

Debido a las restricciones gubernamentales impuestas en los EEUU a la exportacion, la mayorıa de lasdistribuciones no proporcionan directamente la funcionalidad de servidor de web seguro. Linux se distri-buye en todo el mundo y el gobierno de EEUU no permite la venta fuera de sus fronteras de determinadasformas de codificacion. Lo que significa, desafortunadamente, que hay que ingeniarselas para conseguir,generar e instalar la funcionalidad del servidor web seguro para Apache.

Existen dos opcion para agregar el protocolo SSL a Apache; la que se describe a continuacion, y quese recomienda usar, se denomina mod ssl. Consiste en un conjunto de parches y un modulo especial parautilizarlos con el codigo fuente de Apache y utiliza una biblioteca de criptografıa, llamada OpenSSL, queproporciona las funciones de SSL. OpenSSL se basa en una biblioteca mas antigua llamada SSLeay, ymod ssl se basa en el paquete que utilizamos, Apache-SSL. El hecho de que un paquete pueda constituirla base para otro, aunque sea de la competencia, es uno de los mejores valores de la filosofıa Open Sopurce(de codigo fuente abierto).

Preparacion de los archivos especiales necesarios para la seguridad

El servidor necesita varios archivos especiales para operar de modo seguro. Alguno de ellos requierenun procesamiento especial llevado a cabo por una agencia de confianza (una autoridad de certificacion)para que el publico en general utilice correctamente el sitio web.

Los archivos siguientes se utilizan para la seguridad del servidor:

Un archivo de claves del servidor : Este archivo contiene una clave publica y una privada, utilizadaspor el servidor para codificar y descodificar operaciones.

Un archivo de certificado. Este archivo indica que la clave y el sitio web son gestionados por unadeterminada organizacion. Si es una agencia de confianza quien firma este certificado, el usuariopuede confiar en que es ciertamente esa organizacion la que ejecuta el sitio web.

Una peticion de firma del certificado: Este archivo contiene informacion del certificado, ası como in-formacion sobre la clave. Se debe enviar a la agencia de confianza (llamada autoridad de certificacion)para que sea firmado.

Todos estos archivos son creado durante el proceso de instalacion de Apache-SSL. Ası como los nuevosarchivos de configuracion que quedaran alojados en: /etc/apache-ssl/.

A partir de ahora nuestro httpd.conf, se encontrara situado en: /etc/apache-ssl/httpd.conf

Pareja de claves publica-privada:

La pareja de claves publica-privada se guarda en el archivo server.key, de manera predeterminada.Este archivo contiene las claves que utiliza el servidor para realizar la codificacion.

La clave privada de la pareja de claves publica-privada debe ser protegida en todo momento. Poreste motivo, durante la creacion de la clave, se nos pedira que introduzcamos una frase de contrasenapara codificar el archivo que contiene la clave. Una vez que el archivo este codificado, se nos pedira queintroduzcamos la frase de contrasena cada vez que el servidor se inicie para que pueda acceder al archivo.Aunque pueda resultar molesto, es muy peligroso dejar sin codificar la clave privada en el disco, sinprotegerla con una frase de contrasena.

Hay que utilizar la directiva SSLCertificateKeyFile del archivo de configuracion httpd.conf del servidorpara especificar el archivo de claves que ha de usarse para que las operaciones sean seguras.

El certificado del servidor

El archivo de certificado del servidor contiene informacion sobre la organizacion que ejecuta el sitioweb. Este es transmitido al cliente cuando se establece una sesion segura, y el cliente lo utiliza para verificar

Jose Antonio Escartın Vigo, Junio 2005.

Page 171: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 10. Servicios de usuario 153

que el sitio es legal. A veces se le llama archivo X.509 porque ese es el nombre del estandar que define elformato utilizado para este archivo.

Para que el cliente acepte el certificado, debe ser firmado digitalmente por una CA (Certificate Autho-rity, Autoridad de certificacion). Cada uno de los principales navegadores que soportan el protocolo SSLposee una lista de las autoridades de certificacion de confianza cuyas firmas acepta. Cuando un navegadorse encuentra ante un certificado firmado por una CA que no conoce, suele proporcionar al usuario la infor-macion sobre dicha autoridad y el certificado preguntandole si debe continuar. De modo que dependera delusuario si confıa o no en que el sitio al que esta conectado sea valido.

El archivo de certificados que se ha de utilizar aparece especificado en el archivo de configuracion delservidor, mediante la directiva SSLCertificateFile

La peticion de firma del certificado

Si deseamos que los clientes confıen en nuestro sitio, deberemos poseer un certificado firmado por unaagencia de confianza que funcione como autoridad de certificacion. Para que una autoridad de certificacionnos firme el certificado, deberemos de crear un CSR (Certificate Signing Request, Peticion de firma delcertificado) y envıarla a la autoridad con la documentacion y el dinero.

Existen varias agencias que actuan como autoridades de certificacion, lo que implica verificar la in-formacion recopilada en el certificado y firmarlo digitalmente. El precio de este servicio se cobra por elcoste derivado de investigar la informacion que contiene el CSR y por asumir la responsabilidad de lacertificacion de nuestro sitio web.

En la siguiente lista se pueden observar algunas autoridades de certificacion:

CatCert : http://www.catcert.net

CertiSing : http://certisign.com.br/servidores

Entrust : http://www.entrust.net

IKS GmbH : http://www.iks-jena.de/produkte/ca

Thawte: http://www.thawte.com

VeriSign: http://www.verisign.com/site

Todas estas companıas aceptan las peticiones de firma de certificados generadas por el paquete mod ssl,para su uso con Apache y mod ssl. Cuando creemos nuestro archivo de claves de servidor y el certificado,se creara tambien la peticion de firma del certificado. La informacion solicitada para esta peticion debecoincidir exactamente con el nombre de la companıa, nombre registrado del dominio y otro datos quela autoridad de certificacion solicita para que puedan procesar la peticion. Ademas, el archivo se cifraautomaticamente en un formato especial. Podemos encontrar informacion detallada sobre los precios ylas instrucciones para la creacion de la CSR, ası como la documentacion solicitada por la autoridad decertificacion, en los sitios web de cada companıa.

POdemos actuar como nuestra propia autoridad de certificacion y firmar nuestro certificado paracomprobar nuestro servidor o para ejecutarlo internamente en nuestra organizacion. A esto se le denominaautocertificacion. Los navegadores que se conecten a nuestro servidor no reconoceran nuestra firma, comouna de las que las autoridades de certificacion contemplan como validas, pero los usuarios lo puedenaceptar manualmente en los navegadores cuando aparezca el mensaje de error.

Para nuestro uso interno, podemos eliminar el mensaje de error que aparece en el cliente, agregandoun archivo de autoridad de certificacion al navegador del cliente.

Cuando hayamos recibido un certificado firmado por una autoridad de certificacion real, sustituiremosel certificado autofirmado copiando el nuevo sobre el archivo antiguo, o modificando el valor de la directivaSSLCertificateFile.

Jose Antonio Escartın Vigo, Junio 2005.

Page 172: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

154 Servidor Linux para conexiones seguras de una LAN a Internet

Ejemplo de la creacion de certificados para un servidor

Deberemos de tener instalado el SSL, ya se habra instalado con apache-ssl, pero para asegurarnosrealizamos el siguiente apt:

#apt-get openssl install ssl-cert ca-certificates

Esta es la parte facil, el siguiente paso es crear el conjunto de llaves, y despues configurar el httpd.confpara utilizarlo correctamente. Busca donde esta instalado el OpenSSL y nos aseguraremos de que esta en el$PATH, despues vamos al directorio donde tengamos los archivos de configuracion de apache-ssl (/etc/apache-ssl/conf.d/ ).

Si se necesita crear un certificado de prueba, para uso interno, se puede hacer:

#openssl genrsa -des3 > httpsd.key#openssl req -new -x509 -key httpsd.key > httpsd.crt

Los navegadores se quejaran sobre este certificado, puesto que esta creado por la persona que lo firma,y no son fiables. Si quieres generar un certificado, y una peticion de certificado para enviar a alguien comoCatCert o Verisign, entonces hay que hacer:

#openssl genrsa -des3 > httpsd.key#openssl req -new -key httpsd.key > httpsd.csr

Ahora, configuraremos Apache para que utilize estos certificados. Se necesitan anadir varias cosas alarchivo de configuracion de Apache, para conseguir que ejecute las extensiones SSL con nuestros certifi-cados. Tambien sera preciso anadir algunas configuraciones globales.

Pasemos a ver las modificaciones de la configuracion de /etc/apache-ssl/httpd.conf :# Hay que decirle al Apache que escuche en el puerto 443, por defecto solo escucha en el 80

Listen 443

# Si utilizamos mas de un sitio seguro en una IP necesitaremos:

NameVirtualHost 10.1.1.1:443

# Es una buena idea deshabilitar el SSL globalmente y habilitarlo basado en hosts

SSLDisable

# SSL cache server, sin esto el servidor se caera

SSLCacheServerPath /usr/bin/gcache

# Puerto en el que se ejecuta el servidor

SSLCacheServerPort 12345

# timeout del SSL cache, 300 es un buen valor, lo acortaremos para realizar pruebas

valueSSLSessionCacheTimeout 300

Ahora crearemos un host virtual con SSL habilitado:<VirtualHost www.example.com:443>

DocumentRoot /www/secure/

ServerName www.example.com

ServerAdmin [email protected]

ErrorLog logs/https_error.log

TransferLog logs/https_access.log

# Habilitar SSL para este host virtual

SSLEnable

# Esto prohibe el acceso excepto cuando se utiliza el SSL. Muy comodo para defenderse contra errores de configuracion que

# ponen al descubierto elementos que deberian estar protegidos

SSLRequireSSL

SSLCertificateFile /usr/conf/httpsd.crt

# Si la llave no esta combinada con el certificado, utilizamos esta directiva para apuntar al archivo de la llave.

SSLCertificateKeyFile /usr/conf/httpsd.key

# Si se requiere que los usuarios tengan un certificado, se necesitaran un monton de certificados raiz, para que se puedan

# verificar sus certificados personales SSLCACertificateFile /etc/ssl/ca-cert-bundle.pem

SSLVerifyClient none

</VirtualHost>

Con estas modificaciones ya deberıamos poder acceptar peticiones por el puerto seguro. Para probarlopodemos ejecutar la siguiente lınea en un navegador: https://localhost:443

Jose Antonio Escartın Vigo, Junio 2005.

Page 173: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 10. Servicios de usuario 155

Directrices de seguridad especiales

Se anaden las directrices de seguridad para el control de mod ssl a la documentacion de Apache quese instala cuando genera el servidor web seguro (podemos estudiarlas en profundidad allı). Sin embargo,merece la pena destacar aquı unas cuantas directrices de seguridad para dar una vision general sobre suutilizacion.

Debemos utilizar la directiva SSLCipherSuite para controlar que algoritmos se permiten para lassesiones de seguridad. A menos que seamos expertos en seguridad, deberıamos dejar estas configu-raciones tal y como se encuentran.

Debemos utilizar la directiva SSLSessionCache para indicar si deseamos soportar una cache paracomunicar la informacion entre los procesos que intervengan de la sesion SSL (y, si ası fuera, cual vaa ser el nombre del archivo). Debido a que las sesiones seguras requieren un trabajo importante deconfiguracion, y debido a que las peticiones de los clientes pueden ser servidas por multiples procesosservidores hijos, el uso de una cache de sesion para compartir la informacion entre los procesos hijopuede acelerar las cosas considerablemente. Debemos utilizar el valor none (ninguna) para desactivarla cache de la sesion o dbm, seguido de la ruta del archivo que se va a utilizar para la cache de sesion.

Debemos utilizar las directivas SSLLog y SSLLogLevel para crear registros donde almacenar lainformacion especıfica de SSL.

Finalmente, los certificados SSL y X.509 pueden ser utilizados tambien por el servidor para la au-tenticacion de los clientes utilizando los certificados: SSLCACertificatePath, SSLCACertificateFile,SSLVerifyClient, SSLVerifyDepth y SSLRequire.

Comprobacion de la legalidad

En su infinita sabidurıa, las comisiones del gobierno de los EEUU han creado leyes que conviertenen un delito exportar desde este paıs ciertos programas potentes de codificacion. Aparentemente, se hatomado esta medida para impedir que una herramienta de codificacion muy potente caiga en manos deterroristas y gobiernos no simpatizantes. El resultado de esta situacion, sin embargo, es que la mayorıa delos programas buenos de codificacion se desarrollan en otros paıses y es EEUU el paıs que los importa, enlugar de ser al contrario. El software de codificacion que EEUU importa, ya no puede ser exportado desdeEEUU, ni al propio autor original.

Hasta hace muy poco tiempo, la companıa RSA Data Security, Inc. poseıa una patente norteamericanasobre determinados algoritmos de codificacion de claves publicas-privadas utilizados en el protocolo SSL.La patente del algoritmo de RSA expiro en el 2000, de modo que ya no existen restricciones en la mayorparte del codigo. Sin embargo, si tenemos codigo especıficamente de RSA, todavıa nos encontraremosligados por el contrato de licencia.

Si simplemente pensamos utilizar Apache con mod ssl como un servidor web seguro dentro de nuestraorganizacion seguramente no tendremos problemas. Si, por el contrario, pensamos distribuir el servidor webo una maquina que lo contenga al extranjero, es necesario consultar con un abogado para conocer cualesson las leyes de exportacion e importacion de criptografıa en el lugar, debemos asegurarnos de atenernosa ellas. Por suerte, los cambios que se han producido recientemente tanto en el gobierno norteamericano,como en sus leyes, hacen la circulacion de la criptografıa mas facil. Con el tiempo se vera hacia donde noslleva esta tendencia.

Jose Antonio Escartın Vigo, Junio 2005.

Page 174: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

156 Servidor Linux para conexiones seguras de una LAN a Internet

10.3.4. Apache 2.x

La version 2.x de Apache incorporara una gran cantidad de mejoras y nuevas opciones entre las quecabe citar las siguientes:

Soporte de multi-threads: De esta forma Apache puede ejecutarse utilizando multiples procesos comosucedıa con la version 1.3.x, con multiples hebras de un unico proceso o en una forma hıbrida,proporcionando de esta forma una mejor escalabilidad.

Soporte para multiple protocolos: Apache incluye la infraestructura necesaria para servir multiplesprotocolos.

Nueva API : La version 2.x incorpora multiples cambios en la API (Aplication Programming Inter-face) mejorandola y anadiendo nuevas funciones que permiten incorporar nuevas capacidades a losmodulos. Uno de los inconvenientes de estas modificaciones es la incompatibilidad con los modulosexistentes para Apache 1.3.

Soporte para IPv6 : Apache permite trabajar con el protocolo IPv6.

Filtrado: Los modulos de Apache ahora pueden actuar como filtros analizando el contenido que esservido.

Errores multilenguaje: Los mensajes de error devueltos al navegador pueden proporcionarse de formaautomatica en funcion del idioma del navegador.

Configuracion simplificada: Algunas directivas confusas han sido simplificadas. Tambien han sufridomejoras algunos de los modulos que se incluyen por defecto en la instalacion basica de Apache.

Algunos de estos modulos son:

• mod_ssl: Este nuevo modulo proporciona una interfaz a los protocolos de encriptacion SSL/TLSproporcionados por OpenSSL.

• mod_dav: Es un modulo nuevo que implementa DAV (Distributed Authoring and Versioning)para HTTP. DAV es una especificacion para publicar y mantener el contenido de una web.

• mod_proxy: Este modulo ha sido completamente reescrito para aprovechar las nuevas carac-terısticas de filtrado e implementar de una forma mas eficiente HTTP/1.1

Para instalarlo deberemos ejecutar el siguiente apt:#apt-get install apache2 apache2-doc

10.3.5. Ataques al servidor Web

Actualmente casi todas las empresas tienen que ejecutar un servidor web, sin embargo, los servidoresweb se sabe que tienen defectos y brechas de seguridad. La idea intrınseca de un servidor web (un usuariopuede extraer archivos del servidor sin ninguna autenticacion) establece las brechas de seguridad. Estegran numero se debe al aumento creciente de tipos de protocolos y comandos con los que los servidorestienen que tratar. Cuando las paginas web solo consistıan en HTML, era mucho mas facil controlarlo todo.Pero ahora que los servidores tienen que interpretar ASP, PHP y otro tipo de trafico que contiene codigoejecutable. Ahora que las aplicaciones web son cada vez mas complejas, con el tiempo estos problemassolo se incrementaran.

Algunos servidores web son mas seguros que otros, pero todos tienen sus problemas. Y un servidorweb pirateado puede significar mas que la verguenza de una pagina web deformada si el servidor tambientiene acceso a bases de datos y otros sistemas internos, algo bastante comun en nuestros dıas.

Jose Antonio Escartın Vigo, Junio 2005.

Page 175: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 10. Servicios de usuario 157

10.4. Servidor de correo

Para montar el servidor de correo, el siguiente conjunto de programas:

Exim4: Servidor de correo corporativo (MTA), para uso local.

Fetchmail: Servidor de correo externo, para importar cuentas ajenas.

Courier-imap: Servidor de IMAP para dar acceso desde internet.

Horde: Webmail, para consultar el correo por IMAP desde Internet. Para hacer funcionar Horde,deberemos ejecutar ademas los siguientes servicios.

• Apache.

• PHP.

• Para autenticar usuarios: LDAP o MySQL.

Procmail: Procesador de correo. Es utilizado para filtrar los correos a traves de los siguientes pro-gramas

• ClamAv: Antivirus de correo.

• SpamAssassin: Filtro de Spam, basado en reglas.

• Bogofilter: Filtro de Spam, basado en el teorema de Bayes.

El sistema es un poco complejo pero consigue tener correo interno y externo, centralizado en el servidorcorporativo. Ademas podra ser consultado desde el exterior mediante el Portal Web Horde, consiguiendoque este libre de virus y Spam.

En las siguientes secciones detallo la configuracion del sistema.

Basado en artıculos publicados en http://bulma.net

10.4.1. Exim: Correo corporativo

Para instalar un servidor de correo corporativo, lo primero que necesitaremos es disponer de programaque haga las veces de servidor de correo local (MTA, Mail Transfer Agent), en nuestro caso elegiremos elservidor Exim4.

Para instalarlo ejecutamos el siguiente apt:#apt-get install exim4

Durante la configuracion especificaremos el uso de un unico archivo de configuracion global:/etc/exim4/exim4.conf.template

Ademas se nos pedira que contestemos a una serie de preguntas para configurar el servidor:

1. Tipo de uso que vamos a dar a Exim. Como posteriormente queremos enviar nosotros mismos lose-mails, seleccionaremos la primera opcion.

2. Nombre visible de nuestro sistema, es decir, el “mail name” o nombre de dominio en la direccion decorreo. Si no sabemos que contestar, colocamos cualquier cosa, despues lo podemos modificar desdeel archivo de configuracion.

3. Si tenemos otro nombre para el correo entrante, presionamos intro para dejar la opcion por defecto.

4. Servidores virtuales de correo, en este caso no lo vamos a utilizar.

5. Hacer de “relay” para otros dominios, tampoco se aplica en nuestra situacion.

Jose Antonio Escartın Vigo, Junio 2005.

Page 176: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

158 Servidor Linux para conexiones seguras de una LAN a Internet

6. Quien recibira los mensajes del “postmaster” o “root”, es decir, quien recibira los logs de error.Colocamos un usuario del sistema que habilitemos para esta tarea.

7. Por ultimo preguntara si queremos guardar nuestro archivo de aliases o sobrescribir el ya existente.Por si lo necesitamos mas adelante, es mejor guardar la configuracion anterior.

En el archivo, /etc/exim4/exim4.conf.template, encontramos reunidos todos los parametros de confi-guracion. Editaremos este archivo, para que reparta el correo local en el formato Maildir, consiguiendoque sea compatible con “courier-imap” (lo utilizaremos mas adelante para el Webmail).

La parte que tenemos que cambiar es la que hace referencia al reparto local de los e-mails, por defectolos enviara al archivo: /var/mail/<usuario>, concatenandose uno detras de otro, esto es precisamente loque queremos evitar.

Nos situamos en la seccion: 30 exim4-config mail spool. Una vez allı comentaremos la siguiente lınea:file = /var/spool/mail/${local_part}, . . . agregandole un # delante.

Y a cambio, debajo de esa lınea anadiremos lo siguiente:

driver = appendfilemaildir_format = truedirectory = /home/${local_part}/Maildircreate_directory = truegroup = mailmode = 0600check_string = ""escape_string = ""prefix = ""suffix = ""

Con esas lıneas conseguiremos que el reparto se realice en el directorio de correo de cada usuario:/home/<usuario>/<Maildir>, siendo usuario cualquier usuario del sistema y Maildir una carpeta quehemos creado para guardar el correo. Podemos colocar la que queramos, en esta carpeta se guardara elcorreo del usuario en formato maildir.

Al reiniciar Exim: /etc/init.d/exim restart, . . . ya tedremos el correo en formato Maildir.

Monitor de Exim, interfaz Webmin

Podemos monitorizar el servidor de correo Exim si instalamos el siguiente modulo para Webmin:#apt-get install webmin-exim

Como se aprecia en la figura 10.11, podremos visualizar las siguientes informaciones:

Los Logs del servidor

La cola de correo del servidor

Estadistas de mensajes

Jose Antonio Escartın Vigo, Junio 2005.

Page 177: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 10. Servicios de usuario 159

Figura 10.11: Monitor para Exim a traves del modulo para Webmin

10.4.2. Fetchmail: Correo externo

Fetchmail es un cliente de IMAP y POP que permite a los usuarios descargar automaticamente elcorreo de cuentas remotas en servidores IMAP y POP y almacenarlos en carpetas de correo locales. Unavez en local, se puede acceder a los correos de una forma mas sencilla y utilizando multitud de programascliente.

Como caracterısticas mas habituales podemos citar:

Soporte de POP3, APOP, KPOP, IMAP, ETRN y ODMR.

Puede reenviar correo utilizando SMTP lo que permite que las reglas de filtrado, reenvıo y “aliasing”funcionen correctamente.

Se puede ejecutar en modo daemon para comprobar periodicamente el correo entrante.

Puede recuperar correo de multiples carpetas y reenviarlos, en funcion de la configuracion establecida,a varios usuarios locales.

Para instalarlo simplemente ejecutaremos el siguiente apt:#apt-get install fetchmail fetchmail-ssl

El archivo de configuracion general del sistema se situa en /etc/fetchmail y desde aquı se puederedireccionar el correo a cada usuario. Este podrıa ser un listado tıpico:

Jose Antonio Escartın Vigo, Junio 2005.

Page 178: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

160 Servidor Linux para conexiones seguras de una LAN a Internet

set logfile "/home/josan/.fetchmail.log"# establecemos el tiempo en segundos entre el que se estar\’a# intentando recuperar el correo de los distintos servidores.set daemon 120## Recuperamos el correo de [email protected] y lo# depositamos en el buzon de correo local de josan.##poll servidorcorreo.dominio.com #Colocamos el servidor de correo externoproto pop3 #En este caso POP3user usuario #Usuario del correo externopass "mi_password" #Password del correo externoto josan #Usuarios local, que recibira el correo

Creamos este archivo y lo modificamos con los parametros de las cuentas POP3 de los usuarios, elbloque cuenta-usuario lo podemos repetir tantas veces como sea necesario.

Despues solo tenemos que crear un archivo por usuario para que cuando ese usuario ejecute Fetchmaillea las opciones del archivo de configuracion y se descargue el correo. Ese archivo se llamara: ˜/.fetchmailrc

Podriamos simplificar la configuracion de los archivos de usuario mediante el paquete fetchmailconf.Para instalarlo realizamos el siguiente apt:

#apt-get install fetchmailconf

Este podrıa ser el archivo tipico de usuario ˜/.fechmailrc:set postmaster "pepe"

set bouncemail

set no spambounce

set properties ""

# set daemon 90

# Cuentas de correo de ono: [email protected] y [email protected]

poll pop3.ono.com with proto POP3

user ’pepe1’ there with password ’ElPasswordDePepe1’ is ’pepe’ here

user ’pepe2’ there with password ’ElPasswordDePepe2’ is ’pepe’ here

#

# Cuentas de correo terra: [email protected] [email protected] y [email protected]

poll pop3.terra.es

user ’pepe2’ there with password ’ElPasswordDePepe2’ is ’pepe’ here

user ’pepe3’ there with password ’ElPasswordDePepe3’ is ’pepe’ here

user ’pepe4’ there with password ’ElPasswordDePepe4’ is ’pepe’ here

#

# Cuentas de correo de Microsoft: [email protected] ;-)

poll microsoft.com with proto POP3

user ’wgates’ there with password ’Hasecorp’ is ’pepe’ here

Automatizar la descarga de correo externo

Para ejecutar Fetchmail automaticamente tenemos las siguientes opciones:

Ponerlo en el cron

Ejecutarlo como demonio del sistema. Para ello descomentamos la lınea: set daemon, del archivo deconfiguracion.

Si lo ejecutamos en modo daemon, le indicaremos cada cuantos segundos se ejecutara Fetchmail. Paralanzar el demonio de forma automatica tenemos que ejecutarlo, en alguno de los archivos de perfil, como.profile o .bashrc (incluiremos la instruccion, fetchmail). Si preferimos lanzarlo manualmente, ejecutamosdesde la lınea de comandos: #fetchmail

Si lo queremos ejecutar en el cron, anadiremos al archivo /var/spool/cron/crontabs/<usuario>, ennuestro caso pepe: */3 * * * * /usr/bin/fetchmail -s

Esto indicara que se ejecute fetchmail cada tres minutos.

Jose Antonio Escartın Vigo, Junio 2005.

Page 179: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 10. Servicios de usuario 161

Configuracion grafica de Fetchmail, interfaz Webmin

Para simplificar el proceso de configuracion podemos utilizar nuestra herramienta de configuracion porweb: Webmin.

Para instalar el modulo realizaremos el siguiente apt:#apt-get install webmin-fetchmail

Figura 10.12: Modulo Webmin para Fetchmail

10.4.3. Horde: Webmail

Un Webmail no es mas que una interfaz para leer el correo electronico del servidor de correo, por mediode una pagina web.

Horde es un programa gestor de correo IMAP para ser usado con un navegador y que esta disponiblepara todas las cuentas de correo de los servidores locales.

El protocolo IMAP (Internet Message Access Protocol), es un protocolo de red de acceso a mensajeselectronicos almacenados en el servidor. Mediante IMAP se puede tener acceso al correo electronico desdecualquier equipo que tenga una conexion a Internet. Una vez configurada la cuenta IMAP, podemos espe-cificar las carpetas que deseamos mostrar y las que deseamos ocultar, esta caracterıstica lo hace diferentedel protocolo POP3.

Horde cuenta con las siguientes caracterısticas:

Enviar y Recibir mensajes con multiples archivos adjuntos.

Despliegue en lınea de archivos adjuntos de imagenes

Interfaz de usuario amigable y atractiva basada en iconos.

Soporte para multiples mensajes, incluyendo Ingles, Espanol, Frances, Aleman, Hungaro, Italiano,Polaco, Portugues, Noruego, Ruso, . . .

Multiples carpetas, por defecto cuenta con la opcion enviar, la papelera y soporta algunas creadaspor los usuarios.

Configuracion en lımite del tamano para archivos adjuntos en salida.

Preferencias de usuarios, incluyendo numero de mensajes en pantalla, lenguaje, firma y estilo.

Cada usuario tiene su propias libreta de direcciones.

Jose Antonio Escartın Vigo, Junio 2005.

Page 180: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

162 Servidor Linux para conexiones seguras de una LAN a Internet

La ventaja de usar la web es que lo podemos hacer desde cualquier ordenador y siempre tendremos lamisma configuracion, los mensajes quedan en el servidor organizados en carpetas. En cambio eso no pasacon POP3, ya que nos bajamos los mensajes y los tenemos que organizar en nuestro disco local.

Para instalar el Webmail Horde, simplemente deberemos ejecutar el siguiente apt:#apt-get install horde3

Para acceder de forma directa a este gestor de correo, deberemos usar las direcciones:

http://dominio.tld:2095/horde/

https://dominio.tld:2096/horde/, . . . puerto seguro

Para poder utilizar Horde tenemos dos opciones:

Validar los usuario mediante directorio LDAP

Utilizar una base de datos de usuarios MySQL

Es mejor decantarse por la opcion MySQL, ya que Jabber tambien lo utiliza y nos sera util masfunciones. Es decir, para poder utilizar Horde necesitamos tener instalados los:

Apache

PHP

MySQL

Si vamos a instalar el Webmeil Horde, podemos obtener toda la informacion detallada en la siguientedireccion de Internet:

http://patux.glo.org.mx/imp-mini-como.html, HowTo sobre como instalar el servidor IMAP a travesde Horde.

10.4.4. Protocolo IMAP

El protocolo IMAP nos servira para consultar el correo vıa web con cualquier navegador, pudiendorealizar las conexiones desde un lugar ajeno a la empresa o mediante un cliente IMAP.

La necesidad surge ya que el protocolo POP3 es poco flexible y accediendo desde otros correos nospuede descargarnos los e-mails al host local, si es que ası esta configurado en ese cliente, con la consiguienteperdida de los e-mails del usuario que se encontraban almacenados en el servidor.

El servidor IMAP, lo que hace es recoger el correo que se encuentra en el $HOME de un usuario yservirlo al cliente IMAP interactivamente. Es decir, los mensajes siempre estan en el servidor y solo bajanal cliente si son seleccionados para lectura en local, y no por Internet.

Para utilizarlo, necesitaremos tener el servidor de correo Exim para enviar los correos y tambien Fetch-mail para obtener los correos externos. En este punto supondremos que tenemos instalado y funcionandoen el sistema: Exim4 y Fetchmail.

En Debian para poder realizar la tarea de servidor IMAP tenemos dos paquetes: Corier-imap y Mail-drop.

Configuracion de Courier-imap

Para instalarlo es muy simple:#apt-get install courier-imap courier-imap-ssl

Ahora, editaremos el archivo de configuracion de courier-imap: /etc/courier/imapd.

Jose Antonio Escartın Vigo, Junio 2005.

Page 181: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 10. Servicios de usuario 163

Allı cambiaremos la siguiente lınea: ADDRESS = 0 por ADDRESS = 127.0.0.1, localhost

Es recomendable, por motivos de seguridad, configurar courier-imap sobre SSL. Si lo hacemos nodebemos olvidar configurar la cuenta cliente como SSL.

Configuracion Maildrop

Para que el servidor solo sea accesible desde nuestra maquina. Deberemos instalar un filtro de e-mails,para que nos coloque el correo en nuestra carpeta Maildir, o como la hayamos llamado.

Para instalarlo es muy simple:#apt-get install maildrop courier-maildrop

Nos permite filtrar los e-mails para ası colocarlos en subcarpetas, segun el asunto, el remitente, etc.La configuracion basica es que nos deje todos los emails en el directorio Maildir. Estas opciones son con-figurables desde el archivo de configuracion: ˜/.mailfilter.

El contenido del archivo debe de ser el siguiente:

DEFAULT="$HOME/Maildir"logfile "$DEFAULT/.maildroplog"

Finalmente, creamos la carpeta Maildir, con el comando maildirmake:#maildirmake Maildir

Ahora solo falta comprobar su funcionamiento. Cada cierto tiempo el usuario, mediante Fetchmail,descargara el correo en la carpeta. Despues solo es necesario configurar un cliente de correo para que leadel servidor de correo Imap. Por ejemplo, podemos configurar Mutt, que comprende a la perfeccion elcorreo en formato Maildir.

A la hora de acceder al correo, deberemos colocar como nombre de servidor localhost y como usua-rio/contrasena, el que tengamos asignado en el sistema.

10.4.5. Filtrado de correo, eliminar virus y Spam con Procmail

Ahora que ya tenemos todas nuestras cuentas de correo centralizadas en nuestra maquina, vamos aprocesar el correo. Esta tarea la lleva a cabo Procmail, justo antes de que se deje el correo en el Maildirde cada usuario.

Para instalar Procmail, simplemente ejecutaremos el siguiente apt:#apt-get install procmail

Procmail es una herramienta muy potente que permite repartir el correo, filtrarlo, organizarlo en car-petas, reenviarlo automaticamente, etc. Nosotros lo utilizaremos para pasar el antivirus ClamAv y losfiltros de Spam: SpamAssassin y Bogofilter.

Las posibilidades son practicamente ilimitadas y dependen de nuestra imaginacion y de nuestras ha-bilidades, pero basicamente el proceso consiste en dos pasos:

Identificar el correo

Procesar el correo

Para identificar el correo, usaremos las expresiones regulares, de forma que los todos correos quecumplan unas determinadas condiciones, pasaran a realizar el proceso que queramos.

Jose Antonio Escartın Vigo, Junio 2005.

Page 182: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

164 Servidor Linux para conexiones seguras de una LAN a Internet

Redireccionamiento de correo

Si queremos redireccionar el correo desde Fetchmail, necesitamos editar o crear el archivo de configu-racion Fetchmail del usuario: ˜/.fetchmailrc.

En el agregaremos las siguientes lıneas:

$ cat $HOME/.forward| procmail

Con esto, cada vez que nos llegue un correo (.forward), se ejecutara Procmail de forma automatica.

Otra opcion interesante es procesar directamente un archivo de correo (*.mbox) de forma manual, ael se aplicaran los filtros indicados en el ˜/.procmailrc:

$formail -s procmail < INBOX.mbox

En este caso es recomendable utilizar un script para Procmail, como el siguiente:#!/bin/sh

ORGMAIL=/var/mail/$LOGNAME

if cd $HOME &&

test -s $ORGMAIL &&

lockfile -r0 -l1024 .newmail.lock 2>/dev/null

then

trap "rm -f .newmail.lock" 1 2 3 13 15

umask 077

lockfile -l1024 -ml

cat $ORGMAIL >>.newmail &&

cat /dev/null >$ORGMAIL

lockfile -mu

formail -s procmail <.newmail &&

rm -f .newmail

rm -f .newmail.lock

fi

exit 0

Configuracion de Procmail y reglas de filtrado

Los archivos de configuracion de Procmail, son los siguientes:

/etc/procmailrc: Archivo de configuracion del servidor Procmail.

˜/.procmailrc: Archivo de configuracion Procmail, por cada usuario.

Este serıa un archivo ˜/.procmailrc tıpico:PATH=/usr/bin:/bin:/usr/local/bin:.

MAILDIR=$HOME/Maildir

DEFAULT=$MAILDIR/

:0fw: spamassassin.lock

* < 256000

| spamassassin

# Algunas versiones de Spamassassin eliminan la letra "F"

# de la cabecera "From"

:0

* ^^rom[ ]

{

LOG="*** Dropped F off From_ header! Fixing up. "

:0 fhw

| sed -e ’1s/^/F/’

}

Opcionalmente podrıamos mandar los correos de Virus y Spam a /dev/null, pero los filtros no soninfalibles, por lo que por lo menos al principio, es mejor revisarlos antes de borrarlos.

Este serıa el formato, que habrıa que anadir al ˜/.procmailrc, para borrar los correos que cumplan unadeterminada regla:

:0* ^X-Regla: Yes/dev/null

Jose Antonio Escartın Vigo, Junio 2005.

Page 183: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 10. Servicios de usuario 165

Configuracion grafica de Procmail, interfaz Webmin

Para simplificar el proceso de configuracion podemos utilizar nuestra herramienta de configuracion porweb: Webmin.

Para instalar el modulo realizaremos el siguiente apt:#apt-get install webmin-procmail

Figura 10.13: Modulo Webmin para Procmail

Desde este modulo, ademas de editar manualmente el archivo de configuracion /etc/procmail, comopodemos observar en la figura 10.14, podemos especificar las acciones que ejecutara el filtro.

Figura 10.14: Crear acciones graficamente en Procmail

10.4.6. ClamAV: Antivirus para correo

Mediante ClamAv podemos escanear, los mensajes recibidos, es el filtro antivirus que pasaremos atraves de Procmail.

ClamAv tiene licencia GPL, funciona bastante bien y se actualiza a menudo.

Para instalar el programa, simplemente ejecutaremos el siguiente apt:#apt-get install clamav clamav-daemon

Jose Antonio Escartın Vigo, Junio 2005.

Page 184: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

166 Servidor Linux para conexiones seguras de una LAN a Internet

Durante el proceso de instalacion clamav-freshclam (el actualizador de bases de datos de virus), pre-guntara por que interfaz estamos conectados a Internet y un servidor (se apuntan varios por defecto) desdedonde bajarse las actualizaciones. Tambien podemos establecer el modo de ejecucion de clamav-freshclam,se recomienda ejecutar como demonio del sistema.

El archivo de configuracion del demonio ClamAv es: /etc/clamav/clamd.conf

En ese archivo podemos encontrar las siguientes opciones:

ScanMail, para que escanee correo.

ScanArchive, para que escanee archivos.

ScanHTML, para que escanee codigo HTML.

Situados en este punto, suponemos que nuestro servidor de correo entrega los correos locales correc-tamente a Procmail. Este ejecutara las reglas de filtrado de /etc/procmailrc (y despues las de: ˜/.proc-mailrc,. . . para cada usuario) y lo dejara, tıpicamente en: /var/mail/<usuario>.

Para que Procmail ejecute ClamAv anadiremos al archivo: /etc/procmailrc, las siguientes lıneas:

SHELL=/bin/sh

AV_REPORT=‘clamdscan --stdout --disable-summary - | cut -d: -f 2‘

VIRUS=‘if [ "$AV_REPORT" != " OK" ]; then echo Yes; else echo No;fi‘

:0fw

| formail -i "X-Virus: $VIRUS"

:0fw

* ^X-Virus: Yes

| formail -i "Virus: $AV_REPORT" -i "Subject: MENSAJE CON VIRUS: $AV_REPORT"

Vamos a observar cada una de las lıneas detenidamente:

La lınea de SHELL=/bin/sh es necesaria porque se pueden tener usuarios en /etc/passwd sin shell,en estos casos no se ejecutarıa el codigo entre comillas simples.

En AV REPORT se almacena “OK”, si no tiene virus o el nombre de ese virus en caso contrario.

A la variable VIRUS se le asigna “Yes” si contiene virus y “No” en caso contrario.

En la primera regla de filtrado, anadimos la cabecera X-Virus con “Yes” o “No” (ası el usuario finallo puede filtrar facilmente, tambien nos sirve para saber que el correo ha sido escaneado).

En la segunda regla de filtrado, si el correo contiene virus, le agregamos una cabecera llamada“Virus” que contiene el reporte de ClamAv. Ademas, modificamos el Subject y en su lugar ponemosel nombre del virus.

Como funcion adicional, en lugar de modificar el Subject lo podrıamos eliminar directamente.

Para que esta configuracion funcione necesitamos tener lanzado el demonio: clamav-daemon.

Para probar que el sistema funciona, en la direccion: http://www.eicar.org/download/eicar.com.txt,encontraremos la siguiente lınea:

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Es un test, si nos la mandamos por e-mail, ClamAv debera detectarlo como virus.

Una vez configurado este sistema, solo tendremos que fijarnos que todos los correos nuevos que lleguena los usuarios contengan la nueva cabecera de X-Virus.

Jose Antonio Escartın Vigo, Junio 2005.

Page 185: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 10. Servicios de usuario 167

10.4.7. SpamAssassin: Filtro basado en reglas

El SpamAssassin es un filtro basado en scripts en Perl que procesan los mensajes y detectan, en basea unas reglas bastantes complejas, si el mensajes es spam. A los correos, les son asignados una serie depuntos, si supera determinado valor (5.0 por defecto) es considerado un spam.

La mejor manera de hacerlo funcionar es arrancar el demonio spamd y comunicarse con el a traves delspamc, que sera ejecutado por Procmail. Para identificar el correo spam, usaremos expresiones regulares,de forma que los todos correos que cumplan unas determinadas condiciones, pasaran a realizar el procesoasignado en Procmail.

Para instalarlo nada mas facil que realizar el siguiente apt:#apt-get install spamassassin spamc spampd

El paquete spampd, instala el demonio SMTP/LMTP demonio proxy de SpamAssassin.El paquete spamc, instala el cliente para comunicarse con el demonio de SpamAssassin.

Para poder usar SpamAssasin como demonio es necesario retocar el archivo:/etc/default/spamassassin y cambiar ENABLED a 1.

En el archivo de configuracion de procmail, anadiremos la siguiente regla:

:0fw| spamc -f -s 100000 -u $LOGNAME

Una vez instalados ambos y arrancado el spamd, solo hay que hacer que el spamc filtre todos los men-sajes para detectar spam.

El spamd agrega las siguientes cabeceras para indicar los resultados:

X-Spam-Prev-Content-Type: text/html; charset="us-ascii"

X-Spam-Prev-Content-Transfer-Encoding: 7bit

X-Spam-Status: Yes, hits=11.7 required=5.0

tests=NO_REAL_NAME,MSG_ID_ADDED_BY_MTA,INVALID_MSGID,SUBJ_REMOVE,

UPPERCASE_25_50,MAILTO_WITH_SUBJ,MAILTO_TO_REMOVE,

MAILTO_WITH_SUBJ_REMOVE,BIG_FONT,MAILTO_LINK,

FROM_AND_TO_SAME

version=2.30

X-Spam-Flag: YES

X-Spam-Level: ***********

X-Spam-Checker-Version: SpamAssassin 2.30 (devel $Id: SpamAssassin.pm,v 1.94 2002/06/14 23:17:15 hughescr Exp $)

Ademas, agrega la siguiente cabecera al Subject del mensaje:Subject: *****SPAM***** Say Goodbye to YELLOW, STAINED Teeth!

Y las siguientes lıneas en el texto para describir las reglas aplicadas:

SPAM: -------------------- Start SpamAssassin results ----------------------

SPAM: This mail is probably spam. The original message has been altered

SPAM: so you can recognise or block similar unwanted mail in future.

SPAM: See http://spamassassin.org/tag/ for more details.

SPAM:

SPAM: Content analysis details: (25.5 hits, 5 required)

SPAM: NO_REAL_NAME (-1.1 points) From: does not include a real name

SPAM: INVALID_DATE_TZ_ABSURD (4.4 points) Invalid Date: header (timezone does not exist)

SPAM: FAKED_UNDISC_RECIPS (3.5 points) Faked To "Undisclosed-Recipients"

SPAM: PLING (0.1 points) Subject has an exclamation mark

SPAM: DOUBLE_CAPSWORD (1.1 points) BODY: A word in all caps repeated on the line

SPAM: CLICK_BELOW (1.5 points) BODY: Asks you to click below

SPAM: CALL_FREE (0.7 points) BODY: Contains a tollfree number

SPAM: NORMAL_HTTP_TO_IP (3.3 points) URI: Uses a dotted-decimal IP address in URL

SPAM: REMOVE_PAGE (2.2 points) URI: URL of page called "remove"

SPAM: MAILTO_WITH_SUBJ (1.9 points) URI: Includes a link to send a mail with a subject

SPAM: CLICK_HERE_LINK (0.8 points) BODY: Tells you to click on a URL

SPAM: MAILTO_LINK (0.8 points) BODY: Includes a URL link to send an email

SPAM: FREQ_SPAM_PHRASE (2.4 points) Contains phrases frequently found in spam

SPAM: [score: 14, hits: click here, email address,]

SPAM: [enter your, list please, please click, this]

SPAM: [message, you wish, your email, your]

SPAM: [name]

SPAM: DATE_IN_FUTURE_06_12 (2.4 points) Date: is 6 to 12 hours after Received: date

SPAM: FORGED_YAHOO_RCVD (1.5 points) ’From’ yahoo.com does not match ’Received’ headers

SPAM:

SPAM: -------------------- End of SpamAssassin results ---------------------

Jose Antonio Escartın Vigo, Junio 2005.

Page 186: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

168 Servidor Linux para conexiones seguras de una LAN a Internet

Configuracion del Procmail, con SpamAssassin

Se pueden aplicar filtros en el Procmail del usuario, en el generico para todo el sistema (Hay que usarcon cuidado esta opcion, borrar o modificar un mensaje de terceros sin su aprobacion puede ser un delito)o en el propio cliente (MUA) de correo electronico, que es la opcion mas recomendable.

En este apartado lanzaremos el cliente (spamc) desde: /etc/procmailrc y ejecutarlo de forma global.Editaremos el archivo y anadiremos las siguientes lıneas:

DROPPRIVS=yes

:0fw| /usr/bin/spamc -f

Despues en el ˜/.procmailrc filtramos los spams a una carpeta especial para separarla del correo validoy poder revisar, en busca de falsos positivos:

:0:* ^X-Spam-Status: Yesmail/spams

Los Spams son enviados al directorio: ˜/mail/spams, pero si nuestras reglas estan lo suficientementeprobadas y no nos importa perder algun e-mail valido, podemos eliminarlos, enviandolos a /dev/null

Configuracion grafica de SpamAssassin, interfaz Webmin

Para simplificar el proceso de configuracion podemos utilizar nuestra herramienta de configuracion porweb: Webmin. Para instalar el modulo realizaremos el siguiente apt:

#apt-get install webmin-spamassassin

Figura 10.15: Modulo Webmin para SpamAssassin

Como opcion adicional se pueden especificar las opciones de configuracion de Procmail para que pro-cese el correo con SpamAssassin.

Jose Antonio Escartın Vigo, Junio 2005.

Page 187: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 10. Servicios de usuario 169

En las siguientes figuras (10.16) podremos observar la multitud de opciones que podemos configurablesgraficamente.

Figura 10.16: Opciones de configuracion SpamAssassin

10.4.8. Bogofilter: Filtro bayesiano

El problema fundamental con el SpamAssassin es que esta basado en el reconocimiento de patronesde texto usando reglas, lo que obliga a estar continuamente actualizando y agregando nuevas reglas paraadaptarse a los cambios del spam. Ademas hay que elaborar reglas para cada lenguaje.

Esto produce que el proceso de analisis de cada mensaje sea aun mas lento de lo que ya es actualmente,entre otras cosas porque esta implementado en Perl y el numero de reglas es muy grande.

Y no acaba aquı, en problema, lo que es el mas grave, puede dar falsos positivos, que son mensajes queno son spams pero son considerados como tal por el filtro. Esto es lo peor que le puede pasar, podemosperder o dejar de leer mensajes importantes. Tambien de vez en cuando, llegan spam que haya pasado elfiltro (falso negativo), pero en este caso no pasa nada realmente grave.

El SpamAssasin al poco tiempo muestra sus problemas, es muy facil para los spammers encontrarlos trucos para saltarse las reglas de filtrados, ya que son de dominio publico y comun para todas lasinstalaciones.

La solucion pasa por usar metodos que “aprendan” de los mensajes que recibe el usuario y generanuna base de datos propia. Esta base de datos sirve para calcular las probabilidades combinadas de que unmensaje sea o no spam, en funcion de las palabras que contiene. Este metodo se denomina “bayesiano” y

Jose Antonio Escartın Vigo, Junio 2005.

Page 188: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

170 Servidor Linux para conexiones seguras de una LAN a Internet

esta basado en el “Teorema de Bayes” sobre probabilidad, y se adapta automaticamente al idioma y a lostipos de mensajes que recibe cada usuario.

El problema fundamental de esta aproximacion es que hay que entrenar inicialmente al programa conun conjunto relativamente grande de mensajes spams y otros validos para que arme su base de datos. Apartir de allı, el programa puede aplicar los metodos bayesianos y usar esos mismos mensajes, ya clasifi-cados como spam o no, para realimentar la base de datos. Para que el filtro aprenda, por cada mensajespam en la base de datos, tenemos que proporcionarle al menos tres mensajes buenos. Si no hacemos estodara muchos falsos positivos.

Una implementacion mejorada de este metodo es Bogofilter, el filtro bayesiano que aquı propongo.

Configuracion de Bogofilter

Para instalarlo realizaremos el siguiente apt:#apt-get install bogofilter

Bogofilter mantiene un par de bases de datos en el directorio: ˜/.bogofilter :

goodlist.db

spamlist.db

Cada una de ellas mantiene una lista de “tokens” (palabras) junto con la cantidad de veces que esapalabra ha aparecido en mensajes validos y mensajes spams. Esos numeros son usados para calcular laprobabilidad de que el mensaje sea un spam.

Una vez que se han calculado las probabilidades, se usan aquellas mas alejadas de la media paracombinarlas usando el Teorema de Bayes de probabilidades combinadas. Si la probabilidad combinada esmayor que 0.9, bogofilter retorna 1, caso contrario retorna 0.

La fiabilidad del bogofilter depende exclusivamente de la cantidad de palabras que tenga en su base dedatos, mientras mas contenga y mayor sea la cantidad de apariciones de cada palabra en un mensaje validoo spam, mejores seran sus resultados. Si solo le ensenamos cuales son mensajes validos, no podra detectarlos spams. Al contrario, si solo le “ensenamos” spams, considerara a muchos mensajes validos como spams(falsos positivos . . . ). O sea, el aprendizaje inicial es importantısimo, y nos ahorrara mucho trabajo demantenimiento de la base de datos.

Para configurarlo realizaremos los siguientes pasos:

Entrenarlo con un conjunto grande de mensajes validos que tengamos almacenados.

Entrenarlo con un conjunto grande de spams.

Configurar ˜/.procmailrc

Seguimiento y mantenimiento los primeros dıas, para evitar falsos positivos.

Si queremos probar otros, el sistema Debian pone a nuestra disposicion, mas filtros bayesianos comopor ejemplo, spamprobe.

Entrenarlo con mensajes validos

Este paso es muy importante, caso contrario puede generar falsos positivos. Lo mejor en estos casoses entrenarlo con los mensajes que tengamos almacenados en nuestro cliente de correo. Se aconsejan almenos 1.000 mensajes.

Si tenemos los mensajes almacenados en formato mbox, basta con hacer lo siguiente:#bogofilter -n < archivo_mbox

Jose Antonio Escartın Vigo, Junio 2005.

Page 189: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 10. Servicios de usuario 171

Si por el contrario lo tenemos en formato Maildir, y debido a que el estandar de este formato quitalas lıneas de “From” de inicio de mensaje, el Bogofilter no es capaz de separar y contar los mensajes, porlo que hay que llamarlo por cada mensaje almacenado. Esto se puede realizar facilmente con el siguientescript:

for f in directorio_maildir/*dobogofilter -n < $fdone

Si hemos seguido los pasos descritos en este capitulo, no sera necesario ya que en la seccion 10.4.5hemos realizado un filtro que recomponıa esa lınea de “From”.

Despues de este paso se habra creado la base de datos: ~/.bogofilter/goodlist.db

Entrenarlo con spams

El siguiente paso sera entrenarlo con spams, en la direccion:http://bulma.net/ gallir/BULMA/spams.txt.gz

Se puede encontrar una lista de mas de 700 mensajes de spams. Para entrenar el filtro con estosmensajes usaremos la instruccion:

#zcat spams.txt.gz | bogofilter -s

Despues de este paso se habra creado la base de datos: ~/.bogofilter/spamlist.db

Configuracion de Procmail

El siguiente paso es configurar Procmail. Para ello modificaremos el archivo de configuracion: ˜/.proc-mailrc de cada usuario, ya que este filtro dependera de sus e-mails y no tendrıa sentido aplicarlo a todala organizacion (en el /etc/procmailrc).

Una vez el mensaje ha sido clasificado como spam, modificaremos la configuracion de Procmail paraque mueva los mensajes a otro archivo: ˜/mail/spams.

Ademas de ello, realimentaremos la base de datos con cada mensaje que llega, por lo que el sistemaira aprendiendo con el tiempo, en pocas semanas ya no necesita casi mantenimiento.

El codigo que incluiremos en el ˜/.procmailrc es el siguiente:

:0HB* ? bogofilter{

# Es un spam, realimentamos la base de datos de spam:0HBc| bogofilter -S

# lo movemos al archivo $HOME/mail/spams:0mail/spams

}

:0EHBc# Es un mensaje valido, realimentamos la base de datos validos| bogofilter -n

Jose Antonio Escartın Vigo, Junio 2005.

Page 190: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

172 Servidor Linux para conexiones seguras de una LAN a Internet

Podemos realizar la actualizacion automatica mediante la opcion -u que indica al Bogofilter que ac-tualice directamente la base de datos de acuerdo a la clasificacion que se haga del mensaje.

Es decir la siguiente regla, insertada en ˜/.procmailrc, ya serıa suficiente:

:0HB* ? bogofilter -umail/spams

Seguimiento y mantenimiento

Aunque con el entrenamiento oficial y usando un conjunto de mensajes grande, es suficiente para queel Bogofilter casi no de falsos positivos, los primeros dıas deberemos de verificar los mensajes, resituandolos falsos positivos como mensajes validos.

Para recolocar las modificaciones realizadas, tenemos las versiones incrementales -N y -S. En amboscasos lo que tenemos que hacer es grabar el mensaje en un archivo de texto y ejecutar con la opcion quecorresponda, -S si es un spam y -N si es un falso positivo.

Para marcar como spam un mensaje no detectado:#bogofilter -S < mensaje.txt

Para marcar como valido un falso positivo:#bogofilter -N < mensaje.txt, . . . esta situado en el archivo mbox: ˜/mail/spams.

10.5. Jabber: Mensajerıa instantanea para corporaciones

El protocolo Jabber, sera una de las piezas claves del desarrollo y evolucion de la futura Internet, comolo son y han sido los protocolos IP, FTP, Telnet, DNS, NNTP, ARP, ICMP, . . . , pero enfocado a la cadavez mas utilizada mensajerıa instantanea.

Jabber a diferencia de otros sistemas de mensajerıas instantaneos, es algo mas que un sencillo programapara enviar y recibir mensajes de texto entre usuarios a traves de Internet, es un protocolo de Internet queaspira a convertirse en parte fundamental de la misma, para lo cual cuenta con una serie de interesantescaracterısticas:

Buena documentacion.

Basado en estandares abiertos y libres.

Utiliza XML.

Es multiplataforma.

Su codigo esta liberado a la comunidad.

Existen multitud de clientes que lo utilizan

Utiliza pasarelas para interactuar con otros servicios (MSN, Yahoo, ICQ, IRC, . . . ).

Es modulable y escalable, lo que permite anadir mejoras facilmente.

Existen disponibles, librerıas Jabber en varios lenguajes.

Esta basado en una arquitectura cliente/servidor.

Jose Antonio Escartın Vigo, Junio 2005.

Page 191: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 10. Servicios de usuario 173

Esta formado por un servidor y clientes, que son los programas que utilizan los usuarios para enviar yrecibir mensajes entre sı. Existen clientes para practicamente todas las plataformas (incluso varios escritosen Java, con la consiguiente portabilidad).

Jabber es ideal para instalarlo en empresas, como complemento a la propia Intranet, puesto quepermite la comunicacion de los trabajadores de una forma eficiente, rapida y muy economica. De formaque permite, por ejemplo, intercambiar documentos, programas, datos, textos, . . . de una forma muysencilla sin tener que utilizar sistemas mas complejos como ftp o correo interno, es decir, consiguiendocomunicacion instantanea y directa.

10.5.1. Servidor Jabber

Para poder instalar el servidor Jabber necesitamos realizar un apt:#apt-get install jabber

Con esto, se guardaran en nuestro sistema todos los archivos basicos. Si observamos los archivos deconfiguracion de usuarios (/etc/passwd) se ha creado un usuario jabber, para manejar el servidor Jabberen el sistema. Ademas el servicio ha quedado agregado al arranque del sistema, en el inetd.

Para arrancar el servidor de jabber, a mano, ejecutaremos: #jabberd

Configuracion Jabber

La configuracion se encuentra centralizada en un unico archivo: /etc/jabber/jabber.xml

Lo primero que tendremos que hacer es especificar en que maquina esta el servidor, el nombre de lamisma ha de estar en formato FQDN, para que desde cualquier maquina de nuestra red pueda acceder alos servicios proporcionados por Jabber. Otra opcion es poner directamente la direccion IP de la maquina,e incluso para realizar pruebas en la propia maquina podemos poner localhost.

Cambiaremos la lınea:<host><jabberd:cmdline flag="h">localhost</jabberd:cmdline></host>

Por una de las siguientes opciones:

<host>localhost</host>

<host>FQDN_servidor_jabber<host>

<host>IP_servidor_jabber<host>

Una vez arrancado el servidor, tendremos que verificar si realmente todo funciona bien, para lo cualutilizaremos algunos de los multiples clientes existentes para Jabber, (vease seccion 10.18). Desde el clientenecesitamos crear un usuario y registrarlo en el servidor local.

Podemos anadirle tambien otras funcionalidades extras:

Si queremos que nuestro servidor Jabber soporte conferencia, es decir mas de dos usuarios simulta-neos, necesitamos jabber-muc (Jabber Multi user chat), para ello realizaremos el siguiente apt:

#apt-get install jabber-muc

Jose Antonio Escartın Vigo, Junio 2005.

Page 192: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

174 Servidor Linux para conexiones seguras de una LAN a Internet

Si queremos que nuestro servidor Jabber soporte la busqueda de usuarios, es decir poder buscaren el archivo de usuarios del sistema, necesitamos jabber-jud (Jabber User Directory), para ellorealizaremos el siguiente apt:

#apt-get install jabber-jud

Si queremos que nuestro servidor se comunique con otros protocolos propietarios como (IRC, MSN,Yahoo, ICQ, AIM, . . . ), tenemos disponibles pasarelas a esos protocolos:

• #apt-get install jabber-irc : IRC

• #apt-get install jabber-msn : MSN Messenger

• #apt-get install jabber-jit : ICQ

• #apt-get install jabber-aim : AIM messenger

• #apt-get install jabber-yahoo: Yahoo messenger

Pero si aun necesitamos mas potencia para nuestro servidor de mensajerıa instantanea, en la direccion:http://download.jabber.org/, encontraremos mas utilidades.

Para conseguir mas informacion sobre las opciones, podemos recurrir al manual: #man jabberd

O bien consultar la pagina oficial: http://www.jabber.org

10.5.2. Configuracion grafica de Jabber, interfaz Webmin

Podemos hacer mas sencilla la configuracion de nuestro servidor, si utilizamos nuestra herramientaweb: Webmin. Para instalar el modulo de Jabber realizaremos el siguiente apt:

#apt-get install webmin-jabber

Pomo se puede observar en la figura 10.17, podemos acceder a las opciones generales, como pue-den ser quien puede tener acceso al servidor jabber o tambien nos da acceso al archivo de cofiguracion/etc/jabber/jabber.xml.

10.5.3. Clientes Jabber

Para poder interactuar con el servidor Jabber, necesitamos tener instalado un cliente. Existe muchosclientes para jabber, personalmente utilizo kopete basado en el entorno de escritorio KDE.

Para instalarlo realizaremos un apt:#apt-get install kopete

Desde el cliente nos conectaremos con una cuenta al servidor Jabber local y si no tenemos cuenta,tambien podemos registrarla.

Como podemos observar en la figura 10.18, situando nuestra cuenta podemos interactuar con multitudde servicios de mensajerıa ademas de Jabber, es un cliente muy versatil.

Existen otros Clientes multiprotocolo, como Gaim (vease figura 10.19), que tambien funcionan muybien.

Para instalarlo: #apt-get install gaim

Al final todo es cuestion de probar y quedarnos con el cliente que mas nos guste.

Jose Antonio Escartın Vigo, Junio 2005.

Page 193: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 10. Servicios de usuario 175

Figura 10.17: Modulo Webmin para Jabber

Jose Antonio Escartın Vigo, Junio 2005.

Page 194: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

176 Servidor Linux para conexiones seguras de una LAN a Internet

Figura 10.18: Cliente de mensajerıa instantanea Kopete

Figura 10.19: Cliente de mensajerıa instantanea Gaim

Jose Antonio Escartın Vigo, Junio 2005.

Page 195: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 11

Comunicaciones seguras

En el interior y exterior de las redes de nuestro sistema pueden existir multiples peligros acechandonosdetras de cada switch o router, es necesario proteger nuestras conexiones y las de nuestros usuarios paraque no sean escuchadas por usuarios no autorizados o si esto no lo podemos asegurar, al menos que lessean incomprensibles.

11.1. Shell seguro: OpenSSH

SSH es una herramienta de acceso remoto que nos permite iniciar la sesion en un sistema remoto deuna forma segura. El talon de Aquiles de la mayorıa de las redes es el hecho de que normalmente lascomunicaciones entre sistemas se pasan sobre una red en texto plano. Por lo tanto, podemos fortalecer lasmaquinas individuales todo lo que deseemos, pero si iniciamos una sesion en ellas remotamente con unprograma de terminal inseguro, los ladrones pueden robar nuestras credenciales de registro con un snifferde red (escucha clandestina de paquetes de red). Despues pueden iniciar una sesion sin ningun problema.Una de las herramientas de acceso remoto mas populares, Telnet, sufre esta deficiencia.

SSH soluciona el problema utilizando tanto la criptografıa simetrica como la clave publica para cifrarla sesion desde la primera pulsacion de tecla. De este modo, todo el que este escuchando su conexionobtiene un sonido aleatorio. SSH no solo proporciona confidencialidad para nuestros datos utilizando elcifrado sino que ademas proporciona una solida autenticacion, que impide la suplantacion de identidad,esto lo hace utilizando certificados digitales para autenticar a los usuarios.

No hay que confundir SSH con SSL, es estandar de cifrado Web. Aunque ambos realizan la mismafuncion, SSH funciona con cualquier protocolo, mientras que SSL esta disenado principalmente para lascomunicaciones Web.

SSH tambien incluye SCP, un reemplazo seguro para RPC, la herramienta de copia remota, y SFTP unreemplazo seguro para FTP. SSH tambien puede utilizarse para crear un tunel con otros protocolos entremaquinas, como HTTP y SMTP. Al utilizar esta familia de programas en lugar de sus homologos masantiguos, nos aseguramos de que no se estan leyendo nuestras comunicaciones remotas con los servidores.

Eliminar el uso de Telnet y FTP en nuestra red puede ser difıcil, pero cuanto mas lo hagamos, masseguros estaremos.

11.1.1. Cliente OpenSSH

Para acceder al sistema remoto con SSH, necesitamos un cliente SSH en nuestro lado y tiene que existirun servidor SSH ejecutandose en el lado remoto. Aunque SSH no esta tan difundido como Telnet, poco apoco se esta haciendo mas popular. Cisco esta instalando SSH en sus enrutadores, aunque todavıa dejaactivado el servidor Telnet de forma predeterminada, mientras que SSH es opcional.

Debemos asegurarnos de estar utilizando una version 3.6 o mas actual; algunas versiones anteriorestenıan fallos en su implantacion de protocolos criptograficos y son susceptibles de ataques. De hecho,

Page 196: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

178 Servidor Linux para conexiones seguras de una LAN a Internet

es recomendable asegurarse de tener la utima version disponible, ya que el codigo se esta mejorandoconstantemente y los algoritmos se estan ajustando.

SSH tiene un numero de usos realmente interesantes distintos a asegurar un inicio de sesion en unsistema remoto. Se puede utilizar para crear un tunel para cualquier servicio a traves de un canal cifradoentre servidores.

Para instalarlo en nuestro sistema hay que realizar un apt-get:#apt-get install openssh-client-udeb

La sintaxis SSH basica para iniciar una sesion remotamente es:$ssh -l login hotname

Donde login es su nombre de usuario en el sistema remoto y hotname es el anfitrion al que esta inten-tando conectar con SSH. Tambien se puede utilizar:

$ssh login@hostname

Por lo tanto y a modo de ejemplo, para registrarse en el servidor Web denominado web.example.comutilizando el nombre de inicio de sesion de josan, tendrıamos que escribir:

$ssh [email protected]

Tambien podemos utilizar, $ssh -l josan web.example.com para iniciar la sesion. Si simplementeescribirmos $ssh web.example.com, el servidor supondra que el nombre del usuario es igual que el delinicio de sesion del sistema.

En la tabla 11.1 podemos encontrar el resto de opciones de SSH:

Cuadro 11.1: Opciones del cliente SSHOpcion Descripcion-c protocol Utiliza un protocolo criptografico especıfico (tiene que ser soportado por la version que

utilizamos de SSH)-p port# Se conoceta a un numero de puerto especıfico en lugar de la puerto SSH predeterminado

(puerto 22)-P port# Usa un puierto especıfico que no forma parte de la lista estandar de puertos propietarios, lo

que normalmente significa un numero por encima de 1024. Esto puede ser util si tenemosun cortafuegos que imposibilita las comunicaciones en numeros de puertos inferiores.

-v Muestra la salida larga. Util para la depuracion-q: Informa en modo silencioso, cdontrario del modo largo-C: Utiliza compresion del trafico cifrado. PUde ser util para conexiones demasiado lentas,

como las telefonicas, pero es mejor tener un procesaro mas potente para realizar la com-presion o ralentizara mucho el rendimiento.

Si queremos personalizar nuestras conexiones, en el directorio /etc/ssh encontraremos los archivos deconfiguracion del servicio SSH. El archivo de configuracion del cliente es /etc/ssh/ssh config.

11.1.2. Servidor OpenSSH

Para utilizar SSH debemos tener un cliente SSH ejecutandose en la maquina que deseamos conectar yun servidor SSH en la maquina a la que deseamos conectarnos. Los clientes FTP y Telnet normales no seconectaran a un servidor SSH. El cliente se encuentra integrado en la mayorıa de los sistemas operativosLinux actuales, aunque puede que tengamos que seleccionar esta opcion al instalar el sistema. El servidorSSH es normalmente opcional. Para determinar si ya esta instalado, escribimos $ps y comprobamos si seesta ejecutando el proceso sshd. Si no se esta ejecutando, tendremos que instalar el servidor para permitirlas conexiones de su maquina a traves de SSH.

Jose Antonio Escartın Vigo, Junio 2005.

Page 197: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 11. Comunicaciones seguras 179

Pasemos a describir el proceso de instalacion del servidor de SSH.

1. Lo primero es instalar el paquete si no lo tenemos en el sistema:

#apt-get install openssh-server-udeb

2. Despues hay que revisar los archivos de configuracion que se encuentran en el directorio /etc/sshpara asegurarse de que coincide con los parametros de nuestro sistema. El archivo de configuracionpara el servidor es /etc/ssh/sshd config.

A continuacion detallo los campos que hay que revisar dentro de este archivo:

Port: Es el puerto que escucha SSH para las conexiones entrantes. Su valor predeterminado es22. Si lo cambiamos, las personas que intenten conectarse con su sistema tendran que cambiarmanualmente el numero de puerto en sus clientes SSH.

Protocols: Le indican al servidor los protocolos SSH que debe aceptar. El valor predeterminadoes aceptar conexiones de tipo SSH1 y SSH2.

Hostkey: Claves para aceptar conexiones de clientes, proporciona la ubicacion de las clavesutilizadas para generar la autenticacion de clientes. Estas no son las mismas claves que lasclaves del servidor generadas en la instalacion.

3. Antes de poder utilizar un servidor SSH tiene que generar sus distintas claves. Esto proporciona unidentificador unico para las claves de servidor. Para ello hay que escribir el siguiente comando:

#ssh make-host-key

4. Ahora se puede iniciar el servidor SSH en la lınea de comandos escribiendo:

#sshd &

Ası se ejecutara el demonio del servidor SSH en segundo plano y escuchara continuamente las co-nexiones. Si se desea ejecutar sshd automaticamente al inicio (opcion muy recomendable), hay quecolocar dicha lınea al final de un archivo al estilo de rc.local de otras distribuciones (vease apendiceD para componer este tipo de archivos).

Tambien es posible facilitar la configuracion mediante un modulo para la herramienta de administracionweb Webmin. Para la instalacion se utiliza el siguiente apt:

#apt-get install webmin-sshd

Puerto de envıo con OpenSSH

Aunque SSH se diseno en principio para una interaccion de lınea de comandos tipo Telnet, tambiense puede utilizar para configurar un tunel entre dos maquinas para cualquier aplicacion. Podemos crearuna conexion segura entre dos servidores con la opcion de puerto de envıo integrada en SSH. Para realizaresta tarea, debemos tener SSH ejecutandose en ambos extremos de la conexion.

Con la siguiente declaracion emitida en el extremo del cliente podemos realizar cualquier servicio sobrecualquier puerto:

#ssh -L local_port:local_host:remote_port remote_hostname -N &

Donde debemos reemplazar:

local port: Por un numero aleatorio, mayor de 1024, elegido para realizar la nueva conexion cifrada

local host: Por la maquina local

remote port: Por el puerto del servicio con el que deseamos abrir un tunel en el extremo remoto

Jose Antonio Escartın Vigo, Junio 2005.

Page 198: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

180 Servidor Linux para conexiones seguras de una LAN a Internet

Figura 11.1: Interfaz grafica Webmin para el servidor SSHD

remote hostname: Por la direccion IP o nombre del servidor en el otro extremo de la conexion

La opcion -L le indica a SSH que debe escuchar el local port en local host y enviar cualquier conexiona remote port en remote host.

La opcion -N le indica a SSH que no intente iniciar la sesion, solo mantener la conexion abierta parael trafico enviado.

Si se desea que esta configuracion del sistema se mantenga en siguientes reinicios de la maquina hayque anadirla a un archivo de rc.local como se especifica en la seccion D.

Esto podrıan ser ejemplos de este tipo de usos:

Si se necesita cifrar una conexion de correo electronico:

#ssh -L 5000:localhost:25 192.168.0.1 -N &, . . . donde la IP corresponde al servidor de correode la red

Si se necesita crear una conexion web segura con SSH en vez de SSL:

#ssh -L 5000:localhost:80 192.168.0.1 -N &, . . . utilizando en el navegador localhost:5000 serealizaran envıos a traves de tunel seguro con el puerto web(80) en la maquina remota.

Tambien podemos tener varios puertos al mismo servidor, como es nuestro caso:

#ssh -L 5000:localhost:25 -L 5001:localhost:80 192.168.0.1 -N &

Jose Antonio Escartın Vigo, Junio 2005.

Page 199: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 11. Comunicaciones seguras 181

Como se puede observar, SSH funciona extraordinariamente bien para crear una conexion segura entredos maquinas para casi cualquier protocolo.

11.2. Criptografıa y cifrado

Hoy en dıa la solidez del cifrado normalmente se mide por el tamano de su clave. Independientementede la solidez del algoritmo, los datos cifrados pueden estar sujetos a ataques por la fuerza en los que seprueban todas las combinaciones posibles de claves. Al final, el cifrado se puede romper. Para la mayorıade los codigos modernos con longitudes decentes, el tiempo para romper la clave a la fuerza se mide enmilenios. Sin embargo, un fallo inadvertido en un algoritmo o el avance en la tecnologıa informatica o enlos metodos matematicos pueden reducir este tiempo considerablemente.

Normalmente se cree que la longitud de la clave debe ajustarse para mantener seguros los datos duranteuna cantidad razonable de tiempo. Si el elemento es muy local, como las comunicaciones del campo debatalla o la informacion diaria sobre las acciones, un codigo que proteja estos datos durante semanas omeses esta bien. Sin embargo, algo como numero de tarjeta de credito o los secretos de seguridad nacionaltienen que mantenerse seguros durante un periodo de tiempo mas prolongado y de forma eficaz parasiempre. Por lo tanto, utilizar algoritmos de cifrado mas debiles o longitudes de clave mas cortas paraalgunas cosas esta bien, siempre que la utilidad de la informacion para un intruso expire en un breveperiodo de tiempo.

11.2.1. Tipos de cifrado

Criptografıa simetrica

El primer tipo de cifrado, denominado criptografıa simetrica, o cifrado de secreto compartido, se haestado utilizando desde la epoca de los antiguos egipcios. Esta forma de cifrado utiliza una clave secreta,denominada secreto compartido, para cifrar los datos en un galimatıas inteligible. La persona que seencuentra en el otro extremo necesita la clave compartida para desbloquear los datos (el algoritmo decifrado). Podemos cambiar la clave y los resultados del cifrado. Se denomina criptografıa simetrica porquese utiliza la misma clave para ambos extremos tanto para cifrar como para descifrar los datos.

El problema que surge con este metodo es que tenemos que comunicar la clave secreta de una for-ma segura al destinatario pretendido. Si nuestro enemigo intercepta la clave, puede leer el mensaje. Sehan inventado todo tipo de sistemas para intentar solucionar esta fragilidad basica, pero el hecho sigueexistiendo: tendremos que comunicar la clave secreta de alguna forma al destinatario pretendido antes deiniciar una comunicacion segura.

Criptografıa asimetrica

Una revolucion en el cifrado fue la iniciada cuando Whitfield Diffie, Martin Hellman y Ralph Merkleinventaron la criptografıa de calve publica. (En realidad, todavıa existe algun debate sobre si el britanicoJames Ellis en realidad invento esta clave antes y la mantuvo en secreto, pero Diffie, Hellman y Merklefueron los primeros en publicarla en 1976).

Estaban tratando de resolver el antiguo problema del intercambio de clave. Diffie se preguntaba comodos individuos que deseaban realizar una transaccion financiera por una red electronica podıan hacerlo conseguridad. Llevaba mucho tiempo pensando en ello porque Internet estaba naciendo en aquel momentoy el comercio electronico todavıa no existıa. Si los gobiernos tenıan muchos problemas tratando con elproblema del intercambio de clave, ¿como podrıa controlarlo una persona media? Querıa llegar a crearun sistema por el que las dos partes pudiesen mantener conversaciones protegidas y realizar transaccionesseguras sin tener que intercambiarse una clave cada vez. Sabıa que si resolvıa el problema del intercambiode claves, serıa un gran avance en la criptografıa.

Diffie se asocio con Martin Hellman y Ralph Merkle. Tardaron algunos anos, pero finalmente consi-guieron crear un sistema denominado Cifrado de clave publica (PKE, Public Key Encription), tambienconocido como Criptografıa asimetrica.

La criptografıa asimetrica utiliza un cifrado que divide la clave en dos claves mas pequenas. Una delas claves se hace publica y otra sigue siendo privada. El mensaje lo ciframos con la clave publica del

Jose Antonio Escartın Vigo, Junio 2005.

Page 200: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

182 Servidor Linux para conexiones seguras de una LAN a Internet

destinatario. Este puede descifrarla a continuacion con su propia clave privada. Y lo mismo pueden hacerpor nosotros, cifrando un mensaje con nuestra clave publica para poderlo descifrar con nuestra claveprivada. La diferencia es que nadie necesita la clave privada de nadie para enviar un mensaje seguro.Utilizamos su clave publica, que no tiene que mantenerse segura (de hecho, se publican en repositorioscomo si fueran una guıa telefonica). Al utilizar la clave publica del destinatario, sabemos que solo esapersona puede descifrarlo utilizando su propia clave privada. Este sistema permite que dos entidades secomuniquen con seguridad sin ningun intercambio anterior de claves.

Normalmente la criptografıa asimetrica se implanta mediante el uso de funciones de un sentido. Enterminos matematicos, estas son funciones faciles de calcular en una direccion pero muy difıciles de calculara la inversa. De esta forma podemos publicar nuestra clave publica, derivada a partir de nuestra claveprivada, una tarea muy difıcil de llevar a cabo al reves para determinar la clave privada. Una funcioncomun de un solo sentido utilizada actualmente, es la descomposicion en factores de numeros primosgrandes. Es facil multiplicar dos numeros primos y obtener un producto. Sin embargo, determinar cual delas muchas posibilidades son los dos factores de un producto es uno de los problemas matematicos mascomplejos (su tiempo de computacion es NP-Completo1).

Si alguien inventase un metodo para deducir facilmente factores de numeros primos grandes2 en tiem-po de computacion lineal o polinomico, darıa al traste con el mecanismo de cifrado de claves publicasactual, haciendo que cualquier tipo de comunicacion basada en este tipo de algoritmos resultase insegura.Afortunadamente, otras funciones de un solo sentido funcionan bien para este tipo de aplicacion, como loscalculos sobre curvas elıpticas o el calculo de logaritmos inversos sobre un campo finito.

Poco despues del lanzamiento de Diffie, Hellman y Merkle, otro grupo de tres hombres desarrollo unaaplicacion practica de la teorıa. Su sistema para el cifrado publico se denomino RSA, por sus nombres:Ronald Rivest, Adi Shamir y Leonard Adleman. Formaron una empresa que empezo a regular su sistema.La velocidad de adopcion era lenta y su empresa estuvo a punto de quebrar, hasta que llego el momentode aprovechar el emergente campo comercial de Internet con una empresa, entonces pequena denominadaNetscape. El resto es historia y ahora RSA es el algoritmo de cifrado de clave publica mas utilizado. Diffiey Hellman finalmente lanzaron una aplicacion practica de su propiedad, pero solo util para intercambiosde clave, mientras que RSA puede realizar la autenticacion y el no reconocimiento.

Panorama actual

Hoy en dıa, el cifrado de clave publica se encuentra detras de cada servidor web que nos ofrece unacompra segura. Nuestra transaccion se cifra sin tener que dar ni obtener una clave secreta y todo seproduce en segundo plano. Como usuarios, lo unico que conocemos es ese pequeno sımbolo de candadoSSL que se muestra en nuestro explorador para sentirnos seguros. No se puede imaginar el efecto quetendrıa sobre el comercio de Internet si cada vez que desearamos comprar algo online tuviesemos quepensar en una clave secreta, cifrar el mensaje y comunicar posteriormente de alguna forma dicha clavea la otra parte. Evidentemente, el comercio electronico no existirıa tal y como existe actualmente si noexistiese la criptografıa de clave publica.

Por lo general las aplicaciones, combinan los dos tipos de criptografıa. Utilizan primeramente cripto-grafıa de clave publica para acordar una clave simetrica aleatoria. Esta clave simetrica es una clave desesion y sirve para realizar mas rapidamente el cifrado y descifrado de la informacion que se mandan, yaque tiene un coste computacional mucho mas bajo.

Existen muchos algoritmos de cifrado, protocolos y aplicaciones diferentes basadas en estos dos tiposprincipales de cifrado. Las siguientes secciones explican algunos de estos tipos.

11.2.2. Estandares generales

El estandar de cifrado de datos (DES, Data Encryption Standar) es el estandar original que el gobiernode los Estados Unidos empezo a promover para su uso gubernamental y comercial. Pensado originalmentepara se practicamente inquebrantable en los anos setenta, el aumento en potencia y el descenso en costo

1Denominacion que se le da en informatica teorica a los problemas mas dificeles de calcular, que necesitan un tiempoexponencial para su resolucion).

2Esto no es algo descabellado, hace muy pocos anos se ha conseguido desarrollar un algoritmo que resuelve el problemade si un n.o tiene factores, en tiempo de computacion polinomico.

Jose Antonio Escartın Vigo, Junio 2005.

Page 201: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 11. Comunicaciones seguras 183

de la informatica hicieron que su funcionalidad de clave de 56 bits quedase obsoleta para informacion muyconfidencial. Sin embargo, todavıa se sigue utilizando en muchos productos comerciales y se consideraaceptable para las aplicaciones de seguridad inferior. Tambien se utiliza en productos que tienen proce-sadores mas lentos, como las tarjetas inteligentes y los dispositivos que no procesan un tamano de clavemas largo.

TripleDES

Tambien llamado 3DES es la version DES mas moderna y actualizada, su nombre implica lo que hace.Ejecuta DES tres veces en los datos en tres fases: cifrado, descifrado y cifrado de nuevo. En realidad nomultiplica por tres la solidez de su codigo (la primera clave de codigo se utiliza dos veces para cifrar losresultados del proceso), pero sigue teniendo una longitud de clave efectiva de 168 bits, bastante solidezpara la mayorıa de usos.

RC4, RC5 y RC6

Este algoritmo de cifrado fue desarrollado por Ronald Rivest, uno de los desarrolladores de RSA, laprimera aplicacion grafica de criptografıa publica. Se han realizado mejoras a lo largo del tiempo parahacerla mas solida y solucionar problemas menores. La version actual, RC6, permite una clave de 2.040bits de tamano y un tamano de bloque variable de hasta 128 bits.

AES

Cuando el gobierno de los Estados Unidos se dio cuenta de que DES terminarıa llegando al final desu vida util, empezo a buscar un sustituto. Hubo muchos competidores, incluyendo RC6, Blowfish delreconocido criptografo Bruce Schneier y otros algoritmos meritorios. El concurso se resolvio a favor deAES, basado en un algoritmo denominado Rijindael disenado por dos criptografos belgas. Este hecho esimportante porque se utilizo una competicion abierta para decidir el estandar. Asimismo, al seleccionarun algoritmo de dos desarrolladores no norteamericanos sin intereses comerciales significativos ayudaba alegitimar esta seleccion por todo el mundo. AES se esta convirtiendo rapidamente en el nuevo estandar delcifrado. Ofrece una clave de hasta 256 bits, algo mas que suficiente para el futuro previsible. Normalmente,AES se implanta en modo de 128 o 192 bits.

11.2.3. Aplicaciones de la criptografıa

Hash

Los hash son funciones especiales de sentido unico que proporcionan autenticacion y verificacion uti-lizando el cifrado. Una funcion hash recoge un archivo y lo coloca en una funcion para que se produzcaun archivo de tamano, en conjunto, mucho mas pequeno. Al hacerlo, se produce una huella digital unica,lo que nos proporciona una forma segura de saber que el archivo no se ha alterado de ninguna manera.Al utilizar una funcion hash para un archivo sospechoso y comparar su huella digital con la huella digitalcorrecta, podremos saber si se ha producido algun cambio en el archivo. Es muy poco probable que unarchivo con una estructura diferente produzca una huella identica. Incluso si cambia uno de los caracteres,se cambia la huella digital significativamente. Las posibilidades de que dos archivos diferentes produzcanel mismo hash son infinitesimales.

Normalmente los hash se proporcionan en versiones descargadas de software para asegurarse de queesta obteniendo el software real, algo importante, especialmente con el software de libre distribucion que sepuede descargar desde replicas de los servidores oficiales. El sitio web oficial normalmente incluye el hashcorrecto de la ultima version. Si ambos no coinciden, sabremos que se han producido cambios, posiblementesin el permiso o el conocimiento de los desarrolladores del software. El algoritmo hash mas conocido sedenomina MD5.

Cuando se instala el sistema, se pregunta al usuario que algoritmo hash quiere usar para las contrasenas.Es muy recomendable establecer MD5 como predeterminado, ya que actualmente se le considera uno delos mejores algoritmos de hash.

Jose Antonio Escartın Vigo, Junio 2005.

Page 202: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

184 Servidor Linux para conexiones seguras de una LAN a Internet

Certificados digitales

Los certificados digitales son las “firmas” del mundo comercial en Internet. Utilizan una combinacion detipos de cifrado para proporcionar autenticacion y comprueban que quien se esta conectando es realmentequien dice ser. En resumen, un certificado es una “certificacion” expedida por una autoridad de la que nosfiemos y que permite fiarnos de la veracidad de lo que nos esta contando el titular del certificado.

Un certificado contiene la clave publica de la organizacion cifrada con la clave privada o la clavepublica de una autoridad de firmas. El uso de una autoridad de certificados o firmas se considera elmetodo mas seguro de los dos. Si podemos descifrar el certificado con su clave publica, podremos suponerrazonablemente que el sitio web pertenece a dicha organizacion.

Normalmente, los certificados se unen a un dominio determinado. Pueden ser emitidos por una entidadcentral, o creados y firmados localmente. Existen varias organizaciones de este tipo, entre ellas VeriSign,la empresa que ademas se encarga del sistema de nombres de dominio en Internet. Estas organizacioneshan sancionado a otras muchas empresas por ofrecer certificados de su parte, sin regulacion de ninguntipo. Obtener un certificado de VeriSign o de una de las empresas autorizadas es como si respondieran pornosotros. Generalmente, no emitiran un certificado hasta que verifiquen la informacion incluida en el, bienpor vıa telefonica o bien por otro medio de documentacion en papel, como un contrato corporativo en elque se pide autenticacion en persona. Cuando han “certificado” que nuestra informacion es correcta, cogenesta informacion, incluyendo los URL que vamos a utilizar para el certificado y la “firman” digitalmentecifrandola con su clave privada. Despues, un servidor Web o cualquier programa podran utilizar estecertificado.

Las entidades de certificacion descentralizan su mision en entidades de certificacion locales en las queconfian. En Cataluna esta entidad es la Agencia Catalana de certificaciones, CATCERT.

En su pagina web podemos encontrar mas informacion: http://www.catcert.net

Cuando los usuarios externos reciben datos, como una pagina web del servidor, y adjunta un certificado,pueden utilizar la criptografıa de clave publica para descifrar el certificado y verificar nuestra identidad.Se utilizan principalmente en los sitios de comercio electronico, pero tambien se utilizan en cualquier otraforma de comunicacion. Programas como SSH y Nessus pueden utilizar certificados para la autenticacion.Las VPN o las redes inalambricas tambien pueden utilizar certificados para la autenticacion en lugar decontrasenas.

11.2.4. Protocolos de cifrado

Un hecho bien conocido es que el protocolo IP tal y como se diseno originalmente no era muy seguro.La version 4 de IP (IPv4), utilizado por casi todo el mundo de la comunicacion con IP, no proporcionaningun tipo de autenticacion ni confidencialidad. Las cargas utiles del paquete se envıan al descubierto ylos encabezados del paquete se pueden modificar facilmente ya que no se verifican en el destino. Muchosataques de Internet se basan en esta inseguridad basica de la infraestructura de Internet. Para proporcionarautenticacion y confidencialidad a traves del cifrado, se ha desarrollado un nuevo estandar IP denominadoIPv6. Ademas, amplıa el espacio de direccion IP utilizando una direccion de 128 bits en lugar de 32 bitsy mejora ademas otros elementos.

La implantacion completa del estandar IPv6 requiere actualizaciones de hardware a amplia escala, porlo que el despliegue de IPv6 esta siendo bastante lento. Mientras no se acabe de implantar existen unaserie de protocolos que nos permiten tener una cierta seguridad.

IPsec

Para solventar los problemas de IPv4 se desarrollo una implantacion de seguridad para IP, denominadaIPsec, que no requerıa cambios importantes en el esquema del direccionamiento. Los suministradores dehardware se aferraron a ello, convirtiendose IPsec poco a poco en un estandar de hecho para crear VPNsen Internet.

No es un algoritmo de cifrado especıfico, sino una estructura para cifrar y verificar paquetes dentro delprotocolo IP. Puede utilizar diversos algoritmos y puede implantarse total o parcialmente. Para codificarel contenido del paquete se utiliza una combinacion de clave publica y privada y ademas los hash anaden

Jose Antonio Escartın Vigo, Junio 2005.

Page 203: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 11. Comunicaciones seguras 185

tambien autenticacion. Esta funcion se denomina encabezado de autenticacion (AH, Autentication Hea-der). Con AH, un hash se crea a partir del encabezado IP y este pasa adelante. Cuando el paquete llega asu destino, se crea un nuevo hash a partir de cada encabezado. Si no es comparable al enviado, sabra queel encabezado se ha alterado de alguna manera durante el transito, lo que nos proporciona un alto nivel degarantıa de que el paquete proviene de donde dice. Podemos elegir descifrar la carga util pero no ejecutarun AH ya que puede ralentizar el procesamiento. AH tambien puede estropearse en algunos entornos conNAT o cortafuegos.

Existen otros dos modos de operacion diferentes en los que podemos ejecutar IPsec: en modo tunel oen modo transporte.

En modo tunel, todo el paquete (encabezados incluidos) se encapsula y se cifra, se coloca en otropaquete y se remite al procesador VPN central. Los extremos finales descifran los paquetes y despues losenvıan al IP correcto. Una de las ventajas de utilizar este metodo es que los usuarios externos puedensaber incluso cual es el destino final del paquete cifrado. Otra ventaja es que VPN puede controlarse yadministrarse desde pocos puntos centrales. El inconveniente es que requiere un hardware dedicado enambos extremos para abrir el tunel.

En modo de transporte solo se cifran las cargas utiles del paquete; los encabezados se envıan intactos,lo que produce un despliegue mas facil y requiere menos infraestructura. Podemos seguir ejecutando AHcuando utilicemos el modo de transporte y verificar la direccion de origen de los paquetes.

PPTP: Protocolo de tunel punto a punto

El protocolo PPTP (Point-to-Point Tunneling Protocol) es un estandar desarrollado por Microsoft,3Com y otras grandes empresas que proporcionan cifrado. En PPTP se han descubierto algunos fallosimportantes que limitan su aceptacion. Cuando Microsoft implemento IPsec en Windows 2000, parecıauna admision tacita que IPsec habıa ganado como nuevo estandar de cifrado. Sin embargo, PPTP siguesiendo un protocolo util y economico para configurar VPN entre los PC mas antiguos de Windows.

L2TP: Protocolo de tunel de dos capas

El protocolo L2TP (Layer Two Tunneling Protocol) es otro protocolo desarrollado para la industriay firmado por Microsoft y Cisco. Aunque se utiliza frecuentemente en dispositivos de cifrado basados enhardware, su uso en software es relativamente limitado.

SSL: Capa segura de Sockets

El protocolo SSL (Secure Socket Layer) se diseno especıficamente para su uso en la Web (ApacheSSLque explico en el proyecto lo contempla), aunque puede utilizarse en cualquier tipo de comunicacion TCP.Originalmente lo diseno Netscape para que su explorador ayudase a la simulacion de comercio electronico.SSL proporciona cifrado de datos, autenticacion en ambos extremos e integridad de mensajes utilizandocertificados.

Normalmente, SSL se utiliza cuando se realiza una conexion a un servidor web para que sepa que lainformacion que enviamos se protege a lo largo del trayecto. La mayorıa de las personas ni siquiera se dancuenta de que SSL se esta ejecutando en segundo plano. Normalmente solo autentica un extremo, la partedel servidor, ya que la mayorıa de usuarios finales no tienen certificados.

11.2.5. OpenPGP: Aplicacion de cifrado

El estandar PGP (Pretty Good Privacy o privacidad bastante buena), en el que esta basado OpenPGP,se creo para proteger la informacion de los usuarios ante miradas indiscretas.

Historia del PGP

Phil Zimmerman es un programador muy implicado en los derechos humanos. Le preocupaba que el usocreciente de los ordenadores y de las redes de comunicacion facilitase a las agencias de seguridad estatalesde regımenes represivos la interceptacion y recopilacion de informacion sobre los disidentes. Phil querıaescribir algun software que ayudase a dichas personas a mantener su informacion privada y segura frente

Jose Antonio Escartın Vigo, Junio 2005.

Page 204: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

186 Servidor Linux para conexiones seguras de una LAN a Internet

a los brutales regimenes que los controlaban. Este software podıa salvar literalmente la vida de algunaspersonas. Tampoco creıa que su propio gobierno no observara sus datos personales cuando se desplazabanpor redes interconectadas. Sabıa lo facil que podıa ser para el gobierno crear sistemas para buscar cadalınea de los mensajes de correo electronico para determinadas palabras clave. Deseaba proporcionar a laspersonas una forma de proteger y garantizar su derecho constitucional a la privacidad.

Este software lo denomino Pretty Good Privacy (PGP), algo ası como una Privacidad bastante buena,ya que creıa que hacıa una buena labor a la hora de proteger los datos ante los servicios de inteligencia delos paıses mas pequenos. Sin embargo, la agencia de la informacion de los Estados Unidos, NSA, no lo veıade esa forma. Zimmerman fue investigado por infringir las leyes federales de exportacion de municion porpermitir que su software se descargase fuera del paıs. Originalmente, Phil pretendıa buscar una empresaque vendiera su innovacion. Sin embargo, cuando el gobierno inicio su persecucion, distribuyo librementeel software por Internet para que se distribuyese por todas partes. Posteriormente formo una empresa paravender las versiones comerciales del software pero existen implantaciones de libre distribucion de PGPpor todo Internet. Algunas de estas son mas populares que otras y algunas son aplicaciones que tienenfunciones especıficas como el cifrado de mensajes de correo electronico. Se pueden encontrar una lista detodas estas implementaciones de PGP en http://www.cypherspace.org/openpgp/.

GnuPG: GNU Privacy Guard

En el servidor he utilizado GnuPG, una de las implementaciones bajo licencia GPL basada en elestandar OpenPGP.

La gran ventaja de la version Gnu a la version PGP comercial es que se encuentra bajo licencia GPLy por lo tanto podemos utilizarla para cualquier aplicacion, comercial o personal, asi como ampliarla oinsertarla como queramos. El inconveniente es que se trata de una herramienta de lınea de comandos,por lo que no tiene los bonitos complementos que ofrece la version comercial de PGP. No obstante hayque tener cuidado, GnuPG probablemente no sea la mejor opcion para usuarios no tecnicos, a no ser queanadamos su propia interfaz (Gnome dispone de una).

Para comprobar la version:$gpg --version

Si no lo tenemos instalado, hay que ejecutar algunas sentencias apt:#apt-get instal gnupg, . . . Programa GnuPG#apt-get instal gpgp, . . . interfaz Gnome para GnuPG

Crear pares de claves

Si ya las tiene creadas y quiere importarlas, #gpg --import path/filename. Si tiene separadas laclave publica y privada, el formato de archivo suele ser pubring.pkr y secring.skr

Si se han de crear:

1. Escribimos: #gpg --gen-key y seguimos las instrucciones de pantalla

2. GnuPG pide el tamano de bits de sus claves. El predeterminado es 1.024, que generalmente seconsidera suficiente para una criptografıa solida de clave publica. Podemos aumentar el tamanohasta 2.048 para una seguridad mucho mas fuerte.

3. Generalmente no se desea que las claves expiren, pero si tiene un caso especial en el que soloutilizara esta clave durante un tiempo limitado, se puede establecer una fecha de finalizacion.

4. Por ultimo se pide que se introduzca una contrasena que sirva de frase de paso.

Atencion: Es muy importante conservar copias de seguridad del par de claves en un lugarseguro, en caso de perderlas, los datos cifrados se no se podrıan recuperar.

Jose Antonio Escartın Vigo, Junio 2005.

Page 205: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 11. Comunicaciones seguras 187

$gpg --list-keys, . . . nos dara la lista de claves instaladas en el sistema.

En el home del usuario se crea un directorio oculto .gnupg donde se almacenaran los archivos.

Crear un certificado de revocacion:

Una vez creadas las claves, tambien podemos crear un certificado de revocacion que se utiliza si perdemosnuestras claves o si alguien obtiene acceso a nuestra clave privada. Despues podemos utilizar este certifi-cado para revocar nuestra clave de los servidores publicos. Podemos seguir descifrando mensajes recibidosutilizando la clave publica antigua (suponiendo que no la hayamos perdido) pero nadie podra descifrarningun mensaje con las claves publicas incorrectas. Para crear un certificado:

$gpg --output revoke.asc --gen-revoke user

Donde se debe reemplazar user con la frase secreta de dicho usuario, asignada cuando generamos elpar de claves. Este certificado hay que eliminarlo del disco y guardarlo en lugar seguro, ya que si alguiense hace con el, tambien podrıa hacerse con el certificado de revocacion.

Publicar la clave publica

Se puede colocar la clave publica en un servidor de claves para que cualquiera pueda encontrarla facil-mente y enviar mensajes. Para ello es necesario ejecutar el siguiente comando:

$gpg --keyserver server --send-keys user

Donde se debe reemplazar server con el nombre de un servidor de claves publicas y user con la direccionde correo electronico de la clave que desea publicar. Puede utilizar cualquier servidor de claves publicasPGP ya que todos se sincronizan con frecuencia. Existen muchos servidores de claves publicas, como porejemplo: pgp.mit.edu, certserver.pgp.com y usa.keyserver.net.

Jose Antonio Escartın Vigo, Junio 2005.

Page 206: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

188 Servidor Linux para conexiones seguras de una LAN a Internet

Cifrar archivos con GnuPG

Para cifrar un archivo se utiliza el comando:$gpg --output file.gpg --encrypt --recipient [email protected] file.doc

Reemplanzando file.gpg con el nombre de archivo resultante deseado, [email protected] con la di-reccion de correo electronico del usuario al que esta realizando el envıo y file.doc por el arcivo que se deseacifrar. Tenga en cuenta que tiene que tener la clave publica del destinatario en su repositorio para poderhacerlo.

Tambien se puede utilizar GnuPG para cifrar archivos con una criptografıa simetrica, que puede utilizarpara sus archivos locales que desea proteger o para alguien del que no tiene su clave publica. Para ello,utilice el comando:

$gpg --output file.gpg --symmetric file.doc

Reemplazado file.gpg con el archivo de salida deseado y file.doc con el nombre del archivo que deseacifrar.

Descifrar archivos

Para utilizar GnuPG para descifrar archivos recibidos, utilizamos el siguiente comando:$gpg --output file.doc --decrypt file.gpg

Reemplazando file.doc con el nombre del archivo resultante deseado y siendo file.gpg el archivo cifrado.Tenemos que tener la clave publica del usuario para el que se ha realizado el cifrado en nuestro repositorio.Un mensaje solicitara la frase de contrasena y, una vez introducida correctamente, GnuPG producira elarchivo descifrado.

Firmar archivos

Tal y como he mencionado anteriormente, otro uso de GnuPG y PGP es firmar documentos paraverificar su integridad, algo que podemos hacer con el siguiente comando:

$gpg --output signed.doc --sign unsigned.doc

Siendo signed.doc el nombre de archivo de salida resultante deseado y unsigned.doc el archivo a firmar.Este comando firma y cifra el documento y despues procesa el archivo de salida signed.doc. Cuando sedescifra, GnuPG tambien verificara el documento.

Para verificar el archivo se utiliza el comando:$gpg --verify signed.doc

Siendo signed.doc el archivo cifrado que desea verificar. Tambien podemos crear firmas separadasdel archivo para poder acceder a usuarios sin GnuPG e incluir la firma. Estos son los comandos paraconseguirlo:

$gpg --clearsign file.doc

Crea un apendice de texto al archivo con la firma. Si no desea alterar el archivo, puede crear un archivode firma separado, para dejar almacenada la firma o mandarla por separado, con el comando:

$gpg --output sig.doc --detached-sig file.doc

Jose Antonio Escartın Vigo, Junio 2005.

Page 207: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 11. Comunicaciones seguras 189

Web de modelo de confianza de PGP/GnuPG

Tal y como hemos mencionado anteriormente, en lugar de utilizar un sistema de confianza jerarqui-co como los certificados digitales y su autoridad de certificados central, PGP y GnuPG utilizan una webde modelo de confianza. Al firmar las claves de las personas que conoce, puede verificar que sus clavesson de confianza. Y si firman las claves de otras personas que no conoce directamente, se crea una cadenade confianza. El modelo se basa en la idea de que “cualquier amigo suyo es un amigo mıo”. En realidadeste modelo no funciona perfectamente; en algun lugar en la parte inferior de la cadena podrıa haber unamanzana podrida, pero la idea que se esconde detras del sistema es que se propaga organicamente y norequiere ninguna estructura. Debido a ello puede desmantelarse o formarse facilmente a gran escala. Laforma de establecer esta web de confianza es firmar las claves de las personas y dejar que ellos firmen lasuya propia.

Firmar claves y administrar claves de confianza

En GnuPG, firmamos y administramos claves de confianza entrando en el modo de edicion de la clavecon el siguiente comando:

gpg --edit-key [email protected]

Donde [email protected] coincide con la direccion de correo electronico de la clave que desea fir-mar o administrar, tiene que ser una de la claves que tenemos en el repositorio. Este comando imprimeinformacion basica sobre la clave. Dentro de este modo escriba fpr para imprimir la huella dactilar dela clave. Igual que las personas, la huella dactilar de la clave es un identificador especıfico para dichaclave. Asegurese de que se trata de la clave de la persona en concreto comparandola con dicha personapor telefono o por cualquier otro medio de comunicacion. Tambien puede comprobar si alguien mas hafirmado esta clave escribiendo check. Este comando imprime una lista de otros firmantes de esta clave ypuede ayudarla a decidir la validez de la misma.

Cuando se quiere asegurar de que se trata de la clave de una persona en concreto, escriba sign. Estecomando firma la clave de dicha persona para que cualquiera que la este buscando sepa que confıa en ella.En este modo tambien puede editar los niveles de las diferentes claves en su repositorio. Se introduce estemodo dentro del modo de edicion de la clave escribiendo trust.

Ası se muestra el siguiente menu:

1=Don’t know (No la conozco).2=I do NOT trust (No confio en ella).3=I trust marginally (Confio en ella un poco).4=I trust fully (confio en ella plenamente).d=Please show me more information (Mostrar mas detalles).m=Back to the main menu (Volver al menu principal).

Al escoger uno de los elementos, dicha clave se marcara como realizada por nosotros. Esta es otraforma de poderse comunicar con otros a cerca de los usuarios que tienen su nivel mas alto de confianza ycuales son usuarios en los que confıa poco.

PGP y GnuPG son extraordinarios para cifrar archivos. Sin embargo, ¿y si desea cifrar todas las co-municaciones entre dos puntos? PGP no es en realidad viable para esta funcion, esto es realizado por elSSH, explicado en la seccion anterior.

Existen muchısimas mas opciones que se pueden consultar con: $man gpg

Jose Antonio Escartın Vigo, Junio 2005.

Page 208: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)
Page 209: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 12

Herramientas de seguridad

12.1. Herramientas basicas

Existen varios comandos de sistema operativo que utilizaremos con frecuencia en nuestra labor deasegurar la seguridad. No son programas de seguridad completamente independientes, sino utilidades delsistema operativo que se pueden utilizar para generar informacion de seguridad.

12.1.1. Ping

Ping (Packet Internet Groper, que se pude traducir como buscador de paquetes en Internet) es unaherramienta de diagnostico TCP/IP. Muchos creen que el ping es como un radar submarino: un ping sale,rebota en un destino y vuelve. Aunque se trate de una buena analogıa general, no describe exactamentelo que sucede cuando incluimos un ping en una maquina. Los ping utilizan un protocolo de red denomi-nado ICMP (Internet Control Message Protocol, o Protocolo de mensajes de control de Internet). Estosmensajes se utilizan para enviar informacion sobre redes. Ping utiliza los tipos de mensaje ICMP 8 y 0,conocidos tambien como Solicitud de eco y Contestacion de eco respectivamente. Cuando utilizamos el co-mando ping, la maquina envıa una solicitud de eco a otra maquina. Si se puede acceder a la maquina que seencuentra en el otro extremo y se ejecuta una pila TCP conforme, respondera con una contestacion de eco.

Basicamente, las comunicaciones en un ping tienen la siguiente apariencia:

El sistema A envıa un ping al sistema B: solicitud de eco, “¿Estas ahı?”

El sistema B recibe la solicitud de eco y envıa una contestacion de eco: “Si, estoy aquı”

En una sesion ping tıpica, este proceso se repite varias veces para comprobar si la maquina de destinoo la red estan bajando paquetes. Tambieen se puede utilizar para determinar la latencia, el tiempo quetardan los paquetes entre dos puntos.

Tambien podemos obtener estos otros tipos de mensajes ICMP cuando mandamos un ping. Cada unotiene us propio significado.

Red inalcanzable

Anfitrion inalcanzable

Con un ping podemos saber algo mas sobre un anfitrion que si simplemente esta activo o no. La forma enque una maquina responde a un ping, normalmente, identifica el sistema operativo que esta ejecutando.Tambien podemos utilizar ping para generar una solicitud de busqueda DNS, que nos proporciona elnombre del anfitrion de destino (si lo tiene), que a veces puede decirnos si esta maquina es un servidor,un enrutador o quiza una conexion telefonica o conexion de ancho de banda. Podemos mandar un ping auna direccion IP o a un nombre de dominio.

Page 210: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

192 Servidor Linux para conexiones seguras de una LAN a Internet

Cuadro 12.1: Opciones del comando pingOpcion Descripcion-c count Establece un numero de pings deteminado, por defecto es infinito-f Flujo de los ping. Envıa tantos paquetes como puede, tan rapido como puede. Util para

comprobar si un anfitrion esta bajando paquetes porque mostrara graficamente a cuantosping responde. Hay que tener cuidado con esta opcion porque puede producir la caidade la red por DoS (denegacion de servicio)

-n No ejecuta DNS en la direccion IP. Puede aumentar la velocidad de una respuesta ycancelar los problemas de DNS cuando existen problemas de diagnostico de la red

-s size Envıa paquetes de longitud size. Util para probar como manipula los paquetes grandesuna maquina o un enrutador. Irregularmente, los paquetes grandes se utilizan en ataquesde denegacion de servicios para hacer caer una maquina o desbordarla

-p pattern Envıa un patron especıfico en el paquete ICMP de carga util. Tambien es util para probarcomo responde una maquina a un estımulo ICMP inusual

La tabla 12.1 incluye los modificadores y las opciones adicionales para el comando ping, que puedenresultar utiles.

Un ejemplo de este comando podrıa ser el siguiente:

# ping www.fib.upc.esPING www.fib.upc.es (147.83.41.7): 56 data bytes64 bytes from 147.83.41.7: icmp_seq=0 ttl=241 time=66.3 ms64 bytes from 147.83.41.7: icmp_seq=1 ttl=241 time=130.4 ms64 bytes from 147.83.41.7: icmp_seq=2 ttl=241 time=103.8 ms64 bytes from 147.83.41.7: icmp_seq=3 ttl=241 time=62.0 ms64 bytes from 147.83.41.7: icmp_seq=4 ttl=241 time=76.8 ms64 bytes from 147.83.41.7: icmp_seq=5 ttl=241 time=61.5 ms

--- www.fib.upc.es ping statistics ---6 packets transmitted, 6 packets received, 0% packet lossround-trip min/avg/max = 61.5/83.4/130.4 ms

12.1.2. Traceroute

Si no lo tenemos instalado basta con hacer:#apt-get install traceroute

Este comando es similar a ping pero proporciona mas informacion sobre el anfitrion remoto. Basi-camente, los pings que rastrean rutas (tracerotue) son anfitriones, pero cuando envıan fuera el primerpaquete, establecen la configuracion TTL (tiempo de vida) del paquete en uno. Esta configuracion con-trola la cantidad de puntos de conexion en el ordenador de la red que obtendra antes de morir por lo queel primer paquete solo ira al primer enrutador o maquina mas alla de la nuestra en Internet y despuesdevolvera un mensaje indicando que el paquete ha “expirado”. A continuacion el siguiente paquete seestablece con un TTL de 2, y ası sucesivamente hasta llegar a nuestro objetivo, mostrandonos el trazadovirtual (la ruta) que siguen los paquetes. Se resuelve el nombre de cada anfitrion encontrado a lo largodel camino para que podamos ver como cruza Internet el trafico. Puede ser muy interesante comprobarcomo un paquete pasa por diferentes paises antes de llegar a su destino una fraccion de segundo despuesy a veces, por caminos impensables y lejanos.

Esta herramienta es muy practica cuando estamos intentando localizar el origen o la ubicacion de unintruso que hemos encontrado en nuestro logs o alertas. Podemos rastrear la ruta de la direccion IP ysaber varias cosas sobre dicha direccion. La salida puede indicarnos si se trata de un usuario domestico

Jose Antonio Escartın Vigo, Junio 2005.

Page 211: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 12. Herramientas de seguridad 193

o de un usuario que se encuentra dentro de una empresa, cual es su ISP (para poder enviarle una quejasobre el abuso), que tipo de servicio tiene y lo rapido que es y donde se encuentra geograficamente (a vecesdepende de la capacidad de descripcion de los puntos intermedios).

Para ver como funciona podemos ejecutar el siguiente ejemplo:

# traceroute www.fib.upc.estraceroute to www.fib.upc.es (147.83.41.7), 30 hops max, 38 byte packets1 (192.168.0.1) 0.480 ms 0.459 ms 0.408 ms2 213.0.184.252 (213.0.184.252) 46.732 ms 47.016 ms 116.462 ms3 213.0.190.22 (213.0.190.22) 48.833 ms 51.344 ms 47.850 ms4 tbvia1-tbest1-1.nuria.telefonica-data.net (213.0.248.146) 47.108 ms 45.986 ms5 213.0.254.242 (213.0.254.242) 47.335 ms 52.532 ms 51.392 ms6 montseny-catnix.catnix.net (193.242.98.2) 61.530 ms 66.452 ms 61.101 ms7 upc-anella.cesca.es (84.88.18.18) 63.990 ms 129.435 ms 64.099 ms8 * * *

Como se puede observar, la lectura de traceroute es mas un arte que una ciencia, pero con el tiempose aprende a reconocer mejor el significado de las abreviaturas.

Traceroute nos ofrece mucha informacion para el seguimiento de una IP, si es el origen de una intrusion oun ataque. Si identificamos el ISP, con el sitio web de la empresa podemos encontrar un numero de telefonoo una direccion de correo y quejarnos. Los ISPs habitualmente finalizan su contrato de suministro conel cliente malintencionado. Tambien podemos utilizar el comando whois, para buscar contactos tecnicosespecıficos para la empresa y organizacion.

12.1.3. Whois

El comando whois es util para intentar localizar el contacto de alguien que esta causando problemasen nuestra red. Este comando consulta los servidores de nombre de dominio principales y devuelve todala informacion que tiene el registrador de nombres que le corresponda. Con esto podemos averiguar quienes el propietario de un dominio.

Este comando es util para ataques que provienen tanto de dentro de las redes de empresas como de losISP. De cualquier modo, podemos averiguar quien es la persona responsable de dicha red y comunicarlenuestro problema. Esta solucion no siempre es muy practica, pero por lo menos podemos probar.

Su sintaxis es:$whois domain-name.com, . . . donde domain-name.com es el nombre del dominio sobre el que estamos

buscando informacion.

Podemos observar esto en el siguiente ejemplo:$whois www.google.com

Whois Server version 1.3

Domain names in the .com and .net domains can now be registered

with many different competing registrars. Go to http://www.internic.net

for detailed information.

Server Name: WWW.GOOGLE.COM.TR

Registrar: TUCOWS INC.

Whois Server: whois.opensrs.net

Referral URL: http://domainhelp.tucows.com

Server Name: WWW.GOOGLE.COM.MX

Registrar: ENOM, INC.

Whois Server: whois.enom.com

Referral URL: http://www.enom.com

Server Name: WWW.GOOGLE.COM.BR

Registrar: ENOM, INC.

Whois Server: whois.enom.com

Referral URL: http://www.enom.com

Server Name: WWW.GOOGLE.COM.AU

Registrar: MELBOURNE IT, LTD. D/B/A INTERNET NAMES WORLDWIDE

Whois Server: whois.melbourneit.com

Referral URL: http://www.melbourneit.com

>>> Last update of whois database: Wed, 25 May 2005 08:39:49 EDT <<<

Jose Antonio Escartın Vigo, Junio 2005.

Page 212: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

194 Servidor Linux para conexiones seguras de una LAN a Internet

Tambien nos puede pasar lo siguiente:

$whois www.fib.upc.esEste TLD no dispone de servidor whois, pero puede acceder a la informacion de whois enhttps://www.nic.es/ingles/

Con lo que, la unica solucion es buscar a mano en esa direccion. Solamente los dominios .com, .net y.edu se encuentran incluidos en whois.

El comando whois normalmente muestra una lista de direcciones de correo electronico, direcciones decorreo postal y, a veces, numeros telefonicos. Nos dice cuando se creo el dominio y si se han hecho cambiosrecientes en sus listados whois. Tambien muestra a los servidores de nombre de dominio responsables deese nombre de dominio. Se puede ampliar mas esta informacion con el siguiente comando: dig.

Si administra dominios propios, debe asegurarse de que su listado whois esta actualizado y es tangenerico como pueda serlo. Al colocar direcciones de correo electronico y nombre reales en los campos deinformacion, estamos proporcionando informacion que alguien del exterior puede aprovechar, ya sea parauna labor social como para atacar nuestros sistemas. Es mejor utilizar direcciones de correo electronicogenericas, dejando que los responsables reciban los mensajes enviados a esas direcciones de correo electroni-co y evitar proporcionar una informacion valiosa sobre la estructura de nuestra organizacion tecnica.

12.1.4. Dig

El comando dig consulta en el servidor de nombres determinada informacion sobre un dominio. Diges una version actualizada del comando nslookup, que ha quedado desfasado. Podemos utilizarlo paradeterminar los nombre de maquinas utilizados en una red, que direcciones IP se unen a dichas maquinas,cual es su servidor de correo y otro tipo de informacion util.

La sintaxis general es:$dig @ server domain type

Donde server es el servidor DNS al que deseamos consultar, domain es el dominio sobre el que estamospreguntando y type es el tipo de informacion deseada.

Como ejemplo podemos poner una direccion que viene en el manual:$dig www.isc.org

; <<>> DiG 9.2.4 <<>> www.isc.org

;; global options: printcmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25173

;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 3

;; QUESTION SECTION:

;www.isc.org. IN A

;; ANSWER SECTION:

www.isc.org. 600 IN A 204.152.184.88

;; AUTHORITY SECTION:

isc.org. 3599 IN NS ns-ext.isc.org.

isc.org. 3599 IN NS ns-ext.lga1.isc.org.

isc.org. 3599 IN NS ns-ext.nrt1.isc.org.

isc.org. 3599 IN NS ns-ext.sth1.isc.org.

;; ADDITIONAL SECTION:

ns-ext.lga1.isc.org. 3599 IN A 192.228.91.19

ns-ext.nrt1.isc.org. 3599 IN A 192.228.90.19

ns-ext.sth1.isc.org. 3599 IN A 192.228.89.19

;; Query time: 696 msec

;; SERVER: 192.168.0.1#53(192.168.0.1)

;; WHEN: Wed May 25 21:30:18 2005

;; MSG SIZE rcvd: 192

En la tabla 12.2 podemos encontrar las opciones mas usuales del comando dig.

Jose Antonio Escartın Vigo, Junio 2005.

Page 213: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 12. Herramientas de seguridad 195

Cuadro 12.2: Opciones del comando digOpcion DescripcionAXFR Intenta obtener todo el archivo del archivo del dominio o de la “zona”. Actualmente algunos

servidores se han configurado para no admitir transferencias de archivos de zona, por lo quepuede que tengamos que preguntar por registros especıficos.

A Devuelve cualquier registro “A”. Los registros “A” son nombres de anfitrion individualessobre la red

MX Devuelve el nombre del anfitrion de correo registrado para dicho dominio. Es util paracontactar con un administrador

CNAME Devuelve cualquier anfitrion CNAMED, conocidos como aliasANY Devuelve cualquier informacion que puede generarse en el dominio. Algunas veces funciona

cuando falla AXFR

12.1.5. Finger

Finger es un antiguo comando Unix que ya no se utiliza pero que se sigue ejecutando en muchasmaquinas como servicio heredado. Originalmente se diseno cuando Internet era un lugar comodo y losusuarios permitıan que otras personas al otro lado del mundo conociesen sus datos.

La mayorıa de los administradores lo eliminan de sus sistemas porque es una fuente de brechas deseguridad, pero todavıa existen muchos enrutadores que lo incluyen y algunos Unix lo mantienen por de-fecto. Ademas a esto se une que muchos administradores se les olvida desinstalarlo o no saben como hacerlo.

El comando finger permite consultar, al sistema remoto, acerca de informacion de sus usuarios. Lasintaxis serıa la siguiente:

$finger [email protected]

Tambien podemos especificar una direccion IP como dominio. El resultado del finger, podrıa ser usadapor una persona malintencionada para conseguir informacion mas relevante mediante ingenierıa social.

Otro uso de finger es enviar el comando sin un nombre de usuario. Ası se genera una lista de todoslos usuarios conectados actualmente. Con esto podemos saber quien esta conectado y sus nombres realese incluso podemos saber si estan inactivos y durante cuanto tiempo. Por ultimo presenta una lista de lasestaciones y de donde provienen (si son locales o remotas), un usuario malicioso puede intentar secuestraruna de esas sesiones inactivas. Los resultados del comando los podemos ver en el siguiente ejemplo:

$fingerLogin Name Tty Idle Login Time Office Office Phonejosan Jose Antonio Escartin *:0 May 26 12:18josan Jose Antonio Escartin pts/1 May 26 12:34 (:0.0)

Y despues se puede utilizar para para averiguar mas sobre un usuario:

$finger josanLogin: josan Name: Jose Antonio Escartin VigoDirectory: /home/josan Shell: /bin/bashOn since Thu May 26 12:18 (CEST) on :0 (messages off)On since Thu May 26 12:34 (CEST) on pts/1 from :0.0No mail.No Plan.

En este caso no hay demasiada informacion, pero otras veces podemos encontrar su correo electronico,su plan de trabajo e incluso proyectos en los que este trabajando actualmente.

Tambien podemos hacer consultas sobre todos los que esten conectados con la siguiente opcion:$finger -l

Jose Antonio Escartın Vigo, Junio 2005.

Page 214: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

196 Servidor Linux para conexiones seguras de una LAN a Internet

12.2. Firewall o cortafuegos

Forman la primera lınea de defensa frente a los intrusos que quieren entrar en nuestra red corporativa.Sin embargo, debido a la complejidad creciente y a la sofisticacion de los atacantes, pueden ser unos meca-nismos de defensa insuficientes si no se han configurado correctamente. Una lınea de configuracion erroneapuede negar la proteccion que ofrece un cortafuegos. Un administrador muy ocupado que este intentandoestablecer el acceso para los empleados errara normalmente mas en la parte de acceso en lugar de realizarahı un mejor esfuerzo para configurar la seguridad. Se necesita mucha revision y paciencia a la hora deestablecer las reglas.

Los cortafuegos, se situan en la parte en la parte superior del sistema operativo y por lo tanto, puedenser vulnerables a todos los ataques normales a nivel de sistema operativo. Muchos cortafuegos utilizan unservidor web como interfaz con otros usuarios y ası pueden aprovecharse tambien de las brechas en lasinterfaces web. Asegurar estas defensas de primera lınea es crıtico y debe ser una de nuestras primerasprioridades.

Por otra parte un cortafuegos solo nos protege de los ataques exteriores, contra ataques interiores notiene nada que hacer. Debemos de asegurarnos de que nuestros sistemas estan vigilados y no depender delcortafuegos para toda la seguridad de nuestra red.

12.2.1. Polıticas de seguridad

En algun momento, preferiblemente antes de instalar el cortafuegos, debemos comentar por escritosu proceso de actuacion. Esto nos sera muy util para planificar la instalacion y configuracion. Este plandocumenta los procesos y procedimientos subyacentes para asegurarnos de que obtenemos un beneficio.La instalacion de un cortafuegos esta muy bien, pero sin instalar los procesos apropiados, puede que noeste ofreciendo a la organizacion la seguridad prometida.

Los siguientes pasos perfilan un proceso para la implantacion y funcionamiento de un cortafuegos.

Desarrollar una polıtica sobre el uso de la red

Trazar un mapa de los servicios internos y externos necesarios

Convertir la polıtica sobre uso de la red y los servicios necesarios en reglas para el cortafuegos

Implantar y probar la funcionalidad y la seguridad. Despues de esto podemos activar el cortafuegosy sentarnos a esperar las quejas.

Revisar y probar las reglas del cortafuegos periodicamente.

Disenar y utilizar un proceso como este nos ayudara a garantizar que obtenemos mucho mas de laimplantacion de nuestro cortafuegos.

12.2.2. Modos de configuracion

Existen dos formas de configurar un cortafuegos:

Permitir todo y bloquear lo que no deseemos

Denegar todo y anadir lo permitido

El metodo habitual, usado por la gran mayorıa de administradores es empezar con “denegar todo” ydespues anadir lo que deseamos permitir a los usuarios. Automaticamente bloqueamos todo el trafico, ano ser que se admita en la configuracion especıficamente.

Para la mayorıa de los sitios, la solucion “denegar todo” es mucho mas seguro. Sin embargo, soloporque optemos por esta solucion no significa que nuestra red sea totalmente segura. Los ataques puedenprovenir a traves de cualquier brecha que hayamos creado, como la web y el correo electronico.

Jose Antonio Escartın Vigo, Junio 2005.

Page 215: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 12. Herramientas de seguridad 197

12.2.3. IPTables

Esta seccion describe como se configura un cortafuegos con IPTables, que es la utilidad integrada en lamayorıa de los sistema Linux 2.4 y posteriores. Esta utilidad nos permite crear un cortafuegos empleandocomandos de nuestro sistema operativo.

Es una herramienta muy eficaz, pero compleja, y normalmente se recomienda para usuarios que estenfamiliarizados con los cortafuegos y con el arte de configurarlos. Si es nuestro primer cortafuegos, es mejorutilizar una de las herramientas de configuracion automatica disponibles para crear la configuracion, almenos al principio. Estas herramientas utilizan IPTables para crear un cortafuegos utilizando nuestrasentradas. Sin embargo, es recomendable tener un conocimiento basico de lo que esta sucediendo “bajocubierta” con IPTables antes de empezar a configurar con una de las herramientas graficas.

Instalar IPTables

La mayorıa de los sistemas Linux con kernel 2.4 o superior tendran integrado IPTables, por lo que noes necesario instalar ningun programa adicional, el servicio lo proporciona el propio kernel.

Para comprobar si lo tenemos instalado hay que ejecutar:$iptables -L, . . . deberıa mostrar una lista con el conjunto actual de reglas.

Si tenemos problemas lo mas probable es que no tengamos habilitado IPTables en el kernel, tenemosque recompilar el kernel.

Modulos del kernel para IPTables

Para poder usar IPTables es necesario tener instalado en el kernel el netfilter y cargados una serie demodulos, depende para que usemos IPTables necesitaremos mas o menos.

Las opciones de IPTables se encuentran en: Networking-suport -> Networking-options -> Network-packet-filtering.

1. Modulos basicos

CONFIG NETFILTER

CONFIG PACKET

CONFIG IP NF CONNTRACK

CONFIG IP NF FTP

2. Tabla filter (actua como filtro)

CONFIG IP NF IPTABLES

CONFIG IP NF FILTER

CONFIG IP NF MATCH LIMIT

CONFIG IP NF MATCH MAC

CONFIG IP NF MATCH MARK

CONFIG IP NF MATCH MULTIPORT

CONFIG IP NF MATCH TOS

CONFIG IP NF MATCH TCTPMSS

CONFIG IP NF MATCH STATE

CONFIG IP NF TARGET REJECT

Jose Antonio Escartın Vigo, Junio 2005.

Page 216: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

198 Servidor Linux para conexiones seguras de una LAN a Internet

3. Tabla Nat (actua como router)

CONFIG IP NF NAT

CONFIG IP NF NAT NEEDED

CONFIG IP NF NAT FTP

CONFIG IP NF TARGET MASQUERADE

CONFIG IP NF TARGET REDIRECT

4. Tabla mangle (altera paquetes especiales)

CONFIG IP NF MANGLE

CONFIG IP NF TARGET TOS

CONFIG IP NF TARGET MARK

CONFIG IP NF TARGET LOG

CONFIG IP NF TARGET TCPMSS

5. Compatibilidad con versiones anteriores

CONFIG IP COMPAT IPCHAINS

CONFIG IP COMPAT IPFWADM

Utilizar IPTables

La idea que se esconde detras de IPTables es crear canales de entradas y procesarlas de acuerdo conun conjunto de reglas (la configuracion del cortafuegos) y enviarlas a continuacion a canales de salida. EnIPTables, estos canales se denominan tablas.

Las tablas basicas empleadas en IPTables son:

Input: Trafico que entra en la maquina

Forward: Trafico que pasa por la maquina

Prerouting: Enrutamiento previo

Postrouting: Enrutamiento posterior

Output: Trafico que sale de la maquina

El formato que genera una declaracion IPTables es:#iptables command rule-specification extensions

Donde command, rule-specification y extensions son una o mas opciones validas. La tabla 12.3 incluyeun resumen de las especificaciones de reglas y la tabla 12.4 de los comandos IPTables.

Existen otros comandos y opciones pero estos son los mas comunes. Para obtener una lista completade listados, consulte el manual de IPTables escribiendo:

$man iptables

Jose Antonio Escartın Vigo, Junio 2005.

Page 217: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 12. Herramientas de seguridad 199

Cuadro 12.3: Especificaciones de reglas de IPTablesRegla Descripcion-s address/mask!port Especifica una determindada direccion de red origen a comparar. Para desig-

nar un rago de direcciones IP se usa la notacion estandar de barra oblicua.Tambien se pude especificar un numero de puerto o un rango de numerosde puerto colocandolos despues de un signo de exclamacion de apertura

-d address/mask!port Especifica una determindada direccion de red destino a comparar. Paradesignar un rago de direcciones IP se usa la notacion estandar de barraoblicua. Tambien se pude especificar un numero de puerto o un rango denumeros de puerto colocandolos despues de un signo de exclamacion deapertura

--sport Puerto de origen--dport Puerto de destino--tcp-flags Flags permitidos y flags activos. Los flags son:SYN ACK FIN RST URG

PSH ALL NONE (hay que especificarlos separados por comas)-f Especifica paquetes fragmentados-m <modulo> Especifica un modulo de opciones especiales-m multiport Especifica que se usara el modulo de multipuertos-p protocol Especifica un determinado protocolo con el que se compara la regla. Los

tipos de protocolo validos son icmp, tcp, udp o todos (all)-i interface Especifica una interfaz de entrada-o interface Especifica una interfaz de salida-j target Indica lo que se tiene que hacer con el paqute si coincide

con las especificaciones. Las opciones validas para target son:DROP Coloca el paquete sin ninguna accion posteriorREJECT Coloca el paquete y devuelve un paquete de errorLOG Registra el paquete en un de errorMARK Marca el paquete para una accion posteriorTOS Cambia el bit TOS (Tipo de servicio)MIRROR Invierte las direcciones de origen y de destino y las envıa

de nuevo, basicamente “rebotandolas” de nuevo al origenSNAT NAT estatica. Esta opcion se utiliza cuando se esta reali-

zando una Traduccion de direccion de red (NAT, NetworkAddress Translation). Convierte la direccion de origen enotro valor estatico

DNAT NAT dinamica. Similar a la anterior pero usando un rangodinamico de direcciones IP

MASQ Enmascara la IP usando una IP publicaREDIRECT Redirecciona el paquete

Crear un cortafuegos IPTables

La mejor forma de ver como funciona es mediante un ejemplo, que situaremos dentro de un scriptejecutable.

Se toman las siguientes premisas: Se supone que la LAN local es 192.168.0.1 - 192.168.0.254, que lainterfaz eth1 es la conexion LAN local y que la interfaz eth0 es la conexion WAN o Internet.

1. Empieza eliminando cualquier regla existente con el comando Flush:

iptables -F FORWARD

Ası eliminamos cualquier regla para la cadena FORWARD, que es el “conducto” principal paracualquier paquete que desea pasar por el cortafuegos.

Jose Antonio Escartın Vigo, Junio 2005.

Page 218: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

200 Servidor Linux para conexiones seguras de una LAN a Internet

Cuadro 12.4: Comandos IPTablesComando Descripcion-A chain Anade una o mas reglas al final de la declaracion-I chain rulenum Inserta una cadena en la ubicacion rulenum. Es util cuando deseamos que una

regla reemplace a las anteriores-D chain Elimina la cadena indicada-R chain rulenum Reemplaza la regla en la ubicacion rulenum con la chain proporcionada-L Lista todas las reglas en la cadena actual-F Purga todas las reglas en la cadena actual, eliminando basicamente la configu-

racion de nuestro cortafuegos. Es recomendable su uso cuando iniciamos unaconfiguracion para asegurarnos de que ninguna regla existente entrara en con-flicto con una regla nueva

-Z chain Pone a cero todas las cuentas de paquetes y bytes en la cadena denominada-N chain Crea una nueva cadena con el nombre de chain-X chain Elimina la cadena especificada. Si no se especifica ninguna cadena, se eliminan

todas las cadenas-P chain policy Establece la polıtica para la cadena especificada en policy

2. Eliminamos las otras cadenas:

iptables -F INPUT

iptables -F OUTPUT

Ası eliminamos cualquier regla en su maquina local y en su cadena de salida, tambien podiamoshaber usado: iptables -F, afectando a todas las cadenas a la vez.

3. Inserta la declaracion “denegar todo” estandar justo al principio:

iptables -P FORWARD DROP

iptables -A INPUT -i eth0 -j DROP

4. Para aceptar paquetes fragmentados en IPTables, es necesario que se escriba lo siguiente explıcita-mente:

iptables -A FORWARD -f -j ACCEPT

5. Existen dos tipos de ataques comunes que debemos bloquear en seguida. Uno es el conocido comospooofing, que se produce cuando alguien falsifica los encabezados de los paquetes IP para queparezcan paquetes externos que tienen direcciones internas. Ası, alguien puede enrutar hacia nuestraLAN incluso aunque tengamos idrecciones IP privadas. El otro tipo de ataque se lleva a cabo enviandouna gran cantidad de paquetes a las direcciones LAN para sobrecargar la red. Este tipo de ataquese denomina ataque smurf, ataca sobre el protocolo de transmision de archivos. Podemos bloqueareste tipo de ataques con dos sencillas declaraciones.

iptables -A FORWARD -s 192.168.0.0/24 -i eth0 -j DROP

iptables -A FORWARD -p icmp -i eth0 -d 192.168.0.0/24 -j DROP

La primera declaracion rechaza cualquier paquete que provenga de la interfaz eth0 de Internet con ladireccion interna 192.168.0.0/24. Por definicion, ningun paquete deberıa provenir de una interfaz deno confianza con una direccion de fuente privada e interna. La segunda declaracion retira cualquierpaquete del protocolo ICMP que provenga de la direccion exterior a la interior.

Tambien se podrıan evitar las respuestas a pings externos mediante:

iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

Jose Antonio Escartın Vigo, Junio 2005.

Page 219: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 12. Herramientas de seguridad 201

6. Generalmente aceptaremos el trafico entrante basado en conexiones iniciadas desde el interior, porejemplo, alguien que explora una pagina Web. Siempre que la conexion este en curso y se hayainiciado internamente, probablemente sea correcta. Sin embargo, podemos limitar el tipo de traficopermitido. Supongamos que solo deseamos permitir a los empleados el acceso a la Web y al correoelectronico. Podemos especificar los tipos de trafico para permitir solo el que este en una conexion yainiciada. Podemos saber si es una conexion existente comprobando si se ha establecido la parte ACK,es decir, si se ha producido la conexion TCP de tres vıas. Las siguientes declaraciones permiten eltrafico web basado en este criterio.

iptables -A FORWARD -m multiport -p tcp -i eth0 -d 192.168.0.0/24 --dports www,smtp

--tcp-flags SYN,ACK ACK -j ACCEPT

iptables -A FORWARD -m multiport -p tcp -i eth0 -d 192.168.0.0/24 --sports www,smtp

--tcp-flags SYN,ACK ACK -j ACCEPT

La declaracion --dports indica que solo se permite el correo electronico y la Web y la declaracionde indicadores –tcp indica que solo deseamos paquetes con el campo ACK establecido

7. Para poder aceptar conexiones de entrada desde el exterior solo en determinados puertos, como unmensaje correo electronico entrante en nuestro servidor de correo, usamos este tipo de declaracion:

iptables -A FORWARD -m multiport -p tcp -i eth0 -d 192.168.0.0/24 --dports smtp

--syn -j ACCEPT

El indicador de multiples puertos -m indica a IPTables que vamos a emitir una declaracion decoincidencia para los puertos. La declaracion -syn le indica que se permiten los paquetes SYN, loque significa que se deben iniciar las conexiones TCP. Y el indicador --dports permite solo el traficode correo SMTP.

8. Podemos permitir que los usuarios inicien conexiones de salida pero solo en los protocolos quedeseamos que usen. Aquı podemos evitar que los usuarios usen FTP y otros programas no esenciales.Las direcciones que contienen todo ceros son una abreviatura de “cualquier direccion”.

iptables -A FORWARD -m multiport -p tcp -i eth0 -d 0.0.0.0 --dports www,smtp

--syn -j ACCEPT

9. Necesitaremos permitir determinados paquetes UDP entrantes. UDP se usa para DNS y si lo blo-queamos, los usuarios no podran resolver direcciones. Como no disponen de un estado como lospaquetes TCP, no podemos fiarnos de la revision de los indicadores SYN o ACK. Deseamos admitirUDP solo en el puerto 53, por lo que especificaremos: domain (una variable integrada para el puerto53), como unico puerto admisible. Las declaraciones que debemos usar son:

iptables -A FORWARD -m multiport -p udp -i eth0 -d 192.168.0.0/24 --dports

domain -j ACCEPT

iptables -A FORWARD -m multiport -p udp -i eth0 -s 192.168.0.0/24 --sports

domain -j ACCEPT

iptables -A FORWARD -m multiport -p udp -i eth1 -d 0.0.0.0 --dports

domain -j ACCEPT

iptables -A FORWARD -m multiport -p udp -i eth1 -s 0.0.0.0 --sports

domain -j ACCEPT

Las dos primeras declaraciones permiten los datagramas UDP entrantes y las otras dos declaracionespermiten las conexiones salientes.

Jose Antonio Escartın Vigo, Junio 2005.

Page 220: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

202 Servidor Linux para conexiones seguras de una LAN a Internet

10. Tambien podemos especificarlos para los paquetes ICMP. Lo que pretendemos es permitir todo tipode ICMP interno hacia el exterior, pero solo determinados tipos como la contestacion de eco haciael interior, algo que podemos conseguir con las siguientes instrucciones:

iptables -A FORWARD -m multiport -p icmp -i eth0 -d 192.168.0.0/24

--dports 0,3,11 -j ACCEPT

iptables -A FORWARD -m multiport -p icmp -i eth1 -d 0.0.0.0

--dports 8,3,11 -j ACCEPT

Es mas simple si lo controlamos a la entrada, haciendo un DROP de los ’echos de icmp’, ası estasdos instrucciones no son necesarias.

11. Por ultimo, vamos a establecer el inicio de sesion para poder ver en los registros lo que se harechazado. Es mejor revisar estos registros de vez en cuando, incluso aunque no exista ningunproblema, para tener una idea de los tipos de trafico que se han rechazado. Si observa paquetesrechazados repetidamente de la misma red o direccion, puede que este siendo atacado. Existe unadeclaracion para registrar cada tipo de trafico:

iptables -A FORWARD -m tcp -p tcp -j LOG

iptables -A FORWARD -m udp -p udp -j LOG

iptables -A FORWARD -m icmp -p icmp -j LOG

Con esto conseguirıamos una proteccion a nivel de cortafuegos ante los ataques mas comunes deinternet. El siguiente codigo es el ejemplo en un script.

Cuadro 12.5: Ejemplo de IPTables

#! /bin/bash

# Punto 1

iptables -F FORWARD

# Punto 2

iptables -F INPUT

iptables -F OUTPUT

# Punto 3

iptables -P FORWARD DROP

iptables -A INPUT -i eth0 -j DROP

# Punto 4

iptables -A FORWARD -f -j ACCEPT

# Punto 5

iptables -A FORWARD -s 192.168.0.0/24 -i eth0 -j DROP

#iptables -A INPUT -p icmp --icmp-type echo-request -j DROP - OMITIDO , para evitar el punto 10

iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

# Punto 6

iptables -A FORWARD -m multiport -p tcp -i eth0 -d 192.168.0.0/24 --dports www,smtp --tcp-flags SYN,ACK ACK -j ACCEPT

iptables -A FORWARD -m multiport -p tcp -i eth0 -d 192.168.0.0/24 --sports www,smtp --tcp-flags SYN,ACK ACK -j ACCEPT

# Punto 7

iptables -A FORWARD -m multiport -p tcp -i eth0 -d 192.168.0.0/24 --dports smtp --syn -j ACCEPT

# Punto 8

iptables -A FORWARD -m multiport -p tcp -i eth0 -d 0.0.0.0 --dports www,smtp --syn -j ACCEPT

# Punto 9

iptables -A FORWARD -m multiport -p udp -i eth0 -d 192.168.0.0/24 --dports domain -j ACCEPT

iptables -A FORWARD -m multiport -p udp -i eth0 -s 192.168.0.0/24 --sports domain -j ACCEPT

iptables -A FORWARD -m multiport -p udp -i eth1 -d 0.0.0.0 --dports domain -j ACCEPT

iptables -A FORWARD -m multiport -p udp -i eth1 -s 0.0.0.0 --sports domain -j ACCEPT

# Punto 10 - OMITIDO

#iptables -A FORWARD -m multiport -p icmp -i eth0 -d 192.168.0.0/24 --dports 0,3,11 -j ACCEPT

#iptables -A FORWARD -m multiport -p icmp -i eth1 -d 0.0.0.0 --dports 8,3,11 -j ACCEPT

# Punto 11

iptables -A FORWARD -m tcp -p tcp -j LOG

iptables -A FORWARD -m udp -p udp -j LOG

iptables -A FORWARD -m icmp -p icmp -j LOG

Es necesario darle permisos de ejecucion: #chmod 700 nombre_script

Jose Antonio Escartın Vigo, Junio 2005.

Page 221: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 12. Herramientas de seguridad 203

El resultado de nuestro cortafuegos despues de ejecutar el script serıa el siguiente:# iptables -L

Chain INPUT (policy ACCEPT)

target prot opt source destination

DROP all -- anywhere anywhere

DROP icmp -- anywhere anywhere icmp echo-request

Chain FORWARD (policy DROP)

target prot opt source destination

ACCEPT all -f anywhere anywhere

DROP all -- 192.168.0.0/24 anywhere

ACCEPT tcp -- anywhere 192.168.0.0/24 multiport dports www,smtp tcp flags:SYN,ACK/ACK

ACCEPT tcp -- anywhere 192.168.0.0/24 multiport sports www,smtp tcp flags:SYN,ACK/ACK

ACCEPT tcp -- anywhere 192.168.0.0/24 multiport dports smtp tcp flags:SYN,RST,ACK/SYN

ACCEPT tcp -- anywhere 0.0.0.0 multiport dports www,smtp tcp flags:SYN,RST,ACK/SYN

ACCEPT udp -- anywhere 192.168.0.0/24 multiport dports domain

ACCEPT udp -- 192.168.0.0/24 anywhere multiport sports domain

ACCEPT udp -- anywhere 0.0.0.0 multiport dports domain

ACCEPT udp -- 0.0.0.0 anywhere multiport sports domain

LOG tcp -- anywhere anywhere tcp LOG level warning

LOG udp -- anywhere anywhere udp LOG level warning

LOG icmp -- anywhere anywhere icmp any LOG level warning

Chain OUTPUT (policy ACCEPT)

target prot opt source destination

Enmascarar IP con IPTables

Cuando se diseno Internet originalmente, se reservaron varios bloques de direcciones para su usoen redes privadas. Estas direcciones nos se van a enrutar a traves de Internet y se pueden utilizar sinpreocuparse de que vayan a tener conflictos con otras redes. Los rangos de direcciones privadas son:

10.0.0.0 - 10.255.255.255192.168.0.0 - 192.68.255.255172.16.0.0 - 172.31.255.255

Al utilizar estas direcciones en nuestra LAN interna y tener una IP externa enrutable en nuestro cor-tafuegos, estamos protegiendo con efectividad nuestras maquinas internas ante el acceso desde el exterior.Podemos proporcionar esta capa adicional de proteccion facilmente con IPTables utilizando el enmasca-rado IP. El encabezado IP interno se desprende en el cortafuegos y se reemplaza con un encabezado quemuestra el cortafuegos como el IP de origen. A continuacion se envıa el paquete de datos a su destino conuna direccion IP de origen de la interfaz publica del cortafuegos.

Cuando vuelve de nuevo, el cortafuegos recuerda el IP interno al que se dirige y vuelve a dirigirlo parauna entrega interna. Este proceso tambien se conoce como Traduccion de direccion de red (NAT, NetworkAddress Translation). Con las siguientes declaraciones podemos hacerlo en IPTables:

iptables -t nat -P POSTROUTING DROPiptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

El indicador MASQUERADE se puede abreviar como MASQ.

Conclusiones

Bueno, ahora ya sabemos como crear un cortafuegos basico. Se trata de una configuracion bastantesencilla y las posibles variaciones son infinitas. Podemos enviar determinados puertos a servidores inter-nos para que no tengan una direccion IP publica. Podemos colocar otra tarjeta de red en el servidor yconvertirla en una interfaz DMZ para servidores con direccion publica. Existen libros completos sobre laconfiguracion avanzada de cortafuegos y muchas listas de correo.

Existen otros metodos mas simples y rapidos de crear un cortafuegos, sin introducir comandos ytener que recordar la sintaxis. Muchas herramientas crean las declaraciones del cortafuegos utilizando unainterfaz grafica, es decir, de forma automatica.

Para simplificar el metodo utilizare el modulo Firewall para Webmin, basado en IPTables.

Jose Antonio Escartın Vigo, Junio 2005.

Page 222: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

204 Servidor Linux para conexiones seguras de una LAN a Internet

12.3. Squid: Proxy transparente

Lo primero es tener el IPTables y el squid funcionando. Con las opciones NAT de netfilter en el kernel.Veamos el proceso:

Activamos el reenvio de paquetes:

echo 1 > /proc/sys/net/ipv4/ip_forward

Hacemos que el NAT coja todas las peticiones que vayan a un puerto (por ejemplo el 80) y lasredirija al puerto del proxy (por ejemplo 3128):

iptables -t nat -A PREROUTING -s $NUESTRA_RED -p tcp --dport 80 -j REDIRECT

--to-port 3128

Instalacion del proxy squid:

#apt-get install squid webmin-squid

El fichero de configuracion del squid es: /etc/squid/squid.conf. Lo configuramos para permitir elacceso del proxy a nuestra red interna:

• En #ACCESS CONTROLS :acl redInterna src 192.168.1.0/255.255.255.0

• En #Only allow cachemgr access from localhost, hay que poner antes de las denegaciones:http_access allow redInterna

• Y en #HTTPD-ACCELERATOR OPTIONS :httpd_accel_host virtual

httpd_accel_uses_host_header on

httpd_accel_with_proxy on

Tambien podemos configurar el proxy en modo grafico mediante la herramienta de administracionWebmin. Para cargar el modulo realizaremos un apt: #apt-get install webmin-squid

Ahora veamos un ejemplo del archivo /etc/squid/squid.conf donde se limita el ancho de banda, parala conexion:

Cuadro 12.6: Ejemplo del archivo /etc/squid/squid.conf

#Sacado de http://debaser.ath.cx/deal/manuales/Limitar-ancho-de-banda-COMO/html/install.html

#Todas las opciones de este archivo se encuentran muy bien documentadas en el

#propio squid.conf asi

#como en http://www.visolve.com/squidman/Configuration%20Guide.html

#Los puertos por los que escuchara nuestro Squid.

http_port 8080

icp_port 3130

#los cgi-bin no se cachearan.

acl QUERY urlpath_regex cgi-bin \?

no_cache deny QUERY

#La memoria que usara Squid. Bueno, Squid usara mucha mas que esa.

cache_mem 16 MB

#250 significa que Squid usara 250 megabytes de espacio en disco.

cache_dir ufs /cache 250 16 256

#Lugares en los que iran los archivos de bitacora de Squid.

cache_log /var/log/squid/cache.log

cache_access_log /var/log/squid/access.log

cache_store_log /var/log/squid/store.log

cache_swap_log /var/log/squid/swap.log

#Cuantas veces rotar los archivos de bitacora antes de borrarlos.

#Acuda a la FAQ para m\’as informaci\’on.

logfile_rotate 10

redirect_rewrites_host_header off

cache_replacement_policy GDSF

acl localnet src 192.168.1.0/255.255.255.0

acl localhost src 127.0.0.1/255.255.255.255

acl Safe_ports port 80 443 210 119 70 20 21 1025-65535

acl CONNECT method CONNECT

acl all src 0.0.0.0/0.0.0.0

Jose Antonio Escartın Vigo, Junio 2005.

Page 223: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 12. Herramientas de seguridad 205

http_access allow localnet

http_access allow localhost

http_access deny !Safe_ports

http_access deny CONNECT

http_access deny all

maximum_object_size 3000 KB

store_avg_object_size 50 KB

#Configure esto si quiere que su proxy funcione de manera transparente.

#Eso significa que por lo general no tendra que configurar todos los

#navegadores de sus clientes, aunque tiene algunos inconvenientes.

#Si deja esto sin comentar no pasara nada peligroso.

httpd_accel_host virtual

httpd_accel_port 80

httpd_accel_with_proxy on

httpd_accel_uses_host_header on

#Todos los usuarios de nuestra LAN seran vistos por los servidores web

#externos como si usasen Mozilla en Linux.

anonymize_headers deny User-Agent

fake_user_agent Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.6+) Gecko/20011122

#Para acelerar aun mas nuestra conexion ponemos dos lineas similares a las

#de mas abajo. Apuntaran a un servidor proxy [parent] que usara nuestro propio

#Squid. No olvide cambiar el servidor por uno mas rapido para usted.

#Puede utilizar ping, traceroute y demas herramientas para comprobar la

#velocidad. Asegurese de que los puerto http e icp son los correctos.

#Descomente las lineas que comienzan por "cache_peer" de ser necesario.

#Este es el proxy que va a usar para todas las conexiones...

#cache_peer w3cache.icm.edu.pl parent 8080 3130 no-digest default

#...excepto para las direcciones e IPs que comiencen por "!".

#No es buena idea usar un mayor

#cache_peer_domain w3cache.icm.edu.pl !.pl !7thguard.net !192.168.1.1

#Esto resulta util cuando queremos usar el Cache Manager.

#Copie cachemgr.cgi al cgi-bin de su servidor web.

#Podra acceder a el una vez lo haya hecho introduciendo en un navegador

#la direccion http://su-servidor-web/cgi-bin/cachemgr.cgi

cache_mgr your@email

cachemgr_passwd secret_password all

#Este es el nombre de usuario con el que trabajara nuestro Squid.

cache_effective_user squid

cache_effective_group squid

log_icp_queries off

buffered_logs on

#####DELAY POOLS

#Esta es la parte mas importante para configurar el trafico entrante con

#Squid. Para una descripcion detallada acuda al archivo squid.conf o a la

#documentacion de http://www.squid-cache.org

#No queremos limitar las descargas en nuestra red local.

acl magic_words1 url_regex -i 192.168

#Queremos limitar la descarga de este tipo de archivos

#Ponga todo esto en una unica linea

acl magic_words2 url_regex -i ftp .exe .mp3 .vqf .tar.gz .gz .rpm .zip .rar .avi .mpeg .mpe .mpg .qt

.ram .rm .iso .raw .wav .mov

#No bloqueamos .html, .gif, .jpg y archivos similares porque por lo general

#no consumen demasiado ancho de banda.

#Queremos limitar el ancho de banda durante el dia permitiendo

#el ancho de banda completo durante la noche.

#Cuidado! con el acl de abajo sus descargas se interrumpiran

#a las 23:59. Lea la FAQ si quiere envitarlo.

acl day time 09:00-23:59

#Tenemos dos delay_pools diferentes

#Acuda a la documentaci\’on de Squid para familiarizarse

#con delay_pools y delay_class.

delay_pools 2

#Primer delay pool

#No queremos retrasar nuestro trafico local

#Hay tres cases de pools; aqui solo hablaremos de la segunda.

#Primera clase de retraso (1) de segundo tipo (2).

delay_class 1 2

#-1/-1 significa que no hay limites.

delay_parameters 1 -1/-1 -1/-1

#magic_words1: 192.168 que ya hemos puesto antes

delay_access 1 allow magic_words1

#Segundo delay pool.

#Queremos retrasar la descarga de los archivos mencionados en magic_words2.

#Segunda clase de retraso (2) de segundo tipo (2).

delay_class 2 2

#Los numeros siguientes son valores en bytes;

#Debemos recordar que Squid no tiene en cuenta los bits de inicio/parada

#5000/150000 son valores para la red al completo

#5000/120000 son valores para la IP independiente

#una vez los archivos descargados exceden los 150000 bytes,

#(o el doble o el triple)

#las descargas proseguiran a 5000 bytes/s

delay_parameters 2 5000/150000 5000/120000

#Ya hemos configurado antes el dia de 09:00 a 23:59.

delay_access 2 allow day

delay_access 2 deny !day

delay_access 2 allow magic_words2

#EOF

Jose Antonio Escartın Vigo, Junio 2005.

Page 224: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

206 Servidor Linux para conexiones seguras de una LAN a Internet

12.4. Bastille Linux: Herramienta de seguridad

Una vez instalado nuestro sistema operativo, necesitamos fortalecerlo para utilizarlo como sistemade seguridad. Este proceso implica cerrar los servicios innecesarios, restringir los permisos y, en general,minimizar las partes de la maquina que estan expuestas. Los detalles de este proceso seran diferentesdependiendo del uso pretendido de la maquina.

Antes el fortalecimiento solıa ser un proceso manual intensivo a medida que se probaban y testeabanlas posibles modificaciones. Sin embargo, en Linux, existen herramientas que realizaran automaticamenteun fortalecimiento del sistema. Ası se puede ahorrar tiempo sin olvidarnos de nada.

En este caso utilizare la herramienta Bastille Linux, disponible en la distribucion Debian. A pesar de loque pueda parecer, no se trata de un sistema operativo independiente, sino de un conjunto de secuencias decomandos que llevan a cabo determinadas configuraciones del sistema basandose en nuestras indicaciones.Simplifica extraordinariamente el proceso de fortalecimiento y lo reduce a responder a algunas preguntas.

Si necesitamos mas informacion la podemos obtener en la pagina web oficial: www.bastille-linux.org.

12.4.1. Ejecucion

Es muy recomendable instalar esta herramienta, primeramente, en un entorno de pruebas. Este tipode programas pueden desconectar los servicios necesarios para el funcionamiento de algun servidores,produciendo cortes de servicio o detencion del mismo. Cuando haya probado su efecto y verificado suestabilidad, podremos ejecutar la herramienta en nuestro entorno de trabajo.

Para instalar hay que ejecutar:#apt-get install bastille

Para poder usar la aplicacion deben de estar instalados los siguientes paquetes:

Perl 5.5 003 o superior

Perl TK Module 8.00.23 o superior

Perl Curses Module 1.06 o superior

Para ejecutar Bastille linux:#/usr/sbin/bastille, . . . para el modo grafico.#/usr/sbin/bastille -c, . . . para el modo texto (curses).

Tambien podemos ejecutar Bastille en lo que se denomina modo no interactivo. Este modo ejecuta Bas-tille automaticamente, sin hacer preguntas, desde un archivo de configuracion preasignado. cada vez queejecutamos Bastille, se crea un archivo de configuracion. A continuacion podemos utilizarlo para ejecutarBastille en otras maquinas en modo no interactivo. Esta tecnica es util para cerrar rapidamente multiplesmaquinas. Cuando disponga del archivo de configuracion con los elementos deseados, simplemente cargueBastille en las maquinas adicionales y copie el archivo de configuracion en dichas maquinas (o deje queaccedan al archivo por la red).

Para ejecutarlo escribimos:#bastille non-interactive config-file

Donde config-file es el nombre y la ubicacion del archivo de configuracion que deseamos utilizar.

Jose Antonio Escartın Vigo, Junio 2005.

Page 225: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 12. Herramientas de seguridad 207

12.4.2. Modos de funcionamiento

Normalmente ejecutaremos Bastille en modo interactivo. En este modo responderemos a una serie depreguntas sobre como vamos a utilizar la maquina. Basandose en las respuestas, Bastille desconecta losservicios innecesarios o restringe los privilegios de los usuarios y servicios.

Nos pregunta cosas como “¿Desea utilizar esta maquina como acceso a maquinas Windows?”. Si res-pondemos negativamente, desconecta el servidor Samba, que permite a nuestra maquina interactuar conlas maquinas Windows. Samba podrıa introducir algunas brechas de seguridad potenciales en nuestrosistema, por lo que es recomendable desconectarlo si no lo necesitamos.

Si tenemos que ejecutar algunos servidores (por ejemplo, SSH), intentara establecerlos con privilegioslimitados o utilizando un chrooted jail, es decir, si un servidor tiene que ejecutarse con acceso a la raız delsistema, tiene una capacidad limitada de afectar a otras partes del sistema, lo que suaviza los efectos decualquier ataque con exito sobre dicho servicio.

A cada pregunta le acompana una pequena explicacion de porque esa configuracion es importante,ası podemos decidir si es apropiada para nuestra instalacion. Tambien existe un boton de detalle coninformacion adicional.

Bastille adopta la solucion de intentar educar al administrador mientras esta cerrando el sistema.Cuanta mas informacion tenga, mejor armado estara para los deberes de seguridad de su red. Si noesta seguro, puede saltarse una pregunta y volver a ella mas adelante. No hay que preocuparse, se ofrece unaoportunidad final para terminar todas las configuraciones. Tambien puede ejecutar Bastille posteriormentedespues de investigar sobre la respuesta y cambiar la configuracion. Otra ventaja es que Bastille nos ofreceuna lista de “cosas para hacer” al final de la sesion de fortalecimiento para cualquier elemento del queBastille no se haya ocupado.

12.5. Copias de seguridad

Para realizar las copias de seguridad necesarias en nuestro servidor y dependiendo de las necesitades denuestra empresa, necesitamos disponer de una medio seguro donde poder almacenarlas. Para ello, podemosaplicar una las siguientes soluciones:

Almacenar las copias en el propio disco fısico del servidor (no se recomienda).

Utilizar cintas de backup.

Utilizar DVDs de backups.

Si realizamos las copias en el propio disco o en cintas de backup, el proceso puede ser automatizadomediante el cron del sistema.

12.5.1. Dispositivos de cinta

Las unidades de cinta SCSI, usan el siguiente esquema de nombres:

/dev/stX : Dispositivo de cinta SCSI de rebobinado automatico; x es el numero de la unidad decinta. Las unidades de cinta se numeran por su orden en la controladora SCSI.

/dev/nstX : Dispositivo de cinta SCSI sin rebobinado automatico; x es el numero de la unidad decinta. Las unidades de cinta se numeran por su orden en la controladora SCSI.

Probablemente tendremos en nuestro sistema un dispositivo de enlace simbolico a la cinta: /dev/tape.

Jose Antonio Escartın Vigo, Junio 2005.

Page 226: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

208 Servidor Linux para conexiones seguras de una LAN a Internet

12.5.2. Mt

El programa mt proporciona controles simples para la unidad de cinta, como el rebobinado, expulsiono la busqueda de un archivo. En el contexto de las copias de seguridad, mt es muy util como mecanismode rebobinado y busqueda.

Todas las acciones de mt se especifican en la lınea de comandos. El cuadro 12.7 muestra los parametrosdel comando.

Cuadro 12.7: Opciones del comando mt, para manipular cintas de backupParametros Descripcion-f <dispositivo> Especifica el dispositivo de cinta.fsf <cuenta> Avanza un numero (cuenta) de archivos. La cinta se coloca en el primer bloque

del archivo siguiente; por ejemplo, fsf 1 deberıa dejar la cabeza preparada paraleer el segundo archivo de la cinta.

asf <cuenta> Posiciona la cinta al comienzo del archivo indicado por cuenta. El posicionamientose hace primero con un rebobinado de la cinta y despues se avanza cuenta archivos.

rewind Rebobina la cinta.erase Borra la cinta.status Da el estado de la cinta.offline Deja la cinta inactiva y, si es aplicable, la descarga.load Carga la cinta (aplicable a cambiadores de cinta).lock Bloquea la puerta de la unidad (solo aplicable a ciertas unidades de cinta).unlock Desbloquea la puerta de la unidad (solo aplicable a ciertas unidades de cinta).

Podemos ver los siguientes ejemplos:#mt -f /ver/nst0 rewind,. . . Para rebobinar la cinta en /dev/nst0.#mt -f /dev/nst0 asf 2,. . . Mueve la cabeza lectora, para leer el tercer archivo de la cinta.

12.5.3. Dump y Restore

Las herramientas que utilizaremos seran dos:

dump

restore

Para instalarlas ejecutaremos un apt:#apt-get install dump

La herramienta dump trabaja haciendo una copia de un sistema de archivos entero. La herramientarestore puede tomar esa copia y restaurarla.

Para soportar backups incrementales, dump usa el concepto de niveles de dump. Un nivel de dumpde 0 significa una copia de seguridad completa. Cualquier nivel de dump superior a 0 es un incrementorelativo a la ultima vez que se realizo un dump con un nivel de dump menor. Por poner un ejemplo, siconsideramos que tenemos tres dump: el primero de nivel 0, el segundo de nivel 1 y el tercero tambiende nivel 1. El primer dump es una copia completa. El segundo dump contiene todos los cambios hechosdesde el primer dump. El tercer dump tiene todos los cambios desde el primer dump.

La utilidad dump almacena toda la informacion sobre sus operaciones en el archivo /etc/dumpdates.Este archivo lista cada copia de seguridad de un sistema de archivos, cuando se hizo y de que nivel. Dadaesta informacion, podemos determinar que copia debemos restaurar.

Jose Antonio Escartın Vigo, Junio 2005.

Page 227: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 12. Herramientas de seguridad 209

En el cuadro 12.8 se muestran los parametros mas usuales del comando dump:

Cuadro 12.8: Parametros del comando dumpParametro Descripcion-n El nivel de dump, donde n es un numero entre 0 y 9.-b <tam_bloque> Configura el tamano del bloque de dump a tam bloque, el cual se mide en kilobytes.

Si hacemos copias de archivos muy grandes, al usar un tamano de bloque mayoraumentara el rendimiento.

-B <cuenta> Especifica el numero (cuenta) de registros por cinta. Si hay mas datos sobre los quehacer dump, que espacio de cinta, dump muestra un sımbolo del sistema pidiendoque se inserte una cinta nueva.

-f <archivo> Especifica una localizacion (archivo) para el archivo dump resultado. Podemoshacer el archivo dump como un archivo normal que reside en otro sistema dearchivos, o podemos escribirlo en un dispositivo de cinta.

-u Actualiza el archivo /etc/dumpdates despues de un dump con exito.-d <densidad> La densidad de una cinta en bits por pulgada.-s <tam> El tamano (tam) de la cinta en pies.

Para colocar el backup sobre una cinta, comprimiendolo, podemos hacer lo siguiente:#dump -O -f - /dev/hda1 | gzip --fast -c > /dev/st0

Hay que tener cuidado con dump, se considera peligroso hacer dump de sistema de archivos que estenen uso. Para asegurarse de que no estan en uso, hay que desmontar el sistema de archivos primero. Desa-fortunadamente, muy poca gente se puede permitir el lujo de desmontar un sistema el tiempo necesariopara hacer una copia de seguridad. Lo mejor es realizar la poca atractiva tarea de verificar las copias deseguridad sobre una base normal. La verificacion se hace comprobando que el programa restore puede leercompletamente la copia y extraer los archivos de ella. Es tedioso y nada divertido, pero muchos adminis-tradores de sistemas perdieron su trabajo despues de copias de seguridad erroneas (y no queremos ser unode ellos).

Durante mis estudios en la FIB (Facultad de Informatica de Barcelona) coincidı con varios profesoresque eran, al mismo tiempo, muy buenos administradores de sistemas. Y uno de ellos, Alex Ramirez, nosdijo la siguiente frase, “La primera tarea de un administrador de sistemas es hacer copias de seguridad,nadie quiere hacerlas y por eso nos pagan a nosotros para que las hagamos. Las copias de seguridad, solose hechan de menos cuando nadie las ha hecho”.

Uso de dump para hacer backup de un sistema entero

La utilidad dump trabaja haciendo un archivo de un sistema de archivos. Si el sistema entero contienevarios sistemas de archivos, necesitaremos ejecutar dump por cada sistema de archivos. Puesto que dumpcrea su salida como un gran archivo independiente, podemos almacenar varios dumps en una sola cintamediante el uso de un dispositivo de cinta sin rebobinado automatico, otra solucion factible es el uso deDVDs grabables. Primero tenemos que decidir sobre que sistemas de archivos vamos a hacer la copia,esta informacion esta en el archivo /etc/fstab.

Si por ejemplo queremos hacer un backup de: /dev/hda1, /dev/hda3, /dev/hda5 y /dev/hda6. Ygrabarlo en /dev/nst0, comprimiendo los archivos dump, debemos ejecutar los siguientes comandos:

#mt -f /dev/nst0 rewind#dump -Ouf - /dev/hda1 | gzip --fast -c > /dev/st0#dump -Ouf - /dev/hda3 | gzip --fast -c > /dev/st0#dump -Ouf - /dev/hda5 | gzip --fast -c > /dev/st0#dump -Ouf - /dev/hda6 | gzip --fast -c > /dev/st0#mt -f /dev/nst0 rewind#mt -f /dev/nst0 eject

Jose Antonio Escartın Vigo, Junio 2005.

Page 228: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

210 Servidor Linux para conexiones seguras de una LAN a Internet

Uso de restore

El programa restore lee los archivos dump y extrae archivos y directorios individuales de ellos. Aunquerestore es una herramienta de lınea de comandos, ofrece un modo interactivo muy intuitivo que le muevea traves de la estructura de directorios de la cinta.

El cuadro 12.9 muestra las opciones de lınea de comandos de la utilidad restore.

Cuadro 12.9: Opciones del comando RESTOREOpcion Descripcion-i Activa el modo interactivo de restore. La utilidad leera el contenido del directorio

de la cinta y nos dara una interfaz parecida a la shell en la cual nos podemos moverentre los directorios y senalar los archivos que queramos, restore ira al dump y losrestaurara. Este modo es util para recuperar archivos individuales, especialmentesi no estamos seguro en que directorio estan.

-r Reconstruye un sistema de archivos. en el caso de que pierda todo un sistema dearchivos (por ejemplo, por un fallo de disco), puede recrear un sistema de archivosvacıo y restaurar todos los archivos y directorios del archivo dump.

-b tam_bloque Configura el tamano del bloque de dump a tam bloque kilobytes. Si no proporcionaesta informacion, restore se la pedira.

-f nom_archivo Lee un dump del archivo nom archivo.-T directorio Especifica el espacio de trabajo temporal (directorio) para el restore. Por defecto

es /tmp.-v La opcion verbal; muestra cada paso del restore.-y En el caso de un error, reintenta automaticamente en lugar de preguntar al usuario

si quiere probar de nuevo.

Un restore tıpico podrıa ser el siguiente:#restore -ivf /dev/st0

Donde tenemos el archivo dump en /dev/st0, visualizaremos cada paso que tome restore y entraremosen una sesion interactiva donde decidiremos que archivos se restauran.

Y para un restore completo desde la cinta /dev/st0, si perdemos el sistema de la unidad SCSI /dev/sda1que contiene /home, sustituimos la unidad y lo recrear ayudandonos con mke2fs.

#mke2fs /dev/sda1#mount /dev/sda1 /home#cd /home#restore -rf /dev/st0

12.5.4. Configuracion grafica de backups, interfaz Webmin

Para realizar de una forma mucho mas simple las copias de seguridad, podemos utilizar la herramientade configuracion por web: Webmin.

Para instalar el modulo de copias de seguridad ejecutaremos un apt:#apt-get install webmin-fsdump

Este modulo permite hacer backups de:

Sistemas EXT2

Sistemas EXT3

Archivos TAR

Jose Antonio Escartın Vigo, Junio 2005.

Page 229: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 12. Herramientas de seguridad 211

Figura 12.1: Modulo Webmin para realizar Backups del sistema

12.5.5. K3B: Grabacion de CDs y DVDs

Si queremos guardar las copias en CDs o DVDs, nos resultara muy util una interfaz grafica simple eintuitiva, como la que nos ofrece el programa K3B basado en el entorno KDE.

Lo podemos instalar con un apt: #apt-get install k3bY para ejecutarlo introduciremos el comando: #k3b

Figura 12.2: Programa K3B para grabar CDs y DVDs

Jose Antonio Escartın Vigo, Junio 2005.

Page 230: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)
Page 231: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 13

Sistemas de deteccion de intrusiones

Los Sistemas de deteccion de intrusiones (IDS, Intrusion Detection System) son basicamente sniffersmodificados que pueden ver todo el trafico de la red e intentan detectar un trafico potencialmente danino,alertandonos de ello cuando aparezca.

La forma principal de conseguirlo es examinando el trafico de entrada e intentandolo comparar conuna base de datos de actividades daninas conocidas denominadas firmas. Esta utilizacion de las firmas esmuy similar a la forma en que funcionan los programas antivirus.

La mayorıa de los tipos de ataques tienen una apariencia muy distintiva a nivel TCP/IP. Un IDS puededefinir ataques basandose en las direcciones IP, los numeros de puertos, el contenido y cualquier numerode criterios.

Existe otra forma de realizar una deteccion de intrusion en el nivel del sistema comprobando la inte-gridad de los archivos clave y asegurandose de que no se ha realizado ningun cambio en dichos archivos.

Tambien existen otras tecnologıas emergentes que combinan el concepto de deteccion de intrusion ycortafuegos o realizan una accion posterior mas alla de la pura deteccion.

Esta seccion esta basada en el libro [How05].

13.1. Tipos de IDS

Existen tres tipos diferenciados de IDS:

NIDS: IDS de red, basado en firmas

IDS basado en actividad anomala

IPS: IDS que responde a las alertas con acciones automaticas

En las siguientes secciones se explican en detalle.

13.1.1. NIDS (Network Intrusion Detection System)

Un sistema deteccion de intrusion de red (NIDS, Network Intrusion Detection System) puede proteger-nos contra los ataques que entran a traves del cortafuegos hasta la LAN Interna. Los cortafuegos puedenestar mal configurados, permitiendo la introduccion de trafico no deseado en nuestra red. Incluso cuandofuncionan correctamente, los cortafuegos normalmente dejan pasar algun trafico de aplicacion que puedeser peligroso. Lo que llega a los puertos del cortafuegos, y esta permitido por las reglas, se envıa a losservidores internos provocando un trafico potencialmente danino. Un NIDS puede comprobar dicho traficoy marcar los paquetes sospechosos. Configurado correctamente puede hacer una doble comprobacion de lasreglas de nuestro cortafuegos y proporcionarnos una proteccion adicional para los servidores de aplicacion.

Aunque es util para protegernos contra ataques externos, una de las ventajas principales de un NIDSes cazar los ataques y la actividad sospechosa de orıgenes internos. El cortafuegos nos protegera de muchosataques externos, sin embargo, cuando el atacante se encuentra en la red local puede hacer muy poco.

Page 232: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

214 Servidor Linux para conexiones seguras de una LAN a Internet

Solo puede ver el trafico que lo atraviesa desde el exterior y son ciegos respecto a la actividad de la LAN.Podemos pensar en los NIDS y en los cortafuegos como dispositivos de seguridad complementarios, elcerrojo de la puerta principal y el sistema de seguridad de nuestra red. Uno protege nuestro perımetro yel otro nuestro interior.

Hay una buena razon para vigilar nuestro trafico interno de red. Las estadısticas demuestran que unsetenta por ciento de los incidentes en crımenes informaticos provienen de un origen interno. Por muchoque nos guste pensar que nuestros companeros no van a hacer nada para danarnos, a veces no es el caso,los intrusos internos no siempre son piratas informaticos que trabajan por la noche. Pueden ser desdeun administrador de sistemas contrariado, un empleado descuidado o hasta la senora de la limpieza. Elsimple hecho de descargar un archivo o de abrir un archivo adjunto de un mensaje de correo electronicopuede cargar un troyano que creara toda una brecha en nuestro cortafuegos para todo tipo de fechorıas.

Con un NIDS, podemos captar este tipo de actividad ası como otros problemas en cuanto se producen.Bien ajustado, puede ser el “sistema de alarma” de nuestra red.

13.1.2. IDS (Deteccion de actividades anomalas)

En lugar de utilizar firmas estaticas, que solo pueden captar una actividad danina cuando se defineexplıcitamente, estos sistemas de nueva generacion registran los niveles normales para distintos tipos deactividad en nuestra red. Si observa una subita oleada de trafico FTP, nos avisara. El problema con estetipo de sistemas es que son muy propensos a los falsos positivos, estos se producen cuando se dispara unaalerta aunque la actividad que esta marcando es normal y permitida en nuestra LAN, por ejemplo unapersona que esta descargando un archivo particularmente grande activara la alarma.

Ası mismo se tarda mucho en que un IDS de deteccion de anomalıas desarrolle un modelo preciso dela red. Al principio, el sistema generara tantas alertas que es casi inutil.

Adicionalmente, estos tipos de sistemas de deteccion de intrusion pueden ser enganados por alguien queconozca bien la red. Si los piratas informaticos son suficientemente furtivos y habiles utilizaran protocolosusados en nuestra LAN y no activaran este tipo de sistemas.

Sin embargo, una gran ventaja es que no tiene que actualizar firmas continuamente. A medida queesta tecnologıa madure y se haga mas inteligente, probablemente se convierta en una forma muy popularde detectar intrusiones.

Un ejemplo de IDS basado en actividades anomalas y de libre distribucion es Spade, un modulo gratuitopara el NIDS Snort.

13.1.3. IPS (Intrusion Prevention System)

Un nuevo tipo de NIDS denominado Sistema de prevencion de intrusion (IPS, Intrusion PreventionSystem) se esta publicitando como la solucion para la seguridad de las empresas. Este tipo de sistemasresponderan a las alertas a medida que se generen. Esto puede realizarse trabajando con un cortafuegos ocon un enrutador, escribiendo reglas personalizadas en el momento que se detecta el problema, bloqueandoe interrogando la actividad de las direcciones IP sospechosas o incluso contraatacando al sistema ofensivo.

Aunque esta nueva tecnologıa se encuentra en una constante evolucion, todavıa esta muy lejos de poderproporcionar el analisis y el juicio de una persona. El hecho es que cualquier sistema que dependa al cienpor cien de una maquina y de su software, tarde o temprano podra ser burlado por algun intruso.

Un ejemplo de IPS de libre distribucion es Inline Snort de Jed Haile, un modulo gratuito para el NIDSSnort.

13.2. Ubicacion del NIDS

Para elegir la ubicacion del NIDS hay que valorar el grado de interoperabilidad con el resto de nuestrasprotecciones de red. Existen varias posibilidades y cada una tiene distintas ventajas e inconvenientes.

Jose Antonio Escartın Vigo, Junio 2005.

Page 233: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 13. Sistemas de deteccion de intrusiones 215

1. En la red LAN local, detras del cortafuegos: Es el lugar mas comun, ofrece la mejor proteccion frentea las amenazas externas e internas. Al escuchar el cable local, podemos detectar la actividad internade otros usuarios (como la actividad entre estaciones de trabajo o el uso ilıcito de un programa).Tambien refuerza el cortafuegos, detectando una actividad sospechosa que de alguna manera haconseguido pasar los filtros del cortafuegos. De hecho, se pude utilizar un IDS para probar uncortafuegos y comprobar lo que permite pasar.

Sin embargo, este sistema generara muchas alertas basadas en el trafico de red de Windows, por lo quedebemos estar preparados para realizar muchos ajustes en este area. Ası mismo, si nos encontramosen una LAN conmutada, necesitaremos la capacidad de reflejar todos los puertos sobre un puertomonitor para poder permitir al IDS escuchar todo el trafico LAN.

2. En el segmento DMZ : Podemos colocar un sensor Snort en la DMZ para registrar la actividad queentra en los servidores publicos. Como esos servidores son los mas expuestos y normalmente repre-sentan recursos valiosos, es buena idea supervisarlos con un IDS. El problema de esta configuraciones ordenar todas las alertas. Aunque todas ellas puedan ser alertas validas, con el nivel de ataque detrafico general actual en Internet, cualquier IP publica es atacada de forma aleatoria todos los dıas.Reaccionar ante ello intentando localizar dichas alertas serıa excesivo y contraproducente.

Por lo tanto, ¿como podemos saber que alertas son solo gusanos que estan atacando a nuestroservidor y que alertas estan realmente avisandonos de un intruso real?. Una forma de hacerlo esreduciendo el numero de firmas a un pequeno numero que solo se activen si el host esta realmentecomprometido, por ejemplo, reglas especıficas a las aplicaciones que se estan ejecutando en el host,como MySQL.rules, web-iis.rules o reglas relacionadas con la administracion de conexiones.

3. Entre el ISP y el cortafuegos: Esta configuracion filtrara todo el trafico entrante y saliente de laLAN y DMZ. Lo bueno es que capturara todos los ataques tanto a los servidores publicos como ala LAN interna. Lo malo es que no podremos ver ningun trafico interno y el volumen general de lasalertas puede ser bastante alto, debido al trafico de ataque general subyacente.

Igual que en el ejemplo anterior, se puede probar a reducir las alertas y dejar solo las que realmentevan a mostrar algun problema para este segmento. Ası mismo, al situarlo entre el sensor ISP y elcortafuegos, puede crear un cuello de botella y un punto de errores para nuestro trafico de red.

Todas las formas puede ser validas para utilizar un IDS y no hay razon para que no podamos seguirlas tres, siempre que tengamos el hardware y el tiempo necesario para hacerlo.

13.3. El problema de los falsos positivos de NIDS

Uno de los problemas principales con los sistemas de deteccion de intrusion es que suelen generarmuchos falsos positivos. Un falso positivo se produce cuando el sistema genera una alerta basandoseen lo que cree que es una actividad danina o sospechosa pero en realidad es un trafico normal en esaLAN. Generalmente, cuando establecemos un NIDS con sus configuraciones predeterminadas, va a buscartodo lo que sea ligeramente inusual. La mayorıa de los sistemas de deteccion de intrusion de red tienengrandes bases de datos predeterminadas con miles de firmas de posibles actividades sospechosas. Lossuministradores de IDS no tienen forma de saber la apariencia de nuestro trafico de red, por lo que loincluyen todo.

Existen otras muchas fuentes de falsos positivos, dependiendo de la configuracion de nuestra red yde su nivel de actividad. Un NIDS con una instalacion predeterminada puede generar cientos de falsospositivos en un solo dıa, algo que puede conducir a un sensacion de desesperacion en el administradordel sistema. La reaccion normal, es que las alertas de estos sistemas se ignoran a menudo debido a sufalta de eficacia. Sin embargo, con poco esfuerzo y utilizando las tecnicas descritas en este capıtulo unIDS puede convertirse en una herramienta util, en lugar de en la version electronica de la nina del exorcista.

Las causas mas comunes de los falsos positivos se describen en los siguientes apartados.

Jose Antonio Escartın Vigo, Junio 2005.

Page 234: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

216 Servidor Linux para conexiones seguras de una LAN a Internet

Actividad del sistema de supervision de red

Muchas empresas utilizan sistemas de supervision de redes (NMS, Network Monitorig System) comoHP OpenView o WhatsUp Gold para tener registros de la actividad de sus sistemas. Estos programasgeneran mucha actividad de sondeo y descubrimiento en nuestra red.

Normalmente utilizan SNMP o algun protocolo similar para obtener el estado, pero pueden tambienutilizar pings y pruebas mas intrusivas. De forma predeterminada, la mayorıa de los sistemas de deteccionconsideraran hostil esta actividad, o al menos, sospechosa. Un NMS en una red grande puede generarmiles de alertas por hora, si se ha establecido en el IDS marcar este tipo de actividad. Se puede evitarhaciendo que nuestro NIDS ignore la actividad desde y hacia la IP del NMS. Tambien podemos eliminareste tipo de alertas de la base de datos de nuestro NIDS, si no consideramos estas alertas importantes.

Escaneado de vulnerabilidad y escaneres de puertos de red

Si estamos realizando una prueba de vulnerabilidad de red o un escaneado de puertos utilizandoprogramas como Nessus o Nmap, nuestro NIDS se volvera loco cada vez que se ejecuten dichos programas.Estos programas estan disenados para hacer exactamente lo que hacen los piratas informaticos. De hecho,probablemente exista una alerta para la mayorıa de los complementos del programa Nessus. Una vez mas,podemos deshabilitar el informe de la direccion IP de nuestro servidor Nessus o Nmap dentro del NIDS.Una mejor manera de controlar esta situacion es apagar nuestro IDS durante los escaneados programados.Ası, la IP del escaner seguira protegida contra un ataque cuando no este escaneando y nuestra base dedatos de alertas no se cargara con datos de nuestra actividad de escaneado.

Actividad de usuario

La mayorıa de los sistemas de deteccion de intrusion de redes se configuran para marcar diversasactividades de usuario peligrosas, como compartir archivos punto a punto, mensajerıa instantanea, etc.Sin embargo, si permitimos este tipo de actividad, bien por polıtica formal o simplemente sin imponer laspolıticas existentes, se mostraran como alertas en nuestro registros.

Este serıa un buen momento para imponer o crear polıticas contra su utilizacion ya que podemosdemostrar cuanto ancho de banda y tiempo consumen, sin mencionar las implicaciones de seguridad.Aunque si pretendemos seguir permitiendo esta actividad, deberıamos comentar estas reglas para norellenar los registros con alertas innecesarias.

Comportamientos parecidos a los troyanos o gusanos

Normalmente, virus, gusanos y troyanos viven para la red. Intentan ejecutar diversas actividades porla red, incluyendo la infeccion de nuevas maquinas y el envıo en masa de mensajes de correo electronico.

Estas actividades las puede detectar un NIDS, sin embargo, estas firmas tambien pueden ser activadaspor una actividad normal de nuestra red. Podrıamos desactivar las alertas que reconocen esta actividad,aunque exista un trafico potencialmente danino, para evitar vernos agobiados por los falsos positivos.

Cadenas largas de autenticacion basica

Este tipo de alerta busca las cadenas de registro web largas, algunos ataques utilizan este metodo paraconseguir un desbordamiento de memoria y obtener acceso al sistema.

Sin embargo, hoy en dıa, muchas webs llenan este campo de informacion. Aunque, si desactivamos laregla para evitar falsos positivos, puede viajar codigo danino por nuestra red y pasar inadvertido para elNIDS.

Actividad de autenticacion de base de datos

Algunos sistemas de deteccion de intrusion de red buscan actividades administrativas sobre bases dedatos. La teorıa es que el uso de bases de datos no deberıa de tener demasiada actividad administrativaen curso y ello podrıa ser senal de que alguien estan intentando sabotearla. Sin embargo, muchas bases

Jose Antonio Escartın Vigo, Junio 2005.

Page 235: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 13. Sistemas de deteccion de intrusiones 217

de datos tienen trabajos en proceso y mucha actividad administrativa incluso si no se estan consultando.Esta actividad, aunque legıtima, generara muchas de estas alertas.

Si nuestras bases de datos estan en constante desarrollo, probablemente deberemos desactivar dichasalertas, al menos hasta que se estabilicen y tengan un uso normal.

13.4. Obtener lo maximo del IDS

Para darnos cuenta del verdadero potencial de un sistema de deteccion de intrusion necesitaremosseguir unas pautas antes y despues de la instalacion.

13.4.1. Configuracion apropiada del sistema

Si simplemente instalamos un IDS y lo activamos con una configuracion predeterminada, rapidamentenos inundaran miles de alertas de falsos positivos. Podemos ajustarlo despues de estar activo, pero nosahorraremos mucho tiempo y esfuerzo configurandolo cuidadosamente de antemano. No debemos confor-marnos con las configuraciones por defecto, hay que ajustarlas al perfil de nuestra LAN.

La mayorıa de los sistemas de deteccion agrupan las alertas en categorıas. Es preciso examinar cadagrupo para comprobar si es relevante en nuestra red. Si hay un grupo de firmas basadas en Unix perono tenemos ningun sistema Unix, podemos desactivar con seguridad esas alertas. Algunos tienen alertasque buscan la utilizacion de mensajerıa instantanea o la utilizacion de software punto a punto. Si yatenemos sistemas que filtran estas actividades o las permitimos en nuestro sistema, es mejor desactivaresas alarmas. Tenemos que repasar los grupos de alertas con detalle. Por ejemplo, desearemos utilizar lamayorıa de las alertas basadas en Windows, pero existiran algunas irrelevantes para nuestra red o quecausen falsos positivos, esas las podemos desactivar.

Tambien podemos excluir algunos hosts del examen. Si efectuamos desde una maquina constantessondeos SNMP por nuestra red o frecuentemente estamos iniciando sesion como administrador remoto,generaremos alertas que no merece la pena proteger.

Aunque reduzcamos el nivel de proteccion proporcionado y podamos dejar sin proteccion alguna maqui-na crıtica, podemos hacer el IDS mas efectivo y merecera la pena asumir ese riesgo. Tardar algunas horasen configurar nuestro sistema antes de activarlo puede ahorrarnos mucho tiempo y frustracion en el futuro.

Si vamos a ejecutar un IDS es mejor que nos tomemos el tiempo necesario para hacerlo funcionarcorrectamente.

13.4.2. Ajuste del IDS

Cuando ya se esta ejecutando, incluso el IDS mas meticulosamente configurado empezara a generaralertas. Al principio, si nos tomamos el tiempo necesario para analizarlas y empezamos a desactivar lasreglas que no nos importen en nuestra red, podremos reducir rapidamente el numero de falsos positivosque esta produciendo el IDS.

Tambien nos proporcionara un conocimiento de como esta trabajando nuestra red y del tipo de traficoque se esta revisando, algo util para cualquier administrador de redes.

Es preciso reservar un tiempo semanal para modificar las configuraciones IDS. En algunos sistemas esrelativamente facil marcar una alerta como falso positivo mientras que en otros podemos encontrarnos conmas dificultades. En general, se tardan algunos meses antes de que un IDS este ajustado correctamentepara enviar alertas utiles sobre una actividad procesable.

13.4.3. Herramientas de analisis IDS

Los sistemas de deteccion normalmente ofrecen a los administradores varios metodos de notificacionde una alerta.

En su nivel mas basico, las alertas pueden simplemente enviarse a un archivo de registro para unarevision posterior, algo que no es muy recomendable ya que requiere que el administrador reviselos registros. Si no se supervisan diariamente, pueden pasar dıas o semanas antes de descubrir losintentos de intrusion.

Jose Antonio Escartın Vigo, Junio 2005.

Page 236: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

218 Servidor Linux para conexiones seguras de una LAN a Internet

La otra alternativa es enviar un mensaje de correo electronico o una pagina, a la persona apropiadasiempre que se genere una alerta. Sin embargo, incluso en un sistema bien ajustado, puede sermolesto recibir correos varias veces al dıa. Ası mismo, las alertas de correo electronico no estaran enun formato en el que se puedan comparar con alertas pasadas o analizadas de otra forma.

La mejor solucion para controlar las alertas IDS es insertarlas en una base de datos, para permitir unanalisis mas profundo. Existe una herramienta de libre distribucion para los sistemas de deteccionde intrusiones denominada Analysis Console for Intrusion Database (ACIDlab, vease seccion 13.8).

13.5. IDS Snort (NIDS)

Es una herramienta desarrollada por Martin Roesch, aunque ahora ya cuenta con 30 desarrolladoresmas en su equipo principal, sin contar con los que escriben reglas y otras partes del software. Existenmuchos recursos disponibles para Snort y todos ellos son recursos gratuitos disponibles en Internet.

Snort es principalmente un IDS basado en firmas, aunque con la adicion del modulo Spade, puederealizar una deteccion de actividad de anomalıas. Existen tambien otros modulos de complemento comoInline Snort que permite a Snort realizar acciones predeterminadas ante determinadas alertas.

Para obtener mas informacion sobre el programa, estos modulos o otros podemos consultar la web:

http://www.snort.org

O consultar la informacion que podemos obtener en nuestro sistema Debian:#apt-get install snort-doc

13.5.1. Caracterısticas basicas

Libre distribucion: Snort es de libre distribucion y portable a casi cualquier sistema operativoUnix/Linux. Tambien existen versiones disponibles para Windows y otros sistemas operativos.

Ligero: Debido a que el codigo se ejecuta de una forma eficiente, no requiere mucho hardware, loque permite poder analizar trafico en una red de 100 Mbps a una velocidad cercana al cable, algobastante increıble si pensamos lo que hace con cada paquete.

Snort personaliza reglas: Snort ofrece una forma facil para ampliar y personalizar el programa es-cribiendo nuestras propias reglas o firmas. Existe mucha documentacion que puede ayudarnos aaprender a hacer reglas (vease seccion 13.5.9), sin mencionar la cantidad de foros sobre el tema.

13.5.2. Instalacion

Para instalarlo simplemente realizaremos el apt del paquete:#apt-get install snort

Los archivos importantes de snort son los siguientes:

/etc/snort/snort.conf : Archivo de configuracion por defecto

/etc/snort/snort.<host>.conf: Archivo de configuracion para el host

/etc/snort/snort.<dispositivo>.conf : Archivo de configuracion para un dispositivo de red concreto

/etc/snort/rules/* : Archivos de reglas

Jose Antonio Escartın Vigo, Junio 2005.

Page 237: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 13. Sistemas de deteccion de intrusiones 219

13.5.3. Modos de ejecucion

Snort se ejecuta desde la lınea de comandos, en tres modos diferentes:

Sniffer de red

Registro de paquetes

IDS

La mayorıa de los usuarios lo ejecutaran en este ultimo modo para obtener las ventajas de IDS, perotambien hay usos para los dos primeros modos.

Modo de sniffer de paquetes

En este modo, Snort actua como un sniffer, mostrando el contenido sin filtrar en el cable. Evidente-mente. Si lo unico que necesitamos es un sniffer podrıamos utilizar Tcpdump o Ethereal (mas completos).Sin embargo, el modo sniffer de paquetes es bueno para asegurarse de que todo funciona correctamente ySnort esta viendo los paquetes.

En este modo tenemos las siguientes opciones:

Opcion Descripcion-v Imprime en la pantalla los encabezados de los paquetes TCP/IP en Ethernet-d Igual que la opcion anterior pero ademas imprime los datos de la capa de aplicacion-e Igual que la opcion anterior pero ademas imprime la capa de enlace de datos

Hay que incluir al menos el comando -v para utilizar el modo sniffer de paquetes.

Estos serian algunos ejemplos de su uso:#snort -v#snort -vde

Pulsamos CTRL+C para salir y veremos un resumen de la sesion de escucha de la red.

La siguiente salida, es una conexion a una pagina web desde el servidor:#snort -v

Running in packet dump mode

Initializing Network Interface eth0

--== Initializing Snort ==--

Initializing Output Plugins!

Decoding Ethernet on interface eth0

--== Initialization Complete ==--

,,_ -*> Snort! <*-

o" )~ Version 2.3.2 (Build 12)

’’’’ By Martin Roesch & The Snort Team: http://www.snort.org/team.html

(C) Copyright 1998-2004 Sourcefire Inc., et al.

06/09-13:09:39.402225 195.149.189.15:80 -> 192.168.0.11:3516

TCP TTL:62 TOS:0x0 ID:47630 IpLen:20 DgmLen:52 DF

***A***F Seq: 0xB744B52F Ack: 0x34B0D324 Win: 0x1974 TcpLen: 32

TCP Options (3) => NOP NOP TS: 217975842 8827642

=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+

06/09-13:09:39.442220 192.168.0.11:3516 -> 195.149.189.15:80

TCP TTL:64 TOS:0x0 ID:24732 IpLen:20 DgmLen:52 DF

***A**** Seq: 0x34B0D324 Ack: 0xB744B530 Win: 0x736 TcpLen: 32

TCP Options (3) => NOP NOP TS: 8837681 217975842

=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+

06/09-13:09:43.433979 192.168.0.11:3516 -> 195.149.189.15:80

TCP TTL:64 TOS:0x0 ID:24734 IpLen:20 DgmLen:52 DF

***A***F Seq: 0x34B0D324 Ack: 0xB744B530 Win: 0x736 TcpLen: 32

TCP Options (3) => NOP NOP TS: 8841673 217975842

=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+

06/09-13:09:43.819445 195.149.189.15:80 -> 192.168.0.11:3516

TCP TTL:253 TOS:0x0 ID:0 IpLen:20 DgmLen:52 DF

***A**** Seq: 0xB744B530 Ack: 0x34B0D325 Win: 0x1974 TcpLen: 32

TCP Options (3) => NOP NOP TS: 217976284 8841673

=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+

..........................................................................

..........................................................................

Jose Antonio Escartın Vigo, Junio 2005.

Page 238: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

220 Servidor Linux para conexiones seguras de una LAN a Internet

==========================================================================

Snort received 263 packets

Analyzed: 263(100.000%)

Dropped: 0(0.000%)

==========================================================================

Breakdown by protocol:

TCP: 247 (93.916%)

UDP: 12 (4.563%)

ICMP: 0 (0.000%)

ARP: 4 (1.521%)

EAPOL: 0 (0.000%)

IPv6: 0 (0.000%)

IPX: 0 (0.000%)

OTHER: 0 (0.000%)

DISCARD: 0 (0.000%)

==========================================================================

Action Stats:

ALERTS: 0

LOGGED: 0

PASSED: 0

==========================================================================

Snort exiting

Modo de registro de paquetes

Este modo es similar al anterior pero nos permite registrar paquetes “olfateados” al disco para suutilizacion y analisis futuros. Para ejecutar Snort en el modo de registro de paquetes, simplemente loejecutamos con los mismos comandos que en el modo sniffer de paquetes, pero anadiendo un modificadoradicional: -l logpath, reemplazando logpath con la ruta de acceso en la que deseamos que Snort registre lospaquetes (tiene que ser un directorio).

Por ejemplo: #snort -vde -l /var/log/snort

Creara archivos de registro en el directorio /var/log/snort. Snort registra paquetes por direccion IP ycrea un directorio independiente para cada IP registrada. Si estamos registrando trafico en una red localgrande con muchas direcciones, esto puede escaparse rapidamente a nuestro control.

Podemos utilizar otra configuracion para indicarle a Snort que registre los paquetes de la LAN en laque se encuentra con el comando: -h homenet, donde homenet es el rango de direcciones IP en la notacionde barra inclinada. Esto hace que Snort coloque las direcciones basandose en la direccion IP del paqueteexterno a la LAN, para poder ver con mas facilidad el trafico ajeno a la red. Si tanto los anfitriones dedestino como de origen son locales, Snort los coloca en el directorio con el numero de puerto superior,aparentemente para recoger el host de conexion sobre el host servidor.

Snort utiliza la direccion de origen como nombre del directorio en el que se colocaran los datos de lospaquetes, cuando registramos alertas de intrusion es importante saber con facilidad de donde esta provi-niendo el trafico de alertas marcado.

Por lo tanto, el comando para el modo de registro de paquetes sera:#snort -vde -l /var/log/snort -h 192.168.0.0/24

Esta declaracion especifica una red interna en el rango comprendido entre 192.168.0.1 y 192.168.0.254.

Tambien podemos utilizar la opcion: -b para registrar todos los datos en un solo archivo binario,apropiado para su lectura posterior con un sniffer de paquete (como Ethereal o Tcpdump). Si se realizaası el registro, no es necesario especificar la red local al utilizar el modificador -b ya que registrara losarchivos secuencialmente en un gran archivo. Este metodo es mucho mas rapido para registrar redes demuchos registros o si Snort funciona en un maquina lenta. Tambien facilita el analisis con herramientasmas complejas, algo necesario si vamos a buscar sobre una gran cantidad de datos de red capturados.

Modo de deteccion de intrusion (IDS)

Este modo lo utiliza Snort para registrar paquetes sospechosos o que merecen una consideracion es-pecial. Solo necesitamos un modificador adicional a la declaracion anterior para que Snort entre en estemodo. El modificador: -c configfile, le indica a Snort que utilice un archivo de configuracion para dirigirlos paquetes que registra. Este archivo determina la configuracion de Snort, se incluye un archivo prede-

Jose Antonio Escartın Vigo, Junio 2005.

Page 239: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 13. Sistemas de deteccion de intrusiones 221

terminado, pero debemos realizar cambios antes de ejecutarlo, para que refleje nuestro perfil de red.

Por lo tanto, si escribimos:#snort -de -l /var/log/snort -h 192.168.0.0/24 -c /etc/snort/snort.conf

Ejecutaremos Snort en modo IDS utilizando el archivo de configuracion snort.conf predeterminado.Hay que tener en cuenta que no hemos utilizado el modificador -v para ejecutar Snort en modo IDS.Cuando intentamos comparar todos los paquetes con las firmas, obligar a Snort a escribir tambien lasalertas en la pantalla puede causar que algunos paquetes se omitan, especialmente en redes con muchotrafico. Tambien podemos omitir el modificador -e si no necesitamos registrar las capas de enlace de datos.Si omitimos el modificador -l, Snort de forma predeterminada utilizara /var/log/snort como su directoriode registro. Tambien podemos utilizar el modificador -b si deseamos registrar un archivo binario para unanalisis posterior con un programa independiente.

El comando para ejecutar Snort en el modo IDS es:#snort -h 192.168.0.0/24 -c /etc/snort/snort.conf

13.5.4. Modos de alerta

Ahora que ya estamos registrando los paquetes de alerta, tendremos que decidir el detalle y el formatode la alerta. El cuadro 13.1 incluye una lista con las opciones que podemos usar desde la lınea de comandos,utilizando el modificador -A.

Cuadro 13.1: Opciones de alerta del comando SnortOpcion Descripcion-A full Informacion completa de la alerta, incluyendo datos de aplicacion. Es el modo prede-

terminado de alerta y se utilizara cuando no especifiquemos nada.-A fast Modo rapido. Registra solo la informacion de encabezado del paquete y el tipo de

alerta. Es util para redes muy rapidas pero si se necesita mas informacion forense hayque utilizar el modificador full.

-A unsock Reenvıa la alerta a un socket-A none Desactiva las alertas.

Tambien podemos utilizar las opciones, Syslog, SMB y opciones de salida de bases de datos. Estasopciones no utilizan el modificador -A desde la lınea de comandos sino modulos de salida independientesque ofrecen una variedad mas amplia de opciones de salida. Estas deben configurarse en el tiempo decompilacion con modificadores anadidos a la declaracion de configuracion.

SMB : Envıa las alertas al servicio de menu emergente de Windows. Para esta opcion hay quedescargar las fuentes y compilarlas con la opcion enable-smbalerts.

Para ejecutar Snort con esta configuracion: #snort -c /etc/snort/snort.conf -M workstations

Donde workstations es el nombre del host Windows al que se envıan las alertas.

Syslog : Envıa alertas al servidor Syslog de Unix. Este es un servicio, que captura y guardar archivosde registro, lo que nos ayudara a consolidar registros de red en un lugar unico. Este servicio dificultaa un intruso borrar los rastros de la intrusion. Podemos especificar los formatos Syslog dentro delarchivo de configuracion y enviar ahı las alertas incluyendo el modificador -s.

Snort admite directamente cuatro tipos de salida a base de datos: MySQL, PostgreSQL, Oracle yunixODBC. El modulo de salida de base de datos requiere: parametros y configuraciones, dentro delarchivo de configuracion y en tiempo de compilacion.

Jose Antonio Escartın Vigo, Junio 2005.

Page 240: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

222 Servidor Linux para conexiones seguras de una LAN a Internet

13.5.5. Optimizar la configuracion

Ahora que ya sabemos como funciona Snort y conocemos los comandos basicos, tendremos que editarel archivo de configuracion para convertirlo en un IDS fiable y obtener los resultados deseados. Muchaslıneas del archivo contienen informacion util para aclarar cada una de las partes de la configuracion.

Para definir el archivo de configuracion seguiremos los siguientes pasos:

1. Establecemos nuestra red local : Tendremos que indicarle a Snort las direcciones de nuestra red localpara que pueda interpretar correctamente los ataques provenientes del exterior. Para ello utilizaremosla siguiente declaracion:

var HOME_NET addresses

Donde debemos de reemplazar addresses con el espacio de direcciones de nuestra red local. Si existenmultiples redes, podemos introducirlas todas separandolas por comas. Podemos incluso introducirun nombre de interfaz y utilizar la direccion IP y la mascara de red asignada a dicha interfaz comonuestro HOME NET. El formato para hacerlo es:

var HOME_NET $ interfacename

Donde debemos reemplazar interfacename con la interfaz de red donde esta escuchando Snort.

Tambien podemos definir nuestras redes externas con una declaracion similar a HOME NET, reem-plazandola por EXTERNAL NET. La entrada predeterminada para ambas variables es any. Esrecomendable definir la red interna pero dejar la red externa a any.

2. Configuramos los servidores internos: En el archivo de configuracion podemos definir nuestros ser-vidores de red, incluyendo web, mail, dns, telnet, . . . Ası, limitaremos los falsos positivos para losservicios en esas maquinas.

Tambien podemos especificar los numeros de puertos para dichos servicios, entonces si nuestrosusuarios usan ese puerto, no se registrara ninguna alerta. Todas estas opciones de configuracionpueden ayudarnos a reducir el numero de falsos positivos que obtenemos y alertarnos solo coninformacion que tiene valor real.

3. Configuramos los decodificadores y procesadores previos de Snort : Diversos modificadores y configu-raciones controlan los decodificadores y procesadores previos de Snort en el archivo de configuracion.

Estas rutinas se ejecutan en el trafico antes de pasar por ningun conjunto de reglas, normalmentepara formatearlas correctamente o para tratar con un tipo determinado de trafico que sea mas facil deprocesar directamente en lugar de utilizar los conjuntos de reglas. Un ejemplo de este tipo de traficoserıan los paquetes fragmentados-defragmentados. Muchos ataques intentan ocultar su verdaderanaturaleza fragmentando los paquetes, en esos casos, esta opcion es muy valiosa.

Otro decodificador es para los paquetes de escaneado de puertos. Como estos suelen entrar en gruposy con un gran volumen, es mejor procesarlos directamente en masa en lugar de intentar compararcada paquete con una firma. Esto hace que el IDS sea mas seguro ante una denegacion de servicio.

Las configuraciones predeterminadas para estos subsistemas son muy generales, a medida que expe-rimentemos con Snort, podremos ajustarlas para obtener un mejor rendimiento y resultados.

4. Configuramos los modulos de salida: Es un paso importante si deseamos utilizar una base de datospara controlar las salidas de Snort. Como ya hemos visto anteriormente, existen varios modulos desalida que podemos utilizar, dependiendo del formato en el que deseemos los datos: Syslog, Databasey el nuevo modulo denominado Unified, que es un formato binario generico para exportar datos aotros programas.

Jose Antonio Escartın Vigo, Junio 2005.

Page 241: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 13. Sistemas de deteccion de intrusiones 223

El formato general para configurar los modulos de salida es:

output module_name: configuration options

Siendo module name bien alert syslog, database o alert unified dependiendo del modulo que cargue-mos.

Las opciones de configuracion para cada modulo de salida son las siguientes:

Syslog :output alert_syslog: LOG_AUTH LOG_ALERT

output alert_syslog: host= hostname:port, LOG_AUTH LOG_ALERT

Donde hostaname y port son la direccion IP y el puerto de nuestro servidor Syslog.

Database:output database: log, database_type, user= user_name

password= password dbname host= database_address

Donde debemos reemplazar database type por una base de datos valida, user name por unnombre de usuario valido en la base de datos y password por la contrasena asociada al usuario.La variable dbname identifica el nombre de la base de datos en la que se va a realizar el registro.Por ultimo, database address es la direccion IP del servidor que contiene la base de datos.No se recomienda intentar ejecutar Snort y la base de datos en el mismo servidor, suele provocaruna bajada considerable del rendimiento del sistema.

Unified : Es un formato binario basico para registrar los datos y usarlos en el futuro.Los dos argumentos adminitidos son filename y limit :

output alert_unified: filename snort.alert, limit 128

5. Personalizamos los conjuntos de reglas: El archivo snort.conf permite anadir o eliminar clases enterasde reglas. En la parte final del archivo podremos ver todos los conjuntos de reglas de alertas.

Podemos desactivar toda una categorıa de reglas comentando la lınea. Por ejemplo, podrıamosdesactivar todas las reglas icmp-info para reducir los falsos positivos del trafico ping o todas lasreglas NetBIOS si no tenemos maquinas Windows en nuestra red. Tambien podemos encontrardisponibles conjuntos de reglas que se han ajustado para entornos especıficos.

13.5.6. Clases de reglas

La forma mas facil de limitar el trafico de las alertas es desactivar reglas que no se aplican en nuestrosistema, esto lo podemos hacer entrando en la configuracion de Snort. El directorio /etc/snort/rules/contiene muchos archivos con la extension .rules, cada uno de ellos contiene las reglas agrupadas porcategorıa.

Podemos deshabilitar toda una clase de reglas comentandola en el archivo de configuracion o podemosdeshabilitar reglas individuales si queremos la proteccion del resto de reglas de la clase. Para comentaruna regla concreta, la buscamos en los archivos .rules apropiados e insertamos un comentario delante dela lınea de dicha regla. Hay que tener en cuenta que normalmente es mejor deshabilitar un sola regla quetoda la clase, a no ser que esta no se aplique en nuestra configuracion.

En el cuadro 13.2 podemos observar una lista con las clases de reglas mas habituales en Snort y unapequena descripcion de las mismas.

Jose Antonio Escartın Vigo, Junio 2005.

Page 242: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

224 Servidor Linux para conexiones seguras de una LAN a Internet

Cuadro 13.2: Clases de reglas de Snort (I)Clase de reglas Descripcionattack-response.rules Son las alertas para paquetes de respuesta comunes despues de que un ata-

que haya tenido exito. Raramente se informan como falsos positivos y de-bemos dejarlas activadas en la mayorıa de los casos.

backdoor.rules Estas reglas son signos comunes de una puerta trasera o de un programatroyano en uso. Raramente son falsos positivos.

bad-traffic.rules Estas reglas representan el trafico de red no estandar que normalmente nodeberıa verse en la mayorıa de las redes.

chat.rules Localizan transmisiones estandar para muchos programas conocidos de con-versacion. Si la conversacion se permite implıcitamente o explıcitamente es-tas alertas deben estar deshabilitadas. Ası mismo, hay que tener en cuentaque estas alertas no son una solucion milagrosa para las conversaciones yno detectaran todos los tipos de trafico de conversaciones.

ddos.rules Busca tipos de ataques de denegacion de servicio distribuido estandares. EnDMZ y WAN, estas alertas no sirven de mucho porque si se ha producidoun ataque de este tipo probablemente lo sepamos en seguida. Sin embargo,pueden ser muy utiles dentro de una LAN para comprobar si tenemos unamaquina zombi en otra red participando en un ataque de denegacion deservicio (DoS) sin saberlo.

dns.rules Buscan algunos abusos estandar contra servidores DNS. Si no estamos eje-cutando un servidor DNS propio, podemos desactivarlas.

dos.rules Similar al conjunto de reglas anterior.experimental.rules Estan deshabilitadas de forma predeterminada. Generalmente se utilizan

solo para probar nuevas reglas hasta que se desplazan a otra categorıa.exploit.rules Estas reglas son para el trafico de abuso estandar, siempre habilitadas.finger.rules Estas reglas marcan el trafico que tiene que ver con los servidores finger. Si

no estamos ejecutando ninguno de estos servidores, las podemos deshabili-tar. Sin embargo, este tipo de servidores normalmente se ejecutan ocultosal administrador del sistema, por lo que podemos dejarlas habilitadas, yaque no suelen generar falsos positivos.

ftp.rules Igual que las reglas anteriores pero buscan abusos de FTP. Una vez mas,podemos dejarlas habilitadas aunque no tengamos servidores FTP ya quenos avisaran de cualquier servidor FTP ilegal en el sistema.

icmp-info.rules Estas reglas registran el uso de los mensajes ICMP que cruzan la red, porejemplo, los ping. A menudo producen falsos positivos, podemos desacti-var toda la clase a no ser que deseemos estar pendientes del trafico ICMPen nuestra red. Otra clase de trafico ICMP danino conocido, icmp.rules,captura los escaneados de puertos y similares.

icmp.rules Cubre el trafico ICMP sospechoso o danino y es poco propenso a generarfalsos positivos. Sin embargo, es posible que se activen en una red ocupadaejecutando muchos servicios de diagnostico.

imap.rules Reglas correspondientes al uso del protocolo de acceso a mensajes desdeinternet (IMAP, Internet Message Access Protocol).

info.rules Capturan mensajes de errores diversos: Web, FTP y otros servidores.local.rules En este archivo podemos anadir nuestras propias firmas o reglas personali-

zadas para la red, el archivo esta vacıo de forma predeterminada.misc.rules Reglas que no encajan en ninguna de las restantes categorıas.multimedia.rules Registra el uso de software de vıdeo. Si permitimos las aplicaciones de vıdeo

o utilizamos video-conferencia, debemos deshabilitar estas reglas.

Jose Antonio Escartın Vigo, Junio 2005.

Page 243: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 13. Sistemas de deteccion de intrusiones 225

Cuadro 13.3: Clases de reglas de Snort (II)Clase de reglas Descripcionmysql.rules Vigila el acceso del administrador y otros archivos importantes en una base

de datos MySQL. Si no ejecutamos este tipo de base de datos, podemos des-habilitar estas alertas. Ası mismo, si nuestra base de datos MySQL esta endesarrollo, podrıan producirse muchos falsos positivos.

Netbios.rules Esta clase de reglas nos alerta de diversa actividad NetBIOS en la LAN.Algunas de ellas son exploits evidentes. Sin embargo, otras, como las alertasde sesion NULL, pueden producirse normalmente en una LAN Windows.Tendremos que jugar con esta seccion para deducir cuales son las reglasapropiadas en nuestra LAN.

nntp.rules Reglas relacionadas con el servidor de noticias. Si no ejecutamos noticias dered en los servidores, es mejor deshabilitar estas reglas.

oracle.rules Reglas del servidor de base de datos Oracle. Si no tenemos un servidor deeste tipo, las deshabilitamos.

other-ids.rules Estas reglas se relacionan con exploits en los IDS de otros fabricantes. Esmuy probable que no tengamos ningun otro NIDS en la LAN, pero si esası hay que dejarlas habilitadas.

p2p.rules Reglas que rigen el uso del software para compartir archivos punto a punto.Estas reglas crearan alertas durante el uso normal de este software, si lopermitimos, deberemos deshabilitarlas.

policy.rules Este archivo contiene diversas alertas relacionadas con toda la actividadpermitida en la LAN, como Go-to-my-pc y otros programas. Debemos re-visarlas y habilitar solo las que se aplican en nuestras polıticas internas.

pop3.rules Para servidores de correo, si tenemos un servidor de este tipo, hay quedejarlas habilitadas.

porn.rules Estas reglas son trampas rudimentarias para la exploracion web relacionadacon la pornografıa. No constituyen ni mucho menos un reemplazo para losbuenos sistemas de filtrado de contenido.

rpc.rules Esta clase controla las alertas de llamadas a procedimientos remotos (RPC).Aunque creamos no ejecutar ninguno de estos servicios, normalmente seactivan como parte de otros programas, por lo que es importante tenercuidado con lo sucede en la LAN. RPC puede habilitar la ejecucion remotade codigo y normalmente se utiliza en los troyanos y exploits.

rservices.rules Registra el uso de diversos programas de servicios remotos, como rlogin yrsh. Estas reglas en general, son de servicios inseguros, pero si tenemos queutilizarlos, pueden examinarse con este conjunto de reglas.

scan.rules Alertas para utilizar programas de escaneado de puertos. Los escaneados depuertos son una indicacion extraordinaria de una actividad ilıcita. Si utiliza-mos escaneres de puertos, podemos desactivar Snort durante su ejecucion odeshabilitar esta regla en concreto para la IP donde se encuentra el escaner.

shellcode.rules Esta clase busca paquetes que contienen codigo de montaje, comandos debajo nivel tambien conocidos como codigo shell. Estos comandos normal-mente forman parte integral de muchos exploits como los desbordamientosde memoria. Capturar al momento un codigo shell es una buena indicacionde que se esta produciendo un ataque.

smtp.rules Contienen las alertas para el uso del servidor de correo en la LAN. Estaseccion necesitara algun ajuste ya que muchas actividades de servidor decorreo normales activaran reglas de esta seccion.

sql.rules Reglas para diversos programas de base de datos SQL. Si no ejecutamos nin-guna base de datos, podemos deshabilitarlas, pero no es mala idea dejarlaspor si existen bases de datos SQL ejecutandose sin que lo sepamos.

Jose Antonio Escartın Vigo, Junio 2005.

Page 244: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

226 Servidor Linux para conexiones seguras de una LAN a Internet

Cuadro 13.4: Clases de reglas de Snort (III)Clase de reglas Descripciontelnet.rules Registra el uso de telnet sobre la red. Normalmente telnet se utiliza en

enrutadores o en otros dispositivos de lınea de comandos, por lo que esrecomendable realizar el registro incluso si telnet no esta en nuestros servi-dores.

tftp.rules TFTP (FTP trivial) es un servidor FTP alternativo que se ejecuta normal-mente en enrutadores. Puede utilizarse para cargar nuevas configuracionesy por consiguiente es mejor que este conjunto de reglas este habilitado.

virus.rules Contiene las firmas de algunos gusanos y virus conocidos. Esta lista noesta completa y no se mantiene con regularidad. No es un reemplazo parael software de escaneado de virus pero puede capturar algunos gusanos quese transmitan por la red.

web-attacks.rules Todas estas clases se refieren a diversos tipos de actividad web sospechosa.web-cgi.rules Algunas son genericas, como las clases web-attacks. Otras clases, comoweb-client.rules web-iis y web-frontpage, son especıficas de una determinada plataforma deweb-coldfusion.rules servidor web. Sin embargo, aunque creamos que no estamos ejecutando unweb-frontpage.rules servidor web Microsoft o PHP, es mejor dejarlas habilitadas para descubrirweb-iis.rules cualquier tipo de esta actividad en nuestra LAN de la que debamos preocu-web-php.rules parnos. Tendremos que ajustar estos conjuntos de reglas, especialmente si

los servidores web se encuentra en un desarrollo activo.X11.rules Registra el uso del entorno grafico X11 en su red.

13.5.7. Ejecutar como servicio del sistema

Si vamos a ejecutar Snort en un servidor que se va a utilizar las 24 horas del dıa, siete dıas a la semana,tendremos que ejecutar Snort inmediatamente al inicio para que, en el caso en el servidor caiga, se puedavolver a cargar Snort y siga protegiendo nuestra LAN. Una forma de conseguirlo es tener una pequenasecuencia de comandos que ejecute Snort con los parametros de lınea de comandos en las rutinas de inicio.Deberemos colocar el comando de arranque de Snort.

Como por ejemplo: snort -h 192.168.0.0/24 -c /etc/snort/snort.conf &

El signo de concatenacion & indica que se debe ejecutar Snort como un proceso en segundo plano.

13.5.8. Configuracion grafica de Snort, interfaz Webmin

Realizar toda la configuracion para Snort desde la lınea de comandos puede llegar a ser algo tedioso.Aunque todavıa no existe una interfaz grafica para Snort, existe un modulo para la conocida herramien-ta de administracion web Webmin que nos permite realizar ajustes y configuraciones desde un servidor web.

Algunas de las ventajas de este sistema son:

Acceso a los archivos de configuracion de Snort, basado en un formulario.

Niveles de acceso de usuario que permiten configurar diferentes usuarios con diferentes derechos.

Capacidad para para habilitar y deshabilitar conjuntos de reglas mediante un simple clic.

Indicador de estado para todas las reglas y conjuntos de reglas.

Enlaces incrustados a bases de datos externas como archNIDS, CVE y Bugtraq.

Registro de cambios.

Diferentes idiomas.

Jose Antonio Escartın Vigo, Junio 2005.

Page 245: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 13. Sistemas de deteccion de intrusiones 227

Soporte para ejecutar Snort como servicio utilizando archivos rc.d.

Administracion remota segura a traves de SSL (si esta habilitado).

El modulo de Snort requiere la version 0.87 de Webmin o superior. Instalaremos el modulo con apt:#apt-get install webmin-snort

Para acceder al sistema, con SSL y si no hemos cambiado el puerto por defecto:https://localhost:10000

Una vez iniciada la sesion en la pagina de Snort (vease figura 13.1), podremos ver las secciones prin-cipales del archivo de configuracion, las configuraciones del procesado previo y las opciones de inicio desesion en la parte superior de la ventana. Haga clic en cualquiera de las opciones de configuracion paraintroducir su informacion personal para que Webmin realice los cambios apropiados en los archivos deSnort.

Figura 13.1: Modulo Webmin de Snort

Todos los conjuntos de reglas aparecen en una lista, podemos ver cuales estan habilitados y cuales no.Si queremos visualizar dicho conjunto de reglas o modificar una regla individual, hacemos clic en el

texto subrayado de color azul para dirigirnos a la pagina Edit RuleSet (editar conjunto de reglas). Aquı seencuentran todas las reglas individuales dentro de dicho conjunto. Podemos ejecutar acciones en cadaregla como deshabilitarla, habilitarla o eliminarla del conjunto.

Si existen referencias a bases de datos externas dentro de la alerta, como los numeros de Vulnerabilidado exploit comunes (VCE, Common Vulnerability or Exploit), podemos hacer clic en un hipervınculo paraabrir mas detalles sobre lo que hace la alerta. En esta interfaz se puede ajustar el conjunto de alertas masfacilmente.

Con el modulo Webmin Snort tambien podemos configurar usuarios para que puedan acceder a de-terminadas configuraciones. Esto se realiza mediante el control de usuarios de Webmin, en la seccion

Jose Antonio Escartın Vigo, Junio 2005.

Page 246: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

228 Servidor Linux para conexiones seguras de una LAN a Internet

correspondiente de acceso a Snort. Podemos controlar los archivos de configuracion a los que pueden ac-ceder o simplemente dejar que visualicen los archivos sin poder editar ninguno de ellos. Como se puedecomprobar, el modulo Webmin Snort nos proporciona un control de acceso granular para que podamosdelegar las tareas diarias en usuarios con privilegios de administracion, a la vez que seguimos conservandoel control de la configuracion y los cambios.

13.5.9. Personalizar reglas

Aunque los conjuntos de reglas estandar incluidos en Snort proporcionan una proteccion adecuadacontra firmas de ataques conocidas, podemos disenar algunas reglas personalizadas especıficas para quenuestra red obtenga el mejor rendimiento del IDS.

Se pueden escribir reglas para:

Registra el acceso hacia o desde determinados servidores.

Buscar determinados tipos de nombres de archivos especıficos en nuestra organizacion.

Vigilar determinados tipos de trafico que no pertenecen a nuestra propia red.

La escritura de reglas de Snort es facil de aprender y nos permite anadir funcionalidades al programa,sin muchos conocimientos de programacion. Como hemos podido comprobar, las reglas de Snort sonsimplemente declaraciones de texto dentro de un archivo de reglas.

Si deseamos que Snort busque un comportamiento unico que deberıa ser sospechoso en nuestra red,podemos codificar rapidamente una regla y probar el resultado. El formato de una regla de Snort es basi-camente una sola lınea de texto que empieza con una accion (normalmente alert) seguida por diversosargumentos. Se pueden anadir multiples lıneas simplemente anadiendo una barra inclinada (/) al finalde cada lınea. Tambien se puede llamar a otros programas utilizando una declaracion de inclusion paraobtener una regla mas compleja.

En su forma basica, una regla de Snort consta de dos partes:

Un encabezado de regla

Las opciones de la regla

Aquı tenemos un ejemplo:alert tcp any any 192.168.0.0/24 /

(content:"|00 05 A4 6F 2E|";msg:"Test Alert";)

El encabezado de la alerta es la parte anterior al parentesis de apertura. Esta declaracion contiene laaccion (en este caso, alert), el protocolo y las direcciones de puertos de origen y destino. La accion es loque va a hacer la regla, si esta es verdadera.

Las opciones para las acciones son:

alert Alerta del cumplimiento de la regla.log Solo registra el paquete.pass Ignora el paquete, es la accion predeterminada en paquetes que no coin-

ciden con la regla.activate Alertar y a continuacion activar una regla dinamica.Dynamic Permanecer inactiva hasta que se active, a partir de entonces actua como

una regla normal registro.

Jose Antonio Escartın Vigo, Junio 2005.

Page 247: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 13. Sistemas de deteccion de intrusiones 229

Los protocolos puede ser tcp, udp, icmp o ip, lo que significa cualquier protocolo IP (puede que en unfuturo se admitan protocolos no basados en IP, como IPX).

Los puertos de origen y destino se explican por sı mismos. La direccion de origen es la primera, lis-tada en la notacion de barra inclinada estandar para los rangos IP. Tambien podemos listar multiplesdirecciones individuales y redes separandolas con una coma, sin espacios y escribiendo la declaracion entrecorchetes, por ejemplo:

alert tcp any <> [192.168.0.2,192.168.0.5,192.168.0.10] 80 /(content:"|00 05 A4 6F 2E|";msg:"Test Alert";)

Esta sentencia se centra en el trafico que proviene de cualquier direccion enlazada para las maquinas192.168.0.2, 192.168.0.5 y 192.168.0.10 en el puerto 80. Suponiendo que se tratan de nuestros servidoresWeb, la sentencia buscarıa el trafico entrante con los datos hexadecimales de la seccion de contenido.

La segunda parte de una alerta Snort son las opciones de la regla. Aquı es donde podemos especificarmas detalles sobre el tipo de trafico que estamos buscando. Podemos buscar segun los campos del encabe-zado TCP/IP o buscar simplemente la cargar util del paquete. Despues de cada comando debemos incluircomillas y el valor que se esta buscando. Podemos anadir multiples opciones separandolas con un punto ycoma.

El cuadro 13.5 contiene los comandos de opcion validos en la confeccion de reglas.

13.6. Deteccion de intrusiones en el host

Hemos tratado con detalle la deteccion de intrusiones basadas en redes (NIDS). Sin embargo, existenotras formas de encontrar intentos de intrusion.

Un metodo alternativo es buscar signos de intrusion en el propio sistema. Si se ha aprovechado unexploit en una maquina, normalmente se alteraran determinados archivos del sistema. Por ejemplo, puedecambiar el archivo de contrasenas, pueden anadirse usuarios, pueden modificarse archivos de configuraciondel sistema o se pueden alterar los permisos de algunos archivos. Normalmente, estos archivos de sistemano deberıan cambiar mucho. Al buscar modificaciones podemos detectar una intrusion u otra actividadinusual.

Este metodo de deteccion de intrusion puede ser mucho mas preciso, produciendo menos falsos posi-tivos ya que no se activan a no ser que un sistema este realmente afectado. Algo mas complicado es elmantenimiento ya que tenemos que cargar el software en cada sistema que deseamos proteger.

Podemos afirmar que merece la pena el tiempo y el esfuerzo empleados para detectar las intrusionesbasadas en hosts y en redes con el fin de proteger los sistemas que ejecutan tareas crıticas.

Los metodos de deteccion de intrusion basados en hosts tienen las siguientes ventajas:

Menos falsos positivos.

Se registran actividades en lugar de firmas, no necesitan actualizaciones constantes de firmas.

Necesitan menos ajustes.

Los metodos de deteccion de intrusion basados en hosts tienen los siguientes inconvenientes:

Hay que cargar y administrar el software en cada host a proteger.

La alerta tiene lugar despues de que un ataque haya tenido exito. Muy pocas veces los IDS de hostnos proporcionan un aviso previo.

Jose Antonio Escartın Vigo, Junio 2005.

Page 248: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

230 Servidor Linux para conexiones seguras de una LAN a Internet

Cuadro 13.5: Opciones de personalizacion en las reglas de SnortOpcion Descripcionmsg Proporciona la descripcion del texto de una alerta.logto Registra el paquete para un nombre de archivo especıfico de un usuario en lugar de para

el archivo de salida estandar.ttl Prueba el valor del campo TTL del encabezado IP.tos Prueba el valor del campo TOS del encabezado IP.id Prueba el campo ID del fragmento del encabezado IP para un valor especıfico.ipoption Vigila los campos de opcion IP buscando codigos especıficos.fragbits Prueba los bits de fragmentacion del encabezado IP.dsize Prueba el tamano de carga util del paquete frente a un valor.flags Prueba los indicadores TCP para determinados valores.seq Prueba el campo de numero de secuencia TCP para un valor especıfico.ack Prueba el campo de reconocimiento TCP para un valor especıfico.itype Prueba el campo de tipo ICMP frente a un valor especıfico.icode Prueba el campo de codigo ICMP frente a un valor especıfico.icmp id Prueba el campo ICMP ECHO ID frente a un valor especıficoicmp seq Prueba el numero de secuencia ICMP ECHO frente a un valor especıfico.content Busca un patron en la carga util del paquete.content-list Busca un conjunto de patrones en la carga util del paquete.offset Modificador para la opcion de contenido. Establece la compensacion en el intento de

coincidencia con el patron.depth Modificador para la opcion de contenido. Establece la profundidad de busqueda para un

intento de coincidencia con el patron.nocase Compara la cadena de contenido anterior sin tener en cuenta las mayusculas y las

minusculas.session Descarga la informacion de la capa de aplicacion para una determinada sesionrpc Vigila los servicios RPC en busqueda de determinadas llamadas de aplicaciones o proce-

dimientos.resp Respuesta activa (por ejemplo, cerrar todas las conexiones).react Respuesta activa. Responde con un conjunto de comportamientos cifrados (por ejemplo,

bloquear determinados sitios web).referernce Los ID de referencia de ataques externos.sid ID de regla Snort.rev Numero de revision de regla.classtype Identificador de clasificacion de regla.priority Identificador de severidad de regla.uricontent Busca un patron en la parte URI del paquete.tag Acciones de registro avanzadas para las reglas.ip proto Valor de protocolo del encabezado IP.sameip Determina si la IP de origen es igual a la IP de destino.stateless Valido independientemente del estado del flujo.regex Coincidencia de patron de caracteres comodın.byte test Evaluacion numerica.distance Obliga a que la coincidencia de patron relativa omita determinado numero de bytes en

el paquete.byte test Prueba numerica del patron.byte jump Prueba numerica del patron y ajuste de compensacion

Jose Antonio Escartın Vigo, Junio 2005.

Page 249: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 13. Sistemas de deteccion de intrusiones 231

13.7. Integridad de archivos: IDS Tripwire

Originalmente, Tripwire era de libre distribucion. Al final, los creadores fundaron una empresa paravenderlo y soportarlo comercialmente. Sin embargo, cogieron el codigo base original y lo distribuyeroncon licencia GPL para que pudiera continuar su desarrollo en la comunidad de la libre distribucion. Estaversion libre se ha ido actualizando desde su lanzamiento (version 2.2.1).

Ambas versiones funcionan creando una base de datos de atributos basicos, archivos importantes quedeseamos registrar para comprobar los atributos reales, en cualquier momento, frente a los atributosbasicos. Con ello determinaremos si ha cambiado algo.

Uno de los trucos favoritos de los piratas informaticos, una vez introducidos en un sistema, es reempla-zar los archivos binarios clave con versiones de su propia cosecha. Ası cuando utilizamos comandos comols o ps, no vemos sus archivos ilıcitos ni la ejecucion de determinados procesos. Tambien podemos utilizarTripwire durante una investigacion forense para descubrir donde ha estado un intruso, es como seguir lashuellas digitales de una persona.

Para instalar el programa hacemos un apt:#apt-get install tripwire

Configurar Tripwire

Antes de ejecutar Tripwire hay que establecer la polıtica. El archivo de polıticas es muy importantepara el funcionamiento de Tripwire: le indica que archivos debe vigilar y a que nivel de detalle debeintroducirse. El archivo principal de polıticas es: /etc/tripwire/twpol.txt. Este no es el propio archivo depolıticas, sino una copia de la version cifrada que el programa utiliza. Para obtener una mejor seguridad,deberıamos hacer una copia y eliminarlo, una vez establecidas y probadas sus polıticas.

Este archivo contiene en su parte superior algunas variables, un listado de los diversos archivos ydirectorios que se chequearan, las directivas y las polıticas que les aplicaremos.

Estas directivas se representan mediante letras de codigo o nombres de variable, denominadas mascarasde propiedad, y representan las propiedades que esta registrando Tripwire.

El cuadro 13.6 recoge la lista de los elementos que se pueden registrar para cada archivo y sus letrasde codigo.

Cuadro 13.6: Mascaras de propiedad de Tripwire

Letras de codigo Atributos registradosa Ultimo accesob Bloques asignadosc Crear/modificar horad Dispositivo ID en el que reside el i-nodog ID de grupo del propietario del archivoi Numero de i-nodol Si se permite crecer el archivom Modificacion de la fecha y hora impresan Numero de enlaces al i-nodop Leer/escribir/ejecutar permisos en el archivos Tamano del archivot Tamano del tipou ID de usuario del propietario del archivoc Codigo CRC32h Codigo Havalm Codigo MD5s Codigo SHA/SHS

Jose Antonio Escartın Vigo, Junio 2005.

Page 250: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

232 Servidor Linux para conexiones seguras de una LAN a Internet

Las polıticas de Tripwire operan sobre el concepto de ignorar los indicadores. Podemos configurar Trip-wire para que registre o ignore diferentes propiedades de archivo. Para registrar propiedades utilizamosun signo mas (+) y para ignorarlas un signo menos (-).

El formato para la declaracion de un archivo de polıticas es el siguiente:file/directory name -> property mask;

Por ejemplo, esta lınea en el archivo de polıticas:/etc/secreto.txt -> +amcpstu;

Producirıa que Tripwire nos notificase en cualquier momento, cuando se produjo el ultimo acceso, lafecha de creacion o modificacion, los permisos, la propiedad o el tamano del tipo de archivo, cambiado enel archivo /etc/secreto.txt.

Existen ademas diversas mascaras de propiedad predefinidas. En el cuadro 13.7 se incluyen dichasmascaras plantilla y sus efectos.

Cuadro 13.7: Mascaras de propiedad de plantillas

Mascara de propiedad Efectos$Readonly +pinugtsdbmCM-rlasSH$Dynamic +pinugtd-srlbamcCMSH$Growing +pinugtdl-srbamcCMSH$Device +pugsdr-intlbamcCMSH$IgnoreAll -pinugtsdrlbamcCMSH$IgnoreNone +pinugtsdrlbamcCMSH

Estas variables predefinidas encajan en el comportamiento de diferentes conjuntos de archivos. Porejemplo, podemos utilizar $Readonly para nuestros archivos de configuracion clave, ya que sus fechasde acceso estaran continuamente cambiando cuando los programas los utilicen, pero no deseamos que elcontenido o el tamano cambien. Podemos utilizar $Growing para nuestros archivos de registro ya que estanconstantemente creciendo.

El archivo de configuracion de polıticas tambien define algunas variables que son combinaciones de lasconfiguraciones predeterminadadas anteriores con algunas adiciones o sustracciones, proporcionandonosun establecimiento rapido para las polıticas de diversas clases de archivos.

El siguiente codigo muestra las variables contenidas en el archivo /etc/tripwire/twpol.txt :

@@section GLOBAL

TWBIN = /usr/sbin;

TWETC = /etc/tripwire;

TWVAR = /var/lib/tripwire;

#

# File System Definitions

#

@@section FS

#

# First, some variables to make configuration easier

#

SEC_CRIT = $(IgnoreNone)-SHa ; # Critical files that cannot change

SEC_BIN = $(ReadOnly) ; # Binaries that should not change

SEC_CONFIG = $(Dynamic) ; # Config files that are changed

# infrequently but accessed

# often

SEC_LOG = $(Growing) ; # Files that grow, but that

# should never change ownership

SEC_INVARIANT = +tpug ; # Directories that should never

# change permission or ownership

SIG_LOW = 33 ; # Non-critical files that are of

# minimal security impact

SIG_MED = 66 ; # Non-critical files that are of

# significant security impact

SIG_HI = 100 ; # Critical files that are

# significant points of

# vulnerability

.......................................................................

Jose Antonio Escartın Vigo, Junio 2005.

Page 251: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 13. Sistemas de deteccion de intrusiones 233

Debajo de las mascaras de propiedad, se establecen las polıticas para los diversos archivos y directoriosdel sistema. Podemos empezar con el archivo de polıticas predeterminado y comprobar su funcionamiento.Hay que tomarse tiempo para examinar a fondo el archivo y comprobar que archivos se estan registrando.Una vez hecho esto, ya estaremos preparados para ejecutar Tripwire.

Inicializar la base de datos basica

El primer paso en la ejecucion de Tripwire es establecer la base de datos basica, creando ası la listainicial de firmas frente a las que se deben utilizar las polıticas. Recordemos que debemos ejecutar Tripwire,idealmente, una vez instalado y configurado el sistema; y despues cuando sospechemos que no funcionanbien algunos archivos en nuestro sistema.

Para establece la base de datos de archivo inicial utilizamos el siguiente comando:#tripwire -m i -v

El modificador -m especifica el modo a ejecutar, en este caso i para inicializar. El modificador -v leproporciona una salida por pantalla para que podamos ver lo que esta sucediendo. Tripwire audita todos losarchivos especificados en nuestro archivo de politicas, crea la datos en /var/lib/tripwire/ <hotsname>.twdy lo cifra utilizando la frase de contrasena de site, especificada anteriormente.

Para que Tripwire sea realmente seguro, debemos hacer una copia de su base de datos basica en algunmedio seguro (disquete, CD o cinta). Si lo guardamos localmente siempre existe la posibilidad de que sepueda alterar el archivo, aunque Tripwire tiene algunas protecciones contra este tipo de acciones.

Comprobar la integridad del archivo

Es el modo principal de ejecucion en Tripwire una vez se haya configurado. Compara los atributosactuales de los archivos especificados con los de la base de datos de Tripwire.

El formato es el siguiente:#tripwire -m c file.txt

Donde debemos reemplazar file.txt con la ruta de acceso al archivo o a los directorios que deseamoscomprobar. Verificara los atributos de dicho archivo, segun las especificaciones del archivo de polıticas ydevolvera un informe con los cambios producidos.

Por ejemplo podrıamos hacer algo ası:# tripwire -m c /bin/*

Integrity checking objects specified on command line...

Wrote report file: /var/lib/tripwire/report/debian-20050610-210613.twr

Tripwire(R) 2.3.0 Integrity Check Report

Report generated by: root

Report created on: vie 10 jun 2005 21:06:13 CEST

Database last updated on: Never

===============================================================================

Report Summary:

===============================================================================

Host name: debian

Host IP address: Unknown IP

Host ID: None

Policy file used: /etc/tripwire/tw.pol

Configuration file used: /etc/tripwire/tw.cfg

Database file used: /var/lib/tripwire/debian.twd

Command line used: tripwire -m c /bin/arch /bin/bash /bin/cat

/bin/chgrp /bin/chmod /bin/chown /bin/cp /bin/cpio /bin/csh /bin/date /bin/dd

/bin/df /bin/dir /bin/dmesg /bin/dnsdomainname /bin/echo /bin/ed /bin/egrep

/bin/false /bin/fgconsole /bin/fgrep /bin/fuser /bin/grep /bin/gunzip

/bin/gzexe /bin/gzip /bin/hostname /bin/kill /bin/ln /bin/loadkeys /bin/login

/bin/ls /bin/lsmod /bin/lsmod.modutils /bin/lspci /bin/mkdir /bin/mknod

/bin/mktemp /bin/more /bin/mount /bin/mountpoint /bin/mt /bin/mt-gnu /bin/mv

/bin/nano /bin/netstat /bin/pidof /bin/ping /bin/ps /bin/pwd /bin/rbash

/bin/readlink /bin/rm /bin/rmdir /bin/run-parts /bin/sed /bin/setpci

/bin/setserial /bin/sh /bin/sleep /bin/stty /bin/su /bin/sync /bin/tar

/bin/tcsh /bin/tempfile /bin/touch /bin/true /bin/umount /bin/uname

/bin/uncompress /bin/vdir /bin/zcat /bin/zcmp /bin/zdiff /bin/zegrep

/bin/zfgrep /bin/zforce /bin/zgrep /bin/zless /bin/zmore /bin/znew

Jose Antonio Escartın Vigo, Junio 2005.

Page 252: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

234 Servidor Linux para conexiones seguras de una LAN a Internet

===============================================================================

Rule Summary:

===============================================================================

-------------------------------------------------------------------------------

Section: Unix File System

-------------------------------------------------------------------------------

Rule Name Severity Level Added Removed Modified

--------- -------------- ----- ------- --------

Root file-system executables 100 0 0 0

(/bin)

Total objects scanned: 82

Total violations found: 0

===============================================================================

Object Summary:

===============================================================================

-------------------------------------------------------------------------------

# Section: Unix File System

-------------------------------------------------------------------------------

No violations.

===============================================================================

Error Report:

===============================================================================

No Errors

-------------------------------------------------------------------------------

*** End of report ***

Tripwire 2.3 Portions copyright 2000 Tripwire, Inc. Tripwire is a registered

trademark of Tripwire, Inc. This software comes with ABSOLUTELY NO WARRANTY;

for details use --version. This is free software which may be redistributed

or modified only under certain conditions; see COPYING for details.

All rights reserved.

Integrity check complete.

Actualizar la base de datos

A medida que ajustamos las polıticas y realizamos cambios importantes en el sistema, podremosactualizar la base de datos para que refleje con precision el estado valido de los archivos. Es importanteno solo que se anadan nuevos archivos y directorios a la base de datos sino tambien que se eliminen losfalsos positivos. No se debe actualizar la base de datos si existe alguna posibilidad de que nuestro sistemahaya sido comprometido.

Ası se invalidaran las firmas y nos aseguraremos de que la base de datos Tripwire es util. Podemosactualizar los directorios seleccionados despues de todo, algunos elementos como pueden ser los binariosdel sistema, cambiaran en contadas ocasiones.

Para actualizar la base de datos de Tripwire, utilizaremos el siguiente comando:#tripwire -m u -r path_reporte_anterior

Tendremos que reemplazar path reporte anterior con el nombre y ruta de acceso del archivo de informemas reciente. La ejecucion de este comando nos mostrara todos los cambios que se han producido y lasreglas que los detectan.

Tendremos una X en los cuadros de los archivos en los que Tripwire haya detectado cambios. Si dejaahı la X, Tripwire actualizara la firma para dicho archivo cuando salgamos de este. Si elimina la X, Tripwiresupondra que la firma original es la correcta y no la actualizara. Al salir, Tripwire ejecutara dichos cambios.

Tambien, podemos especificar -c en el comando para salir realizando la vista previa y dejar que Tripwirerealice los cambios para los archivos que haya detectado.

Actualizar el archivo de polıticas

Con el tiempo nos daremos cuenta que reglas no estan generando alertas validas y necesitaremos eli-minar o cambiar las mascaras de propiedad. Para ello realizaremos los cambios necesarios en el archivo depolıticas de Tripwire.

Jose Antonio Escartın Vigo, Junio 2005.

Page 253: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 13. Sistemas de deteccion de intrusiones 235

Una vez guardados ejecutaremos el comando siguiente, para que Tripwire actualice el archivo de polıti-cas:

#tripwire -m p politica.text

Donde debemos reemplazar politica.text con el nuevo archivo de polıticas. Tripwire nos pedira queintroduzcamos la contrasena local y de site antes de actualizar la polıtica. Cuando hayamos ajustadosuficientemente las polıticas de Tripwire, podremos crear una tarea que se ejecute diariamente (o con lafrecuencia deseada) para revisar el sistema de archivos en busca de archivos modificados.

13.8. ACIDlab: Analizar alertas IDS

La consola de analisis para bases de datos de alarmas de intrusion (ACID, Analysis Console for In-trusion Databases) es un programa disenado para hacer un mejor uso de los dispositivos de deteccion deintrusion. Esta es su pagina oficial:

http://acidlab.sourceforge.net/

La idea que se esconde detras de ACID es portar todos los datos de deteccion de intrusion a unabase de datos donde se puedan ordenar y organizar por prioridades. Nos proporciona un panel de controlbasado en web para visualizar y manipular estos resultados.

Utiliza cualquier base de datos SQL y cualquier servidor web, admitiendo multiples sensores para losdatos de entrada. Acepta alertas Snort y archivos de registro ajustados a los registros del sistema.

Actualmente, ACID solo funciona directamente con un IDS, Snort, pero podemos importar registros enla base de datos de ACID desde cualquier dispositivo que produzca una salida en formato tipo archivo deregistro utilizando una utilidad denominada Logsnorter, que se encuentra disponible en la web de ACID.

Necesitamos cumplir unos requisitos previos para que funcione correctamente: Debemos tener instala-dos una base de datos, un servidor web y el PHP.

Para instalarlo y hacerlo funcionar con Snort, necesitamos comunicar los dos programas a traves deuna base de datos, por ejemplo MySQL. Instalaremos los siguientes paquetes:

#apt-get install acidlab acidlab-doc acidlab-mysql

Si queremos enlazar Snort a traves de una base de datos MySQL con ACID debemos instalar el paquete:#apt-get install snort-mysql

Sustituira el antiguo Snort por otro que produzca las salidas en una base de datos MySQL.Es muy recomendable instalar ACID en una maquina independiente de Snort. Colocarlos en la misma

maquina no solo es poco recomendable desde el punto de vista de la seguridad sino que ademas inundara dealertas el sensor Snort hasta hacerlo inservible. El host con ACID debe de ubicarse en un sitio donde nopueda acceder el sensor de Snort.

Configuracion de ACID

Este es el archivo de configuracion del sistema ACIDlab:/etc/acidlab/acid_conf.php

En la siguiente tabla se puede observar la descripcion de las variables contenidas en el archivo:

Jose Antonio Escartın Vigo, Junio 2005.

Page 254: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

236 Servidor Linux para conexiones seguras de una LAN a Internet

Cuadro 13.8: Variables de configuracion de ACID

Nombre de variable Descripcion$DBtype Tipo de base de datos ACID que se va a utilizar. El valor predeterminado

es mysql, pero tambien podemos establecer postgresql o mssql.$alert_dbname El IDS desde donde se estan obteniendo las alarmas para ACID. Ac-

tualmente solo adminte Snort (snort log), en el futuro admitira otrosIDS.

$alert_host El host en el que se va a guardar la base de datos de alerta. Puede seruna direccion IP o un nombre de host. Si se esta ejecutando en la mismamaquina, serıa localhost. Para una mejor seguridad y rendimiento, esrecomendable ejecutar la base de datos en una maquina distinta a la delservidor web con PHP.

$alert_port Puerto sobre el que se accese a la base de datos. Si es local, solo debemosintroducir “ ” para este valor.

$alert_user Nombre de usuario de base de datos que va a utilizar ACID para registrarlos datos. Hay que asegurarse de que coincide con el nombre de usuarioMySQL creado en la configuracion de la base de datos

$alert_password La contrasena para el usuario de la base de datos. Una vez mas, hay queasegurarse de que coincide con la contrasena MySQL para dicho usuario.

$archive_dbname Nombre de la base de datos de Snort. El valor predeterminado essnort archive, a no ser que estemos guardando multiples bases de da-tos en esta maquina y deseemos escribir nombres mas descriptivos

$archive_host Host donde se va a ubicar la base de datos de archivo. Si esta en lamisma maquina debe ser localhost.

$archive_port Puerto para iniciar la sesion en el servidor de base de datos. Introducimos“ ” si estamos iniciando la sesion localmente.

$archive_user Usuario de base de datos para registrar los datos de archivo. Normalmen-te es el mismo valor que el de la variable anterior, $alert_user, aunquese pude crear un usuario independiente para registrar los archivos.

$archive_password Contrasena para que el usuario de la base de datos registre los datos dearchivo. Como en el caso anterior, el valor suele ser el mismo que el de$alert_password.

$chartlib_path Ruta de acceso a los modulos de creacion de graficos.$chart_file_format Formato de archivo de los graficos. El formato predeterminado es png.

Otros formatos validos son jpg y gif.

Ejecucion de ACID

Una vez ajustado el archivo de configuracion nos debemos conectar a la direccion:http://localhost/acidlab/acid_main.php

Se muestra la pagina de configuracion de ACID. A partir de este momento podremos utilizar la interfazweb para terminar la configuracion de ACID.

Hacemos clic sobre el boton Create ACID AG para crear una base de datos para los datos Snort. Elnombre predeterminado de la base de datos es “snort”.

Una vez hecho esto debemos dirigirnos a:http://localhost/acid

La pagina principal de ACID y para ver la base de datos de Snort.Una vez hecho esto hemos terminado la configuracion de ACID y podemos empezar a utilizarlo para

administrar el sistema IDS.

Jose Antonio Escartın Vigo, Junio 2005.

Page 255: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 13. Sistemas de deteccion de intrusiones 237

Utilizar ACID para ajustar y administrar nuestro NIDS

Antes de que el NIDS sea util debemos ajustarlo a nuestra red para eliminar alertas de falsos positivos.ACID puede ser una herramienta muy valiosa en esa tarea. Cuando ajustamos por primera vez el NIDS,todas las firmas de alerta se activaran y nuestra base de datos empezara a rellenarse con actividad delas alertas. La mayorıa de estas seran falsos positivos, para que los datos de alerta sean importantes ennuestra red, tenemos que empezar a eliminar algunas de estas firmas para reducir la actividad erronea yproporcionar solo los datos procesables.

Cuando tengamos un numero suficiente en la base de datos (al menos unas miles de alertas), podemosempezar a analizar datos y asi eliminar los tipos de alertas que no nos proporcionen informacion.

Si pulsamos Unique Alerts (Alertas unicas) se mostraran las alertas mas recientes clasificadas por tipode alerta.

En esta pagina podemos clasificar y ordenar por los siguientes campos:

Nombre de la firma (<Signature>).

Clasificacion de la alerta (<Classification>).

Numero total de este tipo de alertas en la base de datos (<Total#>).

Numero de sensores desde donde proviene la alerta (Sensor#).

Numero de las diferentes direcciones IP de origen asociadas con dicha alerta (<Src. Addr.>).

Numero de las diferentes direcciones IP de destino asociadas con dicha alerta (<Dest. Addr.>).

Hora en la que se ha incluido la alerta (<Firt> y <Last>).

Hay que examinar las listas para averiguar si realmente es un problema de seguridad o un falso positivo:

¿Se puede apreciar algun tipo de patron?

¿Provienen todas las alertas de la misma direccion IP?

¿Se dirigen todas las alertas a la misma direccion IP?

¿Se producen a intervalos regulares o lo hacen de forma aleatoria?

Si este analisis no nos conduce a ninguna conclusion, se puede buscar con mas detalle haciendo clic enlas alertas individuales.

Basandose en la IP del emisor, podemos utilizar esta informacion para determinar si se trata deuna direccion que normalmente esta accediendo a nuestra red. Tambien podemos mirar mas abajo paracomprobar la parte util del paquete (Se ve en hexadecimal y ASCII).

Si determinamos que es un ataque al sistema podemos intentar tomar medidas. Normalmente serangusanos automatizados, ataque que se produce docenas de veces al dia. Aun ası es mejor estar pendiente deestas alertas para comprobar si la IP persiste. Al menos, podemos asegurarnos de que la maquina atacadaesta protegida contra ese tipo de ataque y enviar una queja al ISP del atacante. Tambien se puedenejecutar otras acciones contra la direccion IP que aparece como IP de origen, como una persecucion legalo una accion civil, si se ha producido con exito la intrusion.

Al menos sabremos exactamente que tipo de ataques se estan produciendo en nuestra red y lo queestan intentando hacer, Ası, nuestra red estara mas protegida y podremos reaccionar si se produce unataque.

Jose Antonio Escartın Vigo, Junio 2005.

Page 256: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

238 Servidor Linux para conexiones seguras de una LAN a Internet

Figura 13.2: Detalle de una alerta ACID

Otras formas de analizar datos de alerta utlizando ACID

Ahora que disponemos de nuestra base de datos llena de alertas, podremos buscar las respuestas aalgunas preguntas que se nos plantean a continuacion.

¿Quien es el objetivo del ataque? Al utilizar ACID, buscamos las direcciones IP mas comunes ya quemuestran las direcciones IP que supuestamente son las mas atacadas y, por consiguiente, habra maquinassobre las que debemos centrar nuestros esfuerzos de proteccion, algo que nos ayudara a diferenciar entrelos falsos positivos y los positivos reales. Podremos localizar cualquier maquina que este generando ungran numero de alertas desde una aplicacion que se esta ejecutando.

Un incremento subito en las alertas hacia una direccion IP determinada puede apuntar que se estainiciando un ataque sobre dicha maquina. A continuacion, podemos ejecutar escaneres de vulnerabilidad,comprobar los niveles de seguridad, restringir direcciones de IP origen en el enrutador, etc.

¿Quien esta atacando? Buscamos la direccion de origen IP que aparece con mas frecuencia. Para ellonos debemos dirigir a la lista IP de origen; ası podremos ver la IP y el nombre de dominio totalmentecalificado (FQDN, Fully Qualified Domain Name) que indica de donde proviene el ataque. La ordenacionpor el numero de alertas permite ver a los peores atacantes, segun la generacion de alertas. Si las direccionesIP con la mayorıa de las alertas estan en nuestra red, puede existir un culpable interno o una aplicacionque este activando una alerta.

Utilizamos el proceso analizado anteriormente para llegar al detalle de la alerta. Si provienen dedirecciones IP externas, tendremos que determinar si se trata de un enlace de trafico legıtimo de nuestrared o son ataques reales. Buscamos en las alertas individuales para comprobar lo que esta pasando. Alhacer clic en la direccion se abre una pagina con informacion adicional sobre la direccion y algunas opcionespara analizarla con mas detalle.

Analizando esas salidas podremos encontrar que organizacion es propietaria de dichas IP. Y podremosregistrar una queja en su centro de operaciones. Ası mismo, si comprobamos que determinadas direccionesaparecen una y otra vez, podremos filtrar estas direcciones IP en nuestro cortafuegos.

Jose Antonio Escartın Vigo, Junio 2005.

Page 257: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 13. Sistemas de deteccion de intrusiones 239

¿Cual es el servicio mas atacado? Al buscar los puertos mas comunes en los que las alertas se estanrecibiendo podemos comprobar cuales son los servicios mas atacados. Si comprobamos que hay muchasalertas basadas en web, deberemos de tener mas cuidado en el bloqueo de servidores web.

Si las alertas muestran mucha actividad NetBIOS de Windows, tendremos que mirar las polıticas decontrasenas y permisos de Windows. Ası podremos saber cuales son los servicios en los que debemoscentrar primero nuestra atencion.

Mantener la base de datos ACID

A medida que crece nuestra base de datos, tendremos que ejecutar algun tipo de tarea de manteni-miento periodico, para evitar que se haga demasiado grande. Ası mismo, nuestras estadısticas y graficosseran mas precisos si archivamos nuestras primeras alertas, que van a contener muchos falsos positivos.Ası mismo, la limpieza de nuestra base de datos de vez en cuando agilizara el proceso de consultas. Paraarchivar las alertas, utilizamos el control de consulta que se encuentra en la parte inferior de la pantallaprincipal. Podemos crear una consulta para las alertas que se desea archivar, por ejemplo, todas las aler-tas generadas el ultimo ano. Despues seleccionamos Archive Alerts (Archivar alertas) como accion parala consulta. Podemos archivar alertas seleccionando por dato, alerta u otros criterios. Tambien podemoselegir simplemente copiar las alerta en un archivo o eliminarlas. Las alertas archivadas se situaran en lapropia base de datos, con el nombre establecido en el archivo acid conf.php durante la configuracion.

Debemos archivar todas las alertas desde los primeros meses de funcionamiento cuando estabamosajustando el sensor de Snort. A partir de ahora, los datos seran mas importantes para los ataques realesfrente a los falsos positivos. Es recomendable archivar al menos una vez al ano o quiza trimestralmente,dependiendo del volumen de alertas que se esten registrando. Como regla general, no es recomendabletener mas de 100.000 alertas en la base de datos.

13.9. Logcheck: Analizar logs

Leer los logs, de nuestro sistemas es una tarea pesada y requiere bastante tiempo. Si tenemos bastantetrabajo como administradores de sistemas, es probable que pasemos dıas o semanas sin mirarlos. Debido aesto, no sabemos que oscuras criaturas pueden estar penetrando nuestro sistema. Ademas, cuando leemoslogs la proporcion de informacion util respecto a la inutil es alarmantemente baja . . .

Se hace necesario disponer de una herramienta que analize automaticamente esa informacion y soloextraiga las partes interesantes de esos logs. Haciendolos mucho mas faciles de consultar y, sobre todo,leer.

Logcheck revisa periodicamente los logs del sistema , analizando y clasificando cada lınea y segun dife-rentes niveles de alerta. Reportandolo al administrador del sistema en un formato facil de leer, descartandolas lıneas que no tengan relevancia. Normalmente estos datos son enviados por correo.

Logcheck chequeara cada lınea frente a cuatro niveles de seguridad: Ignorar, actividad inusual, viola-cion de seguridad y ataque.

Para instalar el programa necesitaremos hacer un apt:#apt-get install logcheck

Logcheck opera encontrando expresiones regulares. Itera sobre cada uno de los archivos de log tresveces (para localizar mensajes inusuales, violaciones de seguridad y alertas de ataque) utilizando egreppara buscar los patrones. Podemos consultar el manual de egrep para poder construir reglas mas potentes.

Archivos que utiliza Logcheck

Al instalar Logcheck nos encontramos en el sistema los siguientes archivos:

logcheck.sh: Es el programa que se ejecutara cada vez que sea invocado logcheck. Es un script enshell normal, e incluye la configuracion en un formato facil de comprender.

Jose Antonio Escartın Vigo, Junio 2005.

Page 258: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

240 Servidor Linux para conexiones seguras de una LAN a Internet

logcheck.hacking : Tiene la lista de cadenas con las que una lınea sera identificada como intento deentrar al sistema o de conseguir informacion acerca de el, y por tanto seran reportadas como ataquesactivos, llamando la atencion de manera especial al administrador.

logcheck.ignore: Tiene la lista de expresiones que son muy comunes y no vale la pena reportarlas aladministrador.

logcheck.violations: Tiene la lista de expresiones que pueden ser consideradas moderadamente peli-grosas, y son etiquetadas como violaciones de seguridad.

logcheck.violations.ignore: Permite ser mas especıfico: Si una lınea concuerda con una de las expre-siones de logcheck.violations pero tambien concuerda con una de este archivo, la lınea es ignorada.

tmp: Es el directorio temporal utilizado por el programa para procesar los datos.

Ademas de estos archivos, logcheck instala el programa logtail en /usr/local/bin. Este programa man-tiene la informacion de que logs han sido analizados y hasta que punto, para no perder ni repetir lıneas.

Logcheck por defecto analizara los archivos /var/log/messages, /var/log/secure y /var/log/maillog.

Opciones de logcheck.sh

En el archivo logcheck.sh encontraremos las siguientes opciones de configuracion:

PATH : Indica donde buscara el sistema los binarios. Debemos recordar que se ejecutara con unallamada desde cron, por lo que no hace dano definirlo, y tal vez limitarlo al mınimo necesario.

SYSADMIN : Es la persona que recibira el reporte por correo. Si no lleva una direccion completa,asume que es una direccion local.

LOGTAIL: Indica el path completo para el programa logtail.

TMPDIR: Especifica el directorio temporal que usara el programa. Este debe ser un directorioseguro, que no tenga acceso de escritura mas que para el usuario que ejecute Logcheck.

GREP : Indica el nombre del comando grep a ejecutar. En muchos sistemas Unix hay diferentes grepcon diferentes caracterısticas, sugerimos instalar el egrep de GNU.

MAIL: Es el comando empleado para mandar un correo. Tıpicamente sera mail, aunque en algunossistemas puede ser mailx.

HACKING FILE : Es el pathname y nombre completo del archivo logcheck.hacking

VIOLATIONS FILE : Es el pathname y nombre del archivo logcheck.violations

VIOLATIONS IGNORE FILE : Es el pathname y nombre del archivo logcheck.violations.ignore

IGNORE FILE : Es el pathname y nombre completo del archivo logcheck.ignore

Ejecucion de logcheck.sh

Logcheck no es un programa que funcione continuamente, sino que es llamado cada vez que el admi-nistrador lo cree adecuado. Como cada reporte sera enviado por correo, lo mas comun es hacerlo cadahora. Para ello es necesario crear una entrada en el crontab de root o de algun usuario que tenga permisode leer los archivos localizados en /var/log.

La lınea a ser agregada en el crontab sera similar a la siguiente:0 * * * * /bin/sh /usr/local/etc/logcheck.sh

Jose Antonio Escartın Vigo, Junio 2005.

Page 259: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 13. Sistemas de deteccion de intrusiones 241

Con esto, cada hora el administrador recibira un mensaje similar al siguiente:

From [email protected] Wed Sep 27 21:46:33 2000

Date: Wed, 27 Sep 2000 19:00:04 -0500

From: root <[email protected]>

To: [email protected]

Subject: hostname.dominio.com 09/27/00:19.00 system check

Security Violations

=-=-=-=-=-=-=-=-=-=

Sep 27 18:23:07 hostname PAM_pwdb[14075]: authentication failure; (uid=0) -> root for ssh service

Sep 27 18:23:11 hostname PAM_pwdb[14075]: (ssh) session opened for user root by (uid=0)

Sep 27 18:23:11 hostname sshd[14075]: log: Password authentication for root accepted.

Sep 27 18:23:11 hostname sshd[14075]: log: ROOT LOGIN as ’root’ from hostname2.dominio.com

Sep 27 18:23:43 hostname PAM_pwdb[14075]: (ssh) session closed for user root

Unusual System Events

=-=-=-=-=-=-=-=-=-=-=

Sep 27 18:02:26 hostname proftpd[13963]: hostname.dominio.com (lab1-15.dominio.com [192.168.1.16]) - FTP no transfer timeout, disconnected.

Sep 27 18:14:40 hostname proftpd[14030]: hostname.dominio.com (lab1-15.dominio.com [192.168.1.16]) - FTP no transfer timeout, disconnected.

Sep 27 18:22:19 hostname proftpd[13875]: hostname.dominio.com (lab2-21.dominio.com [192.168.2.21]) - FTP no transfer timeout, disconnected.

Sep 27 18:23:07 hostname PAM_pwdb[14075]: authentication failure; (uid=0) -> root for ssh service

Sep 27 18:23:11 hostname PAM_pwdb[14075]: (ssh) session opened for user root by (uid=0)

Sep 27 18:23:11 hostname sshd[14075]: log: ROOT LOGIN as ’root’ from dir-03.dominio.com

Sep 27 18:00:12 hostname sendmail[13610]: RAB13605: SAA13610: DSN: Host unknown (Name server: mail.internet.com: host not found)

En caso de haberse registrado algun evento que concuerde con alguna lınea de logcheck.hacking, paraque el reporte sea visto mas rapidamente por el administrador cambiaran los encabezados, quedando ası:

From [email protected] Wed Sep 27 21:52:58 2000

Date: Wed, 27 Sep 2000 21:00:05 -0500

From: root <[email protected]>

To: [email protected]

Subject: hostname.dominio.com 09/27/00:21.00 ACTIVE SYSTEM ATTACK!

Active System Attack Alerts

=-=-=-=-=-=-=-=-=-=-=-=-=-=

Sep 27 20:10:48 hostname portsentry[14722]: attackalert: SYN/Normal scan from host: ejemplo.dominio.com/192.168.0.111 to TCP port: 1019

Sep 27 20:10:48 hostname portsentry[14722]: attackalert: Host 192.168.0.111 has been blocked via wrappers with string: "ALL: 192.168.0.111"

Sep 27 20:10:48 hostname portsentry[14722]: attackalert: Host 192.168.0.111 has been blocked via dropped route command: "/sbin/iptables -I input -s 192.168.0.111 -j DENY -l"

(...)

Security Violations

=-=-=-=-=-=-=-=-=-=

Sep 27 20:09:19 hostname PAM_pwdb[14589]: authentication failure; (uid=0) -> root for ssh service

Sep 27 20:09:22 hostname PAM_pwdb[14589]: (ssh) session opened for user root by (uid=0)

Sep 27 20:09:22 hostname sshd[14589]: log: Password authentication for root accepted.

(...)

Unusual System Events

=-=-=-=-=-=-=-=-=-=-=

Sep 27 20:10:47 hostname sshd[14624]: fatal: Did not receive ident string.

Sep 27 20:19:43 hostname PAM_pwdb[14985]: authentication failure; (uid=0) -> llec for ssh service

Sep 27 20:09:34 hostname in.telnetd[14610]: connect from 192.168.0.111

(...)

Interfaz web para Logchek

Podemos manejar graficamente este util programa desde nuestro Webmin. Para instalar:#apt-get install sentry

El la figura se puede observar que la configuracion de la herramienta se vuelve un juego de ninos.

13.10. PortSentry: Detectar escaneos de puertos

Cuando un atacante decide probar suerte en nuestro sistema, lo primero que necesita es recopilar cuan-ta informacion le sea posible acerca de el. Todo puede serle util: Sistema operativo, version, servicios queofrecemos, version de los programas que tenemos... Cualquiera de estos datos puede ser suficiente para quesu ataque sea exitoso. Basta con que el atacante vea, por ejemplo, que tenemos una version vieja de unprograma, aunque no tenga este ninguna vulnerabilidad importante, para que se de cuenta que no somosadministradores muy cuidadosos y probablemente tengamos otros servicios descuidados.

La manera mas comun en que un atacante va a intentar obtener informacion acerca de nosotros esel barrido de puertos: Intentar conectarse a cada uno de los puertos que tiene abiertos nuestro servidor,anotando que es lo que tiene activo y analizando dicha informacion. Una de las herramientas mas comunespara realizar barridos de puertos es el Nmap (vease seccion 17.2).

Jose Antonio Escartın Vigo, Junio 2005.

Page 260: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

242 Servidor Linux para conexiones seguras de una LAN a Internet

Figura 13.3: Modulo Webmin para LogCheck

Tras haber hecho esta prueba, el atacante puede intentar entrar a cada uno de los puertos abiertos,revisando si encuentra alguna version vieja o vulnerable.

Detectar un barrido de puertos es muy facil: Muchas conexiones casi simultaneas a una gran cantidadde puertos originadas desde la misma direccion. Si bien los programas barredores se han vuelto muysofisticados y cada vez es mas difıcil detectarlos por diferentes estrategias que emplean (Nmap sabe hacerdesde una sencilla conexion TCP hasta un barrido silencioso con SYN, FIN, Xmas, Null, UDP, paquetesfragmentados y barridos paralelos de diferentes tipos), el principio basico es el mismo.

Hay un excelente programa dedicado precisamente a encontrar este patron y tomar la accion que leindique el administrador del sistema: Portsentry.

Para instalar el programa necesitaremos hacer un apt:#apt-get install portsentry

Portsentry es un programa muy sencillo. Su mision es “sentarse y escuchar” en los puertos que leindiquemos que deben permanecer siempre inactivos. En caso de llegar una conexion a uno de ellos puedemarcarlo en los logs del sistema, bloquear toda la comunicacion con la direccion identificada como agre-sora, o ejecutar un comando externo.

El archivo de configuracion de PortSentry es:/etc/portsentry/portsentry.conf

El programa tiene varios modos de operacion:

Modo clasico

Modo stealth

Modo avanzado

Jose Antonio Escartın Vigo, Junio 2005.

Page 261: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 13. Sistemas de deteccion de intrusiones 243

Modo clasico

En este modo, le especificamos a Portsentry que escuche determinados puertos TCP y UDP, especifi-cados con las opciones UDP PORTS y TCP PORTS y por los cuales no estamos dando ningun servicio.

Por ejemplo, puede que nuestro servidor no este dando servicio de red SMB (Samba, red tipo Microsoft).Sin embargo, es comun que las computadoras windows manden mensajes broadcast buscando a un sistemaen especıfico, con lo que podrıamos recibir una gran cantidad de alertas falsas. Vienen varios puertospredefinidos en el archivo de configuracion, y es recomendable utilizarlos inicialmente.

Modo stealth

En este modo Portsentry abre sockets crudos, lo que le permite detectar una mayor cantidad de barridosy ataques: Ataques de conexion normal, SYN/half-open, FIN, NULL y XMAS. Este modo es un tantoexperimental, por lo cual no funcionara en todos los sistemas.

Modo avanzado

Este modo es tambien considerado hasta cierto punto perteneciente a la categorıa stealth. En este modo,Portsentry no abre ningun puerto, sino que le pide al kernel que le notifique si llega alguna peticion a algunpuerto menor al especificado en las opciones ADVANCED PORTS TCP y ADVANCED PORTS UDP.

Tendremos que excluir algunos puertos que sean particularmente ruidosos (como el comentado enla seccion anterior, SMB) y para ello tenemos las opciones ADVANCED EXCLUDE TCP y ADVAN-CED EXCLUDE UDP.

El modo avanzado es mucho mas sensible que el modo clasico, dado que escucha muchos mas puertos,por lo que puede efectivamente causar una negacion de servicio si no es configurado con cuidado.

Otras opciones de configuracion

Tras haber especificado los puertos que deseamos escuchar, hay algunos parametros adicionales quedebemos especificar:

IGNORE FILE : Es el nombre del archivo que incluye la lista de direcciones en las que confiamos ypor tanto no queremos bloquear si intentan acceder a un puerto bloqueado. Por ejemplo, serıa muymolesto que quisieramos ejecutar Nmap contra uno de nuestros servidores para asegurarnos de queno haya servicios abiertos que no requiramos y que nosotros mismos quedaramos bloqueados.

HISTORY FILE : Contiene la lista de direcciones que Portsentry ha detectado intentando acceder apuertos monitoreados.

BLOCKED FILE : Es equivalente a HISTORY FILE, pero relevante unicamente a la sesion actualde Portsentry.

BLOCK TCP : Especifica que hacer cuando un barrido de puertos TCP es detectado. Tiene tres po-sibles valores: 0 (solo registrar el intento), 1 (bloquear la direccion que intento acceder a la maquina)y 2 (ejecutar un comando externo especificado en KILL RUN CMD).

BLOCK UDP : Es equivalente a BLOCK TCP para barridos de puertos UDP.

KILL ROUTE : Guarda el comando utilizado para descartar toda la comunicacion con una direccion.En un sistema que incluya un filtro de paquetes (por ejemplo, iptables en Linux o ipf en los *BSD)es muy preferible manejar una regla bloqueando la conexion.

KILL HOSTS DENY : Tiene la lınea que debera ser agregada a /etc/hosts.deny para que la direccionatacante sea bloqueada por TCPwrappers. Es conveniente activarlo, pues a diferencia de las reglasmanejadas por KILL ROUTE este archivo sobrevivira a la baja del sistema. Pero, no hay queconfiarse TCPwrappers solo maneja determinados servicios, y si solo nos protegemos con el, el sistemapodra seguir proporcionando informacion importante a nuestro atacante.

Jose Antonio Escartın Vigo, Junio 2005.

Page 262: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

244 Servidor Linux para conexiones seguras de una LAN a Internet

KILL RUN CMD : Puede guardar un comando a ser ejecutado de ser detectada una intrusion. Nose recomienda utilizar esta opcion, ya que puede facilmente llevar a una negacion de servicio. Hayadministradores que sugieren utilizar esta opcion para lanzar un contraataque contra el atacante.Nosotros categoricamente les indicamos que esto es una muy mala idea – La mejor defensa es tenernuestro sistema seguro, no atacar al enemigo. Al atacar al enemigo, lo mas probable es que centremas su atencion en nosotros y, con el paso del tiempo, logre penetrar nuestra seguridad. Es muchomejor aparentar que nada ocurrio o simplemente tirar la conexion que atacarla.

SCAN TRIGGER: Indica con cuantos intentos de conexion se deben realizar, para marcarla comoun ataque. Probablemente, si a la primera bloqueamos toda comunicacion con el presunto atacante,dejaremos fuera a muchos usuarios legıtimos que por casualidad hicieron la conexion equivocada. Sinembargo, si ponemos un numero muy alto nos exponemos a dar mas informacion de la que hubieramosquerido. Un valor de 1 o 2 es recomendado, aunque los muy paranoicos querran mantenerlo en 0.

Inicializacion automatica

Hay que incluir la ejecucion en uno de los archivos que se ejecutan al iniciar la maquina. Las opcionesque podemos establecer son las siguientes:

Cuadro 13.9: Opciones de PortSentry

Opcion Descripcion-tcp Iniciar en modo clasico, escuchar TCP-udp Iniciar en modo clasico, escuchar UDP-stcp Iniciar en modo stealth, escuchar TCP-sudp Iniciar en modo stealth, escuchar UDP-atcp Iniciar en modo avanzado, escuchar TCP-audp Iniciar en modo avanzado, escuchar UDP

Tıpicamente levantaremos dos copias del programa en el mismo modo general, una escuchando UDPy la otra TCP.

Almacenamiento en los logs del sistema

El simple hecho de que Portsentry evite ciertos ataques al sistema es de por sı muy bueno y deseable.Sin embargo, para que esto nos sea realmente util, tenemos que analizar nuestros logs y llevar registros dequien y cuando intento se intentaron escanear nuestros puertos. Ademas, solo leyendo los logs sabremossi estamos limitando de mas, bloqueando el acceso de maquinas legıtimas.

Afortunadamente, Portsentry utiliza syslog para reportar toda la informacion que el administradordebe saber, por lo cual todo lo que necesitamos estara tıpicamente en el archivo /var/log/messages, odonde se lo hayamos especificado en el syslogd.conf.

La deteccion de un barrido hecho por Nmap en un sistema Linux se ve ası:

Sep 27 20:10:48 hostname portsentry[14722]: attackalert: SYN/Normal scan from host: ejemplo.dominio.com/192.168.1.3 to TCP port: 1019

Sep 27 20:10:48 hostname portsentry[14722]: attackalert: Host 192.168.1.3 has been blocked via wrappers with string: "ALL: 192.168.1.3"

Sep 27 20:10:48 hostname portsentry[14722]: attackalert: Host 192.168.1.3 has been

blocked via dropped route using command: "/sbin/iptables -I input -s 192.168.1.3 -j DENY -l"

Sep 27 20:10:48 hostname portsentry[14722]: attackalert: SYN/Normal scan from host: ejemplo.dominio.com/192.168.1.3 to TCP port: 70

Sep 27 20:10:48 hostname portsentry[14722]: attackalert: Host: ejemplo.dominio.com/192.168.1.3 is already blocked Ignoring

Sep 27 20:10:48 hostname portsentry[14722]: attackalert: SYN/Normal scan from host: ejemplo.dominio.com/192.168.1.3 to TCP port: 934

Sep 27 20:10:48 hostname portsentry[14722]: attackalert: Host: ejemplo.dominio.com/192.168.1.3 is already blocked Ignoring

Sep 27 20:10:48 hostname portsentry[14722]: attackalert: SYN/Normal scan from host: ejemplo.dominio.com/192.168.1.3 to TCP port: 267

Sep 27 20:10:48 hostname portsentry[14722]: attackalert: Host: ejemplo.dominio.com/192.168.1.3 is already blocked Ignoring

Sep 27 20:10:48 hostname portsentry[14722]: attackalert: SYN/Normal scan from host: ejemplo.dominio.com/192.168.1.3 to TCP port: 202

Sep 27 20:10:48 hostname portsentry[14722]: attackalert: Host: ejemplo.dominio.com/192.168.1.3 is already blocked Ignoring

Sep 27 20:10:48 hostname portsentry[14722]: attackalert: SYN/Normal scan from host: ejemplo.dominio.com/192.168.1.3 to TCP port: 613

(...)

Jose Antonio Escartın Vigo, Junio 2005.

Page 263: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 13. Sistemas de deteccion de intrusiones 245

Readmitiendo hosts marcados como atacantes

Cuando configuremos Portsentry es muy comun que marquemos direcciones como atacantes por error.Eliminarlos de la lista de bloqueo es afortunadamente muy sencillo.

Si asumimos que queremos volver a permitir acceso a la direccion 192.168.1.3. Todo el proceso debe-remos realizarlo como root.

Nuestro primer paso sera editar el archivo /etc/hosts.deny y buscar la direccion que queremoseliminar, en nuestro caso la tercera:

#

# hosts.deny This file describes the names of the hosts which are

# *not* allowed to use the local INET services, as decided

# by the ’/usr/sbin/tcpd’ server.

#

# The portmap line is redundant, but it is left to remind you that

# the new secure portmap uses hosts.deny and hosts.allow. In particular

# you should know that NFS uses portmap!

ALL: 216.98.66.42

ALL: 210.124.182.137

ALL: 192.168.1.3

ALL: 200.36.163.106

ALL: 202.111.97.171

Consultamos la tabla de direcciones filtradas por iptables. El comando iptables-save es de gran utili-dad para esa tarea, pues muestra las lıneas con los comandos que serıan necesarios para insertarlas.

# /sbin/iptables-save

:input ACCEPT

:forward ACCEPT

:output ACCEPT

Saving ‘input’.

-A input -s 216.98.66.42/255.255.255.255 -d 0.0.0.0/0.0.0.0 -j DENY -l

-A input -s 210.124.182.137/255.255.255.255 -d 0.0.0.0/0.0.0.0 -j DENY -l

-A input -s 192.168.1.3/255.255.255.255 -d 0.0.0.0/0.0.0.0 -j DENY -l

-A input -s 200.36.163.106/255.255.255.255 -d 0.0.0.0/0.0.0.0 -j DENY -l

-A input -s 202.111.97.171/255.255.255.255 -d 0.0.0.0/0.0.0.0 -j DENY -l

Una lınea es insertada en iptables con -A, y es eliminada con -D, por lo cual basta con que hagamos:

#iptables -D input -s 192.168.1.3/255.255.255.255 -d 0.0.0.0/0.0.0.0 -j DENY -l

Con esto, el host con la direccion 192.168.1.3 ya tendra de nuevo acceso a nuestro sistema.

Interfaz web para Portsentry

Podemos manejar graficamente este util programa desde nuestro Webmin. Para instalar:#apt-get install sentry

El la figura se puede observar que la configuracion de la herramienta se vuelve un juego de ninos.

13.11. Detectores de sniffers

Un grave problema de nuestra red son las escuchas clandestinas, ¿como podemos estar seguros queno hay nadie escuchando nuestras conexiones? Disponemos de varias herramientas para la deteccion detarjetas de red en modo promiscuo (sniffers), aquı mostraremos las siguientes:

Neped

Sentinel

Estas herramientas, utilizan las siguientes tecnicas para descubrir sniffers:

Jose Antonio Escartın Vigo, Junio 2005.

Page 264: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

246 Servidor Linux para conexiones seguras de una LAN a Internet

Figura 13.4: Modulo Webmin para Portsentry

El test DNS

En este metodo, la herramienta de deteccion en sı misma esta en modo promiscuo. Creamos numerosasconexiones TCP falsas en nuestro segmento de red, esperando un sniffer pobremente escrito para atraparestas conexiones y resolver la direccion IP de los inexistentes hosts. Algunos sniffers realizan busquedasinversas DNS en los paquetes que capturan. Cuando se realiza una busqueda inversa DNS, una utilidadde deteccion de sniffers “huele” la peticion de las operaciones de busqueda para ver si el objetivo es aquelque realiza la peticion del host inexistente.

El Test ICMP Etherping

Este metodo confıa en un problema en el nucleo de la maquina receptora. Podemos construir una peti-cion tipo “ICMP ECHO” con la direccion IP de la maquina sospechosa de hospedar un sniffer. Enviamosun un paquete “ICMP ECHO” al objetivo con la direccion IP correcta, pero con una direccion de MACdeliberadamente erronea. La mayorıa de los sistemas desatenderan este paquete ya que su direccion MACes incorrecta. Pero en algunos sistemas Linux, NetBSD y NT, puesto que el NIC esta en modo promis-cuo, el sniffer identificara este paquete de la red como paquete legıtimo y respondera por consiguiente.Si el blanco en cuestion responde a nuestra peticion, sabremos que esta en modo promiscuo. Los sniffersavanzados filtran tales paquetes para que parezca que el NIC no hubiera estado en modo promiscuo.

El Test ICMP de latencia

Ping de Latencia. En este metodo, hacemos ping al blanco y anotamos el Round Trip Time (RTT,retardo de ida y vuelta o tiempo de latencia) Creamos centenares de falsas conexiones TCP en nuestrosegmento de red en un perıodo de tiempo muy corto. Esperamos que el sniffer este procesando estospaquetes a razon de que el tiempo de latencia incremente. Entonces hacemos ping otra vez, y comparamosel RTT esta vez con el de la primera vez. Despues de una serie de tests y medias, podemos concluir o nosi un sniffer esta realmente funcionando en el objetivo.

Jose Antonio Escartın Vigo, Junio 2005.

Page 265: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 13. Sistemas de deteccion de intrusiones 247

El test ARP

Podemos enviar una peticion ARP a nuestro objetivo con toda la informacion rapida excepto con unadireccion hardware de destino erronea. Una maquina que no este en modo promiscuo nunca vera estepaquete, puesto que no era destinado a ellos, por lo tanto no contestara. Si una maquina esta en modopromiscuo, la peticion ARP serıa considerada y el nucleo la procesarıa y contestarıa. La maquina quecontesta esta en modo promiscuo.

13.11.1. Neped

NePED es una herramienta imprescindible para cualquier administrador de redes. Al ejecutarlo, elprograma nos informara de todos los equipos conectados a nuestra red local con la tarjeta ethernet enmodo promiscuo.

Lo podemos descargar desde su pagina web:http://apostols.org/projectz/neped/

La forma de uso es muy sencilla:#neped <dispositivo>

Esto serıa un ejemplo de su funcionamiento:#neped eth0

----------------------------------------------------------

> My HW Addr: 00:00:F4:C2:0E:2A

> My IP Addr: 192.168.0.2

> My NETMASK: 255.255.255.0

> My BROADCAST: 192.168.0.255

----------------------------------------------------------

> Scanning ....

*> Host 192.168.0.3, 00:60:08:64:06:FF **** Promiscuous mode detected !!!

> End.

La tecnica empleada para la deteccion es sumamente sencilla. Se trata de realizar una simple peticionARP para cada una de las IPs de nuestra red, con la salvedad de que los paquetes no van destinadosal broadcast (FF:FF:FF:FF:FF:FF), sino a una direccion arbitraria (cualquiera que no exista). Solo lasmaquinas con la tarjeta ethernet en modo promiscuo son capaces de ver estos paquetes, y por lo tanto,solo ellas contestaran a nuestras peticiones.

13.11.2. Sentinel

Lo podemos descargar desde su pagina web:http://www.packetfactory.net/Projects/sentinel/

Utiliza los metodos de busqueda de snifers:Test DNS, test ARP, test ICMP Etherping y test ICMP de latencia.

La forma de uso es muy sencilla:#sentinel <metodo> [-t <ip>] <opciones>

Como metodo de uso podemos especificar uno o varios de los siguentes:

-a: test ARP

-d: test DND

-i: ICMP test ping de latencia

-e: ICMP test etherpingt

Las opciones mas comunes se detallan a continuacion:

Jose Antonio Escartın Vigo, Junio 2005.

Page 266: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

248 Servidor Linux para conexiones seguras de una LAN a Internet

-f <nombre>: Donde nombre representa, un fichero o una IP

-c <x.x.x>: Clase C a monitorizar

-n <n\’umero de paquetes a enviar>

-I <dispositivo>

Y estos serıan algunos posibles ejemplos de uso de Sentinel:

Test ARP en el host 192.168.0.2

#sentinel -a -t 192.168.0.2

Test DNS en el host 192.168.0.2

#sentinel -d -f 1.1.1.1 -t 192.168.0.2

Escanear una red de Clase C (192.168.0) usando el test ARP, DNS y test etherping

#sentinel -aed -c 192.168.0

13.12. Chkrootkit: Detector de rootkits

Chkrootkit es un shell script que busca en nuestro sistema binarios modificados por RootKits, estosson usados por los piratas informaticos para comprometer sistemas.

Para instalarlo solo hay que realizar un apt:#apt-get install chkrootkit

Los piratas informaticos, suelen camuflar o sustituir algunos ficheros binarios del sistema por sus pro-pios ficheros, algunos de los ejemplos tıpicos son: login, su, telnet, netstat, ifconfig, ls, find, du, df, libc,sync, asi como los binarios listados en /etc/inetd.conf.

Este programa nos ayuda a verificar que tenemos la version original de estos ficheros, en la ultimaversion disponible detecta troyanos en los siguientes ficheros:

aliens, asp, bindshell, lkm, rexedcs, sniffer, wted, z2, amd, basename, biff, chfn, chsh, cron, date, du,dirname, echo, egrep, env, find, fingerd, gpm, grep, hdparm, su, ifconfig, inetd, inetdconf, identd, killall,login, ls, mail, mingetty, netstat, named, passwd, pidof, pop2, pop3, ps, pstree, rpcinfo, rlogind, rshd, slo-gin, sendmail, sshd, syslogd, tar, tcpd, top, telnetd, timed, traceroute, write.

Tambien es capaz de detectar los siguientes RootKits:Solaris rootkit, FreeBSD rootkit, lrk3, lrk4, lrk5, lrk6, t0rn (and t0rn v8), some lrk variants, Ambient’s

Rootkit for Linux (ARK), Ramen Worm, rh[67]-shaper, RSHA, Romanian rootkit, RK17, Lion Worm,Adore Worm, LPD Worm, kenny-rk, LKM, ShitC Worm, Omega Worm, Wormkit Worm, dsc-rootkit.

Al ser un shell scrip una vez compilados los programas (chkwtmp, chklastlog, chkproc, chkwtmp, ifpro-misc) utilizaran el chkrootkit para realizar parte de su trabajo.

En el sistema que he utilizado para el proyecto provoca la siguiente salida:

# chkrootkit

ROOTDIR is ‘/’

Checking ‘amd’... not found

Checking ‘basename’... not infected

Checking ‘biff’... not infected

Checking ‘chfn’... not infected

Checking ‘chsh’... not infected

Checking ‘cron’... not infected

Checking ‘date’... not infected

Checking ‘du’... not infected

Checking ‘dirname’... not infected

Checking ‘echo’... not infected

Jose Antonio Escartın Vigo, Junio 2005.

Page 267: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 13. Sistemas de deteccion de intrusiones 249

Checking ‘egrep’... not infected

Checking ‘env’... not infected

Checking ‘find’... not infected

Checking ‘fingerd’... not found

Checking ‘gpm’... not found

Checking ‘grep’... not infected

Checking ‘hdparm’... not infected

Checking ‘su’... not infected

Checking ‘ifconfig’... not infected

Checking ‘inetd’... not infected

Checking ‘inetdconf’... not infected

Checking ‘identd’... not found

Checking ‘init’... not infected

Checking ‘killall’... not infected

Checking ‘ldsopreload’... not infected

Checking ‘login’... not infected

Checking ‘ls’... not infected

Checking ‘lsof’... not infected

Checking ‘mail’... not infected

Checking ‘mingetty’... not found

Checking ‘netstat’... not infected

Checking ‘named’... not found

Checking ‘passwd’... not infected

Checking ‘pidof’... not infected

Checking ‘pop2’... not found

Checking ‘pop3’... not found

Checking ‘ps’... not infected

Checking ‘pstree’... not infected

Checking ‘rpcinfo’... not infected

Checking ‘rlogind’... not found

Checking ‘rshd’... not found

Checking ‘slogin’... not infected

Checking ‘sendmail’... not infected

Checking ‘sshd’... not infected

Checking ‘syslogd’... not infected

Checking ‘tar’... not infected

Checking ‘tcpd’... not infected

Checking ‘tcpdump’... not infected

Checking ‘top’... not infected

Checking ‘telnetd’... not found

Checking ‘timed’... not found

Checking ‘traceroute’... not infected

Checking ‘vdir’... not infected

Checking ‘w’... not infected

Checking ‘write’... not infected

Checking ‘aliens’... no suspect files

Searching for sniffer’s logs, it may take a while... nothing found

Searching for HiDrootkit’s default dir... nothing found

Searching for t0rn’s default files and dirs... nothing found

Searching for t0rn’s v8 defaults... nothing found

Searching for Lion Worm default files and dirs... nothing found

Searching for RSHA’s default files and dir... nothing found

Searching for RH-Sharpe’s default files... nothing found

Searching for Ambient’s rootkit (ark) default files and dirs... nothing found

Searching for suspicious files and dirs, it may take a while... /usr/lib/mozilla-firefox/.autoreg /usr/lib/kaffe/.system

Searching for LPD Worm files and dirs... nothing found

Searching for Ramen Worm files and dirs... nothing found

Searching for Maniac files and dirs... nothing found

Searching for RK17 files and dirs... nothing found

Searching for Ducoci rootkit... nothing found

Searching for Adore Worm... nothing found

Searching for ShitC Worm... nothing found

Searching for Omega Worm... nothing found

Searching for Sadmind/IIS Worm... nothing found

Searching for MonKit... nothing found

Searching for Showtee... nothing found

Searching for OpticKit... nothing found

Searching for T.R.K... nothing found

Searching for Mithra... nothing found

Searching for OBSD rk v1... nothing found

Searching for LOC rootkit... nothing found

Searching for Romanian rootkit... nothing found

Searching for Suckit rootkit... nothing found

Searching for Volc rootkit... nothing found

Searching for Gold2 rootkit... nothing found

Searching for TC2 Worm default files and dirs... nothing found

Searching for Anonoying rootkit default files and dirs... nothing found

Searching for ZK rootkit default files and dirs... nothing found

Searching for ShKit rootkit default files and dirs... nothing found

Searching for AjaKit rootkit default files and dirs... nothing found

Searching for zaRwT rootkit default files and dirs... nothing found

Searching for Madalin rootkit default files... nothing found

Searching for anomalies in shell history files... nothing found

Checking ‘asp’... not infected

Checking ‘bindshell’... not infected

Checking ‘lkm’... You have 2 process hidden for readdir command

You have 2 process hidden for ps command

Warning: Possible LKM Trojan installed

Checking ‘rexedcs’... not found

Checking ‘sniffer’... lo: not promisc and no packet sniffer sockets

eth0: PACKET SNIFFER(/sbin/dhclient[3930], /usr/sbin/snort[4577])

Checking ‘w55808’... not infected

Checking ‘wted’... nothing deleted

Checking ‘scalper’... not infected

Checking ‘slapper’... not infected

Checking ‘z2’... nothing deleted

Vaya!, parece que ha detectado un archivo sospechoso, un posible troyano y que Snort esta instalado.

Jose Antonio Escartın Vigo, Junio 2005.

Page 268: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

250 Servidor Linux para conexiones seguras de una LAN a Internet

13.13. HoneyPots: Entretener a los atacantes

Informacion obtenida de la web: http://www.xombra.com

El papel de la tecnologıa del sistema de deteccion de intrusos basado en senuelos (o “honeypots”)esta evolucionando. Los honeypots, que alguna vez fueron utilizados, principalmente por los investiga-dores, como una forma de atraer a los intrusos a un sistema de redes para estudiar sus movimientos ycomportamiento, estan adquiriendo una importancia cada vez mayor en la seguridad empresarial. En efec-to, al brindar deteccion temprana de actividad no autorizada en las redes, los honeypots son ahora masutiles que nunca para los profesionales de la seguridad informatica. Aquı se analiza el funcionamiento delos honeypots y su tecnologıa, que se esta convirtiendo en el componente clave del sistema de capas deproteccion contra intrusos.

Los honeypots son una emocionante tecnologıa nueva, con un enorme potencial para la comunidadinformatica. Los primeros conceptos fueron introducidos primeramente por varios iconos en la seguridadinformatica, especialmente por Cliff Stoll en el libro “The Cuckoo’s Egg” y el trabajo de Bill Cheswick“An Evening with Berferd”. Desde entonces, han estado en una continua evolucion, convirtiendose en lapoderosa herramienta de seguridad que es hoy en dıa. En esta seccion se detalla exactamente: que son loshoneypots, sus ventajas y desventajas, y su importancia en la seguridad.

Los Honeypots (o tarros de miel) “Consisten en activar un servidor y llenarlo de archivos tentadores,hacer que sea difıcil, pero no imposible penetrarlo y sentarse a esperar que aparezcan los intrusos. Los ho-neynets (conjuntos de honeypots) dan a los crackers un gran espacio para recorrer. Presentan obstaculosque poseen el nivel de complejidad suficiente para atraerlos, pero sin irse al extremo para no desalentar-los. . . Juegan con los archivos y conversan animadamente entre ellos sobre todos los fascinantes programasque encuentran, mientras el personal de seguridad observa con deleite cada movimiento que hacen. Fran-camente, siento una combinacion de sentimientos con respecto a espiar a la gente, aunque no sean buenaspersonas”. Dan Adams.

Los honeynets son conjuntos de Honeypots, compuestos por servicios reales, ası se abarca mas informa-cion para el estudio. Hacen mas fascinante el ataque al intruso, lo cual incrementa el numero de ataques.La funcion principal a parte de la de estudiar las herramientas de ataque, es la de desviar la atencion delatacante de la red real del sistema y la de capturar nuevos virus o gusanos para su posterior analisis. Unade las multiples aplicaciones que tiene es la de poder formar perfiles de atacantes y ataques.

Son sistemas que deliberadamente se decide exponerlos a ser atacados o comprometidos. Estos, nosolucionan ningun problema de seguridad, son una herramienta que nos sirve para conocer las estrategiasque se emplean a la hora de vulnerar un sistema. Son una herramienta muy util a la hora de conocerde forma precisa los ataques que se realizan contra la plataforma de trabajo que hemos elegido, o bien,las plataformas configuradas de la misma forma, con el claro objetivo de acceder a informacion sensible.Ası mismo nos permiten conocer nuevas vulnerabilidades y riesgos de los distintos sistemas operativos,entornos y programas, los cuales aun no se encuentren debidamente documentados.

En general, existen dos tipos de honeypots:

Honeypots para la investigacion: Gran parte de la atencion actual se centra en este tipo. Los ho-neypots para la investigacion, que se utilizan para recolectar informacion sobre las acciones de losintrusos. El proyecto Honeynet1, por ejemplo, es una organizacion para la investigacion sobre segu-ridad voluntaria, sin animo de lucro que utiliza los honeypots para recolectar informacion sobre lasamenazas del ciberespacio.

Honeypots para la produccion: Son los que se utilizan para proteger a las organizaciones. Sin embargo,se les concede cada vez mas importancia debido a las herramientas de deteccion que pueden brindary por la forma como pueden complementar la proteccion en la red y en los hosts.

1Proyecto Honeynet en castellano: http://his.sourceforge.net/trad/honeynet/

Jose Antonio Escartın Vigo, Junio 2005.

Page 269: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 13. Sistemas de deteccion de intrusiones 251

13.13.1. ¿Como funcionan?

Los honeypots tambien se pueden describir como de alta o baja interaccion, distincion que se basa enel nivel de actividad que permiten al atacante. Un sistema de baja interaccion ofrece actividad limitada,la mayorıa de las veces emula los servicios y sistemas operativos. Las principales ventajas de los honeypotsde baja interaccion es que son relativamente faciles de instalar y mantener; tambien implican un riesgomınimo porque el atacante nunca tiene acceso a un sistema operativo real para perjudicar a otros sistemas.

Honeyd (vease seccion 13.13.7) es un ejemplo de honeypot de baja interaccion, cuya funcion principales monitorear el espacio de direcciones IP no utilizado. Cuando Honeyd detecta un intento de conectarsea un sistema que no existe, intercepta la conexion, interactua con el atacante fingiendo ser la vıctima paracaptar y registrar al ataque.

Por el contrario, los honeypots de alta interaccion utilizan sistemas operativos reales y aplicaciones rea-les, no emulan nada. Al ofrecerles a los atacantes sistemas reales para que interactuen, se puede aprendermucho sobre su comportamiento. Los honeypots de alta interaccion no imaginan como se comportara unatacante y proporcionan un ambiente que rastrea todas las actividades, lo que permite conocer un com-portamiento al que de otra manera no tendrıan acceso.

Los sistemas de alta interaccion tambien son flexibles y los profesionales de la seguridad informaticapueden implementarlos en la medida que quieran. Ademas, este tipo de honeypot proporciona un objetivomas realista, capaz de detectar atacantes de mayor calibre. Pueden ser complejos de instalar, sin embargo,requieren que se implementen tecnologıas adicionales para evitar que los atacantes los utilicen para lanzarataques a otros sistemas.

13.13.2. Ventajas y desventajas

Los honeypots son un concepto increıblemente simple, las cuales ofrecen una fortaleza muy poderosa.Podemos observar sus ventajas en los siguientes puntos:

Obtienen un conjunto de datos pequenos, pero de gran importancia: Los Honeypots recolectanpequenas cantidades de informacion. En lugar de logear 1 Gb por dıa, logean solo 1 Mb de datos pordıa. En vez de generar 10.000 alertas por dıa, pueden generar solo 10 alertas por dıa. Recordemosque los honeypots solo capturan actividad sospechosa ya que cualquier interaccion con un honeypotes muy probablemente actividad no autorizada o una actividad maliciosa. Propiamente dicho, loshoneypots reducen el “ruido” recogiendo solo los datos indispensables y de gran valor, los producidosunicamente por “chicos malos”. Esto significa que es mucho mas facil (y barato) de analizar los datosque un honeypot recoge.

Nuevas herramientas y tacticas: Los honeypots son disenados para capturar cualquier cosa queinteractua con ellos, incluyendo herramientas o tacticas nunca vistas.

Mınimos recursos: Los honeypots requieren mınimos recursos, solo capturan actividad irregular. Estosignifica que un viejo Pentium con 128 mb de RAM puede manejar facilmente una entera red declase B entera.

Encriptacion en IPv6: A diferencia de la mayorıa de las tecnologıas para la seguridad, como lossistemas IDS, honeypots trabajan bien en entornos encriptados como IPv6. No importa lo que los“chicos malos” lancen hacia el honeypot, el honeypot lo detectara y lo capturara.

Informacion: Los honeypots pueden recoger informacion “en profundidad” como pocos, si es queexisten tecnologıas que se le parezcan.

Simplicidad: Finalmente, los honeypots son conceptualmente simples. No hay por que desarrollaralgoritmos raros, ni complejas tablas que mantener, o firmas que actualizar. Mientras mas simplesea la tecnologıa, menos posibilidades de errores o desconfiguraciones habra.

Jose Antonio Escartın Vigo, Junio 2005.

Page 270: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

252 Servidor Linux para conexiones seguras de una LAN a Internet

Como en cualquier otra tecnologıa, los honeypots tambien tienen su debilidad. Esto es debido a queno reemplaza a la actual tecnologıa, sino que trabaja con las existentes.

Vision Limitada: Los honeypots pueden solo rastrear y capturar actividad que interactuen directa-mente con ellos. Los Honeypots no podran capturar ataques a otros sistemas vecinos, al menos queel atacante o la amenaza interactue con el honeypot al mismo tiempo.

Riesgo: Todas las tecnologıas de seguridad tienen un riesgo. Los firewalls tienen el riesgo de que seanpenetrados, la encriptacion tiene el riesgo de que los algoritmos sean rotos, los sensores IDS tienen elriesgo de que fallen al detectar ataques. Los Honeypots no son diferentes, tienen un riesgo tambien.Especıficamente, los honeypots tienen el riesgo de que sean apoderados y controlados por los “chicosmalos” y que lo utilicen para danar otros sistemas. El riesgo es variado para los diferentes honeypots.Dependiendo del tipo de honeypots puede haber un riesgo, equivalente a un fallo del sensor IDS,mientras que en otros honeypots puede que haya que enfrentarse a una situacion crıtica.

13.13.3. Utilidades de honeypots

Cuando son utilizados con propositos productivos, los honeypots estan protegiendo la organizacion.En este mundo se incluye, prevencion, deteccion y respuesta a un ataque.

Cuando son utilizados con propositos de investigacion, los honeypots son utilizados para recolectarinformacion. La importancia de esta informacion depende segun las organizaciones. Algunas organizacio-nes querran estudiar la tendencia de las actividades intrusivas, mientras otras estaran interesadas en laprediccion y prevencion anticipada, o las fuerzas legales.

En general, honeypots de baja interaccion son utilizados con propositos productivos, mientras ho-neypots de alta interaccion son utilizados con propositos de investigacion. Sin embargo, los dos tipos dehoneypots pueden funcionar para ambos propositos.

Los honeypots pueden ayudar a prevenir ataques en varias formas. El primero es contra ataques au-tomatizados, como los gusanos. Estos ataques son basados en herramientas que aleatoriamente escaneanredes enteras buscando sistemas vulnerables. Si un sistema vulnerable es encontrado, estas herramientasautomatizadas atacaran y tomaran el sistema (con gusanos que se replican en la vıctima). Uno de lasmetodos para protejer de tales ataques es bajando la velocidad de su escaneo y potencialmente detenerlos.Llamados “sticky honeypots” (Tarros de miel “pegajosos”), estas soluciones monitorean el espacio IP noutilizado. Cuando los sistemas son escaneados, estos honeypots interactuan con el y disminuyen la velo-cidad del ataque. Hacen esto utilizando una variedad de trucos TCP, como poniendo el “Window size” acero o poniendo al atacante en un estado de espera continua. Esto es excelente para bajar la velocidad opara prevenir la diseminacion de gusanos que han penetrado en la red interna. Un ejemplo de un stickyhoneypot es: LaBrea Tarpit. Los “honeypots pegajosos” son mas comunes encontrarlos entre soluciones debaja interaccion (hasta podrıa llamarsele soluciones “no interactivas”, ya que reducen tanto la velocidadque hacen “gatear” al atacante. Los Honeypots pueden tambien protejer nuestra organizacion de intrusoshumanos. Este concepto se conoce como engano o disuacion. La idea es confundir al atacante, hacerleperder el tiempo y recursos interactuando con honeypots. Mientras tanto, detectaremos la actividad delatacante y tendremos tiempo para reaccionar y detener el ataque. Hasta se puede dar un paso mas alla: siun atacante sabe que nuestra organizacion esta utilizando honeypots pero no sabe cuales son los sistemashoneypots y cuales son sistemas legıtimos, quizas tenga miedo de ser capturado por honeypots y decidano atacarlo. Por lo tanto, honeypots disuaden al atacante. Un ejemplo de honeypot disenado para haceresto, es el Deception Toolkit , un honeypot de baja interaccion.

La segunda forma por la cual honeypots pueden ayudar a protejer una organizacion es por medio dela deteccion. La deteccion es crıtica, su proposito es la identificacion de fallos para para la prevencion. Noimporta cuan segura sea nuestra organizacion, siempre habran fallos si los hombres estan involucrados enel proceso... Detectando al atacante, podran rapidamente reaccionar ante ellos, deteniendolos, o mitigandoel dano que hicieron. Tradicionalmente, la deteccion ha sido extremadamente dificil de hacer. Tecnologıascomo sensores IDS y sistemas de logueo han sido inefectivos por diversas razones: Generan muchos datos,

Jose Antonio Escartın Vigo, Junio 2005.

Page 271: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 13. Sistemas de deteccion de intrusiones 253

grandes porcentajes de falsos positivos, inhabilidad de detectar nuevos ataques, y la inhabilidad de tra-bajar en forma encriptada o en entornos IPv6. Los Honeypots son excelentes en deteccion, solventandomuchos de los problemas de la deteccion clasica. Los honeypots reducen los falsos positivos, capturandopequenas cantidades de datos de gran importancia, capturan ataques desconocidos como nuevos exploitso shellcodes polimorficos, y trabajan en forma encriptada o en entornos IPv6. En general, honeypots debaja interaccion son la mejor solucion para la deteccion y tienen un riesgo limitado.

La forma tercera y final por la cual honeypots nos pueden ayudar a protejer una organizacion es en larespuesta. Una vez que una organizacion detecta un fallo, ¿como debe responder? Esto es a menudo unode los grandes retos a los que nos debemos enfrentar. Hay por lo general poca informacion acerca de quienes el atacante, como ingreso al sistema o cuanto dano hizo. En estas situaciones, la informacion detalladaacerca a las actividades del atacante son cruciales.

Hay dos problemas que afectan a la respuesta al incidente: el primero, a menudo los sistemas com-prometidos no pueden ser desconectados de la red para ser analizados. Sistemas de produccion, como elservidor de correo de una organizacion, son tan crıticos que aunque esten compremetidos los administra-dores no pueden desconectarlos y hacer un analisis forense como corresponde. Estan limitados a analizarel sistema encendido mientras sigue proveyendo sus servicios productivos. Esto merma la habilidad paraanalizar que sucedio, cuanto dano hizo el atacante, e incluso si el atacante accedio a otros sistemas de lared. El otro problema es que incluso en el caso de que este desconectado, hay tanta polucion de datos quees muy difıcil determinar que es lo que hizo el “chico malo”. Con polucion de datos me refiero que haytanta actividad (logeo de usuarios, lecturas de cuentas de mail, archivos escritos a bases de datos, etc. . . )que puede ser difıcil determinar cual es la actividad normal del dıa a dıa y que es lo que hizo el atacante.Los Honeypots pueden ayudar a solventar ambos problemas. Honeypots son un excelente herramienta deincidencias ya que pueden rapidamente y facilmente ser sacados de la red para un analisis forense comple-to, sin el impacto en las operaciones empresariales de todos los dıas. Recuerden que la unica actividad queguardan los honeypots son las relacionadas con el atacante, ya que no las utilizan nadie (son senuelos),excepto los atacantes. La importancia de los honeypots aquı es la rapida entrega de la informacion, ana-lizada en profundidad, para responder rapida y eficientemente a un incidente. En general, los honeypotsde alta interaccion son la mejor solucion para la respuesta. Para reaccionar ante un intruso, se necesitaconocimientos en profundidad sobre que hicieron, como ingresaron, y que herramientas utilizaron.

13.13.4. Tipos de honeypots

Los honeypots vienen con diversidad de colores y gustos, haciendo difıcil su comprension. Para ayudar-nos a entender mejor a los honeypots y a todos los diferentes tipos, dividiremos a dos categorıas generales:honeypots de “baja interaccion” y de “alta interaccion”. Estas categorıas nos ayudan a entender conque tipo de honeypots estamos trabajando, sus fortalezas y debilidades. La interaccion define el nivelde actividad que un honeypot le permite tener un atacante. Los honeypots de baja interaccion tienenuna interaccion limitada, normalmente trabajan unicamente emulando servicios y sistemas operativos. Laactividad del atacante se encuentra limitada al nivel de emulacion del honeypot. Por ejemplo, un servicioFTP emulado escuchando en el puerto 21 probablemente estara emulando un login FTP o probablementesuportara algunos comandos FTP adicionales. Las ventajas de un honeypot de baja interaccion es susimplicidad, estos honeypots tienden a ser faciles de utilizar y mantener con un riesgo mınimo.

Por lo general es instalar un software, elegir el sistema operativo y el servicio a emular y monitorear,y dejar que el programa camine por sı solo desde ahı . . . Este proceso cercano al “plug and play” haceque la utilizacion de estos sea muy facil. Incluso, los servicios emulados mitigan el riesgo conteniendo laactividad del intruso, que nunca tiene acceso al sistema operativo real donde puede atacar o danar otrossistemas. Las principales desventajas de los honeypots de baja interaccion es que registran unicamenteinformacion limitada y son disenados para capturar actividad prevista, los servicios emulados solo puedenllegar hasta ahı. Tambien es facil para un atacante detectar un honeypot de baja interaccion, sin importarcuan buena sea la emulacion. Un intruso habil puede, con el debido tiempo, detectar su presencia. Ejemplosde honeypots de baja interaccion se incluyen: Specter, Honeyd, y KFSensor.

Los honeypots de alta interaccion son diferentes, estos generalmente son soluciones complejas ya queimplica la utilizacion de sistemas operativos y aplicaciones reales. Nada es emulado, le damos a los in-

Jose Antonio Escartın Vigo, Junio 2005.

Page 272: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

254 Servidor Linux para conexiones seguras de una LAN a Internet

trusos algo real. Si queremos un honeypot Linux corriendo un servidor FTP, tendremos que construir unverdadero sistema Linux y montar un verdadero servidor FTP. Las ventajas de dicha solucion son dos:Primero, usted capturaramos grandes cantidades de informacion dandoles a los intrusos algo sistemasreales con la cual interactuar, podremos aprender la completa extension de sus actividades, cualquier cosadesde rootkits nuevos hasta sesiones internacionales de IRC. La segunda ventaja es que los honeypots dealta interaccion no asumen nada, acerca del posible comportamiento que tendra el atacante, en lugar deeso proveen un entorno abierto que captura todas las actividades realizadas. Esto permite a las solucio-nes de alta interaccion conocer comportamientos no esperados. Un excelente ejemplo de esto es como unhoneypot capturo comandos “back door” codificados en un protocolo IP no estandard (especıficamenteprotocolo IP 11, Network Voice Protocol). No obstante, esto tambien incrementa el riesgo de los honey-pots ya que los atacantes pueden utilizar estos sistemas operativos reales para lanzar ataques a sistemasinternos que no forman parte de los honeypots. En consecuencia, se requiere la implementacion de unatecnologıa adicional que prevenga al atacante de danar otros sistemas que no son honeypots. En general,honeypots de alta interaccion pueden hacer todo lo que uno de baja interaccion puede hacer y muchomas, pero pueden ser mas complejos de utilizar y mantener. Ejemplos de honeypots de alta interaccionson Symantec Decoy Server y los Honeynets.

13.13.5. Otras caracterısticas

Algunos honeypots, como Honeyd, no solo emulan servicios sino que tambien emulan el Sistema Ope-rativo. En otras palabras, Honeyd puede aparentar ser un router Cisco, un webserver WinXP o un servidorDNS Linux. Existen varias ventajas al emular diferentes sistemas operativos. Primero, el honeypot puedeencajar mejor con la red existente, si el honeypot tiene la misma apariencia y comportamiento que lascomputadoras productivas. Segundo, se puede apuntar a atacantes especıficos proveyendoles sistemas yservicios sobre los que queremos aprender. Hay dos elementos en sistemas operativos emulados:

El primero es el servicio emulado, cuando un atacante se conecta a ese servicio, este se comporta comosi fuera legitimo y aparenta tener un sistema operativo determinado. Por ejemplo, si tiene un servicio emu-lando un webserver y quiere que su honeypot aparente ser un Win2000 servidor, entonces debera emularel comportamiento de un IIS webserver, y para el caso de un Linux, deberıa emular el comportamientode un webserver Apache. La mayorıa de los honeypots emulan el SO de esta manera. Algunos honeypotssofisticados llevan la emulacion un paso adelante (como lo hace el Honeyd): No solo emulan en el nivel deservicio, sino que en el nivel del stack del IP. Si alguien realiza active fingerprinting para determinar el SOde su honeypot, muchos honeypots responderan al nivel del IP Stack del SO real en donde este instaladoel honeypot. Honeyd falsea la respuesta, emulando no solo el servicio sino emulando tambien el stack delIP, comportandose como si fuera realmente otro sistema operativo. El nivel de emulacion y sofisticaciondepende de la tecnologıa del honeypot que elijamos.

Esto es un resumen de algunos de los HoneyPots que podemos utilizar:

1. De alta interaccion: No hay emulacion, suministra sistemas operativos y servicios reales.

Honeynets

Symantec Decoy Server

2. De baja interaccion: Emula sistema operativos y servicios.

Honeyd

Specter

KFSensor

Deception Toolkit

Jose Antonio Escartın Vigo, Junio 2005.

Page 273: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 13. Sistemas de deteccion de intrusiones 255

13.13.6. Honeynets: alta interaccion

Los Honeynets son un ejemplo ideal de honeypots de alta interaccion. Honeynets no son un producto,no son una solucion software que se instala en una computadora. En lugar de eso, los Honeynets son unaarquitectura, una red entera de maquinas disenados para ser atacadas. La idea es tener una arquitecturaque sea una red altamente controlada, un lugar donde toda actividad sea controlada y capturada. Enesta red nosotros ponemos a nuestras victimas en forma intencionada, computadoras reales corriendoaplicaciones reales. Los “chicos malos” encuentran, atacan, rompen estos sistemas en su propia iniciativa.Cuando hacen esto, ellos no saben que estan en un Honeynet. Toda su actividad, desde sesiones encriptadasSSH hasta correos y archivos subidos son capturados sin que lo noten. Esto es realizado introducientomodulos en el kernel de los “sistemas vıctima” que capturan toda las acciones de los atacantes. Al mismotiempo, el Honeynet controla la actividad del atacante. Los Honeynets hacen esto mediante la utilizacion deun gateway Honeywall. Este gateway permite el trafico de entrada a los “sistemas vıctima”, pero controlael trafico de salida usando tecnologıas de prevencion contra instrusos. Esto le da al atacante la flexibilidadde interactuar con las sistemas vıctimas, pero previene al atacante de danar otros sistemas que no formanparte del Honeynet.

13.13.7. Honeyd: baja interaccion

Honeyd es un honeypot de baja interaccion. Desarrollado por Niels Provos, Honeyd es OpenSourcey esta disenado para correr principalmente en sistemas Unix/Linux (aunque fue portado a Windows).Honeyd trabaja con el concepto del monitoreo del espacio IP no utilizado. Cuando observa un intento deconexion a un IP no utilizado, intercepta la conexion e interactua con el atacante, pretendiendo ser lavıctima. Por defecto, Honeyd detecta y logea cualquier conexion a puertos UDP o TCP. Como si fuerapoco, se pueden configurar los servicios emulados para que monitoreen puertos especıficos, como un ser-vidor FTP emulado, monitoreando el puerto TCP 21. Cuando un atacante conecta el servicio emulado,el honeypot no solo detecta y logea la actividad, sino que captura tambien toda la actividad del atacantecon el servicio emulado. En caso del servidor FTP emulado podemos potencialmente capturar el logins ypasswords, los comandos que introduce y quizas tambien descubrir lo que esta buscando o su identidad.Todo depende del nivel de emulacion del honeypot. La mayorıa de los servicios emulados trabajan de lamisma manera. Ellos esperan un tipo especıfico de comportamiento, y estan programados para reaccionaren una forma predeterminada. La limitacion esta en que si el atacante hace algo que la emulacion no tieneprevisto, entonces no saben como responder. La mayorıa de los honeypots de baja interaccion, incluyendoHoneyd, simplemente generara un mensaje de error. Podemos ver cuales son los comandos que soporta elservidor FTP emulado de Honeyd viendo el codigo fuente.

En nuestra instalacion Debian utilizaremos este paquete honeyd, ya que tiene licencia GPL y es gra-tuito. Para instalarlo ejecutamos el siguiente apt: #apt-get install honeyd honeyd-common

Tambien podemos encontrar un “kit de herramientas Honeyd para Linux” (Honeyd Linux Toolkit).

Mientras los posibles atacantes se entretienen intentando acceder a servicios que no existen, los IDSde nuestro sistema los detectaran y podremos tomar acciones preventivas contra sus IP, como filtrarlas enel firewall.

Una de sus grandes caracterısticas es que podemos asignar a cada una de nuestros dispositivos virtualesel SO que queramos. Esta personalidad tambien se especifica con un fichero normal de firmas de SO deNmap, permitiendonos convertirnos en el SO que queramos. Si ejecutamos la configuracion que viene comoejemplo, veremos de lo que es capaz.

Despues de instalarlo, hay un fichero que se llama config.localhost con un monton de dispositivos con-figurados. Lo podemos encontrar en: /usr/share/doc/honeyd/examples/config.localhost

Jose Antonio Escartın Vigo, Junio 2005.

Page 274: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

256 Servidor Linux para conexiones seguras de una LAN a Internet

Si observamos la definicion del dispositivo 10.0.0.1 de ejemplo, veremos lo siguiente:

#cat /usr/share/doc/honeyd/examples/config.localhost|more...route entry 10.0.0.1route 10.0.0.1 link 10.0.0.0/24...create routeroneset routerone personality "Cisco 7206 running IOS 11.1(24)"set routerone default tcp action resetadd routerone tcp port 23 "router-telnet.pl"...bind 10.0.0.1 routerone...

La explicacion a grandes rasgos es que tenemos un dispositivo cuya direccion IP es 10.0.0.1, que secomportara como un Cisco 7206 ejecutando una IOS 11.1(24), reseteara todas las conexiones TCP menoslas que vayan al puerto 23, ya que entonces el script router-telnet.pl (una emulacion del demonio telnet)sera ejecutado.

Ahora ejecutemos Nmap para comprobar el SO que se ejecuta en el dispositivo virtual que acabamosde crear:

# nmap (V. 3.10ALPHA4) scan initiated: nmap -v -sS -oN nmap4.Warning: OS detection will be MUCH less reliable because we did not find at leastInteresting ports on 10.0.0.1:(The 1604 ports scanned but not shown below are in state: filtered)Port State Service23/tcp open telnetRemote OS guesses: Cisco 7206 running IOS 11.1(24), Cisco 7206 (IOS 11.1(17)TCP Sequence Prediction: Class=random positive incrementsDifficulty=26314 (Worthy challenge)IPID Sequence Generation: Incremental# Nmap run completed -- 1 IP address (1 host up) scanned in 178.847 s

Cuando recibimos los paquetes de Nmap, honeyd responde con la personalidad que hemos escogido.

Jose Antonio Escartın Vigo, Junio 2005.

Page 275: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 14

Redes inalambricas

En el proyecto he habilitado una red wifi, pero hoy los administradores de sistemas y conocen lospeligros que esto entrana, seran muy reacios a implantar este tipo de redes, pero es muy probable que lascircunstancias lo obliguen a implantar este tipo de tecnologıa.

Aunque no tengamos red inalambrica, debemos auditar la red frecuentemente y asegurarnos que nadieesta ejecutando un punto de acceso ilegal.

Hasta hace muy poco los administradores de red solo tenıan que preocuparse de asegurar los bienesde la tecnologıa de informacion fısicos y fijos, incluyendo los servidores, los enrutadores y los cortafuegos:todo lo que configura sus redes de lınea de cable. Sin embargo, con el advenimiento del equipamiento deredes inalambricas existe todo un espectro nuevo de problemas seguridad que tratar.

Esta nueva tecnologıa ha ayudado a rebajar el coste del despliegue de redes, ha traıdo acceso a sitiosa los que no se podıa acceder antes y ha convertido el termino “informatica movil” en una realidad.Ha cambiado drasticamente el perımetro de seguridad de redes de las empresas de todos los tamanos.Tradicionalmente, las redes corporativas se conectaban al mundo exterior en solo unos pocos lugares. Ası,los administradores de redes se podıan concentrar en proteger estos puntos de acceso limitados. Podıancolocar cortafuegos o otras defensas en esos puntos de contencion cruciales. El interior de la red se tratabacomo de confianza porque no habıa forma de introducirse que no fuese a traves de los puntos protegidos.

Ahora con una LAN inalambrica desplegada, nuestro perımetro de seguridad se convierte literalmenteen el aire que nos rodea. Los atacantes sin cables pueden provenir de cualquier direccion. Si tenemosdesplegado un acceso sin cables, cualquiera con una tarjeta de unos 50e puede escuchar potencialmenteel cable de nuestra red sin poner un pie en nuestro local. Si estamos utilizando la tecnologıa sin cablespara parte de nuestra red, nuestras amenazas de seguridad crecen considerablemente.

Antes de asegurar correctamente nuestra red inalambrica, tenemos que saber como funcionan las redesdel area local inalambrica y cuales son sus puntos debiles.

Los fabricantes del equipamiento LAN inalambrico han reducido tanto los precios que ahora es unaalternativa muy viable para las redes domesticas. En lugar de cablear nuestra casa para conectar nuestrosPCs a Ethernet, podemos comprar un punto de acceso (AP, Access Point) y un par de tarjetas inalambricasy utilizar Internet desde cualquier habitacion de nuestra casa (o fuera de ella). El amplio despliegue de latecnologıa LAN inalambrica ha llegado definitivamente para quedarse y tarde o temprano tendremos quetratar con ella.

14.1. Estandar 802.11 (Wifi)

El protocolo mas popular para la tecnologıa LAN inalambrica es actualmente la serie 802.11, conocidocomunmente como wifi. Los estandares inalambricos de 802.11 son basicamente una extension del protocoloEthernet, es la razon por la que funciona tambien con las redes Ethernet con cables. Utiliza las frecuenciasde 2.4 GHz para 802.11b y 802.11g y 5 GHz para 802.11a para senales de transmision de datos. Estasfrecuencias son del espectro de uso general, por lo que no tendremos que pedir ninguna licencia parautilizarlas. El inconveniente es que otros dispositivos pueden utilizar tambien estas longitudes de onda.Algunos telefonos inalambricos y microondas se encuentran en la banda de los 2.4 GHz, por lo que si

Page 276: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

258 Servidor Linux para conexiones seguras de una LAN a Internet

tenemos este tipo de dispositivos u otras redes wifi en nuestro area podemos encontrarnos con algunasinterferencias.

Esta longitud de onda es perfecta para el corto rango deseado para wifi. Sus parametros de disenopermiten aproximadamente unos 45,72 metros interiores y unos 244 metros exteriores en condiciones nor-males. Sin embargo, con una antena de alta potencia y alcance, podemos tener hasta un rango de 32,19Km., algo atractivo para las comunicaciones de oficina a oficina dentro de una ciudad. El cuadro 14.1incluye una descripcion de los cuatro tipos de estandares inalambricos 802.11 que han aparecido.

Cuadro 14.1: Estandares de 802.11 inalambricosEstandar Descripcion802.11a Esta version del estandar utiliza una logitud de onda de 5 GHz, un espectro menos aba-

rrotado y menos propenso a tener problemas de interferencias. El potencial teorico paraesta tecnologıa es de 54 Mps, una gran cantidad de ancho de banda, pero la mayorıa delas aplicaciones en el sector no se acercan a esa cantidad.

802.11b Utiliza una longitud de onda de 2.4 GHz, como Bluetooth y otros dispositivos. Ofrece hasta11 Mps de ancho de banda, aunque las aplicaciones practicas por debajo de las condicionesoptimas trabajan a la mitad de dicha cantidad.

802.11g Actualmente es el estandar inalambrico mas conocido. Proporciona hasta 54 Mps de anchode banda, pero en el mismo espectro de 2.4 GHz que 11b. Tambien es compatible haciaatras con el hardware de 11b.

802.11i Este nuevo protocolo es basicamente una extension de 802.11b que se adhiere al protocolode cifrado para ser mucho mas seguro. El IEEE acaba de aprobarlo y ya podemos encontrarproductos que lo implementan.

Una red wifi inalambrica puede operar en uno de estos dos modos:

Modo adhoc: Nos permite conectar directamente dos nodos juntos. Este modo es util para conectaralgunos PCs juntos que necesiten acceso a una LAN o a Internet.

Modo de infraestructura: Nos permite establecer una estacion base, conocida como punto de acceso(AP, Access Point), y conectarla a nuestra LAN. Todos los nodos sin cables se conectan a la LANtraves de este punto. Esta es la configuracion mas comun en redes corporativas ya que permite aladministrador controlar el acceso sin cables a un punto. Cada punto de acceso y tarjeta inalambricostiene un numero asignado, es el ID del nodo cliente (BSSID, Basic Station System ID). Esta esla direccion MAC para los clientes inalambricos que se asocian al nodo servidor. Este nombre noes necesariamente unico a dicho punto de acceso. De hecho, la mayorıa de los fabricantes asignanun SSID predeterminado a los AP para que puedan utilizarse inmediatamente. El SSID del puntode acceso es necesario para conectarse a la red. Algunas estaciones base tienen una funcionalidadadicional, incluyendo enrutadores y servidores DHCP incorporados. Existen incluso algunas unidadesintegradas que actuan como puntos de acceso sin cables, cortafuegos y enrutador para usuariosdomesticos y de pequenos negocios. Yo dispongo de un router 3Com ADSL 11g de este tipo.

Podemos configurar un nodo de red inalambrica instalando una tarjeta de interfaz de red (NIC, Net-work Interface Card) en un ordenador. Una NIC inalambrica puede ser de varios tipos: puede ser unatarjeta que se introduce en la ranura del PC, una tarjeta PCMCIA, un dispositivo USB, etc. Una redinalambrica 802.11 en un modo de infraestructura tiene un punto de acceso que actua como puente entrela LAN de Ethernet con cables y uno o mas puntos extremo sin cables. El punto de acceso envıa frecuen-temente transmisiones de “senales luminosas” para que cualquier nodo sin cables sepa que esta ahı. Lastransmisiones de senales luminosas actuan como un faro invitando a cualquier nodo sin cables del area ainiciar la sesion. Estas senales forman parte del problema con wifi. es imposible desactivar completamentedichas senales, lo que dificulta ocultar el hecho de que hay una red inalambrica. Cualquiera que tengauna tarjeta inalambrica puede, al menos, ver las senales luminosas si se encuentran dentro de un rango,aunque algunos receptores permiten limitar la cantidad de informacion que sale de dichas transmisiones.

Estas senales contienen informacion basica sobre el punto de acceso inalambrico, normalmente inclu-yendo su SSID. Si la red no esta utilizando ningun cifrado ni ninguna otra proteccion, esto es todo lo que se

Jose Antonio Escartın Vigo, Junio 2005.

Page 277: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 14. Redes inalambricas 259

requiere para que un intruso acceda a la red. Sin embargo, incluso en una red inalambrica cifrada, el SSIDnormalmente se transmite al descubierto y los paquetes cifrados pueden ser escuchados clandestinamenteen el aire y estan sujetos a intentos de decodificacion.

14.2. Peligros de las LAN inalambricas

Aunque ofrecen la misma flexibilidad y funcionalidad que pueden ofrecer las LAN con cables, tambienintroducen algunos retos y peligros unicos para el administrador de redes preocupado por la seguridad.Estos son algunos de los que tenemos que tener en cuenta al anadir una LAN inalambrica a nuestrainfraestructura:

Escuchas clandestinas: Lo mas acil para un intruso en una red inalambrica es recopilar paquetesutilizando un sniffer. Poco podemos hacer frente a ello, Los disenadores de las redes inalambricaspensaron sobre ello e introdujeron en el diseno un cifrado estandar denominado Privacidad equivalenal cable (WEP, Wired Equivalente Privacy) para que los datos se pudieran cifrar. Lamentablemente,un fallo fundamental en como funcionan los algoritmos RC4 en los que esta basado hacen que losdatos se puedan descifrar. Por lo tanto, incluso aunque se ejecute WEP, cualquier dato que viajepor una red inalambrica esta potencialmente sujeto a su inspeccion por personas ajenas a la red.

Alguien podrıa escuchar sobre nuestro enlace sin cables para buscar los registros de inicio de sesion,las contrasenas o cualquier otro dato.

Acceder a los PC sin cables: Un enlace inalambrico proporciona a un atacante potencial un vector enuna maquina de nuestra red. Aparte de los puntos de acceso, las maquinas con tarjetas inalambricas,a veces, se pueden ver desde el exterior. Si utilizan este modo de acceso pueden lanzar ataques contrauna maquina que probablemente no esta protegida por el cortafuegos y puede que no se bloqueencomo las defensas del perımetro o los servidores publicos.

Acceder a la LAN : Probablemente este sea el mayor peligro que presentan las redes inalambricas.Si los intrusos pueden obtener el acceso a nuestra LAN a traves de un punto de acceso inalambrico,normalmente tienen las llaves de nuestro reino. La mayorıa de las LAN ejecutan un servidor DHCPsin restringir, por lo que los intrusos pueden obtener una direccion IP valida y empezar a explorarnuestra red. A continuacion pueden ejecutar un escaner de vulnerabilidades (como Nesus) o unescaner de puertos como Nmap (Vease seccion 17) para encontrar maquinas de su interes y buscarbrechas que puedan aprovechar.

Acceso anonimo a Internet : Aunque los intrusos no esten interesados en lo que contienen nuestraLAN, pueden utilizar nuestro ancho de banda para otros usos. Al iniciar la sesion en nuestra red yacceder despues a Internet, pueden piratear nuestra red y hacer el dano que quieran sin que podamosseguirles la pista. Cualquier ataque o dano perpetrado desde esta conexion se rastreara hacia nuestrared. Las autoridades pueden llamar a nuestra puerta, no a la suya. Este metodo de piraterıa sehara cada vez mas comun a medida que los intrusos se den cuenta de lo difıcil que es rastrearlos ataques que se originan de esta manera. Existen pocas posibilidades de capturar a alguien queproviene de una red inalambrica a no ser que tenga un equipo de triangulacion situado de antemano,algo bastante caro y poco habitual. Las LAN inalambricas no aseguradas ofrecen a los intrusos elmejor acceso anonimo que existe.

Vulnerabilidades especıficas de 802.11 : Ademas de las inseguridades de las LAN inalambricas, existenalgunos problemas especıficos del estandar 802.11. Algunos de ellos se deben a un mal diseno delfabricante o a las configuraciones predeterminadas, otros problemas se deben al diseno general deestandar.

SSID predeterminados: Cada estacion base wifi tiene un identificador especıfico que debemos conocerpara entrar en la red. Este identificador proporciona algun nivel de seguridad si se implanta correc-tamente. Lamentablemente, muchas personas no cambian el SSID predeterminado del fabricante,como linksys, default, etc. Cuando un intruso lo encuentra, puede suponer que el administrador noha perdido mucho tiempo en configurar y asegurar la red inalambrica.

Jose Antonio Escartın Vigo, Junio 2005.

Page 278: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

260 Servidor Linux para conexiones seguras de una LAN a Internet

Transmision de senales luminosas: La transmision de senales luminosas son un problema inherente alas redes inalambricas. La estacion base debe emitir regularmente su existencia para que los emisoresdel usuario final puedan encontrar y negociar una sesion y como los dispositivos legıtimos del usuariono se han autenticado todavıa, esta senal debe transmitirse al descubierto. Cualquiera puede capturaresa senal y, como mınimo saber que tenemos una LAN inalambrica. Muchos modelos nos permitendesactivar la parte SSID de la transmision para que, al menos, sea mas difıcil de captar para lasescuchas clandestinas de redes inalambricas, pero SSID se sigue enviando cuando una estacion seconecta, por lo que sigue existiendo una pequena ventana de vulnerabilidad.

Comunicaciones sin cifrar de forma predeterminada: La mayorıa de los dispositivos LAN inalambri-cos de hoy en dıa ofrecen la opcion de activar el cifrado WEP estandar . El problema es que normal-mente se tiene que hacer manualmente. Muchos fabricantes comercializan su equipamiento con estaopcion desconectada de forma predeterminada. Muchos administradores tienen prisa por configurarsu red inalambrica y no tienen mucho tiempo para activar esta importante funcion. Si una personano tecnica configura la red, es muy probable que no se active el cifrado. Tambien existe el problemade la clave compartida por todos nuestros usuarios ya que WEP utiliza una sola clave entre todosellos, lo que puede llegar a convertirse en una pesadilla si tenemos muchos usuarios conectandose sincables.

Punto debil de WEP : Incluso cuando se utiliza el cifrado incorporado, la senal sigue teniendo el riesgode ser leıda. Existen algunos puntos debiles fundamentales en la implantacion del algoritmo RC4utilizado para el cifrado en WEP que permiten que se descifren una vez interceptada una cantidad detrafico. Estos puntos debiles tienen que ver con la forma en que se programan las claves. WEP utilizavectores de inicializacion debiles con un porcentaje suficientemente alto como para que finalmentepuedan descifrarse. Una vez roto el cifrado, no solo los atacantes pueden leer todo el trafico de la redinalambrica sino que probablemente puedan entrar en la red. Por lo tanto, aunque WEP ofrece unaproteccion basica frente a escuchas clandestinas casuales, cualquier intruso serio tendra el softwarecomo para descifrar potencialmente el cifrado.

14.3. El fenomeno del “Wardriving”

La busqueda de LANs inalambricas inseguras se ha convertido en un pasatiempo popular entre lospiratas informaticos. Esta practica se conoce como “wardrive” o “wardriving”, funciona de la misma formaque el marcado telefonico en masa o guerra del marcado telefonico, de los primeros piratas informaticos,consiste en seleccionar de forma aleatoria bancos de numeros de telefono para encontrar modems activos.

En general, los piratas informaticos conducen un automovil con una tarjeta inalambrica y algun soft-ware buscando una senal de una red. El software puede registrar la ubicacion exacta de la red inalambricaa traves del GPS ası como otra gran cantidad de informacion como: si esta cifrada o no y que tipos deprotecciones se encuentran activas. Los que realizan el “wardring” pueden explorar Internet o la LANlocal sobre el enlace sin cables. No se requiere un alto nivel de conocimientos para hacerlo, por lo que hayintrusos de todos los niveles.

Las empresas que utilizan LAN en entornos densos alrededor de sus oficinas o cerca de carreterasprincipales y autopistas son los entornos mas propensos a este tipo de actividad, como oficinas en entornosurbanos y areas del centro donde hay muchos edificios altos. Las redes inalambricas que utilizan 802.11btienen una distancia efectiva de un par de cientos de metros. Es facil crear un puede entre el espaciocomprendido entre dos edificios o varias plantas en un edificio alto. En una zona del centro densa, escomun encontrar varias LAN inalambricas sin proteccion dentro de un edificio. Desde el punto de vista dela seguridad, los edificios altos suelen ser uno de los peores lugares para ejecutar una LAN inalambrica.el tıpico edificio de cristal permite que las senales de su LAN viajen a mucha distancia. Si hay otrosedificios cerca, es casi seguro que podran recoger algunas de sus senales. Incluso es peor los edificios altosque se encuentran junto a una zona residencial. Imaginemonos a los adolescentes y otros recien llegadosescaneando en busca de las LAN inalambricas disponibles, desde la comodidad de sus habitaciones en lasafueras de una ciudad.

Aproximadamente un 60 por ciento de las LAN inalambricas son completamente inseguras. Los querealizan los paseos de batalla han llegado incluso a anunciar puntos de acceso sin cables en bases de datos

Jose Antonio Escartın Vigo, Junio 2005.

Page 279: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 14. Redes inalambricas 261

online con mapas para que cualquiera pueda encontrar una LAN Inalambrica bierta en cualquier parte.Las catalogan por tipo de equipamiento, cifradas o no cifradas, etc. Si tenemos una LAN inalambrica enun area metropolitana importante, es probable que este catalogada en uno de estos sistemas, esperandosolo a que cualquier intruso oportunista de su zona al que le sobre algo de tiempo. Las siguientes son basesde datos online que se pueden consultar para ver si nuestra LAN se encuentra ya catalogada:

http://www.wifimaps.com/

http://www.nodedb.com/europe/es

http://www.cybergeography.org/spanish/wireless.html

Existe hasta un catalogo de simbolos estandarizado para identificar redes wifis urbanas:

Figura 14.1: Sımbolos urbanos de redes wifi

Jose Antonio Escartın Vigo, Junio 2005.

Page 280: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

262 Servidor Linux para conexiones seguras de una LAN a Internet

Es tan grande este fenomeno que hace unos meses en las islas canarias, se organizo el primer campeona-to de Wardriving de Espana (Canarias Wardrive’05), podemos encontrar mas informacion en esta direccion:

http://www.canariaswardrive.org/

Estas son las curiosas bases del concurso:

“Solo necesitamos explorar nuestra propia ciudad empleando un simple portatil, pda o similar,dotado de una tarjeta wifi. La competicion se divide en tres categorıas territoriales:

Competicion de Wardrive en Tenerife

Competicion de Wardrive en Gran Canaria

Competicion de Wardrive en toda Canarias

En estas competiciones se permite la participacion individual o por equipos. Trabajando enequipo se cubre mas territorio y se encuentran los focos emisores mas rapidamente. Una com-peticion sin caracter regional es la de los MiniGames, se celebraran en Tenerife. En ellos seplantearan a los competidores retos tales como intentar romper la seguridad de redes. Un sis-tema homologado de puntuacion asignara una cantidad de puntos dependiendo del tipo de redlocal. La participacion en este tipo de competicion exige inexorablemente un comportamientodeportivo intachable.”

Ha mas de un administrador de sistemas se le pondran los pelos de punta al leer esto.

14.4. Seguridad en redes inalambricas

Si tenemos la red inalambrica sin cifrado, cualquier intruso podra leer los datos que mandemos o inclusoentrar en nuestra red. Es necesario implantar una serie de medidas: cifrado de datos, concienciacion delpersonal, auditorias, etc.

14.4.1. Clave WEP (Wired Equivalente Privacy)

La clave WEP es una clave asimetrica, compartida por todos los usuarios inalambricos. Esta basadaen el algoritmo RC4 y tiene un nivel de seguridad debil. Es debido a un fallo del algoritmo, crea una seriede vectores de inicializacion debiles que con un trafico de red suficiente, permiten deducir la clave. Fueintroducida con el estandar 802.11a y actualmente ha quedado superado por WPA.

Si en vez de tener una red abierta, al menos, ciframos los datos con clave WEP, los intrusos tendranque perder tiempo y esfuerzo en obtenerlos. Esto desanimara a intrusos casuales, y hara que los seriostengan que quedarse por nuestra zona varios dıas, aumentando las posibilidades de que el personal deseguridad o los vigilantes noten su presencia.

La clave WEP, no es recomendable, ya que WPA representa una mejor forma de proteccion. Endeterminadas situaciones, puede ser suficiente pero esto solo tiene lugar en entornos que no manejan datossensibles y donde se produzca muy poco trafico de red.

14.4.2. Clave WPA (Wifi Protected Access)

Esta destinada a garantizar la seguridad en las especificaciones IEEE 802.11a, 802.11b y 802.11g,mejorando las claves WEP; En abril de 2003 aparecieron en el mercado los primeros productos queincorporaban tecnologıa de cifrado WPA.

En la figura 14.2 podemos ver una comparativa entre las claves WEP Y WPA.

Jose Antonio Escartın Vigo, Junio 2005.

Page 281: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 14. Redes inalambricas 263

Figura 14.2: Comparativa entre WEP y WPA

Privacidad e integridad con TKIP

TKIP (Temporal Key Integrity Protocol) amplıa y mejora a WEP, solucionando sus vulnerabilidades.Amplıa la longitud de la clave de 40 a 128 bits y pasa de ser unica y estatica, a ser generada de formadinamica, para cada usuario, para cada sesion (teniendo una duracion limitada) y para cada paqueteenviado. Conceptualmente el vector de inicializacion pasa de 24 a 48 bits, minimizando la reutilizacion declaves. Tambien utiliza claves para trafico de difusion y multidifusion.

Utiliza el algoritmo “Michael” para garantizar la integridad, generando un bloque de 4 bytes (denomi-nado MIC) a partir de la direccion MAC de origen, de destino y de los datos, anadiendo el MIC calculadoa la unidad de datos a enviar. Posteriormente los datos (que incluyen el MIC) se fragmentan y se les asignaun numero de secuencia. La mezcla del numero de secuencia con la clave temporal genera la clave que seutilizara para el cifrado de cada fragmento.

Autenticacion mediante 802.1X/EAP

El estandar IEEE 802.11x define un protocolo para encapsular, protocolos de autenticacion sobreprotocolos de enlace de datos. IEEE 802.11x permite utilizar diversos metodos para autentificar al usuarioa traves del protocolo de autenticacion extensible (EAP). Se concibe como una ampliacion de la capa deenlace de datos:

Figura 14.3: Funcionamiento WPA/EAP

Jose Antonio Escartın Vigo, Junio 2005.

Page 282: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

264 Servidor Linux para conexiones seguras de una LAN a Internet

IEEE 802.11x define 3 entidades:

El solicitante (supplicant), reside en la estacion inalambrica

El autenticador (authenticator), reside en el AP

El servidor de autenticacion, reside en un servidor AAA (Authentication, Authorization, & Accoun-ting), como los servidores Radius

Utiliza un metodo de control de acceso basado en el concepto de puerto (PAE, Port Acess Entity). Elautenticador crea un puerto logico por cliente, existiendo dos caminos uno autorizado y otro no. Mientrasel cliente no se ha autenticado con exito unicamente se permite trafico 802.11x/EAP hacia el servidor deautenticacion.

Figura 14.4: Autenticacion mediante un servidor Radius

El solicitante cuando pasa a estar activo en el medio, selecciona y se asocia a un AP. El autenticador(situado en el AP) detecta la asociacion del cliente y habilita un puerto para ese solicitante, permitiendounicamente el trafico 802.11x, el resto de trafico se bloquea. El cliente envıa un mensaje “EAP Start”. Elautenticador responde con un mensaje “EAP Request Identity” para obtener la identidad del cliente, larespuesta del solicitante “EAP Response” contiene su identificador y es retransmitido por el autenticadorhacia el servidor de autenticacion. A partir de ese momento el solicitante y el servidor de autenticacionse comunicaran directamente, utilizando un cierto algoritmo de autenticacion que pueden negociar. Si elservidor de autenticacion acepta la autenticacion, el autenticador pasa el puerto del cliente a un estadoautorizado y el trafico sera permitido.

Los metodos de autenticacion definidos en WPA son: EAP-TLS, EAP-TTLS y PEAP. Estos metodos sebasan en la infraestructura de clave publica (PKI) para autenticar al usuario y al servidor de autenticacion,utilizando certificados digitales. La premisa es la existencia de una Autoridad de Certificacion (CA) deconfianza para la corporacion, que emita certificados para los usuarios y el servidor de autenticacion. LaCA puede ser privada (empresarial) o publica (basada en CAs de Internet como Verisign).

EAP-TLS (TRANSPORT LAYER SECURITY)

Los usuarios y el servidor de autenticacion deben tener un certificado digital. El solicitante, tras laasociacion y la creacion del puerto de acceso por el autenticador, envıa su identificacion (nombre deusuario) hacia el autenticador y este hacia servidor de autenticacion. Este ultimo envıa su certificado alcliente, al validarlo el cliente responde con su certificado. El servidor de autenticacion comprueba si elcertificado es valido y corresponde con el nombre de usuario antes enviado, si es ası autentica al cliente.Cliente y servidor generan la clave de cifrado para esa sesion, y el servidor de autenticacion la envıa alpunto de acceso, de forma que ya puede comunicarse el cliente de forma segura.

Jose Antonio Escartın Vigo, Junio 2005.

Page 283: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 14. Redes inalambricas 265

PEAP y EAP-TTLS

EAP-TLS exige que todos los clientes dispongan de un certificado digital lo que puede ser, en muchoscasos, un inconveniente tecnico y economico. Para evitar esta necesidad aparecen 2 metodos: ProtectedEAP (PEAP) y EAP-Tunneled TLS (EAP-TTLS), que requieren unicamente del certificado en el servidorde autenticacion.

La idea subyacente es que si el servidor de autenticacion dispone de un certificado digital, el clientepodra enviarle datos cifrados, creandose un “tunel de seguridad” por donde el cliente podra enviar susdatos de autenticacion.

PEAP fue disenado por Microsoft, Cisco y RSA. Cuando el cliente ha validado el certificado delservidor de autenticacion y creado el tunel, usando TLS se inicia una nueva autenticacion donde negocianun metodo, por ejemplo MS-CHAP v2, tras autentificar el servidor al cliente, ambos generan la clave desesion. EAP-TTLS fue disenado por Funk Software. Tambien se basa en crear en primer lugar un tunel TLSpero los mensajes que intercambia son pares valor atributo (“attribute-value pairs”-AVPs) muy similaresa los que utiliza Radius. TTLS soporta todos los metodos EAP y se abre a nuevos metodos.

WPA y seguridad en pequenas oficinas

Los metodos soportados por EAP necesitan de una cierta infraestructura, fundamentalmente de unservidor Radius, lo que puede limitar su implementacion en redes pequenas. Wifi ofrece los beneficios deWPA mediante el uso de una clave pre-compartida (PSK, pre-shared key) o contrasena. Esto posibilita eluso de TKIP, pero configurando manualmente una clave en el cliente wireless y en el punto de acceso.

WPA y el uso de AES

Las directrices del estandar final IEEE 802.11i (denominado RSN: Robust Security Network) marcancomo algoritmo de cifrado a AES (Advanced Encryption Standard), basado en el algoritmo Rijndael paraproporcionar privacidad y en claves de 128 bits o mas. Parece que la implementacion mas probable es elmodo Cipher Block Chaining Counter Mode (CBC-CTR) con Cipher Block Chaining Message AuthenticityCheck (CBC-MAC), conocido el conjunto como CBC-CCM. AES ya ha sido adoptado como estandar paracifrado en sistemas de computacion y comunicaciones. WPA indica el soporte de AES como opcional,existiendo dispositivos que lo implementan.

Implementacion de WPA

Para soportar WPA, en caso de que los productos no esten certificados por su uso, debemos actualizarel firmware de los puntos de acceso y de los adaptadores de red inalambricos de las estaciones. En lasestaciones se debera actualizar el sistema operativo para soportar 802.11x y el metodo EAP elegido. Porejemplo, Windows XP soporta WPA mediante una actualizacion.

Segun el metodo EAP elegido habra que definir la configuracion del servidor Radius. Tambien es posibleque tengamos que utilizar o implementar los servicios de una Autoridad de certificacion.

Conclusiones sobre el uso de WPA

La seguridad es una cuestion conjunta por lo que las directivas aplicables a los segmentos de redesinalambricas deben integrarse con el resto de directivas. Por ejemplo, el uso de cortafuegos para conectar lared inalambrica con la red corporativa, anadiendo capacidades de deteccion de intrusos e incluso de analizarel trafico inalambrico y detectar puntos de acceso no autorizados son mecanismos de seguridad necesariospara garantizar los requerimientos de seguridad. Asimismo, tanto los clientes como servidores deberan deseguir las directivas de seguridad definidas que deben incluir, como mınimo, el uso de antivirus, cortafuegospersonales, deteccion de intrusos, actualizacion de software, eliminacion de servicios innecesarios

A la espera de poder implementar el estandar final sobre seguridad en redes inalambricas (802.11i)la especificacion Wifi Protected Access (WPA) ofrece una solucion fiable y robusta para garantizar laprivacidad, integridad y autenticacion. Garantizando, ademas, la interoperabilidad entre fabricantes yofreciendo un modo “natural” de migrar hacia WPA2.

Jose Antonio Escartın Vigo, Junio 2005.

Page 284: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

266 Servidor Linux para conexiones seguras de una LAN a Internet

14.4.3. Clave WPA2 (Estandar 802.11i)

Aunque hace ya varios anos que se desvelaron las vulnerabilidades del protocolo WEP (razon porla que fue sustituido por WPA basado en TKIP), esta tecnologıa dejo de ser un borrador a finales dejunio de 2004, por lo que ya podemos referirnos a ella como un estandar aprobado por el IEEE. Estanueva especificacion utiliza el algoritmo de cifrado AES (Advanced Encryption Standard), un mecanismoextremadamente seguro que merecio en su dıa la aprobacion del NIST (National Institute of Standardsand Technology).

WPA2 se basa en 802.11i y es compatible con WPA. La llegada de 802.11i debe ser acogida conentusiasmo debido al elevado nivel de seguridad que ofrece. Aun ası, es necesario tener en cuenta que elalgoritmo de cifrado AES requiere unas condiciones y una exigencia al hardware bastante alta, lo quesignifica que algunas interfaces inalambricas antiguas no seran capaces de satisfacer los requisitos de esteestandar.

Dentro de algun tiempo WPA2 se convertira en el estandar de seguridad para las redes inalambricas.

14.4.4. Medidas preventivas

La implantacion de cualquier acceso inalambrico tiene un riesgo, pero se puede reducir tomando unaserie de medidas preventivas.

Tratar la red inalambrica como de no confianza

Como no se puede controlar el trafico entrante por el aire, no se deberıa tratar de forma distinta a laparte publica del cortafuegos. Si nos lo podemos permitir, es recomendable situar un cortafuegos entre sured inalambrica y la LAN privada o situarla en una DMZ (Zona desmilitarizada). Despues se puede filtrardeterminados tipos de paquetes de ataque, limitar los tipos de trafico y registrar cualquier actividad queprovenga de dicha interfaz.

Auditar el perımetro inalambrico regularmente

Hay que probar la distancia de la senal, si la red esta superpuesta sobre otras redes cercanas.Es necesario realizar una tarea periodica para localizar cualquier punto de acceso “no controlado”.

La tecnologıa inalambrica es ahora tan barata que cualquier usuario de nuestro sistema puede comprar,instalar y configurar una tarjeta wifi para algun proposito licito o no, como puede ser una demostracion sincables en una sala de conferencias, abriendo ası nuestra red para los ataques inalambricos. Actualmentepodemos encontrar hasta tarjetas de red wifi para USB.

Asimismo, no hay que olvidar que muchos PCs nuevos, especialmente portatiles, tienen incorporadastarjetas wifi y habilitarlas es cosa de ninos. Podemos estar funcionando de forma inalambrica en nuestrared sin darnos cuenta. Una auditorıa inalambrica es la unica forma de descubrirlo.

Configurar correctamente la red inalambrica

Existen muchas opciones y configuraciones que podemos utilizar para aumentar considerablementenuestra seguridad y aunque no todos los equipamientos admiten estas opciones, podemos intentarlas.

Desactivar la transmision de SSID: Esta tarea requiere que el usuario conozca el SSID para estableceruna sesion con la estacion base. Actua como una contrasena debil. Sin embargo, si una escuchaclandestina descifra el cifrado, podra obtener el SSID facilmente.

Restringir el acceso por la direccion MAC: Ası es mas difıcil para alguien obtener acceso a nuestrared a traves de una estacion base inalambrica. En la mayorıa de los puntos de acceso, podemosrestringir el mismo a determinadas direcciones MAC hardware, un metodo bastante solido para laautenticacion, ya que solo las personas con la tarjeta con un numero de serie correcto pueden obteneracceso. Sin embargo, puede ser incomodo para un administrador mantener el registro de las tarjetasNIC autorizadas, eso si contar que no permite el acceso instantaneo a un nuevo usuario en nuestraoficina. Ası mismo, si el atacante conoce una de las direcciones MAC autorizadas, es posible falsificaresta direccion en su propia tarjeta y hacerse pasar por el propietario.

Jose Antonio Escartın Vigo, Junio 2005.

Page 285: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 14. Redes inalambricas 267

Formar al personal

Igual que sucede con todo lo referente a la seguridad informatica, el elemento humano puede ser elpunto mas debil o el mas fuerte. Hay que asegurese de que los guardas de seguridad, los recepcionistas yotro tipo de personal sepan buscar un comportamiento sospechoso. Por ejemplo, si ven a alguien sentadoen su aparcamiento durante mucho tiempo dentro del coche, posiblemente con una antena extrana en eltecho del mismo, es muy probable que se trate de alguien que busca entrar en nuestra red inalambrica.

Asimismo, hay que desarrollar una polıtica a nivel de toda la empresa. Algunas veces una demostraciones la mejor forma de mostrar este tipo de peligro. Un personal informado puede ser nuestra mejor defensa.

14.5. Servidor Radius: FreeRadius

Lo que vamos a montar es un sistema EAP-TLS (Vease seccion 14.4.2) donde el servidor y los usuariosnecesitan tener un certificado digital para comunicarse. Es necesario que el servidor Radius se coloque enla misma maquina donde se encuentra el cortafuegos.

Para configurar el sistema hay que seguir el siguiente esquema (Vease figura 14.5):

Instalamos FreeRadius: #apt-get install freeradius

Configuramos FreeRadius para trabajar con EAP-TLS

Generamos los certificados

Comprobamos que FreeRadius funciona correctamente

Configuramos el AP (Router 3Com)

Configuramos los clientes Linux

Configuramos los clientes Windows XP (Actualizado a Service Pak 2)

La informacion utilizada se puede encontrar en los siguientes HowTos:

HowTo 802.1x: http://tldp.org/HOWTO/html single/8021X-HOWTO/

HowTo EAP-TLS: http://www.missl.cs.umd.edu/wireless/eaptls/

HowTo Radius en WindowsXP: http://www.dslreports.com/forum/remark,9286052˜mode=flat

14.5.1. Configurar FreeRadius con EAP-TLS

Los archivos de configuracion se encuentra en: /etc/freeradius/, los comentarios que llevan integra-dos en el codigo ayudan bastante a la configuracion y es muy recomendable leerlos.

Hay que realizar las siguientes modificaciones:

/etc/freeradius/radiusd.conf : Fichero de configuracion general de Radius. Aquı definimos los siste-mas de autenticacion. Hay muchas partes del fichero que no he utilizado.

/etc/freeradius/eap.conf : Fichero de configuracion del servicio EAP del servidor radius.

/etc/freeradius/clients.conf : Aquı se configuran las IPs y las redes de sistemas que pueden ser clientesde radius, en nuestro caso el AP (router 3Com, con IP 172.16.1.253)

client 172.16.1.253/32 {secret = clave_secretashortname = localhost

}

Jose Antonio Escartın Vigo, Junio 2005.

Page 286: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

268 Servidor Linux para conexiones seguras de una LAN a Internet

Figura 14.5: Sistema con cortafuegos + servidor Radius

/etc/freeradius/users.conf : Anadimos los usuarios a los que les vamos a permitir el acceso a la red

josan Auth-Type := Local, User-Password == "atitelovoyadecir"Service-Type = Framed-User,Framed-Protocol = PPP,Framed-IP-Address = 192.168.0.2,Framed-IP-Netmask = 255.255.255.0,Framed-Routing = Broadcast-Listen,Framed-Filter-Id = "std.ppp",Framed-MTU = 1500,Framed-Compression = Van-Jacobsen-TCP-IP

Si no nos queremos complicar en exceso, para agregar mas usuarios, solo hay que cambiar User-Passwordy la IP.

Jose Antonio Escartın Vigo, Junio 2005.

Page 287: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 14. Redes inalambricas 269

14.5.2. Generar los certificados

Respecto a la generacion de certificados, obviamente la idea es que los emita una entidad certificadoracontrastada, pero tambien nos los podemos hacer nosotros.

Para ello utilizaremos OpenSSL, si todavia no lo hemos instalado realizamos el apt:#apt-get install openssl libssl-dev ca-certificates

Ahora tenemos dos opciones:

Aprendemos a utilizar la infraestructura PKI (bastante complicada por cierto)

Utilizamos los scripts de generacion de certificados que vienen con FreeRadius y OpenSSL

Escogeremos la segunda opcion, usando los scripts predefinidos, ya que, con muy pocas modificacionespodemos crear los certificados que nos hacen falta para trabajar de forma segura con nuestro wifi.

Aquı nos encontramos con un problema, para generar los certificados necesitamos unos scripts quevienen con el codigo fuente de freeradius, para obtenerlo:

#apt-get source freeradius, nos descargara los fuentes en el directorio actual.

En el directorio scripts encontraremos una serie de archivos entre los que se encuentran los siguientes:CA.certs, certs.sh y xpextensions. A estos tendremos que anadir otro archivo de OpenSSL: CA.pl, un scriptPerl para crear Autoridades de Certificacion y cuyo path no suele estar en el $PATH del sistema.

Para buscarlo podemos ejecutar: #find / | grep ’CA.pl’, y lo copiamos donde los otros archivos.

Es preciso verificar las rutas de las ordenes de los scripts ya que puede ser que sino no funcionen bien.En mi caso he tenido que modificar el cert.sh. En el archivo CA.certs, siguiendo el ejemplo que allı aparece,colocaremos nuestros datos en las variables del inicio del fichero.

Para generar los certificados lo unico que deberemos de hacer es:#apt-get install ./certs.sh

Lo que se muestra por pantalla sera algo parecido a esto:

# ./certs.shGenerating DH parameters, 512 bit long safe prime, generator 2This is going to take a long time.........................................................................................................................................+.+.........................+..........+.........................+......................................+..............................+.................+......+.............+.......................................................+......+...................................+....+..............................+......................+..++*++*++*++*++*++*See the ’certs’ directory for the certificates.The ’certs’ directory should be copied to .../etc/raddb/All passwords have been set to ’whatever’

Ahora tendremos un nuevo directorio llamado ./certs y donde se encuentran todos los certificados quenos haran falta para el cliente y el servidor.

Es recomendable colocar estos certificados en /etc/freeradius/certs, ya que los archivos de configuracionde freeradius apuntan a ese directorio y tendremos menos cosas que modificar.

Jose Antonio Escartın Vigo, Junio 2005.

Page 288: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

270 Servidor Linux para conexiones seguras de una LAN a Internet

14.5.3. Comprobar el funcionamiento de FreeRadius

Hay que repasar los archivos: radiusd.conf, eap.conf, clients.conf y users.conf, los ajustaremos paraque cojan los certificados que hemos generado.

radiusd.conf : Hay que revisar las rutas de los certificados, para que apunten a los directorios dondelos hemos colocado.

eap.conf : Hay que asegurarse de colocar la contrasena elegida en private key password, si no lohicieramos nos pedirıa la clave al arrancar al demonio y no podrıa arrancarlo iniciar el sistema.

Ahora para ejecutar el servidor:#freeradius -X, y para lanzar el demonio: /etc/init.d/freeradius start

Antes de pasar a configurar los usuarios es necesario configurar el AP, que sera el cliente de nuestroservicio de Radius. La configuracion es realmente muy sencilla, yo lo tengo configurado como un routerentre dos redes la de usuarios (192.168.1.0/24) e Internet (en el grafico la 172.16.1.253).

Revisamos el client.conf y asignamos a esa IP permisos para hacer peticiones al servidor Radius.Aquı aparece otra contrasena que utilizan el AP y el FreeRadius para cifrar sus comunicaciones. En el APdeberemos colocar la misma clave (lo podemos observar en la figura 14.6).

14.5.4. Configurar AP (Router 3Com)

El router 3Com que utilizo me permite introducir seguridad basada en WPA con soporte para unservidor Radius, como se puede observar en la figura 14.6.

Hay que introducir la direccion IP de la maquina y el puerto de escucha del servicio Radius.Radius Key es la clave secreta que hemos elegido en /etc/freeradius/client.conf

Figura 14.6: Router 3Com con WPA y servidor radius

Jose Antonio Escartın Vigo, Junio 2005.

Page 289: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 14. Redes inalambricas 271

14.5.5. Clientes Linux: WPA-Supplicant

Debemos asegurarnos que nuestra tarjeta wireless se puede utilizar en WPA con EAP-TLS, si en ladocumentacion no lo encontramos probablemente no sera compatible.

Si lo soporta, necesitamos saber es como se llama la tarjeta en el sistema (en mi caso eth1):#iwconfig

lo no wireless extensions.

eth0 no wireless extensions.

eth1 IEEE 802.11g ESSID:"example"

Mode:Managed Frequency:2.442 GHz Access Point: 00:12:17:B8:2E:12

Bit Rate:54 Mb/s Tx-Power:25 dBm

RTS thr:2347 B Fragment thr:2346 B

Encryption key:41ED-EE53-EE7C-84BF-005D-A8F7-C10F-0CE0-9E7D-A17F-A5FD-2ECD-7FF3-6A4C-4E73-BDC5

Power Management:off

Link Quality:95/100 Signal level:-54 dBm Noise level:-256 dBm

Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0

Tx excessive retries:1609 Invalid misc:6740 Missed beacon:0

Para tener acceso mediante los clientes Linux hay que instalar el siguiente programa:#apt-get install wpasupplicant

Y crear el archivo de configuracion (/etc/wpa supplicant.conf) para pasar el certificado al servidorRadius:

network={ ssid="example"proto=WPAkey_mgmt=WPA-EAPpairwise=TKIPgroup=TKIPeap=TLSidentity="[email protected]"ca_cert="/etc/cert/cert-srv.pem"client_cert="/etc/cert/root.pem"private_key="/etc/cert/root.der"private_key_passwd="password"}

Si utilizamos clave WPA sin servidor Radius se nos ofrece la posibilidad de encriptar la clave que sepasara por la red, esto se consigue mediante el comando:

#/usr/sbin/wpa_passphrase <ssid> <passphrase>

Despues solo queda lanzar el cliente:#wpa_supplicant -B -i <ifname> -c <config_file> -D <driver>

En mi caso, ifname es eth1, el config file lo cree en /etc/wpa supplicant.conf y el driver ipw, estovariara dependiendo de nuestra configuracion de hardware.

Si ejecutamos: #wpa_supplicant -h, veremos que soporte y para que driver ha sido compilado.

Y para comprobar si funciona correctamente la negociacion de los certificados ejecutamos:#wpa_supplicant -dd -i eth1 -c /etc/wpa_supplicant.conf -D ipw

Jose Antonio Escartın Vigo, Junio 2005.

Page 290: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

272 Servidor Linux para conexiones seguras de una LAN a Internet

14.5.6. Clientes Windows: WindowsXP + SP2

Como con los clientes Linux, debemos asegurarnos que nuestra tarjeta wireless se puede utilizar enWPA con EAP-TLS.

Para instalar los certificados generados por OpenSSL (root.der y root.p12) es suficiente con hacer dobleclick sobre ellos.

Instalamos el certificado de la entidad emisora: root.der

Instalamos el certificado de cliente: root.p12, nos pedira la contrasena del certificado

Para comprobar que realmente ha sido instalado, ejecutamos el siguiente comando en la consola: mmcA traves del Microsoft Manegement Console (mmc) podemos comprobar el certificado, :

Elegimos la opcion “agregar”, “certificados”. Pulsando sobre el deberıa de aparecer:

En certificados personales, el certificado de cliente

En entidades emisoras, el certificado del servidor

Ahora falta asociarlos a una conexion, vamos a ver las “conexiones de red inalambricas disponibles”.

Pulsamos sobre “cambiar el orden de las redes preferidas”

Seleccionamos nuestra red en el listado, podremos observar que tiene el WPA activado

Apretamos al boton “propiedades”

En esta ventana, establecemos como autenticacion de red “WPA” y como cifrado de datos “TKIP”

Despues cambiamos a la pestana de autenticacion y establecemos como EAP “tarjeta inteligente uotro certificado” y activamos la opcion “Autenticar como equipo cuando la informacion del equipoeste disponible”

Solo queda pulsar sobre “propiedades” de EAP

Solo queda seleccionar las siguientes opciones y aceptar: “usar un certificado en este equipo”, “utilizarseleccion simple de certificado”, “validar un certificado de servidor” y elegir el certificado cliente quehemos instalado.

Ahora, si volvemos a la pantalla principal de seleccion de redes detectadas y si pulsamos sobre nuestrared podremos observar que aparece al lado del reloj del sistema un icono que nos informa sobre el usodel certificado. Si presionamos sobre este icono aparecera una ventana emergente que nos avisa de que seesta validando el servidor y que presionemos “aceptar” si el certificado es correcto, una vez presionemosya no sera necesario volver a repetir el proceso y si todo va bien podremos conectarnos de forma segura anuestra red.

Jose Antonio Escartın Vigo, Junio 2005.

Page 291: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 14. Redes inalambricas 273

14.6. Herramientas de seguridad

Las redes wifi son inseguras por definicion, el hecho de comunicarse por un medio de libre acceso comoes el aire implica que la transmision sera vulnerable.

Si en nuestra red no permitimos estas conexiones o si queremos estar alerta sobre que hacen nuestrosclientes wifi (sean clientes autorizados o no), podremos utilizar Kismet Wireless herramienta que detalloa continuacion. Tambien comento la herramienta de auditorıa AirSnort que trata de descubrir la claveWEP, si la utilizamos para el cifrado de datos.

14.6.1. Descubrir redes ilegales e intrusos: Kismet Wireless

Kismet Wireless es uno de los sniffers inalambricos principales para Linux, pero existen otros programascomo AeroSniff o Prism2Dump. He elegido Kismet debido a su creciente oferta de modulos de soporte.Es una herramienta cliente-servidor como Nessus (Vease apartado 17.1), que proporciona incluso masflexibilidad.

Funciona con otros programas y puede disenarse para recopilar claves de cifrado para los intentosde descifrado por otros programas externos. Podemos incluso ejecutar Kismet en modo IDS para buscarintentos de intrusion que provengan de nuestra red inalambrica.

Instalar Kismet

Se puede obtener la version mas actualizada del programa en la direccion:

http://www.kismetwireless.net

Los pasos a seguir son los siguientes:

Instalar el programa: #apt-get install kismet

Editar y configurar el archivo: /etc/kismet/kismet.conf, aquı se ha de configurar el inicio de sesiony las preferencias de la interfaz wifi (el cuadro 14.2 recoge los parametros que se pueden configurar)

Editar y configurar el archivo: /etc/kismet/kismet ui.conf, aquı se han de establecer las preferenciasde la interfaz grafica de kismet (el cuadro 14.3 recoge los parametros que se pueden configurar)

Ya esta listo para auditar la red inalambrica

Kismet trabajando como sniffer de red

Iniciamos Kismet desde la lınea de comandos. Se abre la interfaz principal y inmediatamente informasobre cualquier red inalambrica en el area.

La interfaz se divide en tres secciones principales:

La seccion Network List (lista de redes) que se encuentra a la izquierda muestra todas las redesinalambricas activas que puede ver Kismet y alguna informacion basica sobre ellas: el SSID de la red(si esta disponible), el tipo (punto de acceso frente a nodo), si esta cifrada o no utilizando WEP, elcanal en el que se esta transmitiendo, el numero de paquetes interceptados hasta el momento, cual-quier indicador sobre los datos y la cantidad de datos que estan por la red. La pantalla esta codificadacon colores, apareciendo en color rojo las redes activas y en negro las que no estan activas.

El cuadro Info (informacion) que se encuentra a la derecha de la pantalla muestra las estadısticasglobales para esta sesion de captura (incluyendo el numero total de redes detectadas, el numero totalde paquetes, el numero de paquetes cifrados, las redes debiles percibidas, los paquetes con un altonivel de ruido, los paquetes descartados y la media de paquetes por segundo.

Jose Antonio Escartın Vigo, Junio 2005.

Page 292: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

274 Servidor Linux para conexiones seguras de una LAN a Internet

Cuadro 14.2: Archivo de configuracion de KismetParametro DescripcionCapture source(Origen de captura)

Define las interfaces que va a escuchar Kismet. Normalmente la inter-faz inalambrica principal (wlan0, eth1, etc.) ya deberıa estar configuradaaquı. Si desea anadir interfaces adicionales puede hacerlo en el formato:source=type, interface, name

Fuzzy encryption(Cifrado confuso)

Muestra cualquier paquete que hayamos identificado como “sin descifrar”para las estaciones que estan utilizando metodos de cifrado sin definir opropietarios. Generalmente se deja desconectado a no ser que su tarjetaeste informando sobre redes cifradas como “sin descifrar”.

Filtering packet logs(Filtrar registros de pa-quete)

Limita el paquete que se registra. Utilice la opcion noiselog para quitarcualquier paquete que parezca que se va a desglosar o fragmentar por elruido. En una zona muy ocupada con mucha interferencia o cuando se uti-liza una tarjeta que tiene una antena externa, puede mantener el tamanode su registro reducido. La opcion beaconlog quita todos los paquetes desenales luminosas, excepto el primero, de un punto de acceso determina-do. La configuracion phylog quita cualquier paquete de la capa fısica quea veces se recogen. Tambien puede utilizar cualquier combinacion de estasconfiguraciones.

Decrypt WEP keys(Descifrar claves WEP)

Descifra los paquetes de datos interceptados al momento. Sin embargo, pri-mero tiene que tener la clave que a veces, se obtiene utilizando AirSnort.Cada punto de acceso necesita una declaracion independiente en el formatobssid:key, siendo bssid la direccion MAC del punto de acceso y key laclave para dicho punto de acceso

Using an external IDS(Utilizar un IDS externo)

Envıa paquetes a un IDS externo para un analisis posterior

Cuadro 14.3: Configuracion de la la interfaz UI de KismetConfiguracion DescripcionColumns (Columnas) Cambia lo que aparece en las columnas de la interfaz Kismet y su orden. Cam-

biamos el valor de columns o clientcolumns incluyendo lo que desea ver. Unlistado completo de columnas se encuentra disponible en las paginas del manualde Kismet

Colors (Colores) Cambia los colores de cualquiera de los elementos que se muestran. Cambiamosla configuracion con color xxx al codigo de color que deseemos. Tendremosque jugar con esta configuracion un poco hasta obtener los colores correctos.

El cuadro Status (Estado) en la parte inferior de la pantalla contiene una vista de desplazamientocon los eventos producidos. Los mensajes se abren cuando aparecen nuevas redes o se producen otroseventos.

Como Kismet es una herramienta de lınea de comandos, aunque con una GUI, utiliza comandos deteclas para controlar sus funciones. El cuadro 14.4 incluye una lista de las teclas disponibles desde lapantalla principal.

Soporte GPS de Kismet

Kismet tiene la capacidad de grabar datos GPS si tiene un receptor GPS conectado a la maquina.Necesitamos el software demonio de GPS gpsd para que Kismet pueda leerlo.

Lo podemos instalar con el comando: #apt-get install gpsdPara utilizarlo es parecido habilitar el uso de GPS en el archivo de configuracion de Kismet. Despues

Kismet escoge automaticamente las coordenadas de las redes detectadas y las registra.Podemos ir un paso mas alla y crear un mapa con estas coordenadas. Kismet incluye un programa

Jose Antonio Escartın Vigo, Junio 2005.

Page 293: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 14. Redes inalambricas 275

Cuadro 14.4: Comandos de tecla KismetTecla Descripciona Muestra estadısticas sobre cuentas de paquetes y asignaciones de canalc Abre una ventana emergente para mostrar los clientes en la red seleccionadad Le indica al servidor que inicie la extraccion de cadenas imprimibles desde el flujo de paquetes

y que las muestree Abre una ventana emergenete en servidores Kismet, lo que permite supervisar simultaneamente

dos o mas servidores Kismet en distintos anfitriones (hay que recordar que se trata de unaarquitectura cliente-servidor)

f Sigue el centro estimado de una red y muestra un compasg Agrupa las redes codificadas actualmenteh Obtiene una lista de todos los comandos posiblesi Muestra informacion detallada sobre la red o el grupo actuall Muestra los niveles de senal/capacidad/ruido si la tarjeta informa sobre ellosm Silencia el sonido y la voz, si estan activados (o los activa si estan silenciados)n Renombra la red o el grupo seleccionadop Muestra los tipos de paquetes tal y como se han recibidor Muestra un grafico de barra del porcentaje de los paquetess Ordena la lista de redes de forma diferentet Codifica (o descodifica) la red actualu Desagrupa la red actualw Muestra todas las alertas y avisos previosz Amplıa el nivel de zoom del panel de presentacion de la red a pantalla completa (o vuelve a su

tamano normal si ya estaba en pantalla completa)

denominado GPSMPA que traza automaticamente los datos recopilados en mapas en formato .gps Elinconveniente es que tiene que proporcionar su propio mapa GPS calibrado.

Existe un programa de trazado de mapas de libre distribucion para Linux denominado GPSDrive, lopodemos instalar con: #apt-get install gpsdrive.

IDS de Kismet

Tambien podemos configurar Kismet como un IDS inalambrico. Kismet interceptara todas las senalesentrates y detectara el trafico inalambrico que se sabe esta asociado con los ataques a redes wifi o activi-dades inalambricas sospechosas.

Detecta unos 10 tipos diferentes de trafico, incluyendo sondeos del programa NetStumbler (herramientapara Windows), la actividad de Airjack y otras herramientas de piraterıa inalambrica. Y, como es delibre distribucion, siempre podemos ampliarlo mediante la escritura de nuestras propias alertas. Tambienpodemos canalizar los datos de Kismet a traves de un IDS tradicional como Snort (Vease seccion 13.5)para obtener un analisis mas detallado.

La opcion IDS se configura en /etc/kismet/kismet.conf y de forma predeterminada esta deshabilitada.

Tambien puede configurar Kismet para recopilar claves debiles conocidas criptograficamente para unprograma como AirSnort, que analiza paquetes inalambricos e intenta descifrar el cifrado WEP. Pasemosa describir el funcionamiento de este programa.

14.6.2. Desencriptar claves inalambricas WEP: Airsnort

Si utilizamos criptografıa por clave WEP, cosa que no recomiendo, podemos probar si nuestra clave sepuede deducir facilmente con esta herramienta. Actualmente la encriptacion WPA es mas segura y es unamejor solucion para servidores.

AirSnort se desarrollo como una aplicacion practica para demostrar la debilidad de WEP, el protocolobasico de cifrado inalambrico. Una nota sobre las debilidades en el algoritmo de programacion de claves de

Jose Antonio Escartın Vigo, Junio 2005.

Page 294: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

276 Servidor Linux para conexiones seguras de una LAN a Internet

RC4, escrita por los expertos criptograficos Fluhrer, Martin y Shamir, incluıa detalles sobre una teoricadebilidad en el algoritmo WEP, describiendo la debilidad de algunos vectores de inicializacion. Los paquetescifrados con estos vectores debiles se podıan coleccionar y al final habrıa suficientes datos para extrapolar laclave secreta compartida, lo que permitirıa descifrar facilmente los paquetes. Poco despues, se lanzaron dosherramientas, AirSnort y WEPCrack, que empleaban las debilidades descritas para recuperar claves WEP,descifrandolas con efectividad. Ambas son buenas herramientas, pero AirSnort tiene una funcionalidadadicional como sniffer inalambrico.

AirSnort es ahora un proyecto de libre distribucion que se encuentra en SourceForge.net y que se haextendido y mejorado considerablemente desde su lanzamiento.

Usos de AirSnort

¿Por que utilizar AirSnort en una red inalambrica? Alguien podrıa decir que no existe un uso legıtimopara el programa y su unico proposito es el de ser una herramienta para el asalto de redes. Creo que launica forma de saber lo expuesta que esta nuestra red inalambrica es hacer lo que harıa un intruso paracomprobar si nuestro cifrado se puede descifrar y la cantidad de tiempo que tardarıa en hacerlo. AirSnortlleva a cabo precisamente esta tarea.

Al intentar descifrar el cifrado inalambrico, podemos ver si se puede hacer. Si se esta utilizando unWEP estandar, entonces es simplemente cuestion de tiempo. Es una realidad matematica que se puededescifrar en algun punto utilizando esta herramienta. La cuestion es cuanto tardaremos en hacerlo. Sitardamos mucho tiempo, podemos suponer razonablemente que estamos bastante seguros. Si el nivel detrafico de nuestra LAN es pequeno, puede ser cuestion de dıas o incluso de semanas, lo que situa a nuestrared fuera del reino de lo practico para la mayorıa de los piratas informaticos casuales. Sin embargo, si esuna red ocupada, alguien podrıa recoger los paquetes suficientes para descifra nuestro cifrado en cuestionde horas o en un dıa. Saber todo esto nos ayuda a proteger mejor nuestra red. Puede justificar incluirmas protecciones, como mejores controles fısicos o limitar el trafico en la red. Tambien puede justificar laactualizacion de nuestro equipamiento inalambrico, como por ejemplo a un sistema WPA con un servidorRadius, como el que se propone en este proyecto. Una red inalambrica que utiliza este protocolo puedeser, actualmente (solo actualmente) indescifrable. Podemos descubrir que el nivel de trafico no hace quesea practico descifrar el cifrado. De cualquier forma, dormiremos mucho mejor por la noche, si lo sabemos.

Ejecutar AirSnort

Para instalarlo solo hay que ejecutar la siguiente instruccion:#apt-get install airsnort

Tiene tres archivos ejecutables principales:

airsnort : Recopila los paquetes desde algun origen, normalmente la tarjeta de red inalambrica

gencases: Ordena los datos capturados en busca de claves debiles

decrypt : Realiza los intentos en desconexion de descifrado para los archivos cargados desde otroorigen

AirSnort acepta archivos de otros sniffers inalambricos siempre que se guarden en formato PCAP. Conel tiempo, Kismet separara especıficamente los paquetes interesantes para AirSnort, ahorrandonos estepaso.

No es necesario tener toda la coleccion de datos a la vez. AirSnort puede guardar una sesion y retomarlaposteriormente para realizar adiciones, lo que convierte a AirSnort en una herramienta particularmentepeligrosa para redes inalambricas ya que nadie tiene que perder una sesion interrumpida cerca de nuestrasinstalaciones para recopilar los paquetes suficientes como para entrar en nuestra red. Puede dividir susactividades de recopilacion en incrementos de tiempo mas pequenos y menos perceptibles, suponiendo quela red controlada no cambie sus claves con frecuencia.

Una vez instalado AirSnort, podemos empezar escribiendo airsnort en la lınea de comandos. Comopuede verse en la figura 14.7, la interfaz es muy simple: es una sola pantalla que muestra los paquetes

Jose Antonio Escartın Vigo, Junio 2005.

Page 295: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 14. Redes inalambricas 277

interesantes y el numero total de paquetes cifrados y sin cifrar. La seccion superior muestra nuestrasconfiguraciones, como el tipo de tarjeta NIC, etc. A la derecha podemos cambiar algunas configuracionescomo breadth (numero e intentos que tiene que realizar AirSnort por cada byte de clave) para intentos dedescifrado de 40 bits o 128 bits. El valor predeterminado es 3 para cifrados de 40 bits y 2 para cifrados de128 bits. Si no tenemos muchos datos o tenemos mucha capacidad de procesamiento adicional, podemosintentar aumentar este valor ligeramente, pero no mas de 4 o 5.

Figura 14.7: Imagen de AirSnort

A continuacion, es el momento de sentarnos a recopilar paquetes. No hay que esperar descifrar clavesWEP en un momento. Para que AirSnot funcione correctamente, necesita aproximadamente entre 1.500 y4.500 paquetes con claves debiles, es decir, aproximadamente entre 100MB y 500MB de datos. En una redmoderadamente ocupada, podemos tardar uno o mas dıas en recopilar esta cantidad de datos. En redesmas lentas, podemos tardar mas y en redes ocupadas mucho menos. Hay que esperar, al menos, tardar unpar de horas, aunque seguramente sea mas. Evidentemente, todo se basa en tener un poco de suerte, porlo que los resultados pueden variar entre una hora y nunca.

Cuando un desciframiento de la clave WEP tiene exito, aparece tanto en texto normal como en hexa-decimal en la parte izquierda de la pantalla y los extremos de la sesion de captura.

¿Que pasarıa si encontrasemos las claves WEP? Bueno, hay que tranquilizarse, que no nos entre elpanico ya que la mayorıa de los intrusos casuales no se molestaran lo mas mınimo. Sin embargo deberıamospensar en tomar medidas para aumentar la seguridad de nuestra red inalambrica para que sea mas difıcilrecopilar estos datos. Hay que seguir muchos pasos que varıan desde reemplazar el equipamiento hastavolver a configurar y cambiar el AP (punto de acceso). Tendremos que tomar decisiones basandonos en laconfidencialidad de los datos que tratamos en nuestra red.

Jose Antonio Escartın Vigo, Junio 2005.

Page 296: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)
Page 297: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 15

Servicio de administracion por Web:WebMin

Para acceder a la configuracion de Webmin, si no hemos cambiado los puertos por defecto:http://127.0.0.1:10000, o http://localhost:10000 , https si usamos SSL

Webmin esta dividido en diversos modulos. Cada uno de estos se encarga de la administracion de unaparte concreta del sistema operativo y de los diferentes servicios que tengamos instalados.

Crea una configuracion para cada uno de los modulos basandose en la estructura de ficheros y confi-guracion predeterminada para la version y distribucion de Linux seleccionadas.

Los modulos incluidos por defecto en Debian nos permiten administrar entre otros servicios Apache,Squid, Bind, Exim, Fetchmail, Samba, MySql, etc.

Nota: Un problema que puede producirse en determinadas circunstancias es que una vez finalizada lainstalacion algunos de los modulos que componen Webmin no funcionen correctamente. Esto suele serdebido a que alguna parte del software se ha instalado en directorios que no son estandar en Linux.

15.1. Usuarios de Webmin

El usuario por defecto es el root, una vez que entramos en Webmin podemos crearnos uno o variosusuarios de administracion Webmin.

En el caso de que se nos olvide la contrasena de acceso y tengamos acceso como root al ordenador, sepuede crear una nueva utilizando el comando:

/usr/share/webmin/.changepass.pl /etc/webmin usuario nuevo_password

En el modulo usuarios de Webmin se encuentran las diferentes opciones disponibles para definir yconfigurar los usuarios que tendran acceso a Webmin. Permite al administrador del sistema crear diferentesusuarios para determinadas tareas. Por ejemplo, si el ordenador se utiliza como servidor de correo, podemoscrear un usuario que tan solo tenga acceso al modulo de administracion de Exim, o si se emplea comoservidor de impresion crearıamos un usuario que pudiera administrar las colas de impresion.

De esta forma es posible crear diferentes usuarios en funcion de los modulos a los que tendran acceso,delegando facilmente la administracion de determinados servicios del ordenador a diferentes usuarios ysiendo posible incluso determinar que aspectos de un determinado servicio podra administrar.

15.2. Secciones Webmin

La seccion Webmin nos da acceso a las diferentes opciones de configuracion de Webmin, ası como alos logs de actuaciones, el ındice de servidores Webmin y los usuarios Webmin.

Page 298: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

280 Servidor Linux para conexiones seguras de una LAN a Internet

Desde el modulo de configuracion de Webmin podemos cambiar los aspectos mas importantes delpropio Webmin como instalar nuevos modulos, actualizar Webmin, cambiar el idioma, anadir, eliminar omodificar usuarios de Webmin, cambiar el puerto utilizado, etc.

Figura 15.1: Webmin pantalla de configuracion

Control de acceso a IP

Ya que Webmin tienen su propio servidor web (miniserv.pl) desde esta opcion podemos seleccionarque direcciones de red (como 192.168.100.0), direcciones de host (como 192.168.100.7) o nombres de hosts(linux.upc.es) es posible acceder a Webmin.

Es aconsejable limitar el acceso a Webmin al mınimo de ordenadores que sea posible para evitar deesta forma intentos de acceso no autorizados.

Puerto y direcciones

En esta opcion estableceremos el puerto utilizado para acceder a Webmin, por defecto 10000. En el casode que nuestro ordenador tenga asignada mas de una direccion IP tambien podremos establecer que di-reccion IP debera atender el servidor web de Webmin, ya que por defecto el servidor aceptara peticionesrealizadas a cualquiera de las direcciones IP asignadas al sistema.

Diario

Desde aquı configuraremos la forma en que Webmin guardara un registro de las acciones realizadas.De esta forma podremos monitorizar facilmente las actuaciones realizadas por los diferentes usuarios a losque proporcionemos acceso a Webmin.

Webmin nos permite guardar en el historial las acciones realizadas en funcion del modulo utilizado odel usuario. Se permite programar cuando se limpiara el historial para evitar que el tamano del mismocrezca en exceso.

Servidores Proxy

Webmin dispone de diferentes herramientas que necesitan disponer de acceso a Internet para funcionarcorrectamente, como es el caso de la herramienta de actualizacion de Webmin. Desde esta opcion confi-guraremos el acceso a Internet de Webmin en el caso de que estemos utilizando un servidor proxy o uncortafuegos para acceder a Internet

Interfaz de usuario

El interfaz de usuario de Webmin puede ser modificado de diferentes formas para ajustarse a laspreferencias de cada uno de los usuarios.

Jose Antonio Escartın Vigo, Junio 2005.

Page 299: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 15. Servicio de administracion por Web: WebMin 281

Desde esta opcion se modifican los colores y tipos de letras utilizados para visualizar las paginas deWebmin.

Modulos de Webmin

Webmin esta formado por diversos modulos. cada uno de estos modulos se encargan de realizar unatarea determinada interrelacionada con el servidor web de Webmin (miniserv.pl).

Desde esta opcion, anadiresmo, actualizaremos o eliminaremos los modulos utilizados por Webmin.Esta se encuentra dividida en tres secciones:

Instalar modulo

Clonar modulo

Borrar modulos

Instalar modulo La seccion Instalar modulo permite instalar un nuevo modulo de Webmin, ya seadesde un archivo que se encuentre en el ordenador o desde un archivo que tenga que descargarse deInternet.

Estos modulos Webmin son archivos de extension .wbm

Clonar un modulo Esta opcion permite al administrador del sistema duplicar un modulo para permi-tir a determinados usuarios administrar ciertos servicios. Ası, por ejemplo, si tenemos dos configuracionesdiferentes de Apache ejecutandose en el ordenador, con esta opcion duplicaremos el modulo de administra-cion de Apache para permitir a diferentes usuarios acceder de forma independiente a la version de Apacheque sea necesario.

Eliminar modulos Desde esta ultima seccion, seleccionaremos y borraremos aquellos modulos que nonos sean de interes o no se vayan a utilizar. Ası, por ejemplo, si no tenemos instalado en nuestro ordenadorPostgreSQL podemos eliminar el modulo utilizando para su administracion.

Sistema operativo

Desde esta opcion podremos especificar cual es nuestro sistema operativo. Este proceso debera realizarsesi, por ejemplo, hemos actualizado el sistema operativo instalando una version nueva, la cual modifica laestructura de directorios en los que se guardaba la configuracion de los diferentes servicios del sistema.

Lenguaje

Se emplea para seleccionar el idioma utilizado para visualizar los textos en los modulos.

Opciones de pagina ındice

En esta opcion seleccionaremos el formato de la pagina inicial de Webmin y de las diferentes paginasındice de cada una de las categorıas existentes, indicando el numero de iconos a visualizar en cada fila.

Tambien podemos indicar si queremos agrupar los modulos en funcion de la categorıa a la cual perte-necen.

Mejorar Webmin

Desde esta pagina es posible actualizar Webmin a la ultima version disponible de forma automatica odesde un archivo que hayamos descargado de Internet.

Utiliza un gestor de paquetes para realizar la tarea, en nuestro caso apt.

Jose Antonio Escartın Vigo, Junio 2005.

Page 300: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

282 Servidor Linux para conexiones seguras de una LAN a Internet

Autenticacion

Webmin proporciona algunas caracterısticas orientadas a prevenir ataques como puede ser el intentaraveriguar la contrasena de administracion a base de probar diferentes contrasenas de forma automaticahasta encontrar la correcta.

En el caso de que nuestro ordenador y Webmin sean accesibles desde Internet es recomendable utilizarlas caracterısticas de autenticacion proporcionadas por Webmin para proteger nuestro sistema de posiblesataques.

La primera opcion que encontramos en la ficha es Tiempo maximo de clave de acceso. Si activamosesta opcion, se bloqueara el acceso al ordenador si se producen una serie de fallos en unos segundosdeterminados, esto indicara que alguien esta ejecutando una aplicacion automatica para descubrirnuestra contrasena.

La Autenticacion de sesion nos proporciona un metodo para desconectar un usuario de Webmin sitranscurre un determinado tiempo sin que este realice alguna operacion.

Tambien podemos especificar si permitimos el acceso a Webmin empleando las cuentas de usuariodel sistema en lugar de emplear las cuentas de usuario definidas desde Webmin. Hay que tenermucho cuidado con esta opcion, cualquier usuario que tenga acceso al sistema, sea administrador ono, podra trabajar con Webmin.

Reasignando modulos

Como ya se ha comentado Webmin agrupa los modulos instalados en diferentes categorıas. Estascategorıas estan definidas en funcion de la tarea que realiza el modulo. Desde estas opcion Webmin nospermite asignar un modulo a una nueva categorıa en el caso de que no estemos de acuerdo con la categorıaasignada por defecto.

Algunos modulos desarrollados antes de que se crearan las categorıas en Webmin se asignan por defectoa la categorıa Otros.

Editar categorıas

Utilizaremos esta opcion para crear nuevas categorıas o editar las existentes.

Temas de Webmin

En estas seccion se puede modificar el aspecto y los colores de Webmin, utilizando temas.Los temas de Webmin son muy flexibles, permitiendo al desarrollador modificar practicamente cualquier

aspecto de la apariencia y distribucion de los elementos de Webmin.

Referenciadores de confianza

Al estar basado en archivos web y accederse a el desde un navegador web, uno de los peligros con losque podemos encontrarnos es el hecho de que la informacion de autenticacion se guarda en el navegadory puede ser reenviada de forma automatica desde el. Esto puede causar que otro usuario que emplee elmismo navegador tenga acceso a nuestro sistema sin conocer tan si quiera la contrasena o nombre deusuario de Webmin.

En esta seccion podremos indicar que hosts tienen acceso a Webmin, limitando de esta forma desdeque ordenadores se podra utilizar.

Acceso anonimo a modulo

Esta seccion permite garantizar acceso a modulos selectos de Webmin y a trayectorias sin necesidadde que los clientes hagan login.

Jose Antonio Escartın Vigo, Junio 2005.

Page 301: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 15. Servicio de administracion por Web: WebMin 283

Bloqueo de archivo

Permite bloquear un archivo para que no sea modificado por varios usuarios al mismo tiempo y estopueda producir incoherencias en el sistema.

Encriptacion SSL

Si tenemos instaladas en nuestro ordenador las librerıas OpenSSL y el modulo de Perl Net::SSLeaypodremos emplear conexiones encriptadas con SSL para acceder a Webmin. Para acceder a Webminutilizaremos una conexion segura, de la forma:

https://127.0.0.1:10000, o https://localhost:10000

Ası incrementaremos la seguridad de Webmin, ya que la informacion, como por ejemplo el nombre deusuario y contrasena, se enviara de forma encriptada.

Aunque se instala OpenSSL por defecto en la mayorıa de distribuciones de Linux actuales, es posibleque no tenga instalado Net::SSLeay.

Para instalar OpenSSL y Net::SSLeay deberemos instalar los siguientes paquetes:#apt-get install openssl#apt-get install libnet-ssleay-perl

Autoridad de certificado

Esta opcion se emplea para configurar un certificado SSL para el sistema. De esta forma es posibleconfigurar Webmin para que no sea necesario proporcionar un usuario y contrasena para utilizarlo. Losusuarios pueden solicitar un certificado personal en el modulo de usuarios de Webmin y agregarlo alnavegador, de esta forma el navegador podra autenticarse de forma automatica y segura.

El problema que puede surgir al utilizar este metodo de autenticacion es que cualquier usuario conacceso a un navegador que contenga un certificado valido para acceder a Webmin podra utilizar lasherramientas de administracion. Este metodo tambien invalida polıticas de seguridad como la desconexiondel usuario despues de un determinado periodo de inactividad, ya que simplemente volviendo a abrir elnavegador podrıamos acceder.

15.3. Modulos de Webmin

Existen diversos modulos, que podemos instalar con apt y que permiten configurar de forma rapiday grafica muchas partes del sistema. En la tabla 15.1 podemos observar algunos, solo he colocado losmodulos mas utiles. La mayorıa de ellos han sido utilizados durante la elaboracion del proyecto.

Podemos buscar mas modulos Webmin dentro del sistema Debian con apt-cache:#apt-cache search webmin

Otra fuente de modulos para Webmin la encontraremos en la pagina:http://webadminmodules.sourceforge.net/

Aquı hallaremos una gran cantidad de modulos agrupados por categorıas.

Para instalar los modulos, simplemente realizaremos un apt:#apt-get install <m\’odulo>

Jose Antonio Escartın Vigo, Junio 2005.

Page 302: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

284 Servidor Linux para conexiones seguras de una LAN a Internet

En la siguiente tabla se muestran la mayoria de los modulos disponibles en nuestro sistema Debian:

Cuadro 15.1: Modulos Debian para Webmin

Tipo de operacion Modulo FuncionGestion del servidor webmin-virtual-server Administracion remota

webmin-lilo Gestor de arranque Lilowebmin-grub Gestor de arranque Grubwebmin-status Estado del servidorwebmin-fsdump Copias de seguridadwebmin-inetd Superservidorwebmin-filemanager Archivos

Gestion de paquetes webmin-software Paquetes instaladoswebmin-pserver Versiones concurrenteswebmin-core Modulos core

Gestion de la red webmin-adsl Cliente PPPoEwebmin-bandwidth Monitor de redwebmin-dhcp DHCPwebmin-bind BIND DNSwebmin-nis NISwebmin-exports NFSwebmin-samba Samba

Servicios de red webmin-proftpd ProFTPDwebmin-updown FTPwebmin-telnet Telnetwebmin-ldap-user-simple LDAP usuariowebmin-ldap-netgroups LDAP redeswebmin-mysql MySql

Gestion de usuarios webmin-usermin Usuarioswebmin-quota Cuotas de discowebmin-lpadmin Cuotas de impresion

Servicios de usuario webmin-apache Apachewebmin-webalizer Estadısticas webwebmin-exim Correo corporativo Eximwebmin-fechmail Correo externo Fechmailwebmin-procmail Procesador de correo Procmailwebmin-spamassassin Filtro SpamAssassinwebmin-jabber Mensajerıa Jabber

Gestion de seguridad webmin-sshd SSHwebmin-firewall IPTableswebmin-squid Squidwebmin-snort IDS Snortwebmin-portsentry IDS puertoswebmin-logrotate IDS logs

Jose Antonio Escartın Vigo, Junio 2005.

Page 303: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 15. Servicio de administracion por Web: WebMin 285

Una vez instalados todos los modulos necesarios para el proyecto pasemos a ver graficamente las sec-ciones de nuestro servidor.

Figura 15.2: Pantallas de la interfaz Webmin (I)

Jose Antonio Escartın Vigo, Junio 2005.

Page 304: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

286 Servidor Linux para conexiones seguras de una LAN a Internet

Figura 15.3: Pantallas de la interfaz Webmin (II)

Jose Antonio Escartın Vigo, Junio 2005.

Page 305: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 16

Servicios de monitorizacion delsistema

Para tener bajo control el sistema, es muy importante tener informacion esencial de su rendimiento:procesos en ejecucion, cantidad de memoria disponible, n.o de particiones, etc.

16.1. Monitor del sistema: Top

Proporciona una vision continuada de la actividad del procesador en tiempo real, muestra las tareasque mas uso hacen de la CPU, y tiene una interfaz interactiva para manipular procesos.

Las cinco primeras lıneas muestran informacion general del sistema:

Las estadısticas del comando uptime

Estadısticas sobre los procesos del sistema (numero de procesos, procesos durmiendo, procesos eje-cutandose, procesos zombies y procesos parados).

El estado actual de la CPU (porcentaje en uso por usuarios, por el sistema, por procesos con valor nicepositivo, por procesos esperando E/S, tratando interrupciones hardware y software o desocupada).

La memoria (memoria total disponible, usada, libre, compartida, usada como buffer de E/S y encache, cantidad total de buffer o memoria cache de pagina, en kilobytes, que esta en uso activo,cantidad total de buffer paginas de la cache que podrıan quedar libres, cantidad total de buffer opaginas de la cache que estan libres y disponibles.)

El espacio de swap (swap total disponible, usada y libre).

El resto es similar al del ps, con los procesos ordenados decrecientemente por el uso de la CPU.

La lista es actualizada de forma interactiva, y ademas se permite realizar una serie de tareas sobre losprocesos, como por ejemplo:

Cambiar la prioridad de alguno utilizando el comando “r”.

Matar o enviar una senal con el comando “k”.

Ordenarlos segun diferentes criterios (por PID con “N”, uso de CPU con “P”, tiempo con “A”, etc.).

Con “n” se cambia el numero de procesos que se muestran.

Para salir se utiliza la letra “q”.

Page 306: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

288 Servidor Linux para conexiones seguras de una LAN a Internet

Resulta muy recomendable siempre tener top funcionando en uno de los terminales, para poder ver deforma rapida si hay cargas excesivas en el sistema.

En el siguiente ejemplo podemos observar lo que se verıa habitualmente:$top

top - 15:52:23 up 3:39, 4 users, load average: 0.46, 0.22, 0.29

Tasks: 96 total, 1 running, 95 sleeping, 0 stopped, 0 zombie

Cpu(s): 13.9% us, 2.6% sy, 0.0% ni, 83.5% id, 0.0% wa, 0.0% hi, 0.0% si

Mem: 511948k total, 491884k used, 20064k free, 63432k buffers

Swap: 979924k total, 0k used, 979924k free, 250764k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

4359 root 6 -10 107m 39m 5672 S 9.9 7.9 11:00.41 XFree86

4479 josan 15 0 22700 13m 9656 S 1.3 2.7 0:06.16 gnome-panel

4501 josan 15 0 18992 9.9m 7920 S 1.3 2.0 0:08.43 wnck-applet

4918 josan 15 0 30828 12m 8624 S 1.3 2.6 0:20.18 gnome-terminal

10072 josan 16 0 2132 1064 832 R 1.0 0.2 0:00.16 top

4642 josan 15 0 56140 33m 19m S 0.7 6.6 8:53.77 kile

4475 josan 16 0 12556 7396 6176 S 0.3 1.4 0:08.92 metacity

4503 josan 15 0 17160 8376 6884 S 0.3 1.6 0:10.62 multiload-apple

4512 josan 15 0 18568 8576 7012 S 0.3 1.7 0:33.27 clock-applet

1 root 16 0 1584 512 452 S 0.0 0.1 0:01.07 init

2 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0

3 root 10 -5 0 0 0 S 0.0 0.0 0:00.85 events/0

4 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 khelper

9 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 kthread

18 root 10 -5 0 0 0 S 0.0 0.0 0:01.90 kacpid

111 root 10 -5 0 0 0 S 0.0 0.0 0:00.04 kblockd/0

125 root 16 0 0 0 0 S 0.0 0.0 0:00.24 khubd

246 root 15 0 0 0 0 S 0.0 0.0 0:00.55 pdflush

247 root 15 0 0 0 0 S 0.0 0.0 0:02.41 pdflush

249 root 17 -5 0 0 0 S 0.0 0.0 0:00.00 aio/0

248 root 25 0 0 0 0 S 0.0 0.0 0:00.00 kswapd0

256 root 15 0 0 0 0 S 0.0 0.0 0:00.00 cifsoplockd

257 root 25 0 0 0 0 S 0.0 0.0 0:00.00 jfsIO

258 root 25 0 0 0 0 S 0.0 0.0 0:00.00 jfsCommit

259 root 25 0 0 0 0 S 0.0 0.0 0:00.00 jfsSync

260 root 17 -5 0 0 0 S 0.0 0.0 0:00.00 xfslogd/0

261 root 17 -5 0 0 0 S 0.0 0.0 0:00.00 xfsdatad/0

262 root 15 0 0 0 0 S 0.0 0.0 0:00.00 xfsbufd

881 root 17 0 0 0 0 S 0.0 0.0 0:00.00 kseriod

1104 root 15 0 0 0 0 S 0.0 0.0 0:00.00 khpsbpkt

1114 root 15 0 0 0 0 S 0.0 0.0 0:00.00 knodemgrd_0

1117 root 15 0 0 0 0 S 0.0 0.0 0:00.00 pccardd

...

16.2. Rendimiento del sistema

Al determinar el rendimiento del sistema se debe:

1. Definir el problema con todo el detalle que sea posible.

2. Determinar la causa o causas del problema.

3. Formular explıcitamente los objetivos para mejorar el rendimiento del sistema.

4. Disenar e implementar las modificaciones al sistema y/o programas de aplicacion disenados parallevar a cabo esos.

5. Monitorizar el sistema para determinar si los cambios realizados han sido efectivos.

6. Ir de nuevo al primer paso y volver a empezar, habra un nuevo problema a resolver.

16.2.1. CPU, dispositivos y particiones de E/S: iostat

Para instalarlo hay que ejecutar el siguiente comando:# apt-get install sysstat

Presenta estadısticas sobre la CPU y los dispositivos y particiones de E/S. Para ejecutarlo:$iostat

Jose Antonio Escartın Vigo, Junio 2005.

Page 307: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 16. Servicios de monitorizacion del sistema 289

Y un ejemplo del comando serıa:

# iostatLinux 2.6.11 (debian) 26/05/05

cpu-med: %user %nice %sys %iowait %idle12,55 0,10 1,85 1,82 83,68

Device: tps Blq_leid/s Blq_escr/s Blq_leid Blq_escrhda 2,12 35,58 14,16 581224 231256hdc 0,01 0,08 0,00 1384 0

Donde el significado de las columnas es el siguiente:

tps: n.o de transferencias por segundo

Blq leid/s: n.o de bloques leıdos por segundo

Blq escr/s: n.o de bloques escritos por segundo

Blq leid: n.o total de bloques leıdos

Blq escr: n.o total de bloques escritos

16.2.2. Memoria: free

Se utiliza para obtener informacion sobre el estado de la memoria, (el significado de los campos esmismo que en top).

Este podrıa ser un ejemplo de su uso:

# freetotal used free shared buffers cached

Mem: 511948 472644 39304 0 63548 230704-/+ buffers/cache: 178392 333556Swap: 979924 0 979924

16.2.3. Memoria virtual: vmstat

Si queremos obtener informacion sobre la memoria virtual utilizaremos este comando.

Esto podrıa ser una salida tıpica:

# vmstatprocs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----r b swpd free buff cache si so bi bo in cs us sy id wa0 0 0 38528 63620 230752 0 0 17 7 1063 255 12 2 84 2

En la siguiente tabla muestro el significado de las columnas:

r: numero de procesos esperando su tiempo de ejecucion.

b: numero de procesos en espera

w: numero de procesos en espacio de intercambio

us: tiempo de usuario como porcentaje del tiempo total

Jose Antonio Escartın Vigo, Junio 2005.

Page 308: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

290 Servidor Linux para conexiones seguras de una LAN a Internet

sy: tiempo de sistema como porcentaje del tiempo total

id: tiempo de inactividad como porcentaje de tiempo total

Si ejecutamos con la opcion: $vmstat 2, refresca cada segundo.

16.2.4. Disco: df, du

Para poder observar estadısticas del disco utilizaremos estos comandos:

df: por cada sistema de ficheros informa de su capacidad, del espacio libre, del espacio usado y delpunto de montaje

du: cantidad de espacio utilizado por un directorio, y todos los subdirectorios que hayan en el.

Esto es la salida de mi sistema para el comando df:

# dfS.ficheros Bloques de 1K Usado Dispon Uso% Montado en/dev/hda4 1921188 127236 1696360 7% /tmpfs 255972 8 255964 1% /dev/shm/dev/hda5 1921156 22344 1801220 2% /boot/dev/hda7 1921156 324 1823240 1% /tmp/dev/hda8 964500 505948 409556 56% /var/dev/hda9 3842376 3656336 0 100% /usr/dev/hda10 2284880 150528 2018284 7% /home/dev/hda11 31246392 29145696 2100696 94% /mnt/ntfsnone 5120 3216 1904 63% /dev

Se puede ver que el disco tiene un grave problema en /usr, ya que esta en uso al 100 %. Hay que liberarespacio para que el sistema funcione correctamente.

Con el comando #du -sh, se muestra el espacio usado por los archivos y directorios del directorioactual.

16.2.5. Usuarios y sus procesos: w

Sirve para determinar que usuarios estan conectados y que estan haciendo.

El siguiente ejemplo ilustra el comando:

# w17:07:08 up 4:54, 2 users, load average: 0,31, 0,22, 0,26USER TTY FROM LOGIN@ IDLE JCPU PCPU WHATjosan :0 - 12:18 ?xdm? 36:34 1.54s x-session-managjosan pts/4 :0.0 15:53 1.00s 0.11s 25.63s gnome-terminal

Las columnas que aparecen significan lo siguiente:

JCPU: tiempo usado por todos los procesos asociados a ese terminal (incluye los procesos en segundoplano actuales, pero no los pasados)

PCPU: tiempo de CPU usado por el proceso actual

16.3. Gestionar procesos

Para poder observar y modificar el funcionamiento de nuestros procesos disponemos de las siguientesherramientas:

Jose Antonio Escartın Vigo, Junio 2005.

Page 309: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 16. Servicios de monitorizacion del sistema 291

16.3.1. Visualizar procesos: ps

El comando ps, abreviatura de proceso, nos ensena todos los procesos que se estan ejecutando en unsistema, algo que puede ser muy util para determinar si existe algun proceso ejecutandose en segundoplano que no deberıa estar ejecutandose.

En la tabla 16.1 podemos observar una lista de las opciones del comando:

Cuadro 16.1: Opciones del comando ps

Opcion DescripcionA Muestra los procesos de todos los usuariosa Muestra los procesos de los usuarios para todos los procesos con tty (terminal)u Muestra el nombre del usuario del procesox Muestra los procesos con control de tty-u<user> Muestra los procesos del usuario

A continuacion muestro las opciones mas comunes:

$ps$ps aux$ps al$ps -u<user>

La informacion se encuentra subdividida en las siguientes columnas:

USER: usuario que lanzo el programa

PID: Identificador del proceso

PPID: Identificador del proceso padre

%CPU: Porcentaje entre el tiempo usado realmente y el tiempo que lleva en ejecucion.

%MEM: Fraccion de memoria consumida (es un porcentaje estimado)

SIZE: Tamano virtual del proceso: codigo + datos + pila

RSS: Memoria real usada

STAT: Estado del procesoR: en ejecucionS: durmiendoI: esperandoT: paradoD: esperando una E/SW: no tiene paginas residentesN: prioridad ><: prioridad < 0

Si se observa algun servicio misterioso ejecutandose, hay que investigar un poco mas.

Jose Antonio Escartın Vigo, Junio 2005.

Page 310: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

292 Servidor Linux para conexiones seguras de una LAN a Internet

Un ejemplo de esto serıa:$ ps aux

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

root 1 0.0 0.0 1584 472 ? S 11:50 0:01 init [2]

root 2 0.0 0.0 0 0 ? SN 11:50 0:00 [ksoftirqd/0]

root 3 0.0 0.0 0 0 ? S< 11:50 0:01 [events/0]

root 4 0.0 0.0 0 0 ? S< 11:50 0:00 [khelper]

root 9 0.0 0.0 0 0 ? S< 11:50 0:00 [kthread]

root 18 0.0 0.0 0 0 ? S< 11:50 0:06 [kacpid]

root 111 0.0 0.0 0 0 ? S< 11:50 0:00 [kblockd/0]

root 125 0.0 0.0 0 0 ? S 11:50 0:00 [khubd]

root 277 0.0 0.0 0 0 ? S< 11:50 0:00 [aio/0]

root 276 0.0 0.0 0 0 ? S 11:50 0:02 [kswapd0]

root 284 0.0 0.0 0 0 ? S 11:50 0:00 [cifsoplockd]

root 285 0.0 0.0 0 0 ? S 11:50 0:00 [jfsIO]

root 286 0.0 0.0 0 0 ? S 11:50 0:00 [jfsCommit]

root 287 0.0 0.0 0 0 ? S 11:50 0:00 [jfsSync]

root 288 0.0 0.0 0 0 ? S< 11:50 0:00 [xfslogd/0]

root 289 0.0 0.0 0 0 ? S< 11:50 0:00 [xfsdatad/0]

root 290 0.0 0.0 0 0 ? S 11:50 0:00 [xfsbufd]

root 352 0.0 0.0 0 0 ? S 11:50 0:00 [shpchpd_event]

root 951 0.0 0.0 0 0 ? S 11:50 0:00 [kseriod]

root 1175 0.0 0.0 0 0 ? S 11:50 0:00 [khpsbpkt]

root 1185 0.0 0.0 0 0 ? S 11:50 0:00 [knodemgrd_0]

root 1188 0.0 0.0 0 0 ? S 11:50 0:00 [pccardd]

root 1241 0.0 0.0 0 0 ? S< 11:50 0:00 [exec-osm/0]

root 1259 0.0 0.0 0 0 ? S 11:50 0:00 [pktgen/0]

root 1343 0.0 0.0 1572 392 ? S<s 11:50 0:00 udevd

root 2990 0.0 0.0 0 0 ? S 11:51 0:03 [kjournald]

root 2991 0.0 0.0 0 0 ? S 11:51 0:00 [kjournald]

root 2992 0.0 0.0 0 0 ? S 11:51 0:02 [kjournald]

root 3924 0.0 0.1 2876 520 ? Ss 11:51 0:00 dhclient3 -pf /var/run/dhclient.eth0.pid -lf /var/run/dhdaemon

root 4189 0.0 0.1 2328 656 ? Ss 11:51 0:00 /sbin/syslogd

root 4192 0.0 0.0 3128 488 ? Ss 11:51 0:00 /sbin/klogd

root 4221 0.0 0.1 1580 612 ? Ss 11:51 0:00 /usr/sbin/acpid -c /etc/acpi/events -s /var/run/acpid.soroot

message 4250 0.0 0.1 2160 880 ? Ss 11:51 0:00 /usr/bin/dbus-daemon-1 --system

hal 4255 0.1 0.6 8136 3236 ? Ss 11:51 0:34 /usr/sbin/hald --drop-privileges

root 4265 0.0 0.0 2316 508 ? Ss 11:51 0:00 /usr/sbin/inetd

root 4386 0.0 0.0 1600 484 ? Ss 11:51 0:00 /sbin/cardmgr

root 4390 0.0 0.0 1572 456 ? SNs 11:51 0:02 /usr/sbin/powernowd -q

root 4399 0.0 0.1 3544 660 ? Ss 11:51 0:00 /usr/sbin/sshd

root 4423 0.0 0.2 4820 1148 ? Ss 11:51 0:00 /usr/bin/X11/xfs -daemon

root 4532 0.0 0.2 2816 1028 ? S 11:51 0:00 /bin/bash /etc/rc2.d/S20xprint start

root 4533 0.0 0.2 2816 1028 ? S 11:51 0:00 /bin/bash /etc/rc2.d/S20xprint start

root 4534 0.0 0.1 11788 536 ? S 11:51 0:00 /usr/bin/Xprt -ac -pn -nolisten tcp -audit 4 -fp /usr/X1root

josan 4553 0.0 0.3 3440 1908 ? Ss 11:51 0:30 /usr/sbin/famd -T 0

root 4567 0.0 0.1 2448 608 ? Ss 11:51 0:00 /sbin/rpc.statd

root 4677 0.0 0.3 9184 1684 ? Ss 11:51 0:00 /usr/bin/perl /usr/share/webmin/miniserv.pl /etc/webmin/daemon

root 4694 0.0 0.1 1820 744 ? Ss 11:51 0:00 /usr/sbin/cron

root 4699 0.0 0.3 9476 1772 ? Ss 11:51 0:00 /usr/bin/gdm

root 4701 0.0 0.4 10032 2164 ? S 11:51 0:00 /usr/bin/gdm

root 4749 0.0 0.0 1580 416 tty1 Ss+ 11:51 0:00 /sbin/getty 38400 tty1

root 4750 0.0 0.0 1580 416 tty2 Ss+ 11:51 0:00 /sbin/getty 38400 tty2

root 4751 0.0 0.0 1580 416 tty3 Ss+ 11:51 0:00 /sbin/getty 38400 tty3

root 4752 0.0 0.0 1580 416 tty4 Ss+ 11:51 0:00 /sbin/getty 38400 tty4

root 4753 0.0 0.0 1580 416 tty5 Ss+ 11:51 0:00 /sbin/getty 38400 tty5

root 4754 0.0 0.0 1580 416 tty6 Ss+ 11:51 0:00 /sbin/getty 38400 tty6

root 4819 7.5 43.4 238624 222152 ? S< 11:51 41:44 /usr/X11R6/bin/X :0 -audit 0 -auth /var/lib/gdm/:0.Xauthjosan

josan 5133 0.0 0.0 3072 428 ? Ss 12:01 0:00 /usr/bin/ssh-agent x-session-manager

josan 5135 0.0 1.1 10068 5812 ? S 12:01 0:01 /usr/lib/gconf2/gconfd-2 5

josan 5140 0.0 0.1 2328 772 ? S 12:01 0:00 /usr/bin/gnome-keyring-daemon

josan 5142 0.0 0.4 5620 2240 ? Ss 12:01 0:00 /usr/lib/bonobo-activation/bonobo-activation-server --acjosan

josan 5169 0.0 0.4 9060 2196 ? Ss 12:01 0:04 gnome-smproxy --sm-config-prefix /.gnome-smproxy-ghqj5S/josan

josan 5182 0.0 1.1 16628 6052 ? Ss 12:01 0:01 gnome-volume-manager --sm-config-prefix /gnome-volume-majosan

josan 5206 0.0 1.9 18972 9720 ? S 12:01 0:16 /usr/lib/gnome-panel/wnck-applet --oaf-activate-iid=OAFIjosan

root 8911 0.0 0.0 0 0 ? S 14:20 0:03 [pdflush]

josan 10637 0.0 1.8 22600 9304 ? Ss 15:07 0:00 kdeinit Running...

josan 10640 0.0 1.7 22296 8796 ? S 15:07 0:00 dcopserver [kdeinit] dcopserver --nosid --suicide

josan 10642 0.0 1.9 24068 9896 ? S 15:07 0:00 klauncher [kdeinit] klauncher

josan 10644 0.0 2.5 26808 13056 ? S 15:07 0:01 kded [kdeinit] kded

josan 10738 0.0 2.9 31816 14972 ? S 15:07 0:08 knotify [kdeinit] knotify

josan 13198 0.0 2.6 26084 13540 ? S 16:43 0:02 kio_uiserver [kdeinit] kio_uiserver

josan 14623 1.9 13.4 83728 68852 ? S 17:33 4:05 /usr/bin/kile

josan 14624 0.0 0.3 3280 1640 pts/0 Ss+ 17:33 0:00 /bin/bash

josan 17531 0.0 1.9 24276 10036 ? S 19:23 0:00 kio_file [kdeinit] kio_file file /tmp/ksocket-josanGrQ9Wjosan

josan 20028 0.0 0.1 2276 664 ? S 21:03 0:00 gnome-pty-helper

josan 20029 0.0 0.3 3284 1644 pts/1 Ss 21:03 0:00 bash

josan 20042 0.0 0.1 2564 844 pts/1 R+ 21:04 0:00 ps aux

16.3.2. Enviar signals a procesos: kill

En ocasiones es necesario enviar senales a los procesos: pararlos (SIGSTOP -19), eliminarlos, que con-tinuen (SIGCONT -18), etc.

kill [-signal] pids:#kill [-signal] pid, . . . envıa una senal al proceso identificado por pid.

#kill pid, . . . se el dice al proceso que termine, de forma controlada, el estado en que termino puedeser capturado. Esta instruccion le envıa un SIGTERM (signal 15).

La senal SIGKILL (signal 9), no puede ser capturada y fuerza al proceso a finalizar.#kill [-signal] orden, . . . envıa la senal a todos los procesos “orden” (ejemplo: #killall -9 bash).

Jose Antonio Escartın Vigo, Junio 2005.

Page 311: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 16. Servicios de monitorizacion del sistema 293

Hay procesos que no mueren a pesar de recibir la senal KILL:

Procesos zombies

Procesos que esperan un recurso vıa NFS que no esta disponible

Procesos que esperan una peticion de E/S realizada a un dispositivo

16.3.3. Modificar prioridades: nice

El numero nice marca la prioridad del proceso.

Linux realiza una planificacion por prioridades dinamicas

Al lanzar un proceso se le asigna un valor de prioridad (numero nice), por defecto la hereda delproceso padre.

La prioridad dinamica del proceso se calcula en funcion del numero nice, junto con el consumo deCPU realizado

Valores bajos (negativos), implica mas prioridad

Valores altos (positivos), menos prioridad

Rango de prioridad: -20(maxima) a 20 (mınima)

Valor especial: -19, solo se le da la CPU cuando nadie mas la quiere

Asignar un valor negativo o que disminuya (mejore) la prioridad del proceso solo puede hacerlo elroot, aumentar (disminuir prioridad) tambien lo puede hacer el usuario que lo ejecuto

nice -incremento orden a ejecutar

renice nueva prioridad pid

16.4. Terminal de root con prioridad maxima

Para establecer un programa de maxima prioridad solamente es necesario subir la prioridad a uno denuestros terminales. Para no confundirnos es recomendable utilizar siempre el mismo terminal. El ejemplose muestra con el terminal 5.

Hacemos un ps: #ps -uroot

Identificamos el numero de proceso (PID) que tiene el tty5

Aumentamos la prioridad de ese terminal: #renice -20 [pid_tty5]

Si el sistema se ralentiza pasamos al terminal 5, CTRL+ALT+F5 y desde ahı podemos comprobarque esta pasando y solucionar el problema.

16.5. Programacion de tareas

Una posibilidad deseable en cualquier sistema operativo es la de poder ejecutar algunos procesos deforma periodica o en un momento determinado del dıa, la semana o el mes. En Linux hay multiples yvariadas formas tanto para los usuarios como para el sistema de crear tareas a ejecutarse en el futuro o deforma periodica. Las tareas o trabajos no son mas que uno o varios comandos que se ejecutan utilizandoun shell como interprete.

Jose Antonio Escartın Vigo, Junio 2005.

Page 312: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

294 Servidor Linux para conexiones seguras de una LAN a Internet

16.5.1. At

Para un usuario definir una tarea o trabajo a ejecutarse en un momento determinado puede utilizar elcomando at. Este ofrece numerosas posibilidades.

Los comandos que componen el trabajo por defecto se toman de la entrada estandar una vez invocadoel comando, o de un fichero utilizando la opcion -f, el camino a este fichero debe estar especificado a partirdel directorio home del usuario. Se pueden utilizar varias colas para colocar las tareas. Estas se nombrancon todas las letras del alfabeto y tienen prioridad mayor los trabajos en las colas con “letras mayores”.

Para ver todas las tareas de tipo at se utiliza el comando atq y para cancelar alguna, atrm.La salida estandar y de errores de estas tareas se envıa a traves del correo local al usuario correspon-

diente a menos que este las redireccione utilizando los operadores correspondientes. El administrador delsistema puede especificar cuales usuarios pueden o no utilizar at en los ficheros /etc/at.allow y /etc/at.deny.

A continuacion vemos unos ejemplos del uso de at :

$ at 4:45pm # crea una tarea para ejecutarse a las 4:45 PM que imprimeat> echo "hora de irse" # mensaje en la salida estndar, se enviar por correoCtrl-d #sale del modo insertar tareas

$at -f save_all.sh 5:00PM tomorrow # ejecutara save_all.sh, 5:00PM

$at -q Z -f script.sh 3:00am + 5 days # trabajo en la cola Z y ejecutado 3AM en 5 dias

$at -f bin/my_job -m midnight Sep 24 # lanza medianoche, 24 de sep, manda correo

#atq1 2000-11-24 10:35 b pepe2 2000-11-23 00:00 c pepe5 2000-11-26 01:00 Z root

#at -c 2 # muestra el contenido de tarea 2

Tambien existe el comando batch que es similar a at solo que los trabajos batch se ejecutan cuandola carga del procesador lo permita, o sea tenga un valor inferior a 0.8 por defecto. Este valor puedemodificarse cuando se levanta el servicio atd que es el que se encarga de manipular estas tareas.

16.5.2. Cron

Existe otro tipo de tareas que se pueden ejecutar periodicamente conocidas como crons. Para definirlasse emplea un fichero por usuario cuyo formato se explica a continuacion.

Basicamente para cada tarea periodica se escribe una lınea donde se especifican los momentos en quese ejecutara y el comando correspondiente. Tambien se pueden realizar asignaciones a variables de entornoque seran vlidas solo para los procesos indicados en lo sucesivo mientras no aparezcan nuevas asignaciones.Las fechas se especifican utilizando cinco indicadores separados por espacios:

1. Minutos: Oscila entre 0 y 59

2. Horas: Oscila entre 0 y 23

3. Dıas del mes: Oscila entre 1 y 31

4. Meses: Oscila entre 1 y 12 (se pueden poner tambien las tres primeras letras del nombre del mes eningles)

5. Dıas de la semana: Oscila entre 0 y 7 (0 y 7 corresponden al domingo, tambien se pueden usar lastres primeras letras del nombre del dıa en ingles)

Jose Antonio Escartın Vigo, Junio 2005.

Page 313: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 16. Servicios de monitorizacion del sistema 295

Si no se coloca alguno de los cinco indicadores se pone el caracter “*” en su lugar. Para separar indi-cadores de un mismo tipo se utiliza la coma; para indicar rangos, el signo “-”; y para variar el incrementodel rango a n se puede colocar /n despues del rango.

A continuacion muestro ejemplos de este sistema:

PATH = /bin:/usr/bin:/sbin/:/usr/sbin:~/programas/bin10 4 * * 0 backup every_thing0 5 1,5,10,15,20,25,30 * * backup part_one

FILE = ~/docs/partners.txtINFORM = ~/docs/inform.ps0 7 * 1-6,9-12 mon sendmailsTARGET = ~/especial/target.img0 8 31 12 * sendmotherMAILTO = josan0 8-16/2 4,19 * * echo "cobraste josan?"

Los ficheros de tareas periodicas o crons de los usuarios se guardan en el directorio del sistema/var/spool/cron/ cada uno con el login del usuario correspondiente como nombre.

Para evitar algunos errores en la sintaxis de estos ficheros no se editan directamente por los usuarios,sino que se utiliza el comando crontab. Este permite editar, listar y borrar los crons.

Opciones del crontab:

-e: permite editar el fichero de crons. La variable de entorno EDITOR indicara el editor con que semodificara el fichero de crons

-l: lista todos los crons del usuario

-r: borra todos los crons

A continuacion, podemos observar algunos ejemplos del uso de crontab:

$ export EDITOR=vim; crontab -e # editor por defecto vim$ export VISUAL=kwrite; crontab -e # editor visual kwrite$ crontab -l$ crontab -r

El siguiente codigo presenta el contenido del archivo /etc/crontab de mi servidor:

# cat /etc/crontab

# /etc/crontab: system-wide crontab# Unlike any other crontab you don’t have to run the ‘crontab’# command to install the new version when you edit this file.# This file also has a username field, that none of the other crontabs do.

SHELL=/bin/shPATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user command17 * * * * root run-parts --report /etc/cron.hourly25 6 * * * root test -x /usr/sbin/anacron || run-parts --report /etc/cron.daily47 6 * * 7 root test -x /usr/sbin/anacron || run-parts --report /etc/cron.weekly52 6 1 * * root test -x /usr/sbin/anacron || run-parts --report /etc/cron.monthly

El demonio que se encarga de que se ejecuten las instrucciones es crond.

Jose Antonio Escartın Vigo, Junio 2005.

Page 314: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

296 Servidor Linux para conexiones seguras de una LAN a Internet

16.5.3. Tareas periodicas

Un sistema Linux trae algunas tareas periodicas definidas por defecto y es posible a su vez crear otras.En este caso se emplea un fichero con formato similar al de los usuarios, que se almacena en /etc/crontab,con la diferencia de que este sı se edita directamente ademas de que se puede especificar el usuario concuyos privilegios se ejecuta el proceso.

Las tareas del sistema se organizan en cuatro grupos: tareas que se ejecutan cada una hora, tareasdiarias, tareas semanales y tareas mensuales.

A cada uno de estos grupos le corresponde un directorio:/etc/cron.hourly/, /etc/cron.daily/, /etc/cron.weekly/ y /etc/cron.monthly/ respectivamente.

En cada directorio se colocan los programas o comandos a ejecutarse periodicamente de acuerdo alperıodo correspondiente.

Algunas de las tareas que se hacen de forma periodica por el sistema, son la actualizacion de las basesde datos sobre las que trabajan los comandos locate y whatis, ası como la rotacion de las trazas del sistema.Esto puede utilizarse, por ejemplo, para descargar las bases de datos de los antivirus para Windows y quenuestros clientes las obtengan de un directorio local.

Al igual que para las tareas que se crean con at, tanto la salida de errores como la estandar de todaslas tareas periodicas, se trasmiten al usuario correspondiente utilizando la mensajerıa local del sistema.Para el caso de las tareas del sistema, se envıan al usuario root a menos que se defina lo contrario.

16.5.4. Anacron

Una tarea tipo cron es muy util pero su ejecucion depende de que la maquina se encuentre encendidaen el momento exacto para el que se programo. Es por ello que existe otro tipo de tareas periodicas:las anacrons. Estas se ejecutan cada cierto tiempo especificado en dıas. En caso de que la maquina seapague durante un tiempo mayor que el especificado, entonces una vez encendida y activado el servicioque manipula los trabajos anacron todos aquellos que se encuentren atrasados se ejecutaran tan prontotranscurra la espera especificada. O sea, para cada trabajo anacron se indica un tiempo en dıas y unaespera (delay).

Los trabajos anacron se almacenan en el fichero del sistema /etc/anacrontab. Ademas de indicar elintervalo de dıas, el delay y el comando se especifica un nombre para el trabajo. Este se emplea para lastrazas y para nombrar un fichero que emplea el servicio de anacron para saber cuando fue la ultima vezque ejecuto este trabajo (timestamp file). Este fichero se almacena en /var/spool/anacron/ y slo contieneuna fecha.

Si no se encuentra instalado, es necesario hacer un apt:#apt-get install anacron

El fichero /etc/anacrontab tiene la forma:

SHELL=/bin/shPATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin1 5 cron.daily run-parts /etc/cron.daily7 10 cron.weekly run-parts /etc/cron.weekly30 15 cron.monthly run-parts /etc/cron.monthly

Podrıa pensarse que puede ocurrir que un mismo programa se ejecute por la vıa cron y por la anacron,pero esto no sucede pues existe una tarea cron para cada perıodo que actualiza los ficheros en los cuales sebasa el servicio anacron para saber que es lo que debe ejecutar; o sea, cuando el servicio cron logra ejecutarlas tareas correspondientes a un perıodo, actualiza el fichero de ese perıodo, y cuando llega anacron (quese demora mas) ya no tiene que ejecutar las tareas.

Jose Antonio Escartın Vigo, Junio 2005.

Page 315: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Parte IV

Valoracion final

Page 316: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)
Page 317: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 17

Pruebas del sistema

17.1. Nessus: Escaner de vulnerabilidades

Nessus es un potente escaner de redes de Software Libre. Consta de dos partes (cliente/servidor) quepueden estar instaladas en las misma maquina por simplicidad.

Si el ataque se hace hacia localhost lo que se consigue es auditar nuestra propia maquina.Cuando finaliza el escaneo se generan unos informes que si se sabe aprovechar e interpretar explican

que tipo de vulnerabilidades han sido encontradas, como “explotarlas” y como “evitarlas”.

La distribucion de Nessus consta de cuatro ficheros basicos: las librerıas del programa, las librerıasNASL (Nessus Attack Scripting Language), el nucleo de la aplicacion y sus plugins.

Para instalar el programa hay que realizar el apt siguiente:#apt-get install nessus nessusd

Y despues descargamos de la pagina de Nessus (http://www.nessus.org/ ) los plugins que creamos ne-cesarios, instalandolos en la carpeta /nessus/plugins.

Durante el proceso de instalacion se nos realizan una serie de preguntas para generar un certificadoSSL para Nessus:-------------------------------------------------------------------------------

Creation of the Nessus SSL Certificate

-------------------------------------------------------------------------------

Congratulations. Your server certificate was properly created.

/etc/nessus/nessusd.conf updated

The following files were created :

. Certification authority :

Certificate = /var/lib/nessus/CA/cacert.pem

Private key = /var/lib/nessus/private/CA/cakey.pem

. Nessus Server :

Certificate = /var/lib/nessus/CA/servercert.pem

Private key = /var/lib/nessus/private/CA/serverkey.pem

Donde podemos observar que se ha creado un certificado autofirmado para el servidor Nessus.

17.1.1. Configurar el programa

Vamos a seguir una serie de pasos para configurar el servidor Nessus:

El archivo de configuracion es: /etc/nessus/nessusd.conf

La configuracion por defecto es completa y valida, entre otras cosas escanea desde el puerto 0 al15000. Ahı podemos modificar todas las opciones que nos parezcan oportunas.

Page 318: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

300 Servidor Linux para conexiones seguras de una LAN a Internet

Creamos un usuario para lanzar el programa, para ello seguiremos las instrucciones de pantalla, unavez ejecutado el siguiente comando:

#nessus-adduser

Entre las opciones que se presentan, para validar el usuario se puede elegir entre el sistema delogin/password o certificados digitales, es mucho mas seguro el sistema de certificados. Tambienpodemos especificar unas reglas (rules) concretas para ese usuario.

Se puede elegir que el usuario acceda desde una red concreta, o permitir que acceda desde todas lasredes. Para esta ultima configuracion es neceario editar el archivo de reglas /etc/nessus/nessusd.rulese introducir la siguiente lınea en la parte address/netmask : default accept

Podemos observar como queda el archivo ası:

#

# Nessus rules

#

# Syntax : accept|reject address/netmask

# Accept to test anything :

default accept

Registrar la version de Nessus, para ello hay que entrar en: http://www.nessus.org/register/ ponerun correo electronico donde se nos reportara la clave. Una vez recibido el correo basta con insertarloen la lınea de comandos:

#nessus-fetch --register <CLAVE>

Una vez tengamos el servidor registrado, lo arrancamos en background:

#nessusd -D o #nessusd --background

Si ejecutamos: # ps aux | grep ’nessus’,. . . podremos observar si se ha cargado bien:

root 10938 0.0 0.9 7332 4712 ? Ss 13:22 0:00 nessusd: waitingroot 10960 1.0 0.1 2316 772 pts/3 S+ 13:23 0:00 grep nessus

17.1.2. Ejecucion de Nessus

Para lanzar el cliente en modo grafico, ejecutaremos el siguiente comando: #nessus

Tambien se puede iniciar en modo comando, para el modo comando consultaremos el manual de ayuda:$man nessus

Es necesario recordar que si tenemos activo el IDS Snort o cualquier otro NIDS, se va a volver loco alejecutar Nessus. Es necesario desactivarlo o hacer que el NIDS ignore la IP de Nessus.

Para ejecutarlo podemos seleccionar las siguientes opciones:

En Nessusd Host, indicaremos los datos anadidos en la creacion del usuario (login/password, etc).

En la pestana de plugins (los tipos de ataques), seleccionaremos todos si queremos un escaneocompleto. Hay que tener cuidado con Denial of service (DoS) por razones obvias.

En credentials, colocaremos la cuenta, contrasena y dominio Samba, si es que lo queremos escanear.

En Scan Options, especificaremos los puertos a escanear y la herramienta a utilizar.

En target, indicaremos la o las direcciones IP de las maquinas a escanear.

Jose Antonio Escartın Vigo, Junio 2005.

Page 319: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 17. Pruebas del sistema 301

En las siguientes pantallas podemos observar cada una de estas secciones:

Figura 17.1: Configuracion de la aplicacion Nessus

Jose Antonio Escartın Vigo, Junio 2005.

Page 320: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

302 Servidor Linux para conexiones seguras de una LAN a Internet

Una vez realizada la comprobacion del servidor podemos observar las siguientes vulnerabilidades en-contradas:

Figura 17.2: Vulnerabilidades encontradas en el sistema

Basicamente podemos decir que la seguridad del servidor esta controlada. A esto unicamente habrıaque anadir alguna actualizacion de versiones para parchear posibles exploits descubiertos recientemente.

17.1.3. Otros interfaces de configuracion

Tambien podemos ejecutar otras interfaces graficas para Nessus:

NPI: Interfaz PHP. Se puede descargar en: http://enterprise.bidmc.harvard.edu/pub/nessus-php/

NCC: Nessus Command Center. Se puede descargar en: http://www.netsecuritysvcs.com/ncc/

Jose Antonio Escartın Vigo, Junio 2005.

Page 321: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 17. Pruebas del sistema 303

17.2. Nmap: Escaner de red y puertos

La herramienta de exploracion de red y escaner de seguridad, Nmap es posiblemente el mejor escanerde puertos existente, permitiendo determinar, de una forma rapida y sencilla, que servidores estan activosy que servicios ofrecen, es decir sus puertos abiertos.

Es una de esas herramientas de seguridad imprescindible para cualquier administrador de sistemas,siendo utilizada diariamente en todo el mundo, tanto por piratas informaticos como por administradoresde sistemas. Su software se ha utilizado en otros muchos programas y ha sido portado a casi todos lossistemas operativos importantes.

Es un requisito previo, realizar un escaneo de vulnerabilidades con Nessus. Existen tambien disponiblesvarios complementos, incluyendo analizadores de salidas del programa, como por ejemplo Nlog.

17.2.1. Caracterısticas basicas

Entre las caracterısticas del Nmap podemos encontrar:

Flexible: Soporta tecnicas avanzadas para el mapeado de sistemas y redes que esten detras de filtrosIP, firewalls, routers y otros obstaculos. Estas incluyen mecanismos de escaneado de puertos (tantoTCP, como UDP), deteccion del sistema operativo, escaneos invisibles, conexiones semiabiertas, . . .

Potente: Se puede utilizar para escanear redes de ordenadores con cientos de maquinas.

Portable: Existen versiones para la gran mayorıa de los sistemas operativos modernos, entre ellos:Linux, Open/Free/Net BSD, Solaris, IRIX, Mac OS X, HP-UX, Sun OS, Windows (fase beta), . . .

Facil : Aunque existen una gran cantidad de opciones disponibles, se puede realizar un sencilloescaneado de puertos con: #nmap -O -sS <maquina>

Libre: El objetivo del proyecto Nmap es proveer a los administradores, auditores e intrusos de unapotente herramienta de seguridad con la que explorar las redes. Nmap se distribuye con licenciaGPL por lo que su codigo fuente esta disponible para su descarga.

Buena Documentacion: Se ha realizado un gran esfuerzo en mantener actualizados y traducidostanto las paginas man, como los tutoriales y el resto de documentacion relacionada con Nmap.

Soportado: Aunque Nmap viene sin garantıa explicita de ningun tipo, se puede escribir al autor outilizar las diferentes listas de distribucion sobre Nmap. Existen varias empresas que incluyen soportepara Nmap entre sus servicios.

Premiado: Nmap ha recibido multitud de premios y reconocimientos concedidos por revistas delsector.

Popular : Diariamente cientos de personas descargan Nmap, ademas esta incluido de serie en muchossistemas operativos, como Debian. Esta gran popularidad es la mejor garantıa de su calidad, soportey desarrollo.

Tal y como hemos comentado, el uso del Nmap es muy sencillo, por ejemplo, para averiguar los servicioso puertos, accesibles de una determinada maquina, bastara con ejecutar: #nmap <host> -O

La salida que obtenermos del servidor que se ha configurado durante el proyecto se puede observar enla siguiente pagina.

Jose Antonio Escartın Vigo, Junio 2005.

Page 322: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

304 Servidor Linux para conexiones seguras de una LAN a Internet

#nmap 192.168.0.10 -O

Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2005-06-11 19:27 CEST

Interesting ports on 192.168.0.10:

(The 1652 ports scanned but not shown below are in state: closed)

PORT STATE SERVICE

9/tcp open discard

13/tcp open daytime

22/tcp open ssh

37/tcp open time

80/tcp open http

111/tcp open rpcbind

113/tcp open auth

515/tcp open printer

631/tcp open ipp

721/tcp open unknown

10000/tcp open snet-sensor-mgmt

Device type: general purpose

Running: Linux 2.4.X|2.5.X|2.6.X

OS details: Linux 2.5.25 - 2.6.3 or Gentoo 1.2 Linux 2.4.19 rc1-rc7), Linux 2.6.3 - 2.6.8

Uptime 0.274 days (since Sat Jun 11 12:52:40 2005)

Nmap finished: 1 IP address (1 host up) scanned in 2.372 seconds

Depues de descubrir los servicios que ofrece la maquina, con un simple telnet hemos obtenido el sistemaoperativo instalado en la maquina y la version de ssh, si se conoce alguna vulnerabilidad de esa versionpodrıa ser atacada: telnet <host> <puerto>

# telnet 192.168.0.10 22

Trying 192.168.0.10...

Connected to 192.168.0.10.

Escape character is ’^]’.

SSH-2.0-OpenSSH_3.8.1p1 Debian-8.sarge.4

Protocol mismatch.

Connection closed by foreign host.

Existen muchas mas opciones y alternativas, por lo que es mas que recomendable acceder a la docu-mentacion incluida con Nmap, ası como a la pagina man del mismo.

#nmap --help

#man nmap

#lynx nmap\manpage-es.html

Estos escaneos de maquinas y redes, suelen dejar huellas de su ejecucion en los registros logs de lasmaquinas escaneadas (por ejemplo, en /var/log/messages), por lo que es interesante el utilizar alguno delos modos de escaneos invisibles que se pueden ejecutar con Nmap, tales como -sF,-sX,-sN Stealth FIN,Xmas, or Null scan, . . . de forma que se evitar finalizar la negociacion TCP, evitando al mismo tiempoel comentado registro en los ficheros logs.

Fyodor, el desarrollador de esta herramienta, tiene un gran sentido de humor, tal y como lo demuestraal implementar la opcion -oS, que muestra la salida del Nmap en un formato que les encantara a losScript-kiddies, la podemos observar en el siguiente ejemplo:

#nmap -oS - 192.168.0.10+

$taRt|ng nmap V. 2.54B3T431 ( www.1n$ecur3.ORg/nmap/ )

|nt3r3sting pOrtz 0n debian.example.org (192.168.0.10):

(The 1545 Portz scannEd but nOT sh0wn bel0w ar3 In $tatE: cLOS3D)

POrt Stat3 S3rv1Ce

22/tcp OpeN $$H

25/Tcp 0pEn smtp

80/tcp 0p3n htTp

139/tcP op3n N3Tb1Oz-Ssn

143/tCP 0pen imap2

515/tcp f!lt3red prinT3r

3128/tcp Op3n squ|d-HtTP

3306/tCp Op3n my$ql

6000/tcp 0p3n x11

Nmap rUn c0mpl3ted -- 1 !P aDdr3Sz (1 hOst uP) scANnEd !n 3 $econdS

Jose Antonio Escartın Vigo, Junio 2005.

Page 323: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 17. Pruebas del sistema 305

17.2.2. Tipos de escaneado

Existen muchos tipos de escaneado que se pueden ejecutar con Nmap. El cuadro 17.1 incluye una listade los que probablemente usaremos con mas frecuencia.

Cuadro 17.1: Tipos de escaneo en NmapTipo de escaneo DescripcionSYN: -sS Escaneado predeterminado, no completa la comunicacion TCP.TCP Connect: -sT Parecido a SYN, completando la comunicacion TCP. Es un metodo ruidoso

y carga en exceso las maquinas examinadas.Ping Sweep: -sP Un simple ping a todas las direcciones, comprueba las direcciones IP activas.Escaneado UDP: -sU Comprueba los puertos UDP para localizar los que escuchan.Escaneado FIN: -sF Escaneado sigiloso, como SYN pero enviando en su lugar un paquete TCP

FIN. La mayorıa de los hosts devolveran un RST.Escaneado NULL: -sN Escaneado sigiloso, establece los indicadores de encabezados a nulos. No es

un paquete valido y algunos hosts no sabran que hacer con el.Escaneado XMAS: -sX Similar a NULL pero todos los indicadores del encabezado TCP se activan.

Los Windows, por su estructura, no responderan.Escaneado Bounce: Usa un agujero en el protocolo FTP, para rebotar paquetes fuera de un-n FTP_HOST servidor FTP y hacia una red interna que normalmente no serıa accesible.

Escaneado RPC: -sR Busca maquinas que respondan a los servicios RPC.Escaneado Windows: Se basa en una anomalıa en las respuestas a los paquetes ACK en algun-sW sistema operativo para mostrar los puertos que se suponen van a filtrarse.

Escaneado Idle: Escaneado sigiloso por el que los paquetes rebotan hacia un host externo.-SI zombie_host_probe_port

17.2.3. Opciones de descubrimiento

Tambien podemos ajustar la forma en que Nmap descubre la red y determina que hosts estan activos.El cuadro 17.2 incluye diversas opciones:

Cuadro 17.2: Opciones de descubrimiento en NmapOpcion DescripcionTCP + ICMP: -PB Utiliza paquetes ICMP y TCP para determinar el estado de un anfitrion. Es la

forma mas fiable y precisa, ya que usa los dos metodos.TCP Ping: -PT Usa solo el metodo TCP. Si estamos intentando ser sigilosos esta es la mejor

opcion.ICMP Ping: -PE No es una buena opcion si el objetivo se encuentra detras de un cortafuegos, la

mayorıa de los paquetes seran eliminados.Dont’s Ping: -P0 Nmap no intentara conocer primero que hosts se encuentran activos en la red,

en su lugar enviara sus paquetes a todas las IP en el rango especificado, inclusoaunque no haya una maquina detras. Puede ser la unica forma de examinar unared bien protegida y que no responde a ICMP.

17.2.4. Opciones de ajuste de frecuencia de Nmap

Nmap nos ofrece la opcion de agilizar o ralentizar la frecuencia con la que envıa sus paquetes de escaner.Si estamos preocupado por la cantidad de trafico de red (o estamos intentando ser sigilosos), podemosralentizar el nivel. Solo hay que tener en cuenta que cuanto mas lejos los enviamos, mas tiempo tardara elescaneado, algo que puede aumentar exponencialmente el tiempo de escaneado en redes grandes. Por otrolado, si tenemos prisa y no nos preocupa el trafico de red adicional, podemos aumentar el nivel. Podemosver los distintos niveles de frecuencia en el cuadro 17.3.

Jose Antonio Escartın Vigo, Junio 2005.

Page 324: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

306 Servidor Linux para conexiones seguras de una LAN a Internet

Cuadro 17.3: Configuraciones de frecuencia en NmapFrecuencia Parametro Frecuencia de paquete ComentariosParanoid -F 0 Una vez cada 5 minutos No utilizar esta opcion en escaneados

de varios hosts, ya que el escaneadonunca terminara.

Sneaky -F 1 Una vez cada 15 segundosPolite -F 2 Una vez cada 4 segundosNormal -F 3 Tan rapida como permita el SO Configuracion predeterminada.Agressive -F 4 Igual que Normal pero la fre-

cuencia del paquete se recorta a5 minutos por host y 1,25 segun-dos por paquete de sondeo

Insane -F 5 0,75 segundos por host y 0,3 se-gunos por paquete de sondeo

Este metodo no funciona bien a no serque estemos en una red muy rapiday usemos un computador realmenterapido, e incluso ası podrıamos perderdatos.

17.2.5. Otras opciones de Nmap

El cuadro 17.4 recoge una lista de otras opciones para Nmap que controlan cosas como la resolucionDNS, la identificacion de SO y otras opciones. Existen mas opciones para ajustar nuestros escaneadosdisponibles utilizando la interfaz de lınea de comandos. Si queremos mas detalles podemos recurrir almanual de Nmap.

Cuadro 17.4: Opciones deversas de NmapOpcion descripcionDon’t Resolve: -n Agiliza el escaneado, pero podemos perder hosts, sobre todo en redes

con DHCP.Fast Scan: -F Escanea los puertos especificados, generalmente los puertos conocidos

por debajo de 1024.Port Range: -p port_range De forma predeterminada Nmap examina los 65.536 puertos disponi-

bles, con esta opcion solo examina ese rango.Use Decoy: -D Se introducen IPs senuelo en el trafico mandado a la maquina que sedecoy_address1, esta examinando, ası le resulta mas dificil saber que maquina le estadecoy_address2, ... escaneando.

Fragmentation: -f Opcion sigilosa, que fragmenta los paquetes de escaneado a mediadaque sale. Los paquetes son montados en la maquina atacada y algunasveces pueden burlar los cortafuegos e IDS.

Get Indentd Info: -I El servicio Identd que se ejecuta en algunas maquinas puede propor-cionar informacion adicional sobre el host consultado.

Resolve All: -R Esta opcion intenta resolver las direcciones en el rango, incluso aunqueno esten respondiendo.

SO Identification -o Analiza la “huella digital” de las respuestas para determinar el SOSend on Device: Obliga a los paquetes de escaneado a salir de una interfaz especıfica.-e interface_name

Jose Antonio Escartın Vigo, Junio 2005.

Page 325: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 17. Pruebas del sistema 307

17.2.6. Salida de Nmap

Nmap produce un informe que muestra cada direccion IP encontrada, los puertos descubiertos escu-chando dicha IP y el nombre conocido del servicio (si lo tiene). Tambien muestra si el puerto se ha abierto,filtrado o cerrado. Sin embargo, solo porque Nmap obtenga una respuesta sobre el puerto 80 e imprima“http”, no significa que un servidor Web se esta ejecutando en el host, aunque es algo bastante probable.Siempre se puede verificar cualquier puerto sospechoso abierto consultando con dicha direccion IP sobre elnumero de puerto especificado y observando la respuesta obtenida. Si existe un servidor Web ejecutandoseahı, normalmente podremos obtener una respuesta mediante la introduccion del comando GET/HTTP.Ası se devolvera la pagina inicial de ındice como HTML (no como una bonita pagina Web), pero podremosverificar si un servidor se esta ejecutando. Con otros servicios como FTP o SMTP podemos llevar a cabotareas similares. Nmap tambien codifica con colores los puertos encontrados, segun la siguiente tabla:

Cuadro 17.5: Codificacion de color de la salida de NmapColor DescripcionRojo Este numero de puerto esta asignado a un servicio que ofrece alguna forma directa de inicio

de sesion en la maquina, como Telnet o FTP. Estos son los mas atractivos para los intrusos.Azul Este numero de puerto representa un servicio de correo como SMTP o POP.Negrita Estos son servicios que pueden proporcionar alguna informacion sobre la maquina o el sistema

operativo.Negro Cualquier otro servicio o puerto identificado.

Como podemos comprobar en el cuadro 17.5, la salida nos permite examinar un informe y determinarrapidamente si hay mas servicios o puertos con los que tenemos que tener cuidado, lo que no significaque deberıamos ignorar cualquier numero inusual que no este resaltado o en negrita. Los troyanos y elsoftware de conversacion se muestran normalmente como servicios desconocidos, pero podemos buscar unpuerto misterioso en una lista de puertos malignos conocidos para determinar rapidamente si el puertoabierto es algo de lo que tenemos que preocuparnos. Si no lo podemos encontrar en dicha lista, tendremosque cuestionarnos cual sera ese servicio extrano que se esta ejecutando en la maquina y que no utiliza unnumero de puerto conocido.

Podemos guardar los registros Nmap como numeros de formato, incluyendo el texto simple o legiblepor la maquina, e importarlos en otro programa. Sin embargo, si dichas opciones no fuesen suficientes,Nlog (sin licencia GPL) o alguna herramienta parecida puede ayudarnos a interpretar la salida Nmap. Suejecucion sobre redes muy grandes puede servirnos de salvavidas ya que el examen cuidadoso de cientosde paginas de salidas Nmap nos puede volver locos rapidamente.

17.2.7. Configuracion grafica de Nmap, interfaz Nmapfe

Incluido con Nmap se encuentra nmapfe que es un interfaz grafica, que permite ejecutar Nmap usandoel raton. Tambien indicar que existen otras interfaces graficas para facilitar aun mas el uso de esta potenteaplicacion (KNmap, KNmapFE, QNMap, Kmap, Web-NMap, vnmap, . . . )

Para instalarla realizaremos un apt:#apt-get install nmapfe

Y para ejecutarla: #nmapfe o xnmap

Nmap es una herramienta ideal para Verificar/auditar el Firewall, tal como dice uno de los banner desu pagina oficial, “Audite la seguridad de sus Redes antes que los chicos malos lo hagan” (Audit yournetwork security before the bad guys do).

La pagina oficial de Nmap es: http://www.insecure.org/nmap/

Jose Antonio Escartın Vigo, Junio 2005.

Page 326: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

308 Servidor Linux para conexiones seguras de una LAN a Internet

17.3. Pruebas de carga

Aunque en un principio pense en realizar una serie de pruebas de carga con diferentes clientes, paradeterminar el grado de sostenibilidad del sistema, no va a hacer falta. Carece de sentido probar algo queno va a aportar ningun dato nuevo, sino la confirmacion de algo que temia desde un principio. Tales eranmis dudas que lo llege a comentar con el director del proyecto.

Durante la elaboracion del proyecto, en todas y cada una de las secciones, en la informacion que heconsultado, se advertıa de que el uso de servicios de gran consumo de recursos en la misma maquinaprovocarıan la ralentizacion del sistema hasta niveles inaceptables. Un ejemplo de esto serıa el IDS Snort,trabajando junto a la base de datos MySQL o el el servidor Syslog.

Puesto que el servidor que utilizo es un ordenador portatil con procesador Intel Centrino a 1,6 Ghz.con 512 Mb de RAM, en vez de un supercomputador con con varios procesadores, no es necesario rea-lizar estas pruebas para confirmar lo evidente. Considero que mi capacidad de optimizacion del sistema,probablemente, sea menor que la de muchas de esas personas que describen como “suicidio”, respecto arendimiento y seguridad, centralizar los servicios de una corporacion en una unica maquina.

Las razones que me llevan a esta decision son varias:

He asumido desde un principio, que el sistema no es capaz de ejecutar y soportar el uso simultaneo delos demonios de los servicios implementados. Esto se puede observar, por ejemplo, cuando arrancoel servidor y Tripwire deja el sistema colapsado, al actualizar las sus bases de datos de archivos(Incluso con una prioridad nice baja (+10).

Por el tamano de la empresa que vaya a implementar el proyecto:

• Para empresas pequenas carece de sentido tener todos los tipos de servidores disponibles, yaque la mayorıa no se utilizaran.

• Para empresas grandes que necesiten todos los tipos de servidores, se disponen de presupuestosadecuados para distribuir los servicios entre varias maquinas. La limitacion no esta en el costede las maquinas sino en el personal que necesitan para configurarlas y administrarlas, ademasdel coste que supone, el espacio fısico que ocupan (en cuartos climatizados), medidas de fısicasde seguridad, etc.

Por motivos de eficiencia no se debe centralizar los servicios:

• La maquina funcionarıa al 100 % de su capacidad, obteniendose de ella un 10 % del rendimientoteorico.

• Si se produjera una caida fortuita de la maquina, como un fallo electrico o mecanico, todos losservicios de la red caerıan con ella.

Por motivos de seguridad no se debe centralizar los servicios:

• Si un servicio tiene un exploit y un intruso obtiene el control de la maquina, obtiene a la mismavez el control de todos los servicios de esa maquina.

• Los ataques dirigidos sobre una sola maquina son mas eficientes que sobre varias.

Por todo ello, no creo necesario realizar pruebas de carga para determinar que no es una buena eleccionsituar todos los servicios en una unica maquina. Y que se deberıa de buscar una solucion para descentralizarel sistema.

Jose Antonio Escartın Vigo, Junio 2005.

Page 327: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 18

Estudio Economico

Mediante los siguientes esquemas se determinara el coste del proyecto de haber sido encargado poruna empresa.

18.1. Recursos

En el siguiente cuadro se detallan los recursos que fueron necesarios para la elaboracion del proyectocon una baremacion aproximada de sus costes.

Cuadro 18.1: Recursos asignados al proyecto

Nombre Nombre corto Grupo Tipo CosteJose Antonio Escartın Vigo Jefe de proyecto Personal Obra 40 e/hJose Antonio Escartın Vigo Analista Personal Obra 30 e/hJose Antonio Escartın Vigo Administrador de sistemas Personal Obra 25 e/hJose Antonio Escartın Vigo Documentalista Personal Obra 15 e/hServidor Portatil Infraestructura Material 1150 eCliente Duron Linux/Windows Infraestructura Material 600 eCliente de alquiler 1 Windows1 Infraestructura Material 100 eCliente de alquiler 2 Windows2 Infraestructura Material 100 ePortatil de alquiler ClienteWifi Infraestructura Material 150 eImpresora HP Deskjet 815 HP815 Infraestructura Material 240 eRouter, Swich y cables Redes Infraestructura Material 300 eMaterial de oficina Oficina Infraestructura Material 300 eLocal, luz e internet Mantenimiento Gastos Material 1500 eDesplazamientos Desplanzamientos Gastos Material 100 eManual de administracion Linux Linux1 Libros Material 48 eLinux a fondo Linux2 Libros Material 30 eTodo Linux Linux3 Libros Material 68 eSw libre: Herramientas de seguridad Seguridad Libros Material 42 eEl libro de LATEX LATEX Libros Material 38 eResto de libros e informacion prove-niente de bibliotecas e Internet

Informacion Libros Material — e

Page 328: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

310 Servidor Linux para conexiones seguras de una LAN a Internet

18.2. Costes

En la siguiente tabla, se puede encontrar una valoracion aproximada de los costes totales del proyecto,basada en los sueldos/hora asignados a cada cargo del personal.

Cuadro 18.2: Costes del proyecto

Nombre Nombre corto Tareas asignadas N.o de horas CosteJose AntonioEscartın Vigo

Jefe de proyecto Establecer la planificacion y fijarobjetivos

20 h. 800e

Jose AntonioEscartın Vigo

Analista Seleccionar herramientas y anali-zar el grado de cumplimiento delos objetivos

50 h. 1.500e

Jose AntonioEscartın Vigo

Administradorde sistemas

Instalar sistema, configurar ser-vicios y realizar las pruebas

220 h. 5.500e

Jose AntonioEscartın Vigo

Documentalista Generar informes y documentarel proyecto

160 h. 2.400e

Material Varios — — 4.766eTOTAL: 14.966e

18.3. Resumen economico

El coste del proyecto esta muy por encima de lo esperado, con un valor aproximado de 15.000e. Parececlaro, que el factor que influye de una forma determinante es la mano de obra necesaria, estableciendo elvalor del material en solamente un tercio del total, por dos tercios la mano de obra.

Manejando estas cantidades, un proyecto de este estilo solo esta al alcance de empresas donde se vayaa utilizar este documento de manera intensiva, haciendo inviable un estudio de este tipo en pymes.

18.4. Modificaciones a los costes economicos

Debido a la falta de experiencia en sistemas Linux y en la creacion de manuales, esta planificacioneconomica se deberıa ver incrementada de la siguiente forma:

Hasta las 350 horas en Administracion de sistemas: Para la asimilacion de los entornos, la configu-racion de los servicios y las pruebas necesarias.

Hasta las 400 horas en Documentacion: Debido al cambio de orientacion del proyecto, hacia laelaboracion de un “Manual de instalacion de servidores en Linux”.

Esto supodrıa un aumento, de valor respecto al proyecto original, de unos 7.000e, subiendo el preciototal aproximado a los 22.000e.

Este aumento en el numero de horas en ningun caso a derivado en un retraso en los plazos de entrega,ya que estos han sido respetados con riguridad. Y atienden a un mejor aprovechamiento y usabilidad delos contenidos del proyecto. Se podrıa decir que respecto a los objetivos iniciales, de “instalar un servidor”,elaborando un “Manual de instalacion para servidores Linux” se ha conseguido que el uso del proyectopueda llegar a mas ambitos y convertirlo en util para muchas personas.

Jose Antonio Escartın Vigo, Junio 2005.

Page 329: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 19

Conclusiones

La conclusion principal es que los objetivos marcados inicialmente fueron erroneos:

No es viable un servidor centralizado:

• El poco coste del material, para una empresa, no compensa las desventajas.

• La descentralizacion se apoya en: Modularidad, seguridad y redimiento.

No es viable un servidor portatil corporativo e itinerante:

• Solo puede ser utilizado para servicios concretos.

• Las redes inalambricas producen graves problemas de seguridad intrinsecos e inevitables.

• Las conexiones itinerantes a Internet, ofrecidas por los ISP, todavıa estan en panales.

• La conexion es un problema, desde los siguientes puntos de vista:

1. Se necesita un punto de acceso (AP) que acompane al servidor, como podrıa ser un router.2. La conexion EAP-TLS a traves de certificados digitales no es muy flexible a la incorpora-

cion de nuevos usuarios, que por ejemplo podrıan ser los empleados de otra oficina, en otraciudad. Este problema lo podrıamos solventar agregando a nuestro sistema un programade validacion de conexion en nuestro sistema por web, como NoCat, donde los usuarios wifiacceden al servidor mediante usuario y contrasena.

El aumento de las horas dedicadas, que no los plazos de entrega, fue debida a que el proyecto evolucionohacia la elaboracion de un: “Manual de instalacion para servidores Linux”, que abarca desde la eleccionde la distribucion, pasando por la instalacion del sistema y finalmente la configuracion de la gran mayorıade servicios disponibles para entornos corporativos.

Este cambio de orientacion, fue decidio a la mitad del proyecto, de nada servıa documentar la ins-talacion de un servidor Linux, si el proceso no podıa ser reproduccido, a menos que se dispusiera de lamisma maquina y la misma infraestructura. El proyecto se ha adaptado a un entorno mas general, basadoen la distribucion Debian Sarge, para que los conociemientos adquiridos, puedan ser aprovechados por unnumero mayor de usuarios de escritorio y administradores de sistemas.

A modo de resumen me quedare con la siguiente frase que lei mientras me documentaba y que estaen concordancia con el espıritu de este proyecto: “En Internet solo el paranoico sobrevive. Puede ser unlugar muy sucio, lleno de virus, gusanos, troyanos, spammers y abogados de litigios de patentes; lo ultimoque alguien querrıa es ponerse en lınea sin proteccion alguna.”

Page 330: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

312 Servidor Linux para conexiones seguras de una LAN a Internet

Es decir, el uso de:

Conexiones seguras como: SSH (telnet), SSL (web), PGP (cifrado de datos), EAP-TSL (wifi), . . .

Firewalls, es decir sistemas de barrera contra ataques exteriores y fugas de informacion.

IDS, sistemas de deteccion de intrusos: NIDS como Snort, IDS como Tripwire para garantizar la in-tegridad en archivos, Honeypots como Honeyd para entretener los ataques de los intrusos, detectoresde escaners de puertos, de sniffers y de rootkits, . . .

Monitorizacion del sistema: Top, Kismet Wireless, AirSonrt, . . .

Chequeos del sistema: Escaneo de vulnerabilidades con Nessus, escaneo de puertos y servicios en redcon Nmap, escaneo de logs con Logcheck, . . .

. . .

No garantiza la seguridad. Si un intruso quiere entrar, y tiene los conocimientos y/o herramientassuficientes, entrara. Las herramientas aquı propuestas son de caracter preventivo, disuasorio y forense. Deesta forma es mucho mas facil que el intruso se desespere y se vaya a hacer lo que quiere hacer, a otro sitio.

Los sistemas de este estilo, no son la panacea, exigen la dedicacion de mucho tiempo y una adminis-tracion rigurosa. Es decir, exigen de mucho tiempo y mucho dinero para que resulten efectivos.

No todas las empresas se podran permitir este tipo de gastos. Hay que analizar hasta donde convieneproteger y aplicar una solucion, que no sera estandar, sino adaptada al perfil de nuestra organizacion oempresa.

A nivel personal a sido un proyecto muy gratificante y muy desesperante al mismo tiempo, esto a sidodebido a varios motivos:

El primero y principal, el proyecto lo plantee demasiado ambicioso. Partıa con mucha voluntad,ganas e interes; pero con una gran falta de conocimientos de base, esto muy pronto se hizo patente.

La planificacion fue bastante imprecisa: Debido a mi falta de experiencia y conocimientos, los plazosse han aumentado muchisimo, llegando suplir esta falta de prevision con unas 300 horas extrasrespecto a la planificacion inicial.

A pocos dıas de la entrega final, se lanzo la version estable del proyecto Debian Sarge. Esto derivoen dos consecuencias importantes:

1. La primera positiva: La eleccion de Debian Sarge fue muy acertada, si hubiera elegido DebianWoody, habrıa terminado un proyecto que desde el principio serıa obsoleto. Por contra, ahoraesta totalmente actualizado y sera valido por un largo periodo de tiempo.

2. En contra: La mayor parte del documento esta escrito pensado que la version estable se lanzarıaen un futuro inmediato. Este futuro se ha adelantado un mes, la solucion a pasado por agregarun anexo (vease anexo G) donde se explica que ha pasado y que implicaciones tiene esto en eldocumento.

El proyecto lo podrıa clasificar de interes personal, ya que mi pasion de siempre, han sido lossistemas operativos. Por razones diversas no me habıa adentrado en el mundo de Linux, mas que aun nivel muy superficial. Este proyecto me ha permitido profundizar e investigar sobre el mundo dela seguridad informatica, sobre todo en entornos Linux y es muy probable que en el futuro, mi perfilprofesional se ubique en este sector.

Con el proyecto finalizo la Ingenierıa tecnica en Informatica de Sistemas, y me servido para afian-zarme en la idea de terminar mis estudios en la Ingeniera superior. Gracias a los conocimientosadquiridos, el proyecto de la superior me resultara mucho mas facil de afrontar y probablementetambien este enfocado hacia alguna parte concreta de la seguridad informatica, sector que actual-metne esta teniendo un gran auge.

Jose Antonio Escartın Vigo, Junio 2005.

Page 331: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Capıtulo 19. Conclusiones 313

Los conocimientos adquiridos en el entorno de composicion de textos LATEX me permitiran, a partirde ahora, realizar documentacion mucho mas profesional.

El descubrimiento del mundo del software libre, me ha abierto el horizonte, las licencias GPL per-miten observar que hay futuro mas haya de las empresas y los entornos propietarios. Cada uno tienesu sector de mercado y deben cooperar en vez de enfrentarse, asumiendo el papel que han elegido.Despues de la elaboracion de este proyecto, yo me he situado claramente en el sector GPL.

Por todo ello, lo considero una experiencia muy positiva y seguramente orientara mi futuro profesionalal sector de la seguridad informatica.

Una objetivo que me gustarıa conseguir, si es posible (es decir, si la universidad y mi director deproyecto estan de acuerdo), es poner a disposicion de la comunidad de usuarios Linux este documento.De esta forma mi trabajo podra ser aprovechado por un mayor numero de personas, ya que este no es eltıpico proyecto con una utilidad muy limitada, sino que tiene un uso mucho mas amplio y puede llegar aser util a mucha gente.

Jose Antonio Escartın Vigo, Junio 2005.

Page 332: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)
Page 333: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Parte V

Apendices

Page 334: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)
Page 335: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Apendice A

Comandos basicos

Para mas informacion sobre los comandos podemos ejecutar: $man <comando>

Comandos de sistema

Comando Descripcionman Paginas del manualls Listar (multiples opciones)rm Borrarcp Copiarmv Mover o renombrarln -s <fichero> <enlace> Enlace debil a ficheropwd Directorio actualcd <directorio> Entra en directoriocd .. Sale del directorio actualchown, chgrp y chmod Sobre atributos de ficherostouch <fichero> Crear ficheros vacıosfind y locate Buscar ficherosgrep Buscar texto en ficheros (muy potente)find / | grep ’cadena’ Busca un fichero que contenga esa cadena por el sistemadf Ver espacio libre en discodu -sh Ver espacio usado en el directorio actualcat, more y less Lista ficheros<comando>|more y <comando>|less Salida de comando filtrada por paginasvim y emacs Editores de texto, modo textonedit, kedit y kwrite Editores de texto, modo graficosplit Partir ficheroswhich Devuelve el Path de un ejecutable, que se encuentre en la

variable $PATH

Entorno grafico X-Windows

Comando Descripcionstartx Iniciar sesion Xstartx -- :2, :3, etc. Abrir nuevas sesionesxf86config Configurar X, modo textoxf86cfg Configurar X, modo graficoCTRL+ALT+BACKSPACE Salir de las X

Page 336: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

318 Servidor Linux para conexiones seguras de una LAN a Internet

Comandos para comunicaciones y redes

Comando Descripcionwho Lista los usuarios conectadosfinger Informacion sobre los usuariosmail Sencillo programa de correowrite Manda un mensaje a la pantalla de un usuariowall Manda un mensaje a todos los usuariosmesg Activa/Desactiva la recepcion de mensajes write y walltalk Establece una conversacion con otro usuariobaner Saca un letrero en pantalla con el texto que se le pase al comandocal Saca un calendario en pantallaclear Limpia la pantalladate Saca fecha y hora actualespasswd Cambia contrasena de un usuario

Comprimir y descomprimir

Comando Descripciontar zxvf Descomprimir un .tar.gztar jxvf Descomprimir un .tar.bz2tar cxvf <archivo>.tar.gz <archivo> Comprimir un archivo o directoriogzip -d Descomprimir un .gztar Empaquetar sin comprimir (multiples opciones)gzip Comprimir ficheros (despues de empaquetar)

Montaje de unidades

Comando Descripcionmount -t msdos /dev/floppy /mnt Montar diskettemount -t iso9660 /dev/cdrom /mnt Montar cdrommount -t <tipo> /dev/<dispositivo> <punto_de_montaje> Montar un dispositivoumount <punto_de_montaje> Desmontar unidad

Uso del sistema

Comando Descripcionps Procesos en ejecucion del teminalps -u<usuario> Procesos en ejecucion del usuariolspci Dispositivos PCI del sistemalsmod Modulos cargados en el kernelmodconf Cargar modulos en el kerneluname -a Informacion del sistemaldconfig -p Librerıas instaladasldd <ruta>/<programa> Librerıas que usa el programashutdown -r 0 Reinizializa el sistema (#reboot)shutdown -h 0 Apaga el sistema (#halt)shutdown <opcion> <n_segundos> Realiza opcion despues de n segundos segundoslogout Cierra la sesion del usuariosu <usuario> Cambia sesion a otro usuario (switch user)fdisk /mbr Borra el gestor de arranque del disco (arranques del siste-

ma)

Jose Antonio Escartın Vigo, Junio 2005.

Page 337: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Apendice B

Debian en castellano

Para tener las aplicaciones en nuestro idioma lo primero que necesitamos es instalar los siguientespaquetes:

#apt-get install user-euro-es language-env euro-support

Una vez hayamos realizado el apt-get, para ver “los locales” (idiomas locales) que tiene el usuario quese encuentra actualmente conectado, hay que ejecutar el siguiente comando:

$locale

Si ademas queremos saber que traducciones locales tenemos disponibles en el sistema, ejecutaremos lasiguiente instruccion:

$locale -a

Si el idioma castellano, no se encuentra disponible entre las locales del sistema las podemos incluiren el archivo de configuracion de locales, /etc/locale.gen. Para ello anadiremos al final de ese archivo lassiguientes lıneas:

es_ES@euro ISO-8859-15es_ES ISO-8859-1

Una vez anadidas al archivo necesitamos que las ejecute y reconfigure nuestro sistema, mediante elcomando:

#/usr/sbin/locale-gen

Ademas en unos de los ficheros que carga las variables de usuario anadiremos las siguientes variablesde entorno. Por ejemplo en el archivo ˜/.bash profile:

export LANG=es_ES.ISO-8859-15export LC_ALL=es_ES@euro

La proxima vez que hagamos login con el usuario cargara el nuevo perfil. Podemos comprobamos que“los locales” son los correctos, con el mismo comando que antes: $locale

Page 338: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

320 Servidor Linux para conexiones seguras de una LAN a Internet

Una vez tengamos disponible el idioma castellano, podemos habilitar tambien el soporte para el euroen la consola. Pasa eso tenemos que anadir las siguientes lıneas al fichero /etc/console-tools/config, ficherode configuracion de la consola:

SCREEN_FONT=lat0-sun16APP_CHARSET_MAP=iso15APP_CHARSET_MAP_vc2=iso15APP_CHARSET_MAP_vc3=iso15

Si ademas tambien queremos colocar las paginas de manuales en castellano hay que instalar los si-guientes paquetes:

#apt-get install user-es manpages-es manpages-es-extra

Solo queda castellanizar las aplicaciones del sistema, si es que tienen los archivos del idioma. Hay queejecutar el siguiente comando, seleccionando las opciones que nos interesen:

#dpkg-reconfigure locales,

Este documento esta basado en la documentacion disponible en Debian, se puede consultar mediante:

$man castellanizar

Jose Antonio Escartın Vigo, Junio 2005.

Page 339: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Apendice C

Archivos de configuracion

Archivo Descripcion/etc/lilo Configuracion del gestor de arranque Lilo/etc/inetd.conf Superservidor de Internet y envoltorio de demonios TCP/IP/etc/xinetd.conf Configuracion del superservidor, mediante entorno grafico/etc/init.d/* Scrips de inicio del sistema que ejecutara initd/etc/rc#.d Scripts runlevels que ejecuta init al arrancar el equipo/etc/passwd Usuarios del sistema/etc/group Contrasenas encriptadas de los usuarios del sistema/etc/skel/* El contenido de este directorio se copiara al home de cada

usuario nuevo del sistema/etc/fstab Montaje de particiones en el sistema/etc/X11/XF86Config-4 Configuracion de las X-Windows˜/.xinitrc Archivo de arranque de usuario para las X-Windows˜/.vimrc Archivo de configuracion del Vim/etc/profile Preferencias de todos los usuarios del sistema˜/.profile Preferencias del usuario˜/.bash profile Preferencias del shell bash˜/.bash login Configuracion de inicio del shell bash˜/.bash logout Configuracion de finalizacion del shell bash˜/.bashrc Si se ejecuta un shell interactivo bash sin entrada por consola/etc/ssh/ssh config Configuracion del cliente para las conexiones seguras SSH/etc/ssh/sshd config Configuracion del servidor de conexiones seguras SSH˜/.gnupg/ Directorio que contiene los archivos de usuario de GnuPG/etc/at.allow Usuarios a los que les esta permitido programar tareas at/etc/at.deny Usuarios a los que les esta denegado programar tareas at/etc/crontab Tareas programadas del sistema/var/spool/cron/crontabs/<usuario> Tareas programadas por cada usuario/etc/anacrontab Tareas programadas que se pueden ejecutar con retraso/etc/locale.gen Archivo de locales/etc/console-tools/config Archivo de configuracion de la consola/etc/webmin/miniserv.conf Archivo de configuracion de Webmin/etc/squid/squid.conf Configuracion del proxy Squid/etc/squid/* Archivos de configuracion del Proxy Squid

Page 340: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

322 Servidor Linux para conexiones seguras de una LAN a Internet

Archivo Descripcion/etc/kismet/kismet ui.conf Configuracion de la interfaz del sniffer wifi Kismet/etc/kismet/kismet.conf Configuracion del sniffer wifi Kismet/etc/freeradius/radiusd.conf Opciones de FreeRadius/etc/freeradius/eap.conf Opciones para EAP en FreeRadius/etc/freeradius/clients.conf IPs clientes de FreeRadius/etc/freeradius/users.conf Usuarios clientes de FreeRadius/etc/modules.conf Modulos que se cargaran al inicio/etc/modules Configuracion de los modulos/etc/network/interfaces Configuracion de interfaces de red/etc/network/options Configuracion de las opciones de red/etc/host.conf Dice al sistema como resolver los nombres de los hosts/etc/hostname Nombre.dominio del host local/etc/hosts Nombre y direccion IP de hosts del sistema/etc/hosts.allow Hosts a los que se le permite el acceso al sistema/etc/hosts.deny Hosts a los que se le deniega el acceso al sistema/etc/hotplug/* Scrips de configuracion de dispositivos hotplug (inst. dinamica)/etc/hotplug.d/* Archivos de agentes de dispositivos/etc/cvs-cron.conf Sistema de versiones concurrentes (cvs)/etc/cvs-pserver.conf Opciones del servidor de versiones (cvs)/etc/dhcpd.conf Archivo de configuracion estandar DHCPD/etc/default/dhcpd Opciones del DHCPD/var/lib/dhcp/dhcpd.leases Base de datos lease para el servidor DHCPD/var/lib/dhcp/dhclient.leases Base de datos lease para el cliente DHCP/etc/default/dhcp3-relay Archivo de configuracion DHCP-relay/etc/dhpc3/dhclient.conf DHCP del cliente dhcp3/etc/dhcp3/dhcpd.conf DHCP del servidor dhcp3/etc/snort/snort.conf Archivo de configuracion de Snort/etc/snort/rules/*.rules Archivos de reglas para Snort/etc/tripwire/twpol.txt Archivo de polıticas/etc/acidlab/acid conf.php Archivo de configuracion de ACID/etc/portsentry/portsentry.conf Archivo de configuracion de PortSentry/var/log/* Registro de logs del sistema/etc/nessus/nessusd.conf Archivo de configuracion de Nessus/etc/proftpd.conf Configuracion del servidor ProFTPD/etc/ftpusers Usuarios del sistema que tienen permitido el acceso FTP/etc/ypserv.conf Configuracion del servidor NIS/etc/ypserv.securenets Configura las IP que tienen permiso para usar el servidor NIS/var/yp/Makefile Configuracion opciones servidor NIS y archivos a exportar/var/yp/yp-servers Listado de los servidores NIS secundarios de nuestro sistema/etc/yp.conf Configuracion del cliente NIS/etc/nsswitch Archivos a importar del servidor NIS/etc/resolv.conf Contiene el nombre y la direccion IP de los servidores DNS/etc/bind/db.lan Anadir para los equipos de una LAN/etc/bind/db.192.168.0 Anadir para el DNS inverso de una LAN/etc/bind/named.conf Configuracion del servidor DNS BIND/etc/bind/named.conf.local Define zonas locales en el servidor DNS BIND/etc/bind/named.conf.options Define las opciones del servidor DNS BIND/etc/samba/smb.conf Configuracion del servidor Samba/etc/smbpasswd Contiene los passwords de los usuarios Samba/etc/smbusers Contiene una lista de los usuarios del sistema y su corresponden-

cia con su usuario Samba/etc/lmhosts Interfaz entre los nombres de maquinas NetBIOS y las direcciones

IP numericas

Jose Antonio Escartın Vigo, Junio 2005.

Page 341: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Apendice C. Archivos de configuracion 323

Archivo Descripcion/etc/printcap Impresoras del sistema/var/spool/samba Cola de impresion, por defecto, en Samba/var/spool/mail Correo de los usuarios/etc/dumpdates Informacion de las copias de seguridad realizadas/<particion>/quota.group Archivos de configuracion de quotas de grupo/<particion>/quota.user Archivos de configuracion de quotas de usuario/etc/exports Archivo de configuracion de NFS/etc/jabber/jabber.xml Archivo de configuracion del servidor Jabber/etc/printcap Archivo de configuracion de impresoras LPD/etc/cups/cupsd.conf Configuracion del servidor Cups/var/run/cups/printcap Archivo de configuracion de impresoras Cups/var/spool/cups Directorio donde se almacenan los archivos que se van a imprimir/etc/apache/httpd.conf Archivos de configuracion de Apache/etc/apache/modules.conf/etc/apache/access.conf/etc/apache/srm.conf/etc/apache/mime.types/etc/apache/conf.d/ Directorio de configuracion de los modulos Apache/etc/apache-ssl/* Los mismos archivos de configuracion, para Apache-SSL/var/log/apache/* Directorio donde se almacenan los logs, generados por Apache/etc/webalizer.conf Archivo de configuracion de Webalizer/var/www/webalizer Reportes de estadisticas web/etc/exim4/exim4.conf.template Archivo de configuracion de Exim4/var/mail/<usuario> Archivo de correo de los usuarios del sistema/etc/mailname Direcciones de correo locales/etc/aliases Alias de nombres de usuario/etc/email-addresses Direccion de correo del servidor/etc/fetchmailrc Archivo de configuracion del servidor Fetchmail˜/.fetchmailrc Archivo de configuracion de usuario Fetchmail/etc/courier/imapd Archivo de configuracion de courier-imap/etc/courier/imapd.cnf Opciones de courier-imap/etc/courier/imapd-ssl Opciones de courier-imap-ssl˜/.mailfilter Configuracion de usuario Maildrop/etc/procmailrc Archivo de configuracion del servidor Procmail˜/.procmailrc Archivo de configuracion de usuario Procmail/etc/clamav/clamd.conf Archivo de configuracion de ClamAV/etc/default/spamassassin Configuracion del SpamAssassin/etc/default/spampd Configuracion del demonio de SpamAssassin

Jose Antonio Escartın Vigo, Junio 2005.

Page 342: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)
Page 343: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Apendice D

¿Por que Debian no tiene rc.local?

A diferencia de otras distribuciones Linux, parece que Debian no usa rc.local (el archivo de configuracionlocal) para el proceso de inicializacion. Entonces, ¿que facilidades suministra Debian para esta tarea?

Runlevels

Tradicionalmente en los sistemas UNIX/LINUX, cuando se inicia la maquina, el proceso “init” (quees ejecutado por el kernel cuando termina su arranque) ejecuta una serie de scripts de inicio, los cualessuelen encargarse de “setear” valores de configuracion y ejecutar diversos programas.

Dicho proceso de arranque se separa en runlevels, que son simplemente numeros que identifican cadaetapa, y en general van del 0 al 6, los numeros del 7 al 9 tambien estan definidos pero no se suelen usar.

Hay una excepcion, el runlevel s, que es el “single user mode”, y se suele usar para tareas especialesde rescate y/o mantenimiento inesperado.

Hoy en dıa, las distribuciones manejan cada una sus scripts de arranque de forma particular, y muchasveces se manejan de forma alternativa sin tener runlevels claramente definidos como hasta hace unos anos.

En algunas, se pueden encontrar los directorios /etc/rc#.d/, donde # representa al numero de runlevel ;en otras estan todos los scripts contenidos en /etc/rc.d o en /etc/init.d. Lo mas aconsejable en cada casoes consultar la documentacion de cada distribucion.

Podemos cofigurar graficamente los scrips de RunLevel con la herramienta: #ksysv

Insertar un script en el arranque

Supongamos que un sistema necesita ejecutar el script exemple al inicializar, o al entrar en un runlevelen particular. Entonces el administrador del sistema deberıa:

Colocar el script exemple en el directorio /etc/init.d/

Ejecutar la orden update-rc.d con los argumentos apropiados para preparar enlaces entre los directo-rios rc?.d (especificados desde la lınea de comandos) y /etc/init.d/exemple. Aquı, ‘?’ es un numeroque corresponde a un runlevel estilo System V

La orden update-rc.d1 creara enlaces entre ficheros en los directorios rc?.d y el script en /etc/init.d/.Cada enlace comenzara con una ‘S’ o una ‘K’, seguida de un numero, seguido por el nombre del script. Losscripts que comiencen con ‘S’ en /etc/rcN.d/ seran ejecutados al entrar al runlevel N. Los que lo hagancon con una ‘K’ seran ejecutados al dejar el runlevel N.

1Para tener disponible el comando update-rc.d hay que realizar un apt: #apt-get install rcconf

Page 344: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

326 Servidor Linux para conexiones seguras de una LAN a Internet

Uno podrıa, por ejemplo, obligar al script exemple a ejecutarse en el arranque, poniendolo en /etc/init.d/e instalando los enlaces con #update-rc.d exemple defaults 19. El argumento ‘defaults’ se refiere a losrunlevels predeterminados, que son los que van del 2 al 5. El argumento ‘19’ se asegura de que exemplesea llamado antes que cualquier otro script que contenga el numero 20 o un numero mayor.

Si necesitamos administra este tipo de archivos de runlevel podemos instalar con apt, el siguiente pa-quete: #apt-get install rcconf

Para ejecutarlo intruduciremos el comando: #rcconf

Mostrara un menu grafico desde donde podremos habilitar o deshabilitar servicios en la carga inicialdel sistema.

Insertar un script, mediante el asistente grafico

Se pueden agregar scrips de forma grafica, mediante nuestra herramienta de configuracion web: Web-mail. En la figura D.1 podemos observar el metodo para agregar un scrip nuevo.

Figura D.1: Interfaz grafica Webmin para agregar Runlevels

Jose Antonio Escartın Vigo, Junio 2005.

Page 345: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Apendice E

Puertos por defecto

El n.o de puertos a los que podemos acceder en cada hosts es de 65.536 (216). Estos puertos estandivididos en tres secciones:

Los puertos IANA: Son los 1024 primeros puertos del PC. La organizacion IANA (Internet As-signed Numbers Authority) adjudico a cada uno de estos puertos una utilidad, protocolo,. . . paraestandarizar la comunicacion.

Los puertos Registrados: Son aquellos comprendidos entre el 1.024 y el 49.151 asignados a protocolos,programas, . . . Pero no se encuentran estandarizados.

Los puertos privados: Son los que van del 49.152 y el 65.535. Sobre ellos no recae ningun uso par-ticular y son utilizados para uso privado de los hosts y programas locales.

Si necesitamos mas informacion, sobre la asignacion de puertos la podemos consultar en la RFC1700que data de Octubre de 1994, disponible en la direccion: http://www.ietf.org/rfc/rfc1700.txt.

Tambien existe otro “malicioso” grupo de puertos, son los puertos por defecto de los troyanos. Seutilizan para establecer la comunicacion servidor-cliente entre los ordenadores implicados en la misma. Alexistir troyanos que permiten utilizar utilizar otros puertos , la identificacion de los mismos puede no serinfalible, si bien la mayorıa de los usuarios de troyanos no se molestan en cambiar los puertos y utilizanlos puertos por defecto. Si necesitamos mas informacion, en la siguiente pagina web podemos encontrar lamayorıa de puertos de troyanos: http://webs.ono.com/usr026/Agika2/2troyanos/puertos troya.htm

Y para terminar con esta seccion, podemos observar los puertos que hemos utilizado en este proyecto:

Servicio Puerto Servicio PuertoFTP 21 SAMBA 901SSH 22 NESSUS 1241TELNET 23 RADIUS SERVER 1812DNS 53 (UDP) HORDE 2095DHCP SERVIDOR 67 (UDP) HORDE (SSL) 2096DHCP CLIENTE 68 (UDP) SQUID 3128TFTP 69 JABBER CLIENTE 5222WEB (HTTPS) 80 JABBER SERVIDOR 5269HTTPS 443 WEBMIN 10000CUPS 631

Page 346: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)
Page 347: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Apendice F

Manual del editor Vim (Vi mejorado)

Personalmente utilizo el editor Vim frente al editor Emacs, este ultimo es mas completo y tiene masopciones, pero no me son utiles. Prefiero un editor potente y a la vez simple (Vim es muy simple, una vezconocidos los comandos basicos).

Tiene dos modos de trabajo, el modo comando y el modo insercion. Me voy a centrar, principalmenteen el modo comando debido al gran numero de opciones disponibles.

Edicion de ficheros

Para editar un fichero simplemente hay que hacer:

$vi <archivo>, . . . en caso de que no exista se creara.

Modo insercion

Al editar un fichero entramos en el modo comando por defecto, si lo que queremos es entrar en el modoinsercion, tenemos varias opciones:

a: Anadir a partir del siguiente caracter

i: Insertar a partir del caracter actual

o: Insertar una lınea debajo de la actual y comenzar allı la insercion

El modo insercion no tiene muchos secretos, se puede escribir lo que se quiera y luego volver al modocomando, pulsando la tecla Esc.

Modo comando

El modo comando del vim tiene multitud de opciones, pasemos a detallar las mas utilizadas:

u: Deshacer la ultima accion. Cabe destacar que en Vim, a diferencia de otros editores se puedendeshacer infinitos cambios, ya que esta opcion no tiene lımite

CTRL+r: Rehace la ultima accion deshecha con “u”

w: Guardar

w!: Fuerza a guardar (es recomendable usar esta opcion)

Page 348: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

330 Servidor Linux para conexiones seguras de una LAN a Internet

q: Salir, si no se ha guardado bloquea la salida

q!: Fuerza a salir sin guardar

x: Guardar y salir

x!: Guardar y salir, forzando la escritura.

e fichero: Abre el fichero

dd: Elimina la lınea sobre la que esta el cursor

x: Suprime el caracter siguiente a donde esta el cursor

<numero>yy: Copia una cantidad de lıneas igual a numero

p: Pegar lıneas

/cadena: Busca ‘cadena’ en el texto sobre el que trabajamos

n: nueva busqueda sobre la ultima cadena especificada

:<numero> : Va a la lınea identificada por el numero

%s/cadena/nueva cadena: Se usa para sustituir ‘cadena’ por ‘nueva cadena’ en el texto, esta opciones especialmente util

r fichero: Vuelca el contenido de fichero sobre la posicion actual del cursor

!comando: Inserta la salida de un comando ejecutado. Por ejemplo si hacemos !ls inserta la salidade ls en nuestro fichero.

. (punto): Repite el ultimo comando

Personalizacion del Vim

Se puede personalizar Vim mediante un archivo de configuracion, el ˜/.vimrc. En dicho fichero tenemosuna serie de opciones que podemos activar o desactivar segun lo que prefiramos, las principales son:

syntax on: Activa el coloreado de sintaxis, muy util para programadores

set nobackup: Evita que se creen copias de seguridad cada vez que editemos un fichero

set showmode: Muestra siempre en que modo estamos trabajando (comando o insercion)

set ruler: Muestra una regla con informacion en la parte inferior de la consola

set vb: Desactiva el molesto “pitido” y lo sustituye por un parpadeo de pantalla

set ignorecase: No diferencia entre mayusculas y minusculas

set showmatch: Es util para realizar busquedas, resaltara los resultados coincidentes con el patron.

au BufReadPost * if line ("""")lexecute(normal’"")|endif: Posiciona el cursor en donde seencontraba la ultima vez que editamos el fichero

Basado en un manual publicado en Todo-Linux, puede ser consultado en la siguiente direccion:

http://www.todo-linux.com/modules.php?name=News&file=article&sid=2162

Jose Antonio Escartın Vigo, Junio 2005.

Page 349: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Apendice G

Guıa rapida de IPTables

IPTables es una herramienta para filtrar paquetes del kernel (2.4x o posterior).

Comandos basicos

IPTables es la evolucion de ipchains y ipfwadm y basicamente permite o rechaza los paquetes quellegan al host desde una red.

Cadenas (chains) predefinidas:

• INPUT: Los paquetes que llegan a nuestra maquina

• OUTPUT: Los paquetes que salen de nuestra maquina

• FORWARD: Los paquetes que atraviesan nuestra maquina

Las opciones basicas:

• -s: Especifica una direccion de origen

• -d: Especifica una direccion de destino

• --sport: Puerto de origen

• --dport: Puerto de destino

• --tcp-flags mascara activos: Flags permitidos (mascara) y flags activos

• -m: Modulo de opciones (Vease $man iptables)

• -f: Paquetes fragmentados

• -t: Especifica la tabla (filter, nat o mangle)

• -p: Especifica un protocolo

• -i: Especifica un interface de entrada

• -o: Especifica un interface de salida

• -j: Especifica la accion a ejecutar sobre el paquete

Acciones:

• DROP: Elimina el paquete

• LOG: Registra el paquete

• REJECT: Rechaza el paquete

• ACCEPT: Acepta el paquete

Page 350: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

332 Servidor Linux para conexiones seguras de una LAN a Internet

Comandos fundamentales:

• iptables -L, . . . ver las reglas introducidas

• iptables -F, . . . borrar todas las reglas

Con #man iptables tenemos todas las opciones.

Ejemplos

Eliminamos todas los paquetes de entrada y salida:

iptables -A INPUT -j DROP

iptables -A OUPUT -j DROP

Aceptamos que se conecten a nuestro servidor Web(80) y FTP(21):

iptables -A INPUT -p TCP --dport 80 -j ACCEPT

iptables -A INPUT -p TCP --dport 21 -j ACCEPT

Permitimos la comunicacion con el servidor DNS:

iptables -A INPUT -p udp --dport 53 -j ACCEPT

Script muy basico de IPTables para dar acceso al 80 y al 22:

#!/bin/bash

# Permitimos que se conecten a nuestro servidor web y al ssh

iptables -A INPUT -p TCP --dport 80 -j ACCEPT

iptables -A INPUT -p TCP --dport 22 -j ACCEPT

# Permitimos la comunicacion con el servidor dns

iptables -A INPUT -p udp --dport 53 -j ACCEPT

# Reglas basicas. Denegamos todas las entradas permitimos todas las salidas

iptables -A INPUT -j DROP

iptables -A OUTPUT -j ACCEPT

Si queremos poner la maquina como firewall con dos interfaces de red, eth0 y eth1:

• Activamos el ip forward:echo 1 > /proc/sys/net/ipv4/ip_forward

• Hacemos el NAT de las direcciones de fuera y permitimos la salida:iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

iptables -A FORWARD -o eth1 -i eth0 -j ACCEPT

• Solo permitimos que la red interna acceda a los puertos 25 y 80 de la red externa:iptables -A FORWARD -s 192.168.0.0/24 -p TCP -j DROP

iptables -A FORWARD -s 192.168.0.0/24 -p TCP --dport 25 -j ACCEPT

iptables -A FORWARD -s 192.168.0.0/24 -p TCP --dport 80 -j ACCEPT

Si queremos hacer un proxy transparente para la salida de la red interna, es decir abrir un puertode salida en el router:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport [puerto_externo]

-j DNAT --to [IP_maquina]:[puerto_maquina]

Si queremos denegar un rango concreto de IPs:

iptables -A INPUT -s 195.76.238.0/24 -j DROP

iptables -A INPUT -s 217.116.8.112/29 -j DROP

iptables -A INPUT -s 217.116.0.144 -j DROP

iptables -A INPUT -s 195.76.172.0/24 -j DROP

iptables -A INPUT -s 155.201.0.0/16 -j DROP

Jose Antonio Escartın Vigo, Junio 2005.

Page 351: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Debian Sarge, nueva version estable

En el proyecto Debian, Sarge ha sido congelada y en breve sera la nueva version ‘stable’ de Debian. Laversion testing pasara a llamarse Etch y sera una version real “en pruebas” ya que Sarge llevaba muchotiempo entre los usuarios y ya esta muy probada.

Para tener nuestro servidor es necesario tener una version estable y no en pruebas, hemos de modificarnuestro /etc/apt/sources.list para que no nos cambie de version automaticamente.

En estos momentos mi archivo /etc/apt/sources.list contiene las siguientes entradas:

deb http://ftp.rediris.es/debian testing main contrib non-freedeb-src http://ftp.rediris.es/debian/ testing main non-free contribdeb http://ftp.rediris.es/debian-non-US testing/non-US main contrib non-freedeb-src http://ftp.rediris.es/debian-non-US testing/non-US main contrib non-freedeb http://security.debian.org/ testing/updates main contrib non-free

Para que mi sistema siga siendo Sarge, aunque dentro de unos dıas lo hara en la nueva etapa comoestable, deberemos cambiarlo por este otro:

deb http://ftp.rediris.es/debian sarge main contrib non-freedeb-src http://ftp.rediris.es/debian/ sarge main non-free contribdeb http://ftp.rediris.es/debian-non-US sarge/non-US main contrib non-freedeb-src http://ftp.rediris.es/debian-non-US sarge/non-US main contrib non-freedeb http://security.debian.org/ sarge/updates main contrib non-free

Y realizar un: #apt-get update

Si dejamos el archivo /etc/apt/sources.list como “testing”, nuestro sistema dejara de ser Sarge, y pa-sara a ser Etch.

Tambien querıa recordar que existe una tercera version de Debian: Debian Sid o “unstable”, que es laversin inestable. Esta version siempre se llamara ası: “Sid” y no es adecuada para el uso de servidores, yaque esta destinada a desarrollar el software que luego pasara al resto de versiones.

Page 352: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

334 Servidor Linux para conexiones seguras de una LAN a Internet

Desde la pagina oficial de Debian podemos obtener los siguientes datos:

Desde el 3 de mayo de 2005, las actualizaciones de seguridad de la distribucion “en pruebas” lasgestiona el equipo de seguridad. Por tanto, esta distribucion dispone de oportunas actualizacionesde seguridad. Esta situacion es temporal, ya que la distribucion en pruebas esta congelada.

La fecha de publicacion, inicialmente prevista para el 30 Mayo, se ha pospuesto una semana, y pasaa ser el 6 de junio de 2005.

Como es usual, las metas de la versin y la fecha en la que se hara publica no se determinan conantelacion. En otras palabras, “Debian publica la nueva version cuando es el momento de hacerlo”.

Los mayores cambios para Sarge incluyen reemplazar el antiguo sistema de instalacion con discosflexibles, por el nuevo instalador de Debian, y usar GCC 3.3 como el nuevo compilador predeter-minado en arquitecturas que hasta ahora usaban la version 2.95. Tambien se ha llevando a cabo laintroduccion de nuevas versiones de programas como son Perl 5.8 y XFree86 4.3.

Como despedida solo cabe decir, que acerte de pleno en la planificacion y la eleccion de DebianSarge fue primordial para que este documento sirva como ayuda durante un largo tiempo a los nuevos“administradores junior”, sitio en el cual humildemente me ubico.

Jose Antonio Escartın Vigo, Junio 2005.

Page 353: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Licencia Creative Commons:Reconocimiento-CompartirIgual

Gracias a la Universidad de Barcelona y en particular a Ignasi Labastida i Juan y a la colaboracion deun grupo de abogados de reconocido prestigio disponemos hoy por hoy de las licencias creative commons,no meramente traducidas al castellano y al catalan, sino tambien y sobre todo, adaptadas a la legislacionespanola.

Con demasiada frecuencia, la vision sobre la proteccion de de obras creativas tiende a los extremos.Por una lado tenemos la concepcion en la cual cualquier posible uso de una obra debe estar regulado almilımetro; cuyo maximo exponente en nuestro paıs quiza sea la cada vez menos querida SGAE

Por otro lado tenemos la anarquıa total. Una vision en la que los creadores tienen total libertad parahacer lo que les de la gana, pero en la que no tienen absolutamente ninguna proteccion.

Creative commons surge como una solucion de compromiso entre ambas posturas. De esta forma, loscreadores pueden elegir que derechos quieren reservarse y que usos de su obra quieren permitir. Ası se cons-truye una capa de proteccion que ofrece una alternativa razonable y flexible a la cada vez mas restrictivanormativa en cuestion de propiedad intelectual.

En diciembre de 2002, Creative Commons lanza el primer conjunto de licencias, que cualquier a puedeutilizar de forma completamente gratuita para proteger sus creaciones.

Las licencias de Creative Commons se inspiran en la licencia a GPL de la Fundacion para el SoftwareLibre; pero, al contrario esta, las licencias Creative Commons no estan pensadas para software, sino paraotros tipos de trabajos creativos: paginas web, tesis doctorales, musica, pelıculas, fotografıas, literatura,cursos . . .

Como escoger una licencia

Para que la seleccion de licencias resulte facil para todo el que quiera proteger sus obras sin necesidadde saber nada de Derecho, han creado una herramienta online, diponible en Castellano y Catalan que tepermite ir eligiendo el tipo de proteccion que quieres para tu trabajo y en funcion de las opciones queescojas, te ofrece la licencia mas adecuada.

http://creativecommons.org/license/?lang=es, . . . herramienta en castellano.

http://creativecommons.org/license/?lang=ca, . . . herramienta en catalan.

0Estos datos han sido obtenidos de la web http://www.elcuaderno.info, acogida a la licencia http://creativecommons.org//licenses/by-sa/2.0/, “Reconocimiento-CompartirIgual” la misma bajo la que se encuentra este proyecto, el autor no se citaal no figurar en el articulo.

Page 354: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

336 Servidor Linux para conexiones seguras de una LAN a Internet

Creative commons no supone renunciar a proteger tu trabajo, sino que implica que puedes escogerque derechos prefieres reservarte y que derechos quieres ceder a los demas.

Tu decides en que condiciones estas dispuesto a permitir la utilizacion de tu trabajo, combinando lasdistintas condiciones que puedes imponer, hay hasta once tipos de licencias distintas de las que escoger(adaptadas a nuestra legislacion, en este momento hay 6).

Estas son las condiciones que se pueden escoger:

Attribution/Reconocimiento: Permites que otras personas puedan copiar, distribuir y comunicarpulicamente la obra ası como hacer obras derivadas, incluyendo el hacer un uso comercial de tu obra.Siempre que:

• Te citen y te reconozcan como el autor original de la obra.

• Al reutilizar o distribuir la obra, tienen que dejar bien claro los terminos de la licencia la obra

Noncommercial/No comercial : Permites que otras personas puedan copiar, distribuir y comu-nicar pulicamente la obra ası como hacer obras derivadas. Siempre que:

• Te citen y te reconozcan como el autor original de la obra.

• Al reutilizar o distribuir la obra, tienen que dejar bien claro los terminos de la licencia la obra

• No utilicen tu obra con fines comerciales

No Derivative Works/Sin obra derivada : Permites que otras personas puedan copiar, distribuiry comunicar pulicamente la obra, incluidos los posibles usos comerciales de la obra. Siempre que:

• Te citen y te reconozcan como el autor original de la obra.

• Al reutilizar o distribuir la obra, tienen que dejar bien claro los terminos de la licencia la obra

• No se alterare, transforme o genere una obra derivada a partir de tu obra.

Share Alike/Compartir igual : Permites copiar, distribuir y comunicar pulicamente la obra, hacerobras derivadas y hacer un uso comercial de esta obra. La distribucion de las obras derivadas sepermite unica y exclusivamente cuando la obra derivada utilice una licencia identica que la que tieneel trabajo original.

No se pueden combinar las condiciones “compartir igual” y “sin obra derivada”, puesto que la con-dicion “compartir igual” solo es aplicable a las obras derivadas.

Una vez que has escogido las condiciones que quieres, accedes a la licencia apropiada de tres maneras:

Resumen simple: Un resumen en un lenguaje simple que todo el mundo puede entender, junto conlos iconos representativos de la licencia.

Codigo legal: el texto completo de la licencia dirigido fundamentalmente a abogados.

Codigo digital: Una version de la licencia legible por maquinas que ayudara a las herramientas debusqueda y otras aplicaciones a identificar tu trabajo en funcion de sus condiciones de uso.

Jose Antonio Escartın Vigo, Junio 2005.

Page 355: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Apendice G. Guıa rapida de IPTables 337

Como se utiliza la licencia

Una vez elegida la licencia, obtendremos un codigo HTML, que una vez pegado en la pagina webgenerara un boton.

El boton “some rights reserved”, indica que los contenidos del sitio web estan protegidos por unalicencia Creative commons. El boton enlaza con el resumen de la licencia que utilizas para proteger tuscontenidos. De esta forma, comunicando publicamente los terminos de tu licencia si alguien infringe losmismos, estas protegido jurıdicamente y puedes interponer una demanda en defensa de tus derechos depropiedad intelectual.

Creative commons no es un bufete de abogados ni proporciona asesoramiento jurıdico en caso de in-fringimiento de los terminos de una licencia. Si se da el caso, tendras que acudir a un abogado, los queyo conozco? Supongo que los mismos que todo el mundo: Javier Mestre y Carlos Sanchez Almeida delbufete Almeida (http://www.bufetalmeida.com). En la lista de correo sobre licencias creative commons enespanol, participan varios abogados, quiza allı puedes preguntar que bufete hay cerca de donde vives queeste especializado en estos temas.

Las seis posibles combinaciones adaptadas a la legislacion espanola son:

1. Reconocimiento

2. Reconocimiento-SinObraDerivada

3. Reconocimiento-NoComercial-SinObraDerivada

4. Reconocimiento-NoComercial

5. Reconocimiento-NoComercial-CompartirIgual

6. Reconocimiento-CompartirIgual

Licencia escogida

Por el caracter abierto y libre de este proyecto, para elegir la licencia se voy a seguir el espıritu deGNU y sus licencias: GPL para software y GFDL (GNU Free Document) para documentacion.

Por eso cedo el derecho de realizar una explotacion economica de la obra, a condicion de que, esa obramodificada o derivada este bajo la misma licencia que la primera y en ella se me cite como autor original.

Es decir, para el PFC: “Servidor Linux para conexiones seguras de una LAN a Internet”, he escogidola licencia CC - “Reconocimiento-CompartirIgual”.

La asignacion de este tipo de licencia “Creative Common” respecto a GFDL, esta justificada debido aque, en mi opinion, GFDL tiene un gran fallo, no permite realizar modificaciones de la obra y publicarlasbajo el mismo nombre y en mi caso, esta obra se debera actualizar con el tiempo, ya sea por mı o poralguna otra persona que continue el proyecto. No quiero que el PFC nazca y muera igual, prefiero donarloa la comunidad y permitir que se pueda modificar y actualizar con el tiempo.

Creative Commons, me ha facilitado el siguiente parrafo para cualquier persona que necesite masinformacion sobre la licencia:

“Esta obra esta bajo la licencia de Atribucion de Creative Commons: Reconocimiento-CompartirIgual2.1 Espana. Para ver una copia de esta licencia, visite http://creativecommons.org/licenses/by-sa/2.1/es/o envie una carta a Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.”

Jose Antonio Escartın Vigo, Junio 2005.

Page 356: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

338 Servidor Linux para conexiones seguras de una LAN a Internet

Resumen simple de la licencia del PFC

Figura G.1: Licencia Reconocimiento-CompartirIgual

Esto es un resumen legible del texto legal, la licencia completa se encuentra disponible en la direccion:http://creativecommons.org/licenses/by-sa/2.1/es/legalcode.es

Jose Antonio Escartın Vigo, Junio 2005.

Page 357: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Paginas Web consultadas

http://acidlab.sourceforge.net/ - Consola de analisis de Bases de datos de intrusiones (ACID)http://airsnort.shmoo.com/ - Web oficial de AirSnorthttp://apostols.org/projectz/neped/ - Web oficial de NePED, detector de sniffershttp://barrapunto.com - Web de noticias sobre informaticahttp://bogofilter.sourceforge.net/ - Pagina web de Bogofilterhttp://bulma.es - Comunidad de usuarios Linux, multitud de artıculoshttp://bulma.net/body.phtml?nIdNoticia=1334 - Manual de configuracion DNS BIND 9.2.1http://cauchy.bdat.net/dns/bind-9/DNS-HOWTO-9-es/ - DNS Comohttp://certisign.com.br/servidores - Entidad de certificacionhttp://deim.etse.urv.es/ajuda/manuals/vi/ - Manual del vihttp://docs.kde.org/es/HEAD/kdegraphics/ksnapshot/ - Manual de KSnapshothttp://download.jabber.org/ - Pluggins para jabberhttp://eia.udg.es/˜atm/tcp-ip/index.html - Documentacion sobre TCP/IPhttp://enterprise.bidmc.harvard.edu/pub/nessus-php/ - Interfaz PHP para Nessushttp://es.tldp.org - Proyecto Lucas, documentacion Linux en espanolhttp://es.tldp.org/Tutoriales/NOVATO/novato-a-novato/novato-a-novato.html - Manual del novatohttp://es.wikipedia.org - Wikipedia, la enciclopedia librehttp://gimp.hispalinux.es - Grupo de usuarios Espanoles de GIMPhttp://gsyc.escet.urjc.es/robotica/apuntes/captura video COMO.pdf - COMO capturar videohttp://his.sourceforge.net/trad/honeynet/ - Proyecto HoneyNet en castellanohttp://hostap.epitest.fi/wpa supplicant/ - HowTo wpa supplicanthttp://httpd.apache.org/ - Apache HTTPD Server Projecthttp://kile.sourceforge.net/ - Web oficial Kilehttp://latex2rtf.sourceforge.net/ - Convertidor de Latex a Rtfhttp://laura.celdran.name/ - HowTos Laura Celdranhttp://losinvisibles.net/como/como.html - Mini Como’s de Simonhttp://oriol.joor.net/article fitxers/1574/WXP-WAP-EAPTLS.pdf - Conectar WinXP a Radiushttp://packages.debian.org/testing/ - Guıa completa de paquetes Debian Sargehttp://patux.glo.org.mx/imp-mini-como.html - HowTo sobre IMAPhttp://prosper.sourceforge.net/ - Web oficial de Prosperhttp://sourceforge.net/projects/airsnort - Proyecto SourceForge AirSnorthttp://spamassassin.apache.org/ - Pagina web de SpamAssassinhttp://tira.escomposlinux.org/ - Tira comica Linuxhttp://tldp.org/HOWTO/html single/8021X-HOWTO/ - HowTo 802.1xhttp://us1.samba.org/samba/docs/man/Samba-HOWTO-Collection/ - HowTo oficial de Sambahttp://webadminmodules.sourceforge.net/ - Modulos para Webminhttp://webs.ono.com/usr026/Agika2/2troyanos/puertos troya.htm - Puertos de Troyanoshttp://www.apache.org/ - Pagina Web del Proyecto Apachehttp://www.apache-ssl.org/ - Pagina Web del Proyecto Apache-SSLhttp://www.bastille-linux.org - Web de Bastille Linuxhttp://www.bufetalmeida.com - Bufete Almeida, especializado en ciberderechoshttp://www.canariaswardrive.org/ - 1.er campeonato de Wardriving en Espanahttp://www.catb.org/ esr/fetchmail/ - Pagina web de Fetchmail

Page 358: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

340 Servidor Linux para conexiones seguras de una LAN a Internet

http://www.catcert.net/ - Agencia catalana de certificacionhttp://www.cert.org/ - Agencia seguridad en Internet CERT (Computer Emergency Response Team)http://www.cervantex.org - Comunidad de usuarios espanoles de TEXhttp://www.chkrootkit.org/ - Web de chkrootkithttp://www.clamv.net - Web oficial del antivirus de correo ClamVhttp://www.compuamersa.com/linux.htm - Sobre las distribucioneshttp://www.courier-mta.org/ - Pagina web de Courierhttp://www.cypherspace.org/openpgp/ - Implementaciones de OpenPGPhttp://www.debian.org - Web oficial de Debianhttp://www.debian.org/distrib/ - Metodos de la distribucion Debianhttp://www.debian.org/doc/ - Documentacion rapida para Debianhttp://www.debian.org/doc/manuals/apt-howto/index.es.html - APT HowTo, en espanolhttp://www.debian.org/doc/manuals/securing-debian-howto/index.es.html - Manual de seguridadhttp://www.digitalhermit.com/linux/Kernel-Build-HOWTO.html - Recompilacion Kernel HowTohttp://www.distrowatch.com/index.php?language=ES - Todo sobre distribucioneshttp://www.dslreports.com/forum/remark,9286052 mode=flat - Conectar WinXP a Radius (Ingles)http://www.elcuaderno.info/ - Web de noticiashttp://www.entrust.net - Entidad de certificacionhttp://www.escomposlinux.org/ - Grupos de noticias de Linuxhttp://www.exim.org/ - Pagina web de Eximhttp://www.faqs.org/docs/iptables/index.html - Tutorial IPTables (Ingles)http://www.freeradius.org/ - FreeRadiushttp://www.gimp.org - Web oficial de The Gimphttp://www.gnome.org/ - Web de GNOMEhttp://www.gnupg.org - Web oficial de GnuPGhttp://www.gwolf.org/seguridad/portsentry/ - Manual de uso PortSentryhttp://www.gwolf.org/seguridad/logcheck/ - Manual de uso Logcheckhttp://www.honeyd.org - Web oficial de Honeydhttp://www.horde.org/ - Pagina web de Hordehttp://www.icewalkers.com/Linux/Howto/ - HowTos en espanolhttp://www.ietf.org/rfc/rfc1700.txt - Puertos estandarizados por la IANAhttp://www.iks-jena.de/produkte/ca - Entidad de certificacionhttp://www.imendio.com/projects/planner/ - Web oficial Plannerhttp://www.insecure.org/nmap/ - Escaner de puertoshttp://www.isc.org/index.pl?/sw/bind/ - Pagina oficial de Bindhttp://www.jabber.org/ - Pagina web oficial de Jabberhttp://www.jabberes.org/ - Pagina de usuarios de Jabber espanoleshttp://www.kde.org/ - Web de KDEhttp://www.kernel.org - Fuentes oficialeshttp://www.kismetwireless.net - Web oficial Kismet Wirelesshttp://www.latex-project.org/ - Web oficial de LATEXhttp://www.lids.org/ - Linux Intrusion Detection Systemhttp://www.linux.cu/manual/basico-html/node120.html - Definicion de tareas periodicashttp://www.linuxdocs.org - HowToshttp://www.linuxdocs.org/HOWTOs/Kernel-HOWTO.html - Kernel HowTohttp://www.linuxguruz.com/iptables/ - Manuales sobre IPTableshttp://www.linuxlots.com/˜barreiro/spain/cuota.html#toc1 - Cuotas de usuariohttp://www.linuxzamora.org - Web de usuarios de Linuxhttp://www.llibreriaha.com/cas/index.asp - Librerıa tecnica online de Barcelonahttp://www.missl.cs.umd.edu/wireless/eaptls/ - HowTo EAP-TLS en WPAhttp://www.nessus.org/ - Herramienta de busqueda de vulnerabilidadeshttp://www.netfilter.org - Web oficial de IPTableshttp://www.netsecuritysvcs.com/ncc/ - Herramienta grafica para Nessushttp://www.nodedb.com/europe/es - Web de nodos wireless

Jose Antonio Escartın Vigo, Junio 2005.

Page 359: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Apendice G. Guıa rapida de IPTables 341

http://www.openssh.org - Web de OpenSSHhttp://www.packetfactory.net/Projects/sentinel/ - Web oficial de Sentinet, detector de sniffershttp://www.planetplanner.org/ - Comunidad de usuarios de Plannerhttp://www.procmail.org/ - Pagina web de Procmailhttp://www.proftpd.org/ - Web oficial del proyecto ProFTPDhttp://www.samba.org/samba/docs/ - Documentacion sobre sambahttp://www.snort.org - Web oficial de Snorthttp://www.thawte.com - Entidad de certificacionhttp://www.tldp.org/HOWTO/BootPrompt-HOWTO.html - HowTo bootprompt en Debian Sargehttp://www.todo-linux.com/ - Manuales sobre linuxhttp://www.tripwire.org - Web oficial de Tripwirehttp://www.verisign.com/site - Entidad de certificacion VeriSignhttp://www.webmin.com/ - Web de Webminhttp://www.wifimaps.com/ - Mapas de nodos wirelesshttp://www.xfree86.org/ - Web de XFree86http://www.xombra.com - Articulos sobre Linuxhttp://www.zonagratuita.com/servicios/seguridad/snort.html - Snort + Acid en Windowshttp://xvidcap.sourceforge.net - Proyecto Xvidcap

Jose Antonio Escartın Vigo, Junio 2005.

Page 360: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)
Page 361: 16611544 Administracion e Instalacion de Servidores Linux Debian Sarge 3 1 by Jose Antonio Escartin(1)

Bibliografıa

[Ano00] Anonimo. Linux maxima seguridad. Pearson Prentice Hall, 2000.

[Aok05] Osamu Aoki. Guıa de referencia Debian. http://qref.sourceforge.net, Febrero 2005.

[BB00] Albert Bernaus and Jaime Blanco. Linux a fondo. InforBook’s, 2000.

[BN00] Daniel Bandel and Robert Napier. Linux. Pearson Prentice Hall, sexta edition, 2000.

[CO03] Francisco Charte Ojeda. Programacion GNU/Linux. Anaya Multimedia, 2003.

[CSLSMR+00] Bernardo Cascales Salinas, Pascual Lucas Saorın, Jose Manuel Mira Ros, Antonio Jose Pa-llares Ruiz, and Salvador Sanchez-Pedreo Guillen. LATEX: una imprenta en sus manos. AulaDocumental de Investigacion, 2000.

[CSLSMR+03] Bernardo Cascales Salinas, Pascual Lucas Saorın, Jose Manuel Mira Ros, Antonio Jose Pa-llares Ruiz, and Salvador Sanchez-Pedreo Guillen. El libro de LATEX. Pearson PrenticeHall, 2003.

[eidD04] El equipo instalador de Debian. Guıa de instalacion Debian GNU/Linux 3.1 para Intel x86.http://www.debian.org, 2004. http://d-i.alioth.debian.org/manual/es.i386/index.html.

[How05] Tony Howlett. Software libre: Herramientas de seguridad. Anaya Multimedia, 2005.

[PRG+02] Bruce Perens, Sven Rudolph, Igor Grobman, James Treacy, and Adam Di Carlo. Insta-lacion Debian GNU/Linux 3.0 para Intel x86. http://www.debian.org, Diciembre 2002.http://www.debian.org/releases/woody/installmanual.

[Sha01] Steve Shash. Manual de administracion de Linux. Osborne McGraw-Hill, 2001.

[VF97] Gabriel Valiente Feruglio. Composicion de textos cientıficos con LATEX. Ediciones UPC,1997.

[vH02] William von Hagen. Sistemas de ficheros Linux. Pearson Prentice Hall, 2002.