You are on page 1of 61

Software Libre y Educacion: servicios de red, gestores de contenidos y seguridad

Seguridad

Jos Angel Bernal, Fernando Gordillo, Hugo Santander y Paco Villegas e 4 de junio de 2005

Thales-CICA 2005

Pgina 2 a

Software libre y educacin: redes, gestores de contenidos y seguridad o

Indice general
1. Blindaje del sistema 1.1. Seguridad en UNIX . . . . . . . . . . . . . . . 1.2. Conceptos sobre seguridad . . . . . . . . . . . 1.3. Planicacin de Seguridad . . . . . . . . . . . o 1.4. Mecanismos de prevencin . . . . . . . . . . . o 1.4.1. Cierre de servicios innecesarios . . . . 1.4.2. Instalacin de envolventes (wrappers) o 1.4.3. Seguridad de las claves . . . . . . . . . 1.4.4. Seguridad de los usuarios . . . . . . . 1.5. SELinux . . . . . . . . . . . . . . . . . . . . . 1.5.1. Qu es SELinux? . . . . . . . . . . . e 1.5.2. Terminolog SELinux . . . . . . . . . a 1.5.3. Modos de uso de SELinux . . . . . . . 5 5 6 7 8 8 9 9 10 14 14 15 17 19 19 19 22 23 24 26 27 29 30 31 33 34 34 35 35 37 42 47 48 49 49 53 53 54 54

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

2. Vulnerabilidades del sistema 2.1. Tipos de ataques y vulnerabilidades . . . . . . . . . . . . 2.1.1. Ataques de negacin de servicio (denial of service) o 2.1.2. Cracking de passwords . . . . . . . . . . . . . . . . 2.1.3. E-mail bombing y spamming . . . . . . . . . . . . 2.1.4. Seguridad en WWW . . . . . . . . . . . . . . . . . 2.2. Analizador de vulnerabilidades Nessus . . . . . . . . . . . 2.2.1. Instalacin de Nessus . . . . . . . . . . . . . . . . o 2.2.2. Actualizacin de plugins . . . . . . . . . . . . . . . o 2.2.3. Arrancando Nessus . . . . . . . . . . . . . . . . . . 2.2.4. Usando Nessus . . . . . . . . . . . . . . . . . . . . 2.3. Crackeadores de password: John the Ripper . . . . . . . . 2.3.1. Instalacion . . . . . . . . . . . . . . . . . . . . . . 2.3.2. Crackeando el chero /etc/passwd . . . . . . . . . 2.4. Deteccin de intrusiones . . . . . . . . . . . . . . . . . . . o 2.4.1. Razones para la deteccin de intrusiones . . . . . . o 2.4.2. Intentos de intrusin en el sistema (Portsentry) . . o 2.4.3. Integridad del sistema (Tripwire) . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

3. Anlisis Forense a 3.1. Recopilando evidencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2. Analizando datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3. Una ayuda al forense: Sleuthkit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4. Deteccin de virus o 4.1. Virus y Troyanos en UNIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1.1. El problema de los virus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2. Antivirus ClamAV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

Thales-CICA 2005 4.2.1. 4.2.2. 4.2.3. 4.2.4. 4.2.5.

INDICE GENERAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Pgina 4 a . . . . . . . . . . 54 57 58 58 60

Instalacin . . . . . . o Probemos la medicina Freshclam . . . . . . . Funcionamiento . . . . Ejemplo . . . . . . . .

Software libre y educacin: redes, gestores de contenidos y seguridad o

Cap tulo 1

Blindaje del sistema


Intruso (hacker): sustantivo. 1)Se dice de quien goza averiguando los detalles de sistemas de cmputo y cmo llevarlos o o a su l mite, en contraposicin a la mayor de usuarios que preere aprender lo m o a nimo necesario. 2)Se dice de quien escribe programas en forma entusiasta o goza programando en lugar de pensar cmo programar. o

Guy L. Steele y cols. The Hackers Dictionary

UNIX no se dise para ser seguro. Se dise para que se pudiera usar la seguridad no no

Dennis Ritchie

1.1.

Seguridad en UNIX

En los aos 90 mucha gente pensaba que la seguridad en UNIX era una fantas Con la facilidad n a. con que un gur UNIX pod irrumpir en un sistema y tomar el control del mismo, no conceb u a an la idea de seguridad en estos sistemas. Desde entonces, las cosas han cambiado, pasando a considerarse los sistemas UNIX como sistemas operativos relativamente seguros. Esto es debido a que en el transcurso de los aos se n ha avanzado en el estudio de la defensa preventiva de los sistemas UNIX. Cada vez pasa menos tiempo desde que se descubre un agujero de seguridad en algn componente, hasta la aparicin u o del parche o actualizacin correspondiente. o Sin embargo, por su diseo particular, sigue teniendo fallos. Uno de ellos y quizs el ms n a a importante es el superusuario, que sigue constituyendo un punto unico de ataque. Una vez logrado el acceso a esta cuenta, el atacante tiene control absoluto sobre el sistema. Fue a ra del ataque protagonizado por Robert T. Morris en 1988 cuando el tema de la z seguridad en sistemas operativos y redes se convirti en un factor a tener muy en cuenta por o cualquier administrador de sistemas. Poco despus de este incidente, la agencia DARPA (Defense e Advanced Research Projects Agency) cre el CERT (Computer Emergency Response Team) http: o //www.cert.org, un grupo formado en su mayor parte por voluntarios cualicados de la comunidad informtica. El objetivo era facilitar la respuesta rpida ante los problemas de seguridad. a a 5

Thales-CICA 2005

Conceptos sobre seguridad

Pgina 6 a

Figura 1.1: Ejemplo de vulnerabilidad aparecida en CERT

Han pasado ms de 15 aos desde la creacin del primer CERT y sigue siendo patente la a n o preocupacin por los temas relativos a la seguridad y, sobre todo, se hace patente la necesidad de o esa seguridad. En la actualidad, donde el comercio electrnico y las redes internacionales estn a la orden o a del d todos los sistemas son potenciales v a, ctimas de un intruso. Prcticamente todos los meses a aparece alguna noticia sobre la intrusin en una gran compaia. Estas intrusiones pueden ser o n totalmente inofensivas y promovidas por la curiosidad o, en el lado opuesto, promovidas por intenciones de lo ms siniestras. En este ultimo caso las consecuencias suelen ser desastrosas. a Aunque no se borre o modique ningn archivo del sistema, es obligacin de los administrau o dores una vez detectada la intrusin, chequear el sistema en busca de posibles destrozos o, ms o a importante an, la colocacin de algn programa que realice las funciones de puerta trasera por u o u parte de los intrusos. Se han desarrollado una gran cantidad de herramientas y tcnicas con objeto de ayudar a los e administradores de sistemas y servir de medidas preventivas frente a intrusiones.

1.2.

Conceptos sobre seguridad

Antes de empezar a hablar de la seguridad de sistemas, es conveniente dejar claro qu se e entiende por seguridad. Seguridad es una caracter stica de cualquier sistema informtico, que a indica que ese sistema est libre de todo peligro de accesos no permitidos que puedan provocar un a dao en l. Podr denominarse infalible a un sistema seguro segn esta denicin. n e a u o Particularizando en el terreno que nos ocupa, es muy dif conseguir esta caracter cil stica, prca ticamente imposible. Se suaviza entonces la denicin de seguridad y se habla de abilidad, eno tendiendo como tal la probabilidad de que un sistema se comporte tal y como se espera de l. Ms e a que de sistemas seguros, se habla de sistemas ables. Para mantener un sistema seguro o able, deben garantizarse tres aspectos:
Software libre y educacin: redes, gestores de contenidos y seguridad o

Thales-CICA 2005

Planicacin de Seguridad o

Pgina 7 a

Condencialidad. Los objetos de un sistema han de ser accedidos unicamente por los mtodos e permitidos para ello, y estos mtodos no harn disponible esta informacin a terceros. e a o Integridad. Los objetos slo pueden ser modicados por elementos autorizados y de una forma o controlada. Disponibilidad. Los objetos del sistema tienen que permanecer accesibles a elementos autorizados. Dependiendo del entorno donde se trabaja, puede darse ms importancia a alguno de los aspectos a anteriores. Por ejemplo, si estamos trabajando en un banco, es prioritario mantener la integridad de los datos, pasando los otros aspectos a un plano inferior. Una vez claro el concepto de seguridad y lo que conlleva, surge una nueva pregunta qu debe e protegerse? Los tres elementos principales a proteger en cualquier sistema informtico son: a Software. Conjunto de programas lgicos que hacen funcionar al hardware instalado, tanto o sistemas operativos como aplicaciones. Hardware. Conjunto formado por los elementos f sicos del sistema informtico. a Datos. Conjunto de informacin lgica que maneja el hardware y el software. o o Una vez claros los conceptos relativos a seguridad de sistemas, es hora de pasar a la accin. Para o proteger nuestro sistema la primera tarea a realizar es un anlisis de las amenazas potenciales a que puede sufrir1 y, a partir de la informacin obtenida, disear una pol o n tica de seguridad que dena responsabilidades y reglas a seguir para evitar las amenazas o minimizar su incidencia. A los mecanismos utilizados para la implementacin de esta pol o tica, se les denomina mecanismos de seguridad. Estos mecanismos sern la parte ms visible del sistema de seguridad. a a Los mecanismos de seguridad se dividen en tres grupos: Prevencin. Son mecanismos que aumentan la seguridad de un sistema durante el funcionamieno to normal de ste, previniendo la ocurrencia de violaciones a la seguridad. e Deteccin. Son aquellos que se utilizan para detectar violaciones o intentos de violacin del o o sistema. Recuperacin. Son los que se aplican cuando se ha detectado una violacin del sistema y quiere o o devolverse el mismo a un estado estable. Dentro de estos mecanismos est el denominado a anlisis forense. El objetivo no slo es retornar a una situacin segura y estable, sino tambin a o o e conocer el alcance real de la violacin, las actividades llevadas a cabo por el intruso y la forma o de entrada. Debe emplearse el mximo esfuerzo en implementar unos mecanismos de prevencin lo sucientea o mente robustos en nuestro sistema. Se hace patente el dicho ms vale prevenir que curar ya que a es mejor dedicar tiempo a evitar los ataques que a recuperar un sistema que han violado.

1.3.

Planicacin de Seguridad o

La planicacin de la seguridad de un sistema puede dividirse en seis etapas diferentes: o 1. Planicacin de las necesidades de seguridad o 2. Anlisis de riesgos a 3. Anlisis de costo-benecio a
1 Si tenemos un ordenador para uso personal que no tiene acceso a ninguna red, da igual que tenga todas las vulnerabilidades posibles referentes a acceso remoto, no es posible explotarlas. Aunque de qu nos sirve... e

J.A. Bernal - F. Gordillo - H. Santander - P. Villegas

Thales-CICA 2005

Mecanismos de prevencin o

Pgina 8 a

4. Creacin de pol o ticas de seguridad 5. Implementacin o 6. Auditor y respuesta ante incidentes a Un servidor ser seguro si se comporta de la manera esperada. Sin embargo, hay que tener en a cuenta que pueden considerarse muchos tipos de seguridad: Condencialidad. Proteger la informacin para que nadie pueda leerla o copiarla sin autorio zacin del dueo. o n Integridad de los datos. Proteger la informacin (datos y programas) para evitar el borrado o o alteracin de la misma sin el permiso del dueo. o n Disponibilidad. Proteger los servicios para que no se degraden o dejen de estar disponibles sin autorizacin. o Consistencia. Asegurar que el sistema se comporta como esperan los usuarios autorizados. Control. Reglamentar el acceso al sistema. Auditor Registro de las acciones que realizan tanto los usuarios autorizados, como los a. intentos de acceso de los no autorizados.

1.4.

Mecanismos de prevencin o

Lamentablemente, muchos administradores de equipos UNIX no disponen de los conocimientos o simplemente deciden no dedicar tiempo a la seguridad del sistema del cual son responsables. Esto hace que sean servidores abiertos a cualquier ataque. Es necesario marcar una serie de pautas o recomendaciones m nimas que ayuden a minimizar este problema al mximo con tcnicas de prevencin. Estos mecanismos deben ser importantes a e o para cualquier administrador y deben tenerse en cuenta en todas y cada una de las mquinas que a administre. Sin embargo, esto no signica que el sistema est a salvo, son simplemente actuaciones e bsicas. a

1.4.1.

Cierre de servicios innecesarios

Cada uno de los servicios ofrecidos en el sistema se convierte en una potencial puerta de entrada a nuestro sistema. Uno de los primeros puntos a comprobar es el superdemonio de red en cualquiera de sus versiones (xinetd o inetd). Se cerrar cada uno de los servicios que no se utilice o que no a se conozca para qu sirve. En el caso de desactivar un servicio que sea necesario, simplemente se e activa de nuevo, modicando los cheros necesarios. En el caso de xinetd se acceder al directorio /etc/xinetd.d editando los cheros que corresa pondan a servicios que no sean necesarios. Unicamente se establece el atributo disable=yes tal como se vio en las primeras entregas del curso. Para inetd unicamente hay que editar el chero /etc/inetd.conf, comentando las entradas correspondientes a servicios que no se vayan a utilizar. Una vez comprobados los servicios arrancados por xinetd/inetd se vern los servicios que se a inician al arrancar el servidor. Estos servicios arrancarn procesos independientes que estarn a la a a escucha de peticiones desde el exterior. La localizacin de los scripts de arranque es /etc/rc?.d o o /etc/rc.d. Supongamos que queremos desactivar el servicio de correo proporcionado por Sendmail.
Software libre y educacin: redes, gestores de contenidos y seguridad o

Thales-CICA 2005

Mecanismos de prevencin o

Pgina 9 a

r o o t @ g u a d a l i n e x :# f i n d / e t c / r c name s e n d m a i l / e t c / r c 0 . d/ K19sendmail / e t c / r c 1 . d/ K19sendmail / e t c / r c 2 . d/ S 2 1 s e n d m a i l / e t c / r c 3 . d/ S 2 1 s e n d m a i l / e t c / r c 4 . d/ S 2 1 s e n d m a i l / e t c / r c 5 . d/ S 2 1 s e n d m a i l / e t c / r c 6 . d/ K19sendmail r o o t @ g u a d a l i n e x :# f i n d / e t c / i n i t . d/ name s e n d m a i l / e t c / i n i t . d/ s e n d m a i l

Bastar con renombrar los archivos S21sendmail a noS21sendmail para que en el prximo a o arranque del sistema, este servicio no se inicie. Hay que tener en cuenta que el renombrar estos cheros hace que no se arranque en el prximo inicio de la mquina, pero seguir activo hasta que o a a se produzca ese evento. Pararemos el servicio con: root@guadalinex:~# /etc/init.d/sendmail stop

1.4.2.

Instalacin de envolventes (wrappers) o

A pesar de seguir las recomendaciones anteriores y suponiendo que nuestro sistema unicamente tiene activos los servicios necesarios, an puede hacerse ms. El siguiente paso es securizar los u a servicios que se ha decidido mantener. Es muy conveniente el uso de wrappers ya que nos permiten restringir el acceso a los servicios, aceptando unicamente las conexiones que se denan. Anteriormente se vio uno de los ms extendidos, tcp-wrappers, por lo que ste es un buen a e momento para poner en accin los conocimientos adquiridos y empezar a restringir el acceso a o los servicios activos. Es conveniente que se conguren tcp-wrappers para que unicamente acce dan a los servicios las direcciones IP que se indiquen. Dejar que una persona externa a nuestra organizacin pueda acceder a un servicio es dejarle la puerta abierta para que acceda de forma o incontrolada al mismo.

1.4.3.

Seguridad de las claves

Claves en Linux Las claves en Linux no se almacenan en un formato legible. La contrasea se convierte en n una cadena de texto mediante un algoritmo criptogrco que proporciona una cadena totalmente a distinta de la original. La funcin que utiliza para realizar esta tarea es crypt(). Es una funcin o o de un unico sentido2 , lo que evita que puede utilizarse para averiguar la clave, cuyo resultado se almacenar en los archivos /etc/passwd o /etc/shadow. a Cuando un usuario se conecta al sistema con /bin/login, lo que se hace realmente es generar de nuevo la clave modicada a partir de la que se introduce por el teclado. La funcin crypt() o la transforma y la compara con la que hay almacenada en el sistema. La funcin crypt() se ha o demostrado que es sucientemente slida. Es una mala eleccin de contrasea lo que provoca los o o n problemas que se vern a continuacin. a o A pesar de que el cdigo fuente de crypt() est disponible, no se ha descubierto ninguna o a tcnica para convertir la contrasea cifrada de nuevo en la contrasea original. Posiblemente, la e n n traduccin inversa no sea posible. La unica forma conocida de vencer la seguridad de las contraseas o n es mediante un ataque de fuerza bruta o mediante un ataque de diccionario. Eleccin de las contrase as o n Una contrasea mala es una posible puerta abierta al sistema. Aunque son una de las partes n ms importantes del sistema, normalmente no se proporciona a los usuarios instrucciones concretas a
2 Puede

utilizarse dicha la funcin, pero no existe la funcin inversa. o o

J.A. Bernal - F. Gordillo - H. Santander - P. Villegas

Thales-CICA 2005

Mecanismos de prevencin o

Pgina 10 a

sobre cmo elegir y guardar la contrasea. Todo usuario debe saber que si elige una mala contrasea o n n o se la comunican a alguien que no sea de ar, comprometen toda la seguridad del sistema. Una contrasea mala es aquella que se puede adivinar fcilmente. En el mundo real, los intrusos n a en lugar de comprobar las contraseas a mano, utilizan sus propios ordenadores para comprobarlas n de forma automtica. En lugar de probar todas las combinaciones de letras lo que hacen es probar a las contraseas ms comunes. n a Surge la pregunta cules son las malas contraseas?, veremos algunos ejemplos: a n Nombre de usuario o el de un conocido o familiar Nombres escritos al revs, incluso si mezclan maysculas y minsculas e u u Contraseas cortas de cualquier tipo n Nmeros telefnicos u o Personajes de pel culas Basadas en modicaciones simples de una palabra (sustituir I por 1, E por 3, ...) Palabras en otros idiomas Es recomendable utilizar maysculas y minsculas, adems de d u u a gitos y s mbolos de puntuacin o junto con letras. Sin embargo, no debe caerse en la eleccin de contraseas dif o n ciles de recordar y que obliguen a escribirlas en algn sitio, no siendo recomendable que superen los 7 u 8 caracteres. u Para elegir una buena contrasea, se pueden tomar dos palabras cortas y combinarlas intercan lando un carcter especial o un nmero. Otra opcin puede ser componerla como un acrnimo de a u o o una frase o poema que nos guste, por ejemplo, Esta contrasea es lo sucientemente segura genen rar la clave E2c0E0l4Ss. Hemos tomado las primeras letras alternando maysculas y minsculas a u u e intercalando el nmero 20043 . u En caso que el usuario maneje varias cuentas a la vez en el mismo o distintos sistemas, ser a un error utilizar la misma contrasea en todos los sistemas, ya que si averiguan la contrasea de n n una de las cuentas, la seguridad del resto de sistemas y cuentas se ver comprometida. Un enfoque a muy vlido es utilizar una contrasea bsica y modicarla en funcin de la cuenta o del sistema a n a o en el que estemos accediendo. Hay una pel cula bastante conocida llamada Juegos de Guerra en la que un joven realizaba sus primeros pinitos en la inltracin clandestina de sistemas. Acced al ordenador central de su o a instituto para cambiarse las calicaciones, gracias al listado de claves que exist en un papel en a la secretar del centro. Lamentablemente, esto sucede cientos de veces. Una advertencia bsica es a a que los usuarios no anoten la contrasea nunca. An as si un usuario quiere escribir su contrasea n u , n en algn sitio debe seguir las siguientes recomendaciones: u Al escribirla, no identicarla como contrasea n No incluir el nombre de usuario ni los datos del servidor al que se accede Guardar en lugar seguro

1.4.4.

Seguridad de los usuarios

Usuarios normales Se asumir como prctica de seguridad habitual, en lo referente a usuarios, el uso de las a a utilidades de clave shadow. Los cheros que se utilizan para la gestin de los usuarios son: o
3 Se aconseja encarecidamente no utilizar este ejemplo concreto en nuestro sistema ya que cualquiera que lea esta documentacin conocer la clave. o a

Software libre y educacin: redes, gestores de contenidos y seguridad o

Thales-CICA 2005 /etc/passwd /etc/shadow /etc/group /etc/gshadow

Mecanismos de prevencin o

Pgina 11 a

Para prevenir un borrado o sobreescritura accidental de estos cheros, es recomendable activar el bit inmutable. Es una forma de proteccin que tambin previene de la creacin de enlaces o e o simblicos sobre estos cheros con objeto de realizar posteriormente un ataque. o
[ r o o t @ f e d o r a r o o t ]# [ r o o t @ f e d o r a r o o t ]# [ r o o t @ f e d o r a r o o t ]# [ r o o t @ f e d o r a r o o t ]# [ r o o t @ f e d o r a r o o t ]# l s a t t r / e t c / passwd / e t c / passwd c h a t t r +i / e t c / passwd c h a t t r +i / e t c / shadow c h a t t r +i / e t c / group c h a t t r +i / e t c / gshadow

Hay que tener en cuenta que una vez establecido este bit cualquier modicacin sobre estos o cheros dar error. De esta forma, para aadir un nuevo usuario es necesario deshabilitar el bit de a n nuevo. Lo mismo ocurrir con cualquier paquete de software que durante el proceso de instalacin a o requiere la creacin de nuevos usuarios o grupos. o
[ r o o t @ f e d o r a r o o t ]# l s a t t r / e t c / passwd i / e t c / passwd [ r o o t @ f e d o r a r o o t ]# a d d u s e r g a n d a l f a d d u s e r : u n a b l e t o open password f i l e

Un punto fundamental en la seguridad de los accesos a un sistema, es el referido a las claves de usuarios. Muchos usuarios piensan que sus cheros y programas estn lo sucientemente protegidos a por la eleccin de una buena clave, pero esto no es as No existen claves irrompibles. Si se da o . suciente tiempo y recursos a un intruso, tarde o temprano conseguir averiguar la clave de un a usuario, ya sea por fuerza bruta o por ingenier social. a En primer lugar, la clave que se elige debe ser segura y no adivinable fcilmente. Para ello las a siguientes recomendaciones pueden ser de utilidad: La longitud de la clave debe establecerse entre 5 y 8 caracteres, incluyendo algn nmero o u u carcter especial en la misma. a No debe ser trivial (basada en el nombre, familia, lugar de trabajo, ...). Debe ser revocada y reseteada despus de un nmero determinado de intentos. e u El chero de sistema /etc/login.defs es el chero de conguracin para la utilidad login. o Es necesario revisarlo una vez que se ha instalado el sistema para revisar los valores que tiene congurados por defecto y establecerlos de acuerdo a las consideraciones de seguridad que se hayan adoptado. Es recomendable cambiar los parmetros por defecto que se utilizan en la creacin de nuevos a o usuarios. Estos parmetros afectan a la caducidad de las claves y a los grupos a los que pertenecen a los nuevos usuarios cuando son creados entre otros4 .
4

Debian: Los campos del chero /etc/login.defs cambian los valores por defecto. Si bien se puede crear el chero /etc/default/useradd, es mejor usar el comando adduser. Su chero de conguracin es /etc/adduser.conf y est muy bien documentado. o a

J.A. Bernal - F. Gordillo - H. Santander - P. Villegas

Thales-CICA 2005

Mecanismos de prevencin o

Pgina 12 a

Fichero conguracin o /etc/login.defs /etc/login.defs /etc/login.defs /etc/login.defs /etc/login.defs

Campo PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE UID_MIN GID_MIN

Valor por defecto (Fedora) 99999 0 7 500 500

Descripcin o Mximo nmero de d que a u as una clave es vlida a Mximo nmero de d a u as permitido entre el cambio de clave Nmero mximo de d antes u a as de forzar un cambio de clave M nimo valor para el UID automtico a M nimo valor para el GID automtico a Longitud mxima de clave a aceptable (El mdulo o pam_cracklib sobreescribe este valor con el parmetro minlen) a Grupo por defecto Directorio local de usuario Mximo nmero de d despus a u as e de la expiracin de la clave en o que el usuario puede cambiar la clave Fecha de expiracin de una o cuenta en el formato AAAA-MM-DD Shell por defecto Directorio de perl por defecto

/etc/login.defs /etc/default/useradd /etc/default/useradd /etc/default/useradd

PASS_MIN_LEN GROUP HOME INACTIVE

5 100 /home -1

/etc/default/useradd /etc/default/useradd /etc/default/useradd

EXPIRE SHELL SKEL

n/a /bin/bash /etc/skel

Otra consideracin a tener en cuenta es la variable de entorno $PATH. Cuando un usuario o ejecuta un comando, el shell buscar en cada uno de los directorios existentes en el path, hasta a encontrar un comando con el mismo nombre que el tecleado, en cuyo caso lo ejecuta sin ms. En a caso de no encontrarlo dar un mensaje de error. a Qu problemas de seguridad presenta esta variable? Es muy recomendable comprobar que e ninguno de los directorios que aparecen en $PATH del superusuario tienen permiso de escritura para los usuarios normales. Esto incluye a directorios como /tmp/ o .. Imaginemos la siguiente situacin. El usuario root de nuestro sistema tiene inclu en su o do variable $PATH el directorio actual como uno ms donde buscar ejecutables. Si este usuario desea a comprobar el contenido del directorio /tmp/ o el de $HOME de alguno de sus usuarios, seguramente cambiar su directorio actual al del usuario en cuestin. Qu sucede si . est en primer lugar a o e a en la variable $PATH? El shell buscar primero en el directorio actual (recordemos que es el del a usuario) y podr amos encontrarnos con: [root@fedora root]# cd /home/hugo/ [root@fedora hugo]# cat ls #!/bin/bash cd / rm -rf * Si tecleamos en la l nea de comandos ls, se ejecutar el script anterior, borrando todo el sistema. a Un simple ls habr conseguido que se borrase parte del sistema o todo, simplemente porque el a administrador no ha tenido la precaucin de congurar convenientemente la variable $PATH. o
Software libre y educacin: redes, gestores de contenidos y seguridad o

Thales-CICA 2005

Mecanismos de prevencin o

Pgina 13 a

Surge entonces la pregunta si ponemos el directorio . al nal de $PATH se soluciona el problema? La respuesta es contundente, no, el problema sigue existiendo. Supongamos ahora que el script se llama moer . No es un comando que exista, pero cuntas veces nos hemos equivocado al a escribir el comando more y hemos tecleado moer? Si tecleamos moer, el shell buscar sin encontrarlo a hasta llegar al ultimo directorio de $PATH y ejecutar el script. Tenemos el mismo resultado, a borrado total o parcial del sistema. Parece claro, tras estos ejemplos que no es una buena prctica a poner el directorio . en la variable de entorno $PATH del superusuario. Usuario root La cuenta de usuario root es la que tiene ms privilegios en un sistema UNIX. Este usuario no a tiene restricciones de seguridad por lo que hay que operar con esta cuenta con mucha precaucin. o Es importante no dejarse nunca esta cuenta abierta en la consola. En caso de que esto ocurra, puede establecerse un tiempo de desconexin del sistema si no se registra ninguna actividad desde o esta cuenta. As puede establecerse que a los 3 minutos desde la ultima operacin hecha desde , o una sesin del usuario root se desconecte dicha sesin5 . o o Como medida de seguridad adicional tambin puede restringirse el uso del comando su para e acceder a la cuenta root. Puede congurarse el sistema para que slo los usuarios de un detero minado grupo accedan a la cuenta de root mediante su. El chero de conguracin implicado es o /etc/pam.d/su
auth s u f f i c i e n t / l i b / s e c u r i t y / pam rootok . s o auth r e q u i r e d / l i b / s e c u r i t y / pam stack . s o s e r v i c e=systemauth a c c o u n t r e q u i r e d / l i b / s e c u r i t y / pam stack . s o s e r v i c e=systemauth password r e q u i r e d / l i b / s e c u r i t y / pam stack . s o s e r v i c e=systemauth s e s s i o n r e q u i r e d / l i b / s e c u r i t y / pam stack . s o s e r v i c e=systemauth s e s s i o n o p t i o n a l / l i b / s e c u r i t y / pam xauth . s o

Las l neas que es necesario aadir para reejar esta conguracin dejan el chero /etc/n o pam.d/su como puede verse a continuacin: o
#Uncomment t h e f o l l o w i n g l i n e t o i m p l i c i t l y t r u s t u s e r s i n t h e wheel group . #auth s u f f i c i e n t / l i b / s e c u r i t y / pam wheel . s o t r u s t u s e u i d #Uncomment t h e f o l l o w i n g l i n e t o r e q u i r e a u s e r t o be i n t h e wheel group . #auth r e q u i r e d / l i b / s e c u r i t y / pam wheel . s o u s e u i d auth s u f f i c i e n t / l i b / s e c u r i t y / pam rootok . s o auth s u f f i c i e n t / l i b / s e c u r i t y / pam wheel . s o t r u s t u s e u i d auth r e q u i r e d / l i b / s e c u r i t y / pam wheel . s o u s e u i d auth r e q u i r e d / l i b / s e c u r i t y / pam stack . s o s e r v i c e=systemauth a c c o u n t r e q u i r e d / l i b / s e c u r i t y / pam stack . s o s e r v i c e=systemauth password r e q u i r e d / l i b / s e c u r i t y / pam stack . s o s e r v i c e=systemauth s e s s i o n r e q u i r e d / l i b / s e c u r i t y / pam stack . s o s e r v i c e=systemauth s e s s i o n o p t i o n a l / l i b / s e c u r i t y / pam xauth . s o

Usuarios especiales Es importante deshabilitar todas las cuentas creadas por defecto en la instalacin por los o desarrolladores de algunos productos, si no se van a usar en el sistema. Algunas de estas cuentas existen por defecto, incluso si no se han instalado los programas o utilidades asociados. Cuantas ms cuentas tenga un sistema ms posibilidades hay de encontrar un acceso al mismo a travs de a a e una de estas cuentas.
5 Por ejemplo, a adiendo dentro del chero /etc/profile una variable TMOUT a la que se le da un valor en segundos n que indica el tiempo de desconexin por inactividad. Podemos incluirla tambien en .bashrc de los usuarios para o controlar el tiempo de inactividad.

J.A. Bernal - F. Gordillo - H. Santander - P. Villegas

Thales-CICA 2005

SELinux

Pgina 14 a

El mismo procedimiento se seguir con los grupos genricos instalados en el sistema por defecto. a e En denitiva, todo aquello que no se use debe ser desinstalado. Esto es una norma general de seguridad del sistema que debe llevarse a cabo siempre.

1.5.
1.5.1.

SELinux
Qu es SELinux? e

A continuacin, se explica brevemente en qu consiste SELinux. Slo queremos que tengis una o e o a pequea nocin de este nuevo Mdulo de Seguridad que con el tiempo ir teniendo un mayor peso n o o a en las nuevas distribuciones. No entraremos en instalacin ni conguracin y solo mostraremos o o algn pequeo ejemplo que ayude a comprender los conceptos bsicos, quien est ms interesado u n a e a en los enlaces de la NSA y Fedora puede encontrar casi toda la informacin disponible. o Security Enhanced Linux, SELinux, es un sistema que modica el ncleo de Linux, fortaleciendo u los mecanismos de control de acceso y forzando la ejecucin de los procesos dentro de un entorno o con los m nimos privilegios necesarios. La primera versin de SELinux se remonta a nales del ao 2000 de manos de la NSA (Agencia o n Nacional de Seguridad de los Estados Unidos). El objetivo del mismo es, por un lado, demostrar la posibilidad de implementar el modelo de seguridad de control de acceso obligatorio y el control de acceso basado en roles en entorno Linux. Como segundo objetivo, hacer frente a la eventualidad de que los sistemas operativos trusted (conables y seguros) comerciales dejaran de estar disponibles. SELinux puede considerarse como una implementacin prctica del modelo de seguridad de o a control de acceso obligatorio basado en el ncleo del sistema operativo Linux. Un administrador u de un sistema SELinux tiene la posibilidad de congurar una pol tica donde se denen los archivos a los que tiene acceso cada programa. Para poder realizar esto, SELinux implementa un mecanismo para establecer en cada archivo y proceso el contexto en el que est siendo utilizado. a Mediante la utilizacin de un mdulo del sistema operativo, es posible establecer reglas para o o permitir o denegar el acceso a cualquier archivo del sistema (utilizando el concepto de archivo de Unix, lo que incluye a los dispositivos, cheros...). El sistema operativo dispone de un proceso servidor de seguridad, que se ejecuta como parte del ncleo, que decide en base a la pol u tica de seguridad denida por el administrador, si algo (un proceso o un usuario) dispone de permiso para acceder a un objeto (archivo, dispositivo...). Este mecanismo de control se denomina Type Enforcement (TE). As ante una incidencia de seguridad como puede ser un desbordamiento de bfer en un , u proceso ejecutado por root, el atacante slo podr acceder a los archivos para los cuales el proceso o a vulnerable est autorizado por la pol e tica del sistema. No tendr ningn efecto sobre el resto de a u archivos u objetos del sistema. SELinux tambin permite implementar un modelo adicional de seguridad (Multi-Level Security, e MLS) en el que adems de lo indicado hasta ahora, es posible, para cada objeto, una capa de a seguridad (como altamente secreta, secreta, condencial y sin restriccin). En este modelo, a o los mecanismos descritos anteriormente se aade la restriccin de que unicamente aquellos procesos n o y usuarios situados en la misma capa (o una capa superior) pueden acceder a los objetos de la misma capa o inferiores, pero nunca al revs. As un usuario o un proceso de la capa condencial e puede acceder a la informacin condencial y sin restriccin, pero nunca a la informacin o o o marcada como secreta o altamente secreta. Puede encontrarse ms informacin en: a o http://www.nsa.gov/selinux/index.cfm http://fedora.redhat.com/projects/selinux/ http://fedora.redhat.com/docs/selinux-faq-fc3/

Software libre y educacin: redes, gestores de contenidos y seguridad o

Thales-CICA 2005

SELinux

Pgina 15 a

1.5.2.

Terminolog SELinux a

Pasamos ahora a introducir algunos de los conceptos bsicos de SELinux. Se busca facilitar al a alumno la comprensin posterior de documentos ms detallados. o a Como ya se ha comentado, mediante SELinux se denen una serie de pol ticas que controlan el acceso de forma que los usuarios unicamente obtienen los privilegios necesarios para realizar su trabajo. As es posible reducir o eliminar los daos producidos por posibles errores en la , n conguracin o buer overows. Este mecanismo opera de forma independiente al tradicional o mecanismo de control de acceso de Linux. No existe el concepto de superusuario o root ni los binarios setuid/setgid. En el caso que la distribucin de linux no tenga el soporte SELinux instalado es necesario o instalar un kernel modicado que incluya estas funcionalidades. SELinux proporciona compatibilidad con las aplicaciones linux existentes y con los mdulos o del kernel. Sin embargo, algunos mdulos del kernel puede que requieran su modicacin para o o interactuar de forma adecuada con SELinux. Las categor de compatibilidad son: as Compatibilidad de aplicacin. SELinux proporciona compatibilidad con las aplicaciones exiso tentes. No se han cambiado las estructuras de datos visibles por las aplicaciones ni el interfaz de las llamadas al sistema existentes, por lo que las aplicaciones corrern sin cambios si la a pol tica de seguridad autoriza la operacin. o Compatibilidad de mdulos del kernel. Originalmente, SELinux solo proporciona compatibio lidad para los mdulos del kernel existentes, por lo que era necesario recompilar los mdulos o o con las estructuras de seguridad necesarias. Ahora estn integrados en el kernel 2.6, proa porcionando compatibilidad binaria con los mdulos existentes, con algunas excepciones que o precisan modicaciones en los mdulos. o SELinux utiliza un sistema de cheros especial como parte de la instalacin. Ser necesario modio a car /etc/fstab para que se monte de forma correcta.
none / s e l i n u x s e l i n u x f s noauto 0 0

El sistema de cheros /selinux es similar a /proc, es un pseudo sistema de archivos.


l s l / s e l i n u x total 0 rwrwrw 1 r o o t rwrwrw 1 r o o t rwrwrw 1 r o o t rw 1 r o o t rw 1 r o o t rrr 1 r o o t rwrwrw 1 r o o t rwrwrw 1 r o o t

root root root root root root root root

0 0 0 0 0 0 0 0

Nov Nov Nov Nov Nov Nov Nov Nov

25 25 25 25 25 25 25 25

11:27 11:27 11:27 14:19 11:27 11:27 11:27 11:27

access context create enforce load policyvers relabel user

Si se ejecuta cat /selinux/enforce se obtendr 1 0 dependiendo de si estamos en modo a o forzado o permisivo respectivamente. Posteriormente se indicar que implica cada uno de estos a modos. En Debian y derivados, el directorio de conguracin de pol o ticas estar en /etc/selinux. En a el caso de Fedora es /etc/security/selinux/src/policy. A continuacin veremos los conceptos con los que trabaja SELinux. o Identidad Una identidad bajo SELinux no tiene el mismo signicado que un uid. Ambos pueden convivir en el mismo sistema pero son diferentes. Las identidades para SELinux forman parte de un contexto de seguridad que denir a qu dominios se puede acceder (basicamente, qu se puede hacer). Si a e e se ejecuta el comando su no se cambiar la identidad bajo SELinux. a
J.A. Bernal - F. Gordillo - H. Santander - P. Villegas

Thales-CICA 2005 Dominio

SELinux

Pgina 16 a

Cada proceso se ejecuta en un dominio. Un dominio determina el acceso que tiene un proceso, es una lista de qu procesos puede hacer o qu acciones puede realizar un proceso. En este caso s e e hay similitud con el uid. Supongamos que root tiene un programa al que le ejecuta chmod 4777 hacindolo setuid root. Cualquiera en el sistema puede ejecutar este programa con privilegios de e root, lo que representa un claro agujero de seguridad. Con SELinux si se tiene un proceso que hace una transicin a un dominio privilegiado, si el role del proceso no lo autoriza a entrar entonces no o se ejecutar. a Ejemplos de dominios son sysadm_t que es el dominio de administracin del sistema y user_t o que es el dominio general sin privilegios. Tipo Un tipo es asignado a un objeto y determina quin tiene acceso a este objeto. La denicin e o para dominio es similar, excepto que un dominio se aplica a un proceso y el tipo se aplica a objetos como pueden ser directorios, cheros, sockets, etc. Role Un role determina qu dominios pueden ser usados. Los dominios que un role de usuario puede e acceder estn predenidos en los cheros de conguracin de pol a o ticas. Si un role no est autorizado a para entrar en un dominio, se le negar el acceso. a As para permitir a un usuario del dominio sin privilegios user_t ejecutar el comando passwd , ser necesario especicarlo: a role user_r types user_passwd_t De esta forma un usuario en el role user_r se le permite entrar en el dominio user_passwd_t donde puede ejecutar el comando passwd. Contexto de seguridad Un contexto de seguridad tiene todos los atributos que estn asociados a cosas como cheros, a directorios, procesos, sockets TCP, entre otros. Un contexto de seguridad est formado por la a identidad, role y dominio o tipo. Para vericar el contexto de seguridad actual se ejecuta id bajo SELinux. En el caso de crear un chero, el contexto de seguridad variar dependiendo del dominio que a lo cree. Por defecto, el nuevo chero hereda el mismo tipo que el directorio padre, aunque este comportamiento puede cambiarse con las pol ticas. Si el usuario legolas crea un chero con el nombre prueba en su directorio $HOME:
l s c o n t e x t prueba rwrr l e g o l a s l e g o l a s l e g o l a s : o b j e c t r : u s e r h o m e t prueba

Si a continuacin crea un chero en /tmp llamado tmpprueba: o


l s c o n t e x t /tmp/ tmpprueba rwrr l e g o l a s l e g o l a s l e g o l a s : o b j e c t r : u s e r t m p t /tmp/ tmpprueba

El tipo ha cambiado dependiendo del directorio donde fue creado el chero. Una forma de cambiar el contexto de seguridad es usando el comando newrole -r role, donde role es el nuevo role que quiere adoptarse. De esta forma, si un usuario quiere adoptar el role sysadm_r: newrole -r sysadm_r
Software libre y educacin: redes, gestores de contenidos y seguridad o

Thales-CICA 2005

SELinux

Pgina 17 a

Ser necesario proporcionar la clave para la identidad del usuario, la cual puede chequearse con el a comando id. En caso de no tener autorizacin para entrar en el nuevo role: o
n e w r o l e r sysadm r l e g o l a s : sysadm r : sysadm t i s not a v a l i d c o n t e x t

Con este mensaje se indica que el usuario legolas no puede entrar en el role:dominio sysadm_r:sysadm_t debido a que no est autorizado. a Transicin o Una transicin determina qu contexto de seguridad ser asignado a la operacin solicitada. o e a o Hay dos tipos de transicin: o Transicin del dominio de un proceso que es usado, cuando se ejecuta un proceso de un tipo o especicado. Transicin de un tipo de chero, cuando se crea un chero bajo un directorio en particular. o Una transicin de tipo es lo que se vio en el ejemplo anterior. o Pol ticas Las pol ticas estn constituidas por un conjunto de reglas que denen cosas como los roles a a los que un usuario tiene acceso. Estas reglas se editan conforme a como se desee que se dena la seguridad del sistema.

1.5.3.

Modos de uso de SELinux

El modo Permisivo es el utilizado cuando el servidor se dedica a guardar informacin en o cheros de log referente a SELinux. No se siguen las reglas denidas en las pol ticas, simplemente se almacenan los eventos que se producen relativos a SELinux. Este modo es el adecuado para depuracin ya que se pueden repasar los mensajes generados y vericar que la conguracin es o o correcta. El otro modo existente es el modo Reforzado. En este modo el sistema sigue las pol ticas que se hayan denido en SELinux. Hay que tener cuidado cuando se active este modo, si hay algn u fallo en la conguracin de las pol o ticas puede perserse parte del acceso al sistema. Para poder pasar de un modo a otro es necesario que est denida la opcin e o CONFIG_SECURITY_SELINUX_DEVELOP en la compilacin del kernel. Posteriormente, para pasar o del modo permisivo al reforzado es necesario ejecutar: echo "1" > /etc/selinux/enforce En caso contrario se sustituye 1 con 0. Esto proporciona un mtodo para saber en que modo est e a el sistema. Basta con vericar el valor de /etc/selinux/enforce. Si se compila el kernel con el modo desarrollo activado el servidor arrancar con el modo a permisivo. Este comportamiento puede modicarse creando un script que se ejecute en el arranque y que cambie de modo pasando el parmetro enforcing=1 al kernel durante el arranque. a

J.A. Bernal - F. Gordillo - H. Santander - P. Villegas

Thales-CICA 2005

SELinux

Pgina 18 a

Software libre y educacin: redes, gestores de contenidos y seguridad o

Cap tulo 2

Vulnerabilidades del sistema


Los favorables al Open Source deenden que la naturaleza del software de fuentes abiertas lo hace ms seguro. Los cr a ticos al movimiento Open Source deenden que el software abierto es menos seguro.

Hacking Exposed Linux

2.1.
2.1.1.

Tipos de ataques y vulnerabilidades


Ataques de negacin de servicio (denial of service) o

El ataque denominado Denial of Service 1 o de negacin de servicio es un tipo de ataque cuya o meta fundamental es la de negar el acceso del atacado a un recurso determinado o a sus propios recursos. Los ataques de negacin de servicio pueden dejar inoperativo un servidor o una red. De o esta forma, toda una organizacin puede quedar fuera de Internet durante un tiempo determinado. o Algunos ejemplos de este tipo de ataque son: Intentos de inundar (ood ) una red, evitando de esta manera el trco de datos en la misma. a Intentos de interrumpir las conexiones entre dos mquinas, para evitar el acceso a un servicio a por parte del resto de usuarios. Intentos de evitar que un determinado usuario tenga acceso a un servicio. Intentos de interrumpir un servicio espec co a un sistema o a un usuario. Tambin hay que tener en cuenta que el uso ileg e timo de recursos puede dar lugar, igualmente, a la negacin de un servicio. Por ejemplo, un intruso puede utilizar un rea del FTP annimo como o a o lugar para salvar archivos, consumiendo, de esta manera, espacio en el disco y generando trco a en la red. Algunos ataques de negacin de servicio se pueden ejecutar con recursos muy limitados contra o un sitio grande y sosticado. Este tipo de ataque se denomina ataque asimtrico. Por ejemplo, e un atacante con un ordenador anticuado y un mdem puede poner fuera de combate a mquinas o a rpidas y sosticadas. a Hay tres tipos de ataques bsicos de negacin de servicio: a o Consumo de recursos escasos, limitados, o no renovables Destruccin o alteracin de informacin de conguracin o o o o Destruccin o alteracin f o o sica de los componentes de la red
1 Tambin e

se hace referencia a l como ataque DoS. e

19

Thales-CICA 2005

Tipos de ataques y vulnerabilidades

Pgina 20 a

Ataques que podemos sufrir Los ordenadores y las redes necesitan para funcionar ciertos recursos: ancho de banda de la red, espacio de memoria y disco, tiempo de CPU, estructuras de datos, acceso a otros ordenadores y redes, entre otros. Los ataques de negacin de servicio se ejecutan, con frecuencia, contra la conectividad de la o red. La meta del atacante es evitar que los ordenadores se comuniquen en la red. La inundacin o o ooding es uno de las formas ms antiguas de ataques DoS a internet. En la actualidad el ancho a de banda de la red es tan importante como cualquiera de los elementos f sicos del servidor. Los ataques DoS de inundacin de red pretenden evitar que los ordenadores que forman nuestra red o puedan comunicarse. El ataque comienza con un proceso de establecimiento de conexin con la o mquina objetivo, uno de los ejemplos ms claros es el ataque SYN ood. Veamos con un poco de a a detalle en qu consiste este ataque. e Cuando un sistema (cliente) intenta establecer una conexin TCP con el sistema que proporo ciona servicios (servidor), tanto el cliente como el servidor van a intercambiar un conjunto de mensajes. Esta tcnica de conexin se aplica a todas las conexiones TCP. El cliente comienza e o enviando un mensaje SYN al servidor. A su recepcin, el servidor da su reconocimiento al mensaje o enviando un mensaje SYN-ACK. El cliente naliza la conexin respondiendo con un mensaje ACK. o Es en este momento en el que se establece la comunicacin entre cliente y servidor2 . o El potencial ataque tiene lugar en este punto donde el servidor ha enviado un reconocimiento SYN-ACK de vuelta al cliente, pero an no ha recibido el ACK. El servidor ha construido en memoria u una estructura para almacenar todas las conexiones pendientes. Esta estructura tiene un tamao n limitado y puede excederse creando muchas conexiones como la descrita. El atacante env muchos a mensajes SYN hacindose pasar por clientes desconocidos que no van a responder. Lograr de esta e a manera que el servidor no acepte ms conexiones entrantes cuando sature la estructura de datos a donde almacena las comunicaciones pendientes de conrmacin. o Debemos tener en cuenta que este tipo de ataque no depende del ancho de banda que disponga el atacante. En este caso, el atacante est consumiendo las estructuras de datos del kernel, implicadas a en establecer una conexin TCP. Un atacante con una simple conexin telefnica puede realizar o o o este ataque contra un servidor de los ms potentes (ste ultimo es un buen ejemplo de un ataque a e asimtrico). e Un atacante tambin puede utilizar los recursos que disponemos contra nosotros mismos, de e maneras inesperadas. Por ejemplo, el caso de DoS UDP. En este ataque, el atacante utiliza los paquetes falsicados de UDP para conectar el servicio de generacin de echo en una mquina con o a el servicio de chargen en otra mquina. El resultado es, que los dos servicios consumen todo el a ancho de banda de red entre ellos. As la conectividad para todas las mquinas en la misma red , a desde cualquiera de las mquinas atacadas se ve afectada. a Un atacante puede, tambin, consumir todo el ancho de banda disponible en su red generando e una gran cantidad de paquetes dirigidos a la misma. T picamente, estos paquetes son de generacin o de echo de ICMP (ping), pero pueden ser cualquier otra cosa. Adems, el atacante no necesita a operar desde una sola mquina; podr coordinar varias mquinas en diversas redes para alcanzar a a a el mismo efecto. Adems del ancho de banda de la red, los atacantes pueden consumir otros recursos que nuesa tro sistema necesite para funcionar. Por ejemplo, en muchos sistemas, un nmero limitado de las u estructuras de datos en el kernel est disponible para almacenar informacin de procesos (identia o cadores, entradas en tablas de procesos, slots , etc.). Si se consumen estas estructuras de datos escribiendo un programa o un script que no haga nada, pero que cree en varias ocasiones copias de s mismo conseguir amos un ataque DoS. Muchos sistemas operativos modernos, aunque no la totalidad de ellos, tienen recursos para protegerse contra este problema. Un atacante puede tambin consumir su espacio en disco de otras maneras, por ejemplo: e Generar miles de correos (Spam, Bombing).
2 Lo

que conocemos como Three way handshake o establecimiento de conexin en tres pasos. o

Software libre y educacin: redes, gestores de contenidos y seguridad o

Thales-CICA 2005

Tipos de ataques y vulnerabilidades

Pgina 21 a

Generar intencionalmente errores que deben ser reejados en los cheros de log. En este tipo de ataque, podemos citar tambin la utilizacin indebida de syslog. Es decir, utilizar el e o proceso syslog de la v ctima para que registre eventos de otra mquina, llenando el espacio a en disco. Colocar archivos en su disco, utilizando ftp annimo. o En general, se puede utilizar cualquier cosa que permita que los datos sean escritos en el disco para ejecutar un ataque DoS si no hay l mites en la cantidad de datos que se pueden escribir (quotas). No obstante, muchos sitios tienen esquemas de lockout de cuenta despus de un cierto nmero e u de logins fallados. Una conguracin t o pica bloquea el login despus de 3 a 5 intentos fallidos. e Un atacante puede utilizar este esquema para evitar que los usuarios leg timos entren. En algunos casos, incluso las cuentas privilegiadas, tales como root, pueden ser v ctimas de este tipo de ataque. Es fundamental disponer siempre de un mtodo para acceder ante la emergencia de este tipo de e ataques. Algunas veces, errores en la programacin del kernel de Linux pueden llevarnos a un DoS: o Ping de la muerte (ping of death). Algn software permite enviar paquetes ICMP que son u mayores de 65.536 bytes, valor mximo que la especicacin TCP/IP permite. En la actuaa o lidad, slo algunas pilas TCP/IP son vulnerables a este ataque y la mayor de los routers o a de internet ltrarn los paquetes de este tamao. a n Teardrop. Es similar al ping de la muerte, pero en este caso intenta romper la pila de la red destino proporcionndole mltiples fragmentos que no se reensamblan de forma adecuada. a u El resultado es un kernel panic y el consiguiente reinicio de la mquina. a Deep simlink bug. En algunas versiones del kernel, incluyendo hasta la 2.4.9 hay un error que permite realizar un DoS local. Un atacante puede crear un directorio que contenga mltiples u directorios y enlaces simblicos que referencien a ellos mismos de forma repetida. Cuando uno o de los cheros es le do, el kernel consume un periodo largo de tiempo intentando resolver dnde se encuentra el chero original. Durante dicho periodo ningn otro proceso puede o u ejecutarse y la mquina se bloquea. a Hay otros componentes que pueden ser vulnerables a la negacin de servicio y que deben vigilarse. o Estos incluyen: Impresoras Unidades de cinta Conexiones de red Otros recursos limitados importantes para la operacin del sistema. o Un ordenador incorrectamente congurado puede no funcionar bien, o directamente no arrancar. Un atacante puede alterar o destruir la informacin de conguracin del sistema operativo, o o evitando de esta forma que pueda usarse el ordenador atacado. Veamos algunos ejemplos: Si un atacante puede cambiar la informacin de enrutado de sus routers, la red puede ser o deshabilitada. Si un atacante puede modicar cualquier chero de conguracin del sistema, de los existentes o en /etc el sistema puede no arrancar. Supongamos que se borran las entradas de /etc/fstab. Tambin es muy importante la seguridad f e sica de la red. Se debe resguardar contra el acceso no autorizado a los ordenadores, los routers, los racks de cableado de red, los segmentos del backbone de la red, y cualquier otro componente cr tico de la red.
J.A. Bernal - F. Gordillo - H. Santander - P. Villegas

Thales-CICA 2005

Tipos de ataques y vulnerabilidades

Pgina 22 a

Prevencin y respuesta a los ataques o Tal como se ha expresado anteriormente, los ataques DoS pueden dar lugar a prdidas signie cativas de tiempo (y dinero) para muchas organizaciones, por lo que se recomiendan una serie de medidas: Colocar listas de control de acceso en los routers. Esto reducir su exposicin a ciertos ataques a o DoS Instalar parches a su sistema operativo contra ooding de TCP SYN. Esta accin permitir o a reducir sustancialmente la exposicin a estos ataques, aunque no pueda eliminar el riesgo de o forma denitiva. Invalidar cualquier servicio de red innecesario o no utilizado. Esto puede limitar la capacidad de un atacante de aprovecharse de esos servicios para ejecutar un ataque DoS. Implementar sistema de cuotas. Observar el funcionamiento del sistema y establecer valores base para la actividad ordinaria. Utilizar estos valores para calibrar niveles inusuales de la actividad del disco, del uso de la CPU, o del trco de red. a Incluir, como parte de su rutina, el examen de su seguridad f sica. Considerar, entre otras cosas, los servidores, routers, terminales desatendidos, puertos de acceso de red y los racks de cableado. Utilizar Tripwire o una herramienta similar para detectar cambios en la informacin de o conguracin u otros archivos. o Utilizar conguraciones de red redundantes y tolerantes a fallos.

2.1.2.

Cracking de passwords

En este apartado, se presentarn una serie de consideraciones referidas al cracking de passwords a basadas en UNIX. El objetivo inicial consiste en entrar al servidor. Debido a que se permite el acceso a mltiples usuarios, los sistemas UNIX nos solicitarn un nombre de identicacin u a o acompaado de una clave. Dicho nombre deber darse de alta en el sistema para que se pueda n a acceder. Cuando un usuario desea entrar en una mquina, el sistema solicitar un login de acceso o a a nombre de usuario. Si el login es incorrecto, el sistema no lo noticar para impedirle conocer qu a e accesos se encuentran dados de alta. Si la password coincide con la que tiene asignada el login que se emplea, el sistema permitir el acceso. a Una vez encriptada una password, no se puede desencriptar. Sin embargo, esto no garantiza la seguridad de la password, puesto que no signica que la password no se pueda averiguar. El mecanismo que se utiliza para descubrir (no desencriptar) las passwords consiste en efectuar encriptaciones de palabras (posibles passwords) y comparar estas encriptaciones con el original. De que depende el xito? El xito depende de la calidad del diccionario (archivo que contiene e e un conjunto de posibles passwords), del programa que se utilice, de la CPU y, por supuesto, de nuestra paciencia. Los programas buscadores de contraseas son fcilmente diseables. Si mediante n a n un bug se obtiene el archivo /etc/passwd, se puede iniciar un ataque de diccionario contra el mismo obtenindose, de este modo, las passwords. e Otro tipo de ataque es el de fuerza bruta, que consiste simplemente en realizar todas la combinaciones posibles de caracteres hasta hallar la password.
Software libre y educacin: redes, gestores de contenidos y seguridad o

Thales-CICA 2005

Tipos de ataques y vulnerabilidades

Pgina 23 a

2.1.3.

E-mail bombing y spamming

En este apartado, se presentarn algunas de las dicultades que pueden surgir como consea cuencia de la utilizacin de los servicios de mail. Se brindarn, por otro lado, algunas respuestas o a a dichos obstculos. a El e-mail bombing consiste en enviar muchas veces un mensaje idntico a una misma direccin, e o saturando el mailbox del destinatario. El spamming, que es una variante del e-mail bombing, se reere a enviar el email a centenares o millares de usuarios e, inclusive, a listas de inters. El e spamming puede resultar an ms perjudicial si los destinatarios contestan el mail, haciendo que u a todos reciban la respuesta. Puede, adems, ocurrir inocentemente como resultado de enviar un mensaje a la lista y no darse a cuenta de que la lista lo distribuye a millares de usuarios, o como resultado de mala conguracin o de un autorespondedor, por ejemplo el vacation3 . El e-mail bombing/spamming se puede combinar con el e-mail spoong 4 , logrando que sea ms a dif determinar quin est enviando realmente el mail. cil e a Cuando se proveen los servicios de e-mail los usuarios son, lgicamente, vulnerables al e-mail o bombing y spamming. En efecto, el e-mail spamming es casi imposible de prevenir. Un usuario con una direccin vlida de mail puede realizar spam a cualquier otra direccin de mail o newsgroup. o a o Cuando gran cantidad de mails son dirigidos a un solo sitio, ste puede sufrir DoS por prdida e e de conectividad, caerse el sistema o producirse fallos en el servicio debido a: sobrecarga de conexiones de red utilizacin de todos los recursos de sistema disponibles o llenado del disco como resultado de postings mltiples y de entradas en el syslog. u Si el sistema aparece repentinamente lento (el e-mail est lento o no parece que se env o recibe), a a la razn puede ser que el servidor de correo est intentando procesar una excesiva cantidad de o a mensajes. Esto puede comprobarse a travs del log de sistema. e Es importante: Identicar la fuente del e-mail bomb/spam y congurar el router para evitar el acceso de los paquetes entrantes de esa direccin. Puede colocarse una lista de control de acceso5 en el o puerto 25 (SMTP) para esa direccin. o Observar las cabeceras del e-mail para determinar su origen verdadero. Ponerse en contacto con el sitio que se identique como origen con el propsito de alertarlo o de la actividad del spammer. Asegurarse de tener la versin ms actualizada del demonio de mail (por ejemplo Sendmail) o a y aumentar el grado de debug o log que posea el proceso, para detectar o alertar sobre estas actividades. Vigilar el tamao del archivo de log, ya que puede crecer considerablemente, si n se est bajo un e-mail bombing. a Desafortunadamente, hasta el momento, no hay manera de prevenir el bombardeo de e-mail o spamming y es imposible predecir el origen del ataque siguiente. Es trivial obtener acceso a listas de inters o acceder a informacin que contenga grandes volmenes de direcciones de e-mail, las e o u que proporcionan al atacante direcciones de destino para el spam. Pueden desarrollarse herramientas internas, que pueden ayudar a reconocer y a responder al e-mail bombing/spamming reduciendo, de esta manera, el impacto de tal actividad. Tales herramientas deben aumentar las capacidades de log y alertar de mensajes que vienen de un mismo
3 Responde con un mensaje automticamente diciendo que estamos de vacaciones o no podemos atender el correo a por algn tiempo determinado. u 4 Que altera la identidad de la cuenta que env el mail a 5 Ver el apartado sobre tcp-wrappers de las entregas anteriores.

J.A. Bernal - F. Gordillo - H. Santander - P. Villegas

Thales-CICA 2005

Tipos de ataques y vulnerabilidades

Pgina 24 a

lugar en un corto per odo de tiempo. Asimismo, deber ser capaces de rechazar esos mensajes, an o descartarlos. Si un sitio utiliza un nmero pequeo de servidores de e-mail, podr congurarse un rewall u n a para asegurarse de que las conexiones de smtp fuera del rewall puedan hacerse solamente a sus pasarelas de mail y a ninguno de los otros equipos. Aunque esta operacin no prevendr un ataque, o a reduce al m nimo el nmero de las mquinas disponibles para un ataque basado en SMTP. De este u a modo, se puede controlar el trco entrante SMTP y ltrarlo de manera acorde. a Es importante no contestar y/o hacer un forward (reenv de los spams. De este modo evitao) remos que el problema se propague.

2.1.4.

Seguridad en WWW

A continuacin vamos a tratar algunos aspectos relativos a la seguridad de un servidor web. o Nos centraremos en Apache, tratado en una entrega anterior. No hay que confundir la seguridad del servidor web con la de los clientes web (Netscape, Internet Explorer, ...). Los problemas que puedan originarse en unos y otros no tienen nada que ver. Cuando accedemos a un link a travs del navegador web, realizamos una conexin TCP/IP al e o servidor donde residen las pginas. Esta conexin se suele realizar a travs del puerto 80 (HTTP). a o e El navegador env un mensaje denominado (HTTP request) al servidor y ste responde con los a e datos solicitados. Podemos tambin efectuar una conexin mediante telnet en lugar de con un e o navegador web telnet www.midomio.org 80 Supongamos que utilizamos la utilidad curl6 :
# c u r l head h t t p : / /www. midominio . o r g HTTP/ 1 . 1 302 Found Date : Sat , 04 Jun 2005 1 6 : 5 1 : 0 7 GMT S e r v e r : Apache / 2 . 0 . 5 4 ( Debian GNU/ Linux ) PHP/4.3.10 15 m o d s s l / 2 . 0 . 5 4 OpenSSL / 0 . 9 . 7 e mod perl / 1 . 9 9 9 . 2 1 P e r l / v5 . 8 . 4 L o c a t i o n : h t t p : / /www. midominio . o r g / ContentType : t e x t / html ; c h a r s e t=i s o 88591

Un intruso podr obtener de esta manera informacin sobre la versin de Apache que se a o o encuentra corriendo en el servidor. Slo tendr que encontrar un posible exploit 7 de esa versin o o a o esperar a que aparezca alguno. Una manera de evitar esto, es modicar la informacin que aparece o en la cabecera que muestra el servidor web Apache8 . La directiva de Apache ServerTokens tiene esta misin: o ServerTokens Full: Muestra todos los nombres de mdulos y versiones del servidor o ServerTokens Min: Muestra unicamente el nombre de los mdulos y del servidor o ServerTokens ProductOnly: Muestra unicamente el nombre del servidor, en nuestro caso Apache Este tipo de solucin se denomina seguridad por oscuridad. Se trata de evitar proporcionar o informacin a cualquier usuario y en concreto a los que tienen intenciones no muy recomendables, o sobre el software y versiones utilizados.
6 Para

poder disponer de ella:

#apt-get install curl Para mayor informacin sobre esta utilidad consultar el manual man curl o 7 Utilizado en el argot para nombrar a un programa que aprovecha un fallo y que permite sacar partido de l. e 8 Estudiado en la 3a entrega del curso.

Software libre y educacin: redes, gestores de contenidos y seguridad o

Thales-CICA 2005

Tipos de ataques y vulnerabilidades

Pgina 25 a

Otra recomendacin de seguridad es estar informado de las posibles vulnerabilidades que apareo cen de los servidores web Apache. Si tenemos una versin con una vulnerabilidad que se soluciona o en una versin posterior, debemos actualizar la versin lo antes posible. o o Es importante tambin controlar los datos que estn disponibles. Por defecto, todos los datos e a tienen acceso por parte de cualquier persona que acceda al servidor mediante un navegador web. Cualquier tipo de datos que requieran un acceso restringido debern congurarse para que se a cumpla esa condicin. Utilizaremos las directivas de Apache que restringen el acceso a determinadas o direcciones IP o a determinados usuarios. Hasta aqu hemos tratado recomendaciones referentes a la conguracin de Apache. Sin em o bargo, no debemos olvidar la seguridad desde el punto de vista del sistema operativo. Si dentro de un directorio del DocumentRoot de Apache tenemos un enlace simblico a /etc, cualquier usuario o de internet podr tener acceso al chero /etc/password. Unicamente tendr que escribir la URL a a de forma adecuada y obtendr en su navegador el chero de password. Es recomendable el uso de a las opciones de Apache FollowSymLinks y SymLinkIfOwnerMatch. Permitir el ndice de los directorios tampoco es una buena idea, ya que el intruso tendr ina formacin de la estructura de directorios del servidor web. Podr encontrar cualquier chero que o a hayamos dejado por olvido y que tenga informacin sensible. Podemos controlar este comportao miento con Option Indexes. En el caso de usar los mecanismos de autenticacin proporcionados por Apache, para limitar o el acceso a determinadas reas de los contenidos del servidor web, tendremos que ser igualmente a cuidadosos. Normalmente usaremos el chero .htaccess, restringiendo al mximo el acceso al a mismo. No podemos permitir que un intruso, por el mtodo de prueba y error construya URLs e en las que busque obtener el chero .htaccess. Para ello es conveniente utilizar:
<F i l e s . htaccess > Order a l l o w , deny Deny from a l l </ F i l e s >

Otra opcin es congurar el acceso restringido en el propio httpd.conf, con lo que evitar o amos la circunstancia anterior. Existe otro punto que debemos controlar y son los scripts y cgi-bin. Atacar el sistema operativo v internet implica buscar algn error en un script cgi o lograr que el servidor web haga algo para a u lo que no fue pensado, como por ejemplo dar al intruso acceso al shell del servidor, que ese intruso ejecute comandos arbitrarios en l , o consiga informacin util para lograr esos objetivos. e o Es obvio que los datos proporcionados a cualquier cgi script a travs de un formulario, deben e ser probados para su validez por una razn u otra, y una de esas razones indudablemente es la o seguridad. Dependiendo de lo que el script vaya a hacer, la entrada aparentemente inocua de informacin puede tener graves consecuencias. o Por ejemplo, consideremos el siguiente script en perl en el cual se realiza un finger al usuario que se indic en el campo de entrada del formulario y devuelve los resultados al navegador web: o
#!/ u s r / l o c a l / b i n / p e r l $ |=1; r e q u i r e c g i l i b . pl ; &ReadParse ; S c r i p t poco s e g u r o p r i n t &P r i n t H e a d e r ; open ( IN , / u s r / b i n / f i n g e r $ i n { u s e r i d } | ) ; @ s t u f f =; foreach ( @stuff ) { print ; } exit ;

Si porporcionamos la siguiente entrada:


l e g o l a s ; / b i n / c a t / e t c / passwd J.A. Bernal - F. Gordillo - H. Santander - P. Villegas

Thales-CICA 2005

Analizador de vulnerabilidades Nessus

Pgina 26 a

En caso de no poseer soporte de shadow passwords, tendremos graves problemas. El script anterior constituye un ejemplo muy bsico de la forma que un password grab 9 podr tomar. a a El origen del problema radica en que la cadena de entrada podr contener cualquier comando a arbitrario. El ejemplo anterior no control si la entrada en el formulario era un usuario o una o bomba atmica. o Otro aspecto a tener en cuenta es que durante los ultimos aos, en los cuales se ha extendido el n uso de documentos dinmicos, otras vulnerabilidades han entrado en escena. El uso de los Server a Side Includes (SSIs), en algunos casos signic una extensin nueva de archivo, como shtml, en o o otros signic permitir SSIs para cada documento en el servidor o en un rbol dado del documento. o a En cualquier caso, permitir SSIs permite un exec. Un uso leg timo t pico de una etiqueta exec es:
Esta p g i n a ha s i d o v i s i t a d a <! #e x e c c g i =/ c g i b i n / c o u n t e r > v e c e s a

Pero imaginemos un sistema de mensajer de alguna clase basado en HTML, por ejemplo un a libro de visitas que toma la entrada y construye un documento HTML. Alguien entra y deja:
Hey ! Que p g i n a s ms b o n i t a s , v o l v e r p r o n t o ! a a e <! #e x e c cmd=/ b i n / c a t / e t c / passwd >

Si no se estn analizando los campos que introducimos, nuevamente tenemos un password grab. a O podr introducirse cualquier cosa que el servidor pudiera ejecutar, lo cual ser fatal para a a nuestro sistema si el servicio web se ejecuta como root. Las ultimas versiones de Apache proporcionan como opcin invalidar los SSIs de tal manera o que se pueden habilitar sin el exec. Muchos de estos problemas se pueden reducir permitiendo el chrooting 10 del servidor web, aunque a pesar de los aumentos que se hacen de seguridad, stos no e son de ninguna forma un ejercicio trivial.

2.2.

Analizador de vulnerabilidades Nessus

La herramienta Nessus http://www.nessus.org es un proyecto que proporciona a la comunidad de internet una herramienta de anlisis de vulnerabilidades fcil de usar, gratuita y muy a a potente. Nessus es un programa de dominio pblico desarrollado bajo licencia GPL que permite u automatizar la comprobacin de forma remota de los posibles agujeros de seguridad por parte de o los administradores de sistemas, determinando as por qu sitios pueden acceder los intrusos. Se e dise para ayudar a identicar y resolver los problemas conocidos de los diferentes servicios que no corren en un servidor, permitiendo adelantarnos a los intrusos. A diferencia de otros analizadores de vulnerabilidades, Nessus no supone nada, es decir, no considerar que un servicio est a la escucha en un puerto espec a a co. Si nuestro servidor web est a la escucha en el puerto 2004, Nessus detectar que hay corriendo un servidor web en ese a a puerto y buscar las posibles vulnerabilidades del servicio. Del mismo modo, tampoco supondr a a que existe una vulnerabilidad a partir de la versin del software que proporciona el servicio, sino o que intentar explotarla. a Nessus tiene una arquitectura modular cliente/servidor, lo que permite tener una mquina que a realiza los chequeos de seguridad (servidores) y la interfaz grca en varias estaciones de trabajo a (clientes). Los servidores que se van a chequear no es necesario que ejecuten ningn software u adicional y pueden chequearse al mismo tiempo tantos como queramos. Otro de los puntos fuertes de Nessus es su actualizacin constante de la base de datos de o vulnerabilidades. Todos los nuevos chequeos de seguridad en forma de scripts, se pueden encontrar en http://www.nessus.org/scripts.php.
de passwords en limitar el DocumentRoot a una especie de particin dentro del sistema de archivos en el que se o encuentra. Algo as como una jaula de la que no puede salir.
10 Consiste 9 Recolector

Software libre y educacin: redes, gestores de contenidos y seguridad o

Thales-CICA 2005

Analizador de vulnerabilidades Nessus

Pgina 27 a

Los informes que proporciona Nessus a la nalizacin de un escaneo en busca de vulnerabilio dades pueden grabarse en disco en distintos formatos (XML, HTML, Texto, ...) y ofrecen detalles sobre las vulnerabilidades encontradas, as como las referencias de informacin al respecto. o

2.2.1.

Instalacin de Nessus o

La instalacin de Nessus es bastante simple. Es recomendable, aunque no estrictamente neceo sario, la instalacin11 de varios programas externos que aumentan la potencia de Nessus. Estos o programas son: NMAP (escaneador de puertos) Hydra12 (chequeador de password sencillo) Nikto (chequeador de cgi/script) Nos referimos a ellos porque son los mejores en su categor Si se instalan en su ruta por defecto, a. durante el proceso de instalacin de Nessus, estarn disponibles de forma automtica. o a a Los requerimientos referentes a paquetes adicionales necesarios para instalar Nessus son: Los paquetes shareutils, bison, flex El compilador gcc instalado, ya que se realizar la compilacin de Nessus a o La librer gtk para el cliente grco a a La instalacin de Nessus se puede hacer de tres formas, siempre con el usuario root: o A partir de los paquetes: es la ms sencilla para Debian, ya que slo hay que ejecutar: a o #apt-get install nessus y en su caso, los paquetes nessus-plugins y nessusd Compilacin manual: Se bajarn los fuentes de las distintas partes que componen Nessus y se o a compilarn en el orden que se indica en la pgina web de Nessus. a a Compilacin automtica: Se baja un unico paquete que descomprime los paquetes con los fuentes o a y realiza el proceso de compilacin e instalacin. o o Optaremos por documentar la tercera opcin, ya que la primera no presenta mayor problema. o Bajaremos el archivo nessus-installer.sh de http://www.nessus.org/nessus_2_0.html
NESSUS INSTALLATION SCRIPT Welcome t o t h e Nessus I n s t a l l a t i o n S c r i p t ! This s c r i p t w i l l i n s t a l l Nessus 2 . 0 . 1 0 a (STABLE) on your system . P l e a s e n o t e t h a t you w i l l need r o o t p r i v i l e g e s a t some p o i n t s o t h a t t h e i n s t a l l a t i o n can c o m p l e t e . Nessus i s r e l e a s e d under t h e v e r s i o n 2 o f t h e GNU G e n e r a l P u b l i c L i c e n s e ( s e e h t t p : / /www. gnu . o r g / l i c e n c e s / g p l . html f o r d e t a i l s ) . To g e t t h e l a t e s t v e r s i o n o f Nessus , v i s i t h t t p : / /www. n e s s u s . o r g P r e s s ENTER t o c o n t i n u e x creating lock directory
11

#apt-get install nmap nikto


12 http://thc.org/thc-hydra/

J.A. Bernal - F. Gordillo - H. Santander - P. Villegas

Thales-CICA 2005

Analizador de vulnerabilidades Nessus

Pgina 28 a

x e x t r a c t i n g n e s s u s . t a r . gz ( b i n a r y ) x now e x t r a c t i n g t h i s a r c h i v e x done Nessus i n s t a l l a t i o n : i n s t a l l a t i o n l o c a t i o n Where do you want t h e whole Nessus package t o be i n s t a l l e d ? [/ usr / l o c a l ] Nessus i n s t a l l a t i o n : Ready t o i n s t a l l Nessus i s now re ady t o be i n s t a l l e d on t h i s h o s t . The i n s t a l l a t i o n p r o c e s s w i l l f i r s t c o m p i l e i t then i n s t a l l i t P r e s s ENTER t o c o n t i n u e Nessus i n s t a l l a t i o n : F i n i s h e d C o n g r a t u l a t i o n s ! Nessus i s now i n s t a l l e d on t h i s h o s t . C r e a t e a n e s s u s d c e r t i f i c a t e u s i n g / u s r / l o c a l / s b i n / n e s s u s mkcert . Add a n e s s u s d u s e r u s e / u s r / l o c a l / s b i n / n e s s u s a d d u s e r . S t a r t t h e Nessus daemon ( n e s s u s d ) u s e / u s r / l o c a l / s b i n / n e s s u s d D . S t a r t t h e Nessus c l i e n t ( n e s s u s ) u s e / u s r / l o c a l / b i n / n e s s u s . To u n i n s t a l l Nessus , u s e / u s r / l o c a l / s b i n / u n i n s t a l l n e s s u s . Remember t o i n v o k e n e s s u s updatep l u g i n s p e r i o d i c a l l y t o update your l i s t of plugins . A s t e p by s t e p demo o f Nessus i s a v a i l a b l e a t : h t t p : / /www. n e s s u s . o r g /demo/ P r e s s ENTER t o q u i t

Una vez instalado, pasaremos a realizar los pasos que se nos indican. Cuando hemos instalado el servicio de Nessus, es necesario llevar a cabo una serie de sencillos pasos. La primera tarea es generar un certicado para encriptar el trco entre el cliente y el servidor. El comando nessusa mkcert se encarga de realizar esta funcin. o
[ r o o t @ f e d o r a r o o t ]# n e s s u s mkcert / u s r / l o c a l / var / n e s s u s /CA c r e a t e d / u s r / l o c a l /com/ n e s s u s /CA c r e a t e d C r e a t i o n o f t h e Nessus SSL C e r t i f i c a t e This s c r i p t w i l l now ask you t h e r e l e v a n t i n f o r m a t i o n t o c r e a t e t h e SSL c e r t i f i c a t e o f Nessus . Note t h a t t h i s i n f o r m a t i o n w i l l NOT be s e n t t o anybody ( e v e r y t h i n g s t a y s l o c a l ) , but anyone with t h e a b i l i t y t o c o n n e c t t o your Nessus daemon w i l l be a b l e t o r e t r i e v e t h i s i n f o r m a t i o n . CA c e r t i f i c a t e l i f e time i n days [ 1 4 6 0 ] : S e r v e r c e r t i f i c a t e l i f e time i n days [ 3 6 5 ] : Your c o u n t r y ( two l e t t e r code ) [FR ] : ES Your s t a t e o r p r o v i n c e name [ none ] : S e v i l l a Your l o c a t i o n ( e . g . town ) [ P a r i s ] : S e v i l l a Your o r g a n i z a t i o n [ Nessus U s e r s United ] : Mi O r g a n i z a c i o n C r e a t i o n o f t h e Nessus SSL C e r t i f i c a t e C o n g r a t u l a t i o n s . Your s e r v e r c e r t i f i c a t e was p r o p e r l y c r e a t e d . / u s r / l o c a l / e t c / n e s s u s / n e s s u s d . c o n f updated The f o l l o w i n g f i l e s were c r e a t e d : . Certification authority : Software libre y educacin: redes, gestores de contenidos y seguridad o

Thales-CICA 2005

Analizador de vulnerabilidades Nessus

Pgina 29 a

C e r t i f i c a t e = / u s r / l o c a l /com/ n e s s u s /CA/ c a c e r t . pem P r i v a t e key = / u s r / l o c a l / var / n e s s u s /CA/ cakey . pem . Nessus S e r v e r : C e r t i f i c a t e = / u s r / l o c a l /com/ n e s s u s /CA/ s e r v e r c e r t . pem P r i v a t e key = / u s r / l o c a l / var / n e s s u s /CA/ s e r v e r k e y . pem P r e s s [ENTER] t o e x i t

La siguiente tarea para completar la instalacin, es aadir un usuario. Puede aadirse mediante o n n el comando nessus-adduser. Este script preguntar qu mtodo de autenticacin queremos usar, a e e o el recomendado (y ms simple) es el de password. La siguiente pregunta que se nos hace es referente a a las reglas para restringir la cuenta del usuario. Podemos restringir a un determinado usuario para que slo pueda realizar escaneos de determinadas IP. El usuario que creemos ser un usuario propio o a de Nessus y no tendr reejo en el sistema. a
[ r o o t @ f e d o r a r o o t ]# n e s s u s a d d u s e r Using / var /tmp a s a temporary f i l e h o l d e r Add a new n e s s u s d u s e r Login : n e s s u s Authentication ( pass / c e r t ) [ pass ] : Login password : n e s s u s User r u l e s n e s s u s d has a r u l e s system which a l l o w s you t o r e s t r i c t t h e h o s t s t h a t n e s s u s has t h e r i g h t t o t e s t . For i n s t a n c e , you may want him t o be a b l e t o s c a n h i s own h o s t o n l y . P l e a s e s e e t h e n e s s u s a d d u s e r ( 8 ) man page f o r t h e r u l e s s y n t a x Enter t h e r u l e s f o r t h i s u s e r , and h i t c t r l D once you a r e done : ( t h e u s e r can have an empty r u l e s s e t ) Login : nessus Password : nessus DN : Rules : I s t h a t ok ? ( y/n ) [ y ] y u s e r added .

Una vez creado el usuario de Nessus tenemos la infraestructura preparada para poder arrancar las partes de que se compone Nessus. Arrancaremos el demonio nessusd y a continuacin el cliente o grco. Supondremos que tanto el cliente grco como el demonio han sido instalados en la misma a a mquina. a

2.2.2.

Actualizacin de plugins o

Antes de realizar un chequeo de un servidor, es recomendable actualizar los plugins que tenemos instalados. Los plugins de Nessus son como las rmas de virus para los antivirus. Cada uno est a hecho para una vulnerabilidad espec ca, explotando la vulnerabilidad en cuestin, o simplemente o comprobando versiones de software que son vulnerables. Normalmente estn escritps en NAS a (Nessus Attack Scripting Language) que es un lenguaje propio de Nessus, aunque pueden ser escritos en casi cualquier lenguaje de programacin. La actualizacin de estos plugins debe ser o o hecha frecuentemente al descubrirse nuevas vulnerabilidades prcticamente todos los d a as. El script nessus-update-plugins buscar los nuevos scripts que detectan nuevas vulnerabilia dades. Este script har uso de las utilidades lynx, tar y gzip. a nessus-update-plugins [-v] [-r <pluginname>] [-h] [-i <pluginname>] Para ms detalles, puede verse la entrada en el manual de sistema (man nessus-updatea plugins).
J.A. Bernal - F. Gordillo - H. Santander - P. Villegas

Thales-CICA 2005

Analizador de vulnerabilidades Nessus

Pgina 30 a

En caso de que la mquina donde est instalado nessusd est situada detrs de un proxy, ser a a e a a necesario crear el archivo .nessus-update-pluginsrc en el directorio $HOME del usuario que est e ejectando el script. Incluiremos las siguientes l neas en este chero:
p r o x y u s e r= username proxy passwd= password proxy= a d d r e s s o f y o u r p r o x y

Un ejemplo de un chero ser a:


p r o x y u s e r=hugo proxy passwd=t o p s e c r 3 t proxy=proxy . miordenador . e s : 3 1 2 8

2.2.3.

Arrancando Nessus

Una vez que tenemos Nessus correctamente instalado y congurado y con los ultimos plugins instalados, podemos arrancar el demonio. La forma ms simple es arrancar con el usuario root el a demonio nessusd

nessusd -D

A continuacin, ser necesario utilizar un cliente, instalado en el mismo servidor o en otro ordeo a nador, para conectarnos y comenzar los escaneos. Existe tambin la posibilidad de prescindir de e la interfaz grca y utilizar Nessus desde la l a nea de comandos. El cliente grco se arranca: a

nessus

Una vez arrancado, es necesario conectarnos al servidor donde se encuentra arrancado nessusd. Es necesario proporcionar la direccin IP del servidor Nessus, as como el usuario y clave con el o que nos conectaremos.
Software libre y educacin: redes, gestores de contenidos y seguridad o

Thales-CICA 2005

Analizador de vulnerabilidades Nessus

Pgina 31 a

Figura 2.1: Acceso de usuario en Nessus

El cliente se conecta al servidor a travs de una conexin SSL, cargando la lista de los plugins e o que tiene instalados. La primera vez que lo ejecutemos, el certicado pedir una conrmacin del a o mismo antes de ser descargado. Esto asegura que en el futuro las comunicaciones se realizarn con a este servidor.

2.2.4.

Usando Nessus

Como ya hemos indicado, uno de los aspectos que destacan a Nessus es la cantidad de plugins. Dependiendo de los plugins que seleccionemos, obtendremos un informe ms o menos util para a nuestros propsitos. Hay que tener en cuenta que algunos plugins pueden darnos informacin de o o vulnerabilidades existentes cuando esto no es as provocando lo que se denomina falsos positivos. , No debemos sorprendernos si realizamos el escaneo de nuestro sistema Linux y detectamos algn u tipo de vulnerabilidad relacionada con Windows. Este tipo de problemas no hay que interpretarlos como inestabilidad o falta de conanza sobre Nessus. Por el contrario, el origen es la mala utilizacin de algunos de los plugins (uso de plugins que buscan vulnerabilidades de Windows en sistemas o Unix). Estos comportamientos errneos tambin se producen en el software comercial destinado a o e este propsito. o
J.A. Bernal - F. Gordillo - H. Santander - P. Villegas

Thales-CICA 2005

Analizador de vulnerabilidades Nessus

Pgina 32 a

Figura 2.2: Plugins de Nessus

Los plugins estn categorizados de varias formas, lo que en ocasiones puede llevarnos a cona fusin. Uno de los mtodos de agrupacin de los plugins, es por categor Ms importante an o e o a. a u es la distincin de los plugins basndonos en su peligrosidad o habilidad para provocar ataques o a DoS. Estos plugins pueden llegar a bloquear un sistema que sea vulnerable al ataque, por lo que es recomendable utilizarlos con cuidado. No causarn prdidas irreparables, pero ser necesario a e a reiniciar el sistema13 . Existe un botn donde podemos seleccionar todos los plugins o unicameno te aquellos que no sean peligrosos. Otro mtodo de categorizacin de los plugins es mediante e o familias:Windows, FTP SNMP, SMB, Cisco, etc. Otra de las partes cr ticas del proceso de escaneo, es el escaneo de puertos. Es un proceso en el que se identican los puertos activos para una direccin IP. Cada puerto est unido a una o a aplicacin espec o ca. Nessus tiene la inteligencia suciente para realizar un chequeo unicamente si el programa para ese chequeo est disponible. Por ejemplo, slo se ejecutarn los plugins para a o a servidores web si se encuentra uno. Debido a que muchos servicios no corren en los puertos por defecto, Nessus tiene un plugin que se encarga de reconocer qu aplicaciones estn asociadas a e a cada puerto que se encuentra a la escucha. Existen ms pestaas que nos permiten congurar otras opciones de Nessus, pero no entraa n remos en ellas. Lo que pretendemos es tener una primera toma de contacto con esta utilidad, lo suciente para permitirnos lanzar escaneos contra servidores para identicar sus vulnerabilidades. As pasaremos directamente a la pestaa Target Selection, donde debemos identicar nuestros , n objetivos. Pueden especicarse mediante una direccin IP, como una subred o como un rango de o direcciones IP. Una vez congurado este ultimo punto, podemos comenzar la ejecucin del escaneo. o

13 Estn a

identicados en la pestaa de plugins por una seal de peligro. n n

Software libre y educacin: redes, gestores de contenidos y seguridad o

Thales-CICA 2005 Crackeadores de password: John the Ripper

Pgina 33 a

Figura 2.3: Seleccin de objetivos o

Como ejemplo, utilizaremos el mismo servidor donde hemos instalado el servidor y cliente de Nessus. Figura 2.4: Informe de vulnerabilidades presentado por Nessus

El informe obtenido puede guardarse en varios formatos (entre los que se encuentra HTML), para su posterior estudio.

2.3.

Crackeadores de password: John the Ripper

Uno de los crackeadores de claves ms famosos es John the Riper. Est disponible para Unix a a (hasta 11 tipos independientes de la arquitectura), DOS, Win32, BeOS y OpenVMS. A pesar de que muchas veces su uso tiene oscuras intenciones, se cre como una herramienta capaz de detectar o las claves dbiles de un sistema Unix. e
J.A. Bernal - F. Gordillo - H. Santander - P. Villegas

Thales-CICA 2005 Crackeadores de password: John the Ripper

Pgina 34 a

En los comienzos de Unix, incluso en la actualidad, los administradores de sistemas no le daban importancia a que cualquier usuario del sistema pueda leer el chero /etc/passwd. Conaban ciegamente en la funcin crypt() que se encargaba de almacenar en este chero la clave encriptada. o Incluso el sistema shadow no libra a un sistema de obtener un chero /etc/passwd con las claves encriptadas, basta con conseguir /etc/passwd y /etc/shadow y migrarlos a otro sistema donde se tenga acceso como root. A continuacin se ver un ejemplo que representa esta problemtica. o a a

2.3.1.

Instalacion

Se va a construir la herramienta John the Ripper a partir de los fuentes14 , obteniendo de esta manera un binario para el sistema. Lo primero es descargar la ultima versin de http: o //www.openwall.com/john/ y descomprimirlo en el directorio que se desea. Una vez desempaquetado se procede a compilar el cdigo fuente: o
cd s c r make

Con esto se obtiene una lista de los sistemas soportados. Puede elegirse uno de los que aparece en la lista o simplemente Generic: make SISTEMA o make generic En el caso que la compilacin se lleve a cabo con xito, el binario de la herramienta es run/john. o e Es recomendable que el directorio donde se encuentre instalada esta herramienta tenga un acceso restringido para evitar que cualquier usuario puede hacer un uso fraudulento de sus funcionalidades.

2.3.2.

Crackeando el chero /etc/passwd

La instalacin de esta herramienta es extremadamente fcil tal como acaba de verse, sin emo a bargo, su potencia es muy grande, siendo una herramienta de uso obligado para todos los administradores de sistemas. Con un uso regular de John the Riper se obtiene la certeza de una buena eleccin de las claves de nuestros usuarios. o Una de las principales funcionalidades es el descubrimiento de las claves mediante ataques de diccionario. Este tipo de ataque consiste en utilizar una base de datos de posibles claves cuyo origen es un diccionario. La Real Academia de la Lengua Espaola proporciona una gran base de n datos con esta informacin. o Para el ejemplo que nos ocupa, en caso de tener soporte shadow para las claves ser necesario a ejecutar la utilidad pwunconv, que repone las claves encriptadas al chero /etc/passwd. Se realizar una copia de este chero para trabajar con l y a continuacin se ejecuta pwconv para volver a e o a la situacin inicial y devolver al sistema el soporte shadow. Para realizar esto tambin puede o e utilizarse la utilidad unshadow que se incluye con John the Riper. Como primera opcin se utilizar el mtodo single, que busca posibles claves en el propio chero o a e (muchas personas utilizan como clave su nombre o apellidos):
r o o t @ g u a d a l i n e x : / u s r / l o c a l / s r c / john 1.6# . / run / john s i n g l e passwd . john Loaded 1 password ( Standard DES [ 2 4 / 3 2 4K] ) g u e s s e s : 0 time : 0 : 0 0 : 0 0 : 0 0 100 % c / s : 738 t r y i n g : hugo1934 hugo1969
14 Se

puede optar por: #apt-get install john wenglish wspanish

Software libre y educacin: redes, gestores de contenidos y seguridad o

Thales-CICA 2005

Deteccin de intrusiones o

Pgina 35 a

En este caso no ha detectado ninguna clave al ser el chero elegido el de un sistema con pocos usuarios. El siguiente paso es realizar la bsqueda de claves comparando contra un listado (lo mejor es u tener un diccionario de la lengua de origen de los usuarios del sistema) de posibles claves. Ser a el modo wordlist. Para indicar el chero que se utilizar para la comparacin se utiliza la opcin a o o -wordfile. Para utilizar modicaciones del listado proporcionado se utiliza la opcin -rules. Las reglas o que se utilizan para generar estas variaciones se encuentra en el chero de conguracin john.ini, o recomendando su visualizacin para comprender las variaciones que se van a realizar. o A continuacin se ve la ejecucin de la utilidad indicando que la lista de posibles claves est o o a en pasword.lst y utilizando reglas para realizar variaciones de las mismas, estando el chero de claves en password.john.
r o o t @ g u a d a l i n e x : / u s r / l o c a l / s r c / john 1.6# . / run / john w o r d f i l e : run / password . l s t r u l e s passwd . j ohn Loaded 1 password ( Standard DES [ 2 4 / 3 2 4K] ) g u e s s e s : 0 time : 0 : 0 0 : 0 0 : 0 1 100 % c / s : 101207 t r y i n g : R a p t o r i n Z e n i t h i n r o o t @ g u a d a l i n e x : / u s r / l o c a l / s r c / john 1.6# . / run / john show passwd . john r o o t : a d m i n i s t : 0 : 0 : r o o t : / r o o t : / b i n / bash 1 password c r a c k e d , 2 l e f t

En este caso hemos encontrado la clave de root (no har falta ninguna ms para poner en a a apuros al administrador del sistema). Es recomendable editar el chero password.lst para que contenga posibles claves en espaol, n ya que los valores que contiene se reeren a claves en ingls. Como ya se indic lo mejor ser e o a conseguir un listado de las palabras de un diccionario, seguro que algn usuario ha utilizado como u contrasea algo como ornitorrinco pensando que a nadie se le va a ocurrir probar este clave (a n John si se le ocurrir). a Otra forma de realizar de generar claves para chequear es utilizando combinaciones de letras y nmero. Este ser el modo incremental de vericacin de John the Riper. Las opciones disponibles u a o son: alpha digits all Genera palabras con letras solamente, es decir 26 letras Genera palabras con numeros solamente, desde el 0 hasta el 9 Genera palabras con letras, numeros y caracteres especiales, en total son 90 caracteres

Cuantas ms combinaciones ms tiempo se tardar en chequear todo el chero de claves. Sin a a a embargo, hay que tener en cuenta que un posible intruso suele ser un individuo al cual le sobran recursos y utiliza su tiempo libre para buscar vulnerabilidades. Son muchas las opciones que presenta John the Riper y se recomienda la lectura de http://www.decowar.com/manual_john_the_ripper.htm donde se explica de forma detallada cmo crear nuevas reglas. Para un uso tico de esta o e herramienta bastar con las opciones que se han detallado anteriormente, la referencia anterior a ser para usos ms oscuros15 . a a

2.4.
2.4.1.

Deteccin de intrusiones o
Razones para la deteccin de intrusiones o

Hasta ahora hemos cubierto algunos aspectos sobre la seguridad del sistema en el mbito prea ventivo. Cuando un atacante decide probar su suerte contra nuestro sistema, lo primero que hace
15 Como se est viendo todas las herramientas de deteccin de vulnerabilidades tienen su reverso tenebroso, a o dependiendo de si la usa Obi-Wan Kenobi o Darth Vader el objetivo que se busca es uno u otro.

J.A. Bernal - F. Gordillo - H. Santander - P. Villegas

Thales-CICA 2005

Deteccin de intrusiones o

Pgina 36 a

es recopilar cuanta informacin le sea posible acerca del mismo. Toda informacin que consiga o o averiguar puede serle util: sistema operativo, versin, servicios que ofrecemos, versin de los pro o o gramas que tenemos... Cualquiera de estos datos puede ser suciente para que su ataque tenga xito. Basta con que el atacante vea, por ejemplo, que tenemos una versin vieja de un programa, e o aunque no tenga ste ninguna vulnerabilidad importante, para que se d cuenta de que no somos e e administradores muy cuidadosos y probablemente tengamos otros servicios descuidados. Esto nos exige no slo que cuidemos las versiones y posibles parches de seguridad a aplicar en o nuestro sistema, sino tambin el vigilar los intentos de acceso. e La tcnica ms utilizada por los potenciales intrusos de nuestro sistema para obtener informae a cin acerca de nosotros, es el barrido de puertos. Esta tcnica se basa en intentar conectarse a o e cada uno de los puertos que tiene abiertos nuestro servidor, anotando qu es lo que tiene activo e y analizando dicha informacin. Una de las herramientas ms comunes para realizar barridos de o a puertos es nmap. No entraremos en el uso de nmap, ya que se trat en una entrega anterior. Recordemos que o tras una ejecucin de esta herramienta, obtendremos un listado de los puertos abiertos, pudiendo o el atacante revisar si encuentra alguna versin vieja o vulnerable de software. o
[ r o o t @ f e d o r a r o o t ]# nmap sT f e d o r a S t a r t i n g nmap 3 . 4 8 ( h t t p : / /www. i n s e c u r e . o r g /nmap/ ) a t 20040518 1 3 : 3 8 CEST I n t e r e s t i n g p o r t s on l o c a l h o s t ( 1 7 2 . 2 6 . 0 . 4 0 ) : ( The 1648 p o r t s scanned but not shown below a r e i n s t a t e : c l o s e d ) PORT STATE SERVICE 22/ t c p open s s h 23/ t c p open t e l n e t 25/ t c p open smtp 80/ t c p open h t t p 110/ t c p open pop3 111/ t c p open r p c b i n d 443/ t c p open h t t p s 514/ t c p open s h e l l 10000/ t c p open s n e t s e n s o r mgmt 10082/ t c p open amandaidx 10083/ t c p open amidxtape 32770/ t c p open sometimesr p c 3 Nmap run completed 1 IP a d d r e s s ( 1 h o s t up ) scanned i n 3 . 6 6 0 s e c o n d s

Ahora podemos intentar averiguar ms informacin sobre algunos de los servicios: a o


[ r o o t @ f e d o r a r o o t ]# t e l n e t 1 7 2 . 2 6 . 0 . 4 0 Trying 1 7 2 . 2 6 . 0 . 4 0 . . . Connected t o 1 7 2 . 2 6 . 0 . 4 0 . Escape c h a r a c t e r i s ] . Fedora Core r e l e a s e 1 ( Yarrow ) K e r n e l 2 . 4 . 2 2 1 . 2 1 1 5 . n p t l on an i 6 8 6 login : [ r o o t @ f e d o r a r o o t ]# t e l n e t 1 7 2 . 2 6 . 0 . 4 0 22 Trying 1 7 2 . 2 6 . 0 . 4 0 . . . Connected t o 1 7 2 . 2 6 . 0 . 4 0 . Escape c h a r a c t e r i s ] . SSH1.99OpenSSH 3 . 6 . 1 p2 [ r o o t @ f e d o r a r o o t ]# t e l n e t 1 7 2 . 2 6 . 0 . 4 0 25 Trying 1 7 2 . 2 6 . 0 . 4 0 . . . Connected t o 1 7 2 . 2 6 . 0 . 4 0 . Escape c h a r a c t e r i s ] . 220 f e d o r a . e l p i s o . e s ESMTP Sendmail 8 . 1 2 . 1 0 / 8 . 1 2 . 1 0 ; Tue , 18 May 2004 1 3 : 5 0 : 1 1 +0200 Software libre y educacin: redes, gestores de contenidos y seguridad o

Thales-CICA 2005

Deteccin de intrusiones o

Pgina 37 a

A partir de la informacin obtenida con nmap, hemos logrado averiguar los siguientes datos o acerca de las versiones del software instalado: SSH-1.99-OpenSSH 3.6.1p2, 8.12.10 de sendmail y kernel 2.4.22-1.2115.nptl. Bastar con buscar informacin referente a vulnerabilidades sobre este software para explotar a o agujeros que nos permitir acceso como root al servidor. an Cabe mencionar que nmap no es una herramienta utilizada exclusivamente por atacantes. Puede utilizarse para barrer nuestras mquinas buscando servicios que hayamos dejado abiertos a por error.

2.4.2.

Intentos de intrusin en el sistema (Portsentry) o

Vemos claramente la gran cantidad de informacin que en menos de un minuto puede ser o expuesta por nuestro mal administrado servidor. Incluso aunque el servidor se revise periodicamente, por qu permitir que un desconocido sepa qu versiones de software tenemos instaladas? e e Podr guardar estos datos a la espera de la aparicin de nuevas vulnerabilidades, adelantndose a o a a nuestras actuaciones. Como acabamos de ver, es fundamental la deteccin de estos barridos. Detectar un barrido o de puertos es muy fcil; se producirn muchas conexiones casi simultneas a una gran cantidad a a a de puertos originadas desde la misma mquina. Aunque los programas que se dedican a realizar a estos barridos se han vuelto muy sosticados y cada vez es ms dif detectarlos por las diferentes a cil estrategias que emplean16 , el principio bsico es el mismo. Hay un excelente programa dedicado a precisamente a encontrar este patrn y tomar la accin que le indique el administrador del sistema: o o Portsentry, de Psionic. Portsentry es un programa muy sencillo. Su misin es escuchar a los puertos que le ino diquemos que deben permanecer siempre inactivos. En caso de llegar una conexin a uno de o ellos, puede marcarlo en la bitcora del sistema, bloquear toda la comunicacin con la direccin a o o identicada como agresora, o correr un comando externo. Podemos bajar la ultima versin de o http://sourceforge.net/projects/sentrytools/. La compilacin17 de Portsentry es muy sencilla. Lo primero que haremos es extraer los cheros o que componen el paquete:
[ r o o t @ f e d o r a s r c ]# t a r z x v f p o r t s e n t r y 1 . 2 . t a r . gz portsentry beta / portsentry beta / portsentry . c portsentry beta / portsentry . h portsentry beta / portsentry io . c portsentry beta / portsentry io . h portsentry beta / portsentry util . c portsentry beta / portsentry util . h portsentry beta / portsentry config . h portsentry beta / portsentry tcpip . h portsentry beta / portsentry . ignore portsentry beta / portsentry . conf portsentry beta / Makefile p o r t s e n t r y b e t a /README.COMPAT
16 Nmap sabe hacer desde una sencilla conexin TCP hasta un barrido silencioso con SYN, FIN, Xmas, Null, o UDP, paquetes fragmentados, barridos paralelos de diferentes tipos. 17 Si deseamos instalar el paquete usando el comando apt-get, escribiremos

#apt-get install portsentry

J.A. Bernal - F. Gordillo - H. Santander - P. Villegas

Thales-CICA 2005
portsentry portsentry portsentry portsentry portsentry portsentry portsentry

Deteccin de intrusiones o

Pgina 38 a

b e t a /README. i n s t a l l b e t a /README. methods b e t a /README. s t e a l t h b e t a /CHANGES b e t a /CREDITS b e t a /LICENSE b e t a / i g n o r e . csh

Es conveniete leer los distintos cheros README que se han obtenido del paquete, para conocer con ms detalle la operacin del programa y los pasos a seguir. Una vez descomprimido el paquete, a o es necesario compilar. Esto se hace con un simple make <sistema>, sustituyendo <sistema> por nuestro tipo de sistema operativo. En nuestro caso es un sistema Linux:
[ r o o t @ f e d o r a p o r t s e n t r y b e t a ]# make l i n u x SYSTYPE=l i n u x Making c c O Wall DLINUX DSUPPORT STEALTH o . / p o r t s e n t r y . / p o r t s e n t r y . c \ ./ portsentry io . c ./ portsentry util . c

Por ultimo, pasamos a instalar portsentry:


[ r o o t @ f e d o r a p o r t s e n t r y b e t a ]# make i n s t a l l Creating p s i o n i c d i r e c t o r y / usr / l o c a l / p s i o n i c Setting directory permissions Creating portsentry d i r e c t o r y / usr / l o c a l / p s i o n i c / portsentry Setting directory permissions chmod 700 / u s r / l o c a l / p s i o n i c / p o r t s e n t r y Copying f i l e s cp . / p o r t s e n t r y . c o n f / u s r / l o c a l / p s i o n i c / p o r t s e n t r y cp . / p o r t s e n t r y . i g n o r e / u s r / l o c a l / p s i o n i c / p o r t s e n t r y cp . / p o r t s e n t r y / u s r / l o c a l / p s i o n i c / p o r t s e n t r y Setting permissions chmod 600 / u s r / l o c a l / p s i o n i c / p o r t s e n t r y / p o r t s e n t r y . i g n o r e chmod 600 / u s r / l o c a l / p s i o n i c / p o r t s e n t r y / p o r t s e n t r y . c o n f chmod 700 / u s r / l o c a l / p s i o n i c / p o r t s e n t r y / p o r t s e n t r y E d i t / u s r / l o c a l / p s i o n i c / p o r t s e n t r y / p o r t s e n t r y . c o n f and change your s e t t i n g s i f you haven t a l r e a d y . ( r o u t e , e t c ) WARNING: This v e r s i o n and above now u s e a new d i r e c t o r y s t r u c t u r e f o r s t o r i n g t h e program and c o n f i g f i l e s ( / u s r / l o c a l / p s i o n i c / p o r t s e n t r y ) . P l e a s e make s u r e you d e l e t e t h e o l d f i l e s when the t e s t i n g o f t h i s i n s t a l l i s complete .

Con esto, Portsentry quedar instalado en el directorio /usr/local/psionic/portsentry listo a para ser congurado. Conguracin de portsentry o La conguracin de Portsentry se hace en el archivo18 /usr/local/psionic/portsentry/o portsentry.conf. A primera vista el archivo parece muy complicado, con muchas opciones. Sin embargo, congurarlo es ms fcil de lo que parece. a a Portsentry tiene varios modos de operacin. El ms comn y sencillo es el modo clsico, y el o a u a ms potente (aunque no disponible en todos los sistemas) es el modo avanzado. a Modo clsico. En este modo, le especicamos a Portsentry que escuche determinados puertos a TCP y UDP, especicados con las opciones UDP PORTS y TCP PORTS por los cuales
18 En

/etc/portsentry/portsentry.conf si hemos usado el .deb

Software libre y educacin: redes, gestores de contenidos y seguridad o

Thales-CICA 2005

Deteccin de intrusiones o

Pgina 39 a

no estamos dando ningn servicio y son poco solicitados. Por ejemplo, puede que nuestro u servidor no est dando servicio de red SMB (Samba, red tipo Microsoft). Sin embargo, es e comn que las computadoras windows manden mensajes broadcast buscando a un sistema u en espec co, con lo que podr amos recibir una gran cantidad de alertas en falso. Vienen varios puertos predenidos en el archivo de conguracin, y son buenos como recomendacin o o inicial. Modo stealth. En este modo Portsentry abre sockets crudos (raw), lo que le permite detectar una mayor cantidad de barridos y ataques tales como ataques de conexin normal, SYN/halfo open, FIN, NULL y XMAS. Este modo es un tanto experimental, por lo cual no funcionar a en todos los sistemas. Modo avanzado. Este modo es tambin considerado, hasta cierto punto, perteneciente a la cae tegor stealth. En este modo, Portsentry no abre ningn puerto, sino que le pide al kernel a u que le notique si llega alguna peticin a algn puerto menor al especicado en las opciones o u ADVANCED PORTS TCP y ADVANCED PORTS UDP. Ser necesario excluir algunos a puertos que puedan generar falsas alarmas, como el ejemplo que comentbamos sobre SMB. a Para excluir estos puertos tenemos las opciones ADVANCED EXCLUDE TCP y ADVANCED EXCLUDE UDP. Como ventaja adicional del modo avanzado, est que al ejecutar netstat -na no nos reportar a a los puertos que est escuchando, dado que no estn realmente abiertos. Esto puede simplicar a a un tanto nuestro trabajo como administradores. El modo avanzado es mucho ms sensible que el a modo clsico, dado que escucha a muchos ms puertos, por lo que puede efectivamente causar una a a negacin de servicio si no es congurado con cuidado. o Tras haber especicado los puertos que deseamos escuchar, hay algunos parmetros adicionales a que debemos especicar: IGNORE FILE es el nombre del archivo que incluye la lista de direcciones en las que conamos, y por tanto no queremos bloquear si intentan acceder a un puerto bloqueado. HISTORY FILE contiene la lista de direcciones que Portsentry ha detectado intentando acceder a puertos monitorizados. BLOCKED FILE es equivalente a HISTORY FILE, pero relevante unicamente a la sesin ac o tual de Portsentry. BLOCK TCP especica qu hacer cuando un barrido de puertos TCP es detectado. Tiene tres e posibles valores: 0 1 2 slo registrar el intento, o bloquear la direccin que intent averiguar acerca de nosotros, y o o correr un comando externo especicado 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 comunicacin con una direco cin, normalmente mediante reglas de ltrado de paquetes. o KILL HOSTS DENY tiene la l nea que deber ser agregada a /etc/hosts.deny para que a la direccin atacante sea bloqueada por TCPwrappers. Es conveniente activarlo, pues a o diferencia de las reglas manejadas por KILL ROUTE este archivo permanecer aunque el a sistema se rearranque.
J.A. Bernal - F. Gordillo - H. Santander - P. Villegas

Thales-CICA 2005

Deteccin de intrusiones o

Pgina 40 a

KILL RUN CMD puede guardar un comando para ser ejecutado en caso de ser detectada una intrusin. No recomendamos utilizar esta opcin, ya que puede fcilmente llevar a una o o a negacin de servicio. Hay administradores que sugieren utilizar esta opcin para lanzar un o o contraataque contra el atacante. La mejor defensa es tener nuestro sistema seguro, no atacar al enemigo. Al atacar al enemigo, lo ms probable es que centre ms su atencin en nosotros19 a a o y, con el paso del tiempo, logre penetrar nuestra seguridad. Es mucho mejor aparentar que no ocurri nada o simplemente tirar la conexin que atacar de vuelta. o o SCAN TRIGGER indica con qu retardo se marcar un intento de conexin fallido como un e a o ataque. Probablemente, si a la primera bloqueamos toda comunicacin con el presunto atao cante, dejaremos fuera a muchos usuarios leg timos que por casualidad hicieron la conexin o equivocada. Sin embargo, si ponemos un nmero muy alto nos exponemos a dar ms inforu a macin de la que hubiramos querido. Un valor de 1 2 es recomendado, aunque los muy o e o paranoicos querrn mantenerlo en 0. a Arranque automtico de portsentry a La manera ms genrica20 de iniciar portsentry es incluirlo en el ultimo archivo que se ejecuta a e al iniciar el sistema /etc/rc.local. Basta con agregar al nal de ste las l e neas necesarias para levantar a portsentry con la conguracin que deseemos. Las opciones de arranque de portsentry o son: -tcp Iniciar en modo clsico, escuchar TCP. a -udp Iniciar en modo clsico, escuchar UDP. a -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 Normalmente levantaremos dos copias del programa en el mismo modo general, una escuchando UDP y la otra TCP. Respuesta de portsentry ante un ataque El simple hecho de que Portsentry evite ciertos ataques al sistema es de por s muy bueno y deseable. Sin embargo, para que sto nos sea realmente util, tenemos que analizar nuestras e bitcoras y llevar registro de quin y cundo intent barrer nuestros puertos. Adems, slo leyendo a e a o a o las bitcoras sabremos si estamos limitando de ms, bloqueando el acceso de mquinas leg a a a timas. Afortunadamente, Portsentry utiliza syslog para informar de toda la informacin que el ado ministrador debe saber, por lo cual todo lo que necesitamos estar t a picamente en el archivo /var/log/messages, o donde se lo hayamos especicado en el syslogd.conf. La deteccin de un o barrido hecho por nmap en un sistema Linux se ve as :
[ r o o t @ f e d o r a r o o t ]# nmap sT f e d o r a May 18 1 4 : 1 7 : 4 4 f e d o r a p o r t s e n t r y [ 2 6 4 2 ] : a t t a c k a l e r t : Connect from h o s t : l o c a l h o s t / 1 7 2 . 2 6 . 0 . 4 0 t o TCP p o r t : 79 May 18 1 4 : 1 7 : 4 4 f e d o r a p o r t s e n t r y [ 2 6 4 2 ] : a t t a c k a l e r t : Host 1 7 2 . 2 6 . 0 . 4 0 has been b l o c k e d v i a wrappers with s t r i n g : ALL : 1 7 2 . 2 6 . 0 . 4 0 May 18 1 4 : 1 7 : 4 4 f e d o r a x i n e t d [ 2 6 4 8 ] : l i b w r a p r e f u s e d c o n n e c t i o n t o s h e l l ( l i b w r a p=i n . r s h d ) from 1 7 2 . 2 6 . 0 . 4 0
19 Puede 20 Si

considerarlo un reto al enfrentarse a un administrador de un gran nivel. lo hemos instalado a partir de las fuentes.

Software libre y educacin: redes, gestores de contenidos y seguridad o

Thales-CICA 2005

Deteccin de intrusiones o

Pgina 41 a

May 18 1 4 : 1 7 : 4 4 f e d o r a p o r t s e n t r y [ 2 6 4 2 ] : a t t a c k a l e r t : Connect from h o s t : l o c a l h o s t / 1 7 2 . 2 6 . 0 . 4 0 t o TCP p o r t : 635 May 18 1 4 : 1 7 : 4 4 f e d o r a p o r t s e n t r y [ 2 6 4 2 ] : a t t a c k a l e r t : Host : 1 7 2 . 2 6 . 0 . 4 0 i s already blocked . Ignoring May 18 1 4 : 1 7 : 4 4 f e d o r a p o r t s e n t r y [ 2 6 4 2 ] : a t t a c k a l e r t : Connect from h o s t : l o c a l h o s t / 1 7 2 . 2 6 . 0 . 4 0 t o TCP p o r t : 1524 May 18 1 4 : 1 7 : 4 4 f e d o r a p o r t s e n t r y [ 2 6 4 2 ] : a t t a c k a l e r t : Host : 1 7 2 . 2 6 . 0 . 4 0 i s already blocked . Ignoring May 18 1 4 : 1 7 : 4 4 f e d o r a x i n e t d [ 2 6 5 0 ] : l i b w r a p r e f u s e d c o n n e c t i o n t o amidxtape ( l i b w r a p=amidxtaped ) from 1 7 2 . 2 6 . 0 . 4 0 May 18 1 4 : 1 7 : 4 6 f e d o r a p o r t s e n t r y [ 2 6 4 2 ] : a t t a c k a l e r t : Connect from h o s t : l o c a l h o s t / 1 7 2 . 2 6 . 0 . 4 0 t o TCP p o r t : 119 May 18 1 4 : 1 7 : 4 6 f e d o r a x i n e t d [ 2 6 5 2 ] : l i b w r a p r e f u s e d c o n n e c t i o n t o amandaidx ( l i b w r a p=amindexd ) from 1 7 2 . 2 6 . 0 . 4 0 May 18 1 4 : 1 7 : 4 6 f e d o r a p o r t s e n t r y [ 2 6 4 2 ] : a t t a c k a l e r t : Host : 1 7 2 . 2 6 . 0 . 4 0 i s already blocked . Ignoring May 18 1 4 : 1 7 : 4 8 f e d o r a x i n e t d [ 2 6 5 4 ] : warning : can t g e t c l i e n t a d d r e s s : Connection r e s e t by p e e r May 18 1 4 : 1 7 : 4 8 f e d o r a p o r t s e n t r y [ 2 6 4 2 ] : a t t a c k a l e r t : Connect from h o s t : l o c a l h o s t / 1 7 2 . 2 6 . 0 . 4 0 t o TCP p o r t : 1 May 18 1 4 : 1 7 : 4 8 f e d o r a x i n e t d [ 2 6 5 5 ] : warning : can t g e t c l i e n t a d d r e s s : Connection r e s e t by p e e r May 18 1 4 : 1 7 : 4 8 f e d o r a p o r t s e n t r y [ 2 6 4 2 ] : a t t a c k a l e r t : Host : 1 7 2 . 2 6 . 0 . 4 0 i s already blocked . Ignoring May 18 1 4 : 1 7 : 4 8 f e d o r a p o r t s e n t r y [ 2 6 4 2 ] : a t t a c k a l e r t : Connect from h o s t : l o c a l h o s t / 1 7 2 . 2 6 . 0 . 4 0 t o TCP p o r t : 11 May 18 1 4 : 1 7 : 4 9 f e d o r a p o r t s e n t r y [ 2 6 4 2 ] : a t t a c k a l e r t : Host : 1 7 2 . 2 6 . 0 . 4 0 i s already blocked . Ignoring May 18 1 4 : 1 7 : 4 9 f e d o r a p o r t s e n t r y [ 2 6 4 2 ] : a t t a c k a l e r t : Connect from h o s t : l o c a l h o s t / 1 7 2 . 2 6 . 0 . 4 0 t o TCP p o r t : 15 May 18 1 4 : 1 7 : 4 9 f e d o r a p o r t s e n t r y [ 2 6 4 2 ] : a t t a c k a l e r t : Host : 1 7 2 . 2 6 . 0 . 4 0 i s already blocked . Ignoring May 18 1 4 : 1 7 : 4 9 f e d o r a p o r t s e n t r y [ 2 6 4 2 ] : a t t a c k a l e r t : Connect from h o s t : l o c a l h o s t / 1 7 2 . 2 6 . 0 . 4 0 t o TCP p o r t : 111 May 18 1 4 : 1 7 : 4 9 f e d o r a p o r t s e n t r y [ 2 6 4 2 ] : a t t a c k a l e r t : Host : 1 7 2 . 2 6 . 0 . 4 0 i s already blocked . Ignoring May 18 1 4 : 1 7 : 4 9 f e d o r a p o r t s e n t r y [ 2 6 4 2 ] : a t t a c k a l e r t : Connect from h o s t : l o c a l h o s t / 1 7 2 . 2 6 . 0 . 4 0 t o TCP p o r t : 143 May 18 1 4 : 1 7 : 4 9 f e d o r a p o r t s e n t r y [ 2 6 4 2 ] : a t t a c k a l e r t : Host : 1 7 2 . 2 6 . 0 . 4 0 i s already blocked . Ignoring May 18 1 4 : 1 7 : 4 9 f e d o r a p o r t s e n t r y [ 2 6 4 2 ] : a t t a c k a l e r t : Connect from h o s t : l o c a l h o s t / 1 7 2 . 2 6 . 0 . 4 0 t o TCP p o r t : 540 May 18 1 4 : 1 7 : 4 9 f e d o r a p o r t s e n t r y [ 2 6 4 2 ] : a t t a c k a l e r t : Host : 1 7 2 . 2 6 . 0 . 4 0 i s already blocked . Ignoring May 18 1 4 : 1 7 : 4 9 f e d o r a p o r t s e n t r y [ 2 6 4 2 ] : a t t a c k a l e r t : Connect from h o s t : l o c a l h o s t / 1 7 2 . 2 6 . 0 . 4 0 t o TCP p o r t : 1080 (...)

Esta ser la respuesta con el archivo de conguracin por defecto. Sin embargo, hemos visto a o que existen varias acciones a tomar dependiendo de lo que consideremos oportuno como respuesta. Estas acciones quedarn reejadas tambin en el chero de log. a e Cuando conguremos portsentry es muy comn que marquemos direcciones como atacantes u por error. Borrarlas de la lista de bloqueo es muy sencillo. Nuestro primer paso ser editar el a archivo /etc/hosts.deny y buscar la direccin que queremos eliminar. En caso de que hayamos o establecido algn tipo de ltrado de paquetes (por ejemplo con iptables) ser necesario permitir u a de nuevo la entrada de los paquetes con origen en la direccin que hemos vetado por error. o Las posibilidades de portsentry son tantas como nosotros conguremos, aunque debemos tener
J.A. Bernal - F. Gordillo - H. Santander - P. Villegas

Thales-CICA 2005

Deteccin de intrusiones o

Pgina 42 a

cuidado y anar bien la conguracin para evitar negar el acceso a direcciones por error. o

2.4.3.

Integridad del sistema (Tripwire)

! Existe un bug en la versin actual de Tripwire que provoca un error en la instalacin o o


sobre Fedora. An as hemos preferido dar informacin sobre esta herramienta a la espera u , o de obtener una versin de Tripwire que solucione este error. Puede encontrarse informao cin ms detallada en http://www.redhat.com/archives/fedora-list/2003-November/ o a msg05954.html. No existen sistemas perfectos e invulnerables a los ataques de usuarios maliciosos. Adems de las a posibles medidas preventivas que tomemos (cortafuegos, parches, pol ticas, ...) siempre cabe la posibilidad de que un intruso logre entrar en nuestro sistema. Normalmente los ataques que se producen, conllevan la modicacin parcial del sistema (archivos de conguracin, pginas web, o o a ...). Estas modicaciones tienen como objetivo dejar una marca o rma en el servidor como prueba de la violacin del sistema o posibles puertas traseras para accesos posteriores. o Tripwire asumir que los controles preventivos de seguridad han fallado y que nuestro sistema a ha sido alterado. El atacante intentar por todos los medios que el administrador no sepa los a cheros que han sido modicados. Es aqu donde interviene Tripwire, alertando al administrador de los cambios que se produzcan en el sistema. Tripwire realiza una monitorizacin de la integridad de los archivos que le indiquemos, deteco tando cualquier cambio en los cheros indicados. El cambio puede ser tanto de contenido como de permisos. Instalacin de Tripwire o Para bajar la ultima21 versin disponible de Tripwire accedemos a o http://www.tripwire.org/download/index.php y seleccionaremos para bajar el chero tripwire-2.3-47.bin.tar.gz. Una vez bajado en nuestro sistema:
# cd / u s r / l o c a l # t a r z x v f /home/ hugo / T r i p w i r e / t r i p w i r e 2.3 47. b i n . t a r . gz

Tripwire utiliza dos claves, que pueden ser palabras u oraciones, para almacenar su informacin o de forma encriptada. La denominada site key se emplea para encriptar los archivos de conguracin y las pol o ticas. La denominada local key se utiliza para encriptar la informacin referida o al estado de los cheros que se monitorizan. Para nalizar la instalacin de Tripwire es necesario o ejecutar el script install.sh, el cual crear las claves que acabamos de mencionar. a
[ r o o t @ f e d o r a t r i p w i r e 2.3]# . / i n s t a l l . sh I n s t a l l e r program f o r : T r i p w i r e (R) 2 . 3 Open S o u r c e f o r LINUX C o p y r i g h t (C) 1998 2000 T r i p w i r e (R) S e c u r i t y Systems , I n c . T r i p w i r e (R) i s a r e g i s t e r e d trademark o f t h e Purdue Re s e ar ch Foundation and i s l i c e n s e d e x c l u s i v e l y t o T r i p w i r e (R) S e c u r i t y Systems , I n c . LICENSE AGREEMENT f o r T r i p w i r e (R) 2 . 3 Open S o u r c e f o r LINUX P l e a s e r e a d t h e f o l l o w i n g l i c e n s e agreement . You must a c c e p t t h e agreement t o c o n t i n u e i n s t a l l i n g T r i p w i r e . P r e s s ENTER t o view t h e L i c e n s e Agreement . GNU GENERAL PUBLIC LICENSE V e r s i o n 2 , June 1991
21 U

optar por #apt-get install tripwire

Software libre y educacin: redes, gestores de contenidos y seguridad o

Thales-CICA 2005

Deteccin de intrusiones o

Pgina 43 a

C o p y r i g h t (C) 1 9 8 9 , 1991 Free S o f t w a r e Foundation , I n c . 59 Temple Place , S u i t e 3 3 0 , Boston , MA 02111 1307 USA Everyone i s p e r m i t t e d t o copy and d i s t r i b u t e ve r batim c o p i e s o f t h i s l i c e n s e document , but c h a n g i n g i t i s not a l l o w e d . Preamble The l i c e n s e s f o r most s o f t w a r e a r e d e s i g n e d t o t a k e away your freedom t o s h a r e and change i t . By c o n t r a s t , t h e GNU G e n e r a l P u b l i c (...) P l e a s e ty pe a c c e p t t o i n d i c a t e your a c c e p t a n c e o f t h i s l i c e n s e agreement . [ do not a c c e p t ] a c c e p t Using c o n f i g u r a t i o n f i l e i n s t a l l . c f g Checking f o r programs s p e c i f i e d i n i n s t a l l c o n f i g u r a t i o n f i l e . . . . / usr / l i b / sendmail e x i s t s . Continuing i n s t a l l a t i o n . / bin / vi e x i s t s . Continuing i n s t a l l a t i o n . Verifying existence of binaries . . . . / b i n / i 6 8 6 pcl i n u x r / s i g g e n found . / b i n / i 6 8 6 pcl i n u x r / t r i p w i r e found . / b i n / i 6 8 6 pcl i n u x r / t w p r i n t found . / b i n / i 6 8 6 pcl i n u x r /twadmin found This program w i l l copy T r i p w i r e f i l e s t o t h e f o l l o w i n g d i r e c t o r i e s : TWBIN: / u s r / s b i n T A WM N: / u s r /man TWPOLICY: / e t c / t r i p w i r e TWREPORT: / var / l i b / t r i p w i r e / r e p o r t TWDB: / var / l i b / t r i p w i r e TWSITEKEYDIR: / e t c / t r i p w i r e TWLOCALKEYDIR: / e t c / t r i p w i r e CLOBBER i s f a l s e . Continue with i n s t a l l a t i o n ? [ y/n ] (...) The T r i p w i r e s i t e and l o c a l p a s s p h r a s e s a r e used t o s i g n a v a r i e t y o f f i l e s , such a s t h e c o n f i g u r a t i o n , p o l i c y , and d a t a b a s e f i l e s . P a s s p h r a s e s s h o u l d be a t l e a s t 8 c h a r a c t e r s i n l e n g t h and c o n t a i n both l e t t e r s and numbers . See t h e T r i p w i r e manual f o r more i n f o r m a t i o n . C r e a t i n g key f i l e s . . . (When s e l e c t i n g a p a s s p h r a s e , keep i n mind t h a t good p a s s p h r a s e s t y p i c a l l y have upper and l o w e r c a s e l e t t e r s , d i g i t s and p u n c t u a t i o n marks , and a r e at l e a s t 8 c h a r a c t e r s in length . ) Enter t h e s i t e k e y f i l e p a s s p h r a s e : s i t e k e y Verify the s i t e k e y f i l e passphrase : s i t e k e y G e n e r a t i n g key ( t h i s may t a k e s e v e r a l minutes ) . . . G e n e r a t i n g key ( t h i s may t a k e s e v e r a l minutes ) . . . Key g e n e r a t i o n c o m p l e t e . (When s e l e c t i n g a p a s s p h r a s e , keep i n mind t h a t good p a s s p h r a s e s t y p i c a l l y have upper and l o w e r c a s e l e t t e r s , d i g i t s and p u n c t u a t i o n marks , and a r e at l e a s t 8 c h a r a c t e r s in length . ) Enter t h e l o c a l k e y f i l e p a s s p h r a s e : l o c a l k e y Verify the l o c a l k e y f i l e passphrase : l o c a l k e y G e n e r a t i n g key ( t h i s may t a k e s e v e r a l minutes ) . . . Key g e n e r a t i o n c o m p l e t e . Generating Tripwire c o n f i g u r a t i o n f i l e . . . Creating signed co nf ig u r a ti on f i l e . . .

J.A. Bernal - F. Gordillo - H. Santander - P. Villegas

Thales-CICA 2005

Deteccin de intrusiones o

Pgina 44 a

P l e a s e e n t e r your s i t e p a s s p h r a s e : Wrote c o n f i g u r a t i o n f i l e : / e t c / t r i p w i r e /tw . c f g A c l e a r t e x t v e r s i o n o f t h e T r i p w i r e c o n f i g u r a t i o n f i l e / etc / t r i p w i r e / twcfg . txt has been p r e s e r v e d f o r your i n s p e c t i o n . I t i s recommended t h a t you d e l e t e t h i s f i l e manually a f t e r you have examined i t . Customizing d e f a u l t p o l i c y f i l e . . . Creating signed policy f i l e . . . P l e a s e e n t e r your s i t e p a s s p h r a s e : Wrote p o l i c y f i l e : / e t c / t r i p w i r e /tw . p o l A c l e a r t e x t v e r s i o n o f t h e T r i p w i r e p o l i c y f i l e / e t c / t r i p w i r e / twpol . t x t has been p r e s e r v e d f o r your i n s p e c t i o n . This implements a minimal p o l i c y , i n t e n d e d o n l y t o t e s t e s s e n t i a l T r i p w i r e f u n c t i o n a l i t y . You s h o u l d e d i t t h e p o l i c y f i l e t o d e s c r i b e your system , and then u s e twadmin t o g e n e r a t e a new s i g n e d copy o f t h e T r i p w i r e p o l i c y . The i n s t a l l a t i o n s u c c e e d e d . P l e a s e r e f e r t o / u s r / doc / t r i p w i r e / R e l e a s e N o t e s f o r r e l e a s e i n f o r m a t i o n and t o t h e p r i n t e d u s e r documentation f o r f u r t h e r i n s t r u c t i o n s on u s i n g T r i p w i r e 2 . 3 Open S o u r c e f o r LINUX .

Durante la propia instalacin ha sido necesario utilizar site key para encriptar el chero con o las pol ticas que utilizar Tripwire durante su ejecucin. a o Conguracin de Tripwire o La conguracin de los archivos que se van a monitorizar se mantiene en el archivo de pol o ticas (policy le). Su manipulacin es algo tediosa debido a su extensin. A modo de ayuda, Tripwire o o proporciona un archivo de ejemplo que sirve de plantilla para denir nuestras pol ticas. Este archivo es /etc/tripwire/twpol.txt. Podemos empezar a trabajar sobre este archivo, aunque es recomendable hacer una copia sin modicar del mismo. Hay que hacer una consideracin sobre este archivo. Est creado con vistas a o a comprobar la integridad de todo el sistema, lo que implica que tardar varios minutos (dependiendo a de la potencia de nuestro equipo). Una vez tengamos claro el archivo de pol ticas que vamos a utilizar, ya sea el que viene como ejemplo o uno basado en modicaciones sobre el mismo, es necesario instalarlo. Tripwire utilizar a una versin compilada y encriptada de este archivo, que se almacenar en /etc/tripwire/tw.pol. o a Para generarlo utilizaremos la utilidad twadmin:
[ r o o t @ f e d o r a t r i p w i r e ]# twadmin m P / e t c / t r i p w i r e / twpol . t x t P l e a s e e n t e r your s i t e p a s s p h r a s e : Wrote p o l i c y f i l e : / e t c / t r i p w i r e /tw . p o l

Una vez congurado e instalado el archivo de pol ticas, Tripwire necesita recolectar la informacin actual de los archivos a los cuales comprobar su integridad. Dicha informacin se almacena o a o en una base de datos, que se genera mediante la utilidad tripwire:
[ r o o t @ f e d o r a t r i p w i r e ]# t r i p w i r e m i

En caso de que se generen errores, ser necesario corregirlos sobre el chero twpol.txt, siendo a necesario instalarlo de nuevo con twadmin. Una vez que tengamos Tripwire correctamente congurado con su base de datos, es el momento de vericar la integridad del sistema. Para ello ejecutaremos de nuevo la utilidad tripwire:
Software libre y educacin: redes, gestores de contenidos y seguridad o

Thales-CICA 2005

Deteccin de intrusiones o

Pgina 45 a

[ r o o t @ f e d o r a t r i p w i r e ]# t r i p w i r e m c

Utilizaremos la llamada a la utilidad tripwire de esta manera cada vez que deseemos saber el estado en que se encuentra nuestro sistema respecto a la integridad del mismo. Si por algn motivo, alguno de los archivos que estamos comprobando ha sido modicado, ser u a necesario reconstruir la base de datos de Tripwire. Previamente es necesario haber comprobado que la modicacin ha sido originada por un proceso controlado y no es consecuencia de una intrusin o o al sistema. Una vez comprobado que el archivo twpol.txt se adapta a los requerimientos de control de la integridad de nuestro sistema y que hemos alcanzado un estado estable del mismo, es recomendable programar la ejecucin de los chequeos de forma automtica. Para ello podemos hacer uso del cron o a con una entrada similar a la siguiente: /usr/sbin/tripwire -m c | mail root@localhost As la salida del chequeo ser enviada por correo a root. Esta funcionalidad de env por co, a o rreo de los informes puede conseguirse con la conguracin de Tripwire. La directiva emailo to=user@host.domain proporciona esta funcionalidad. Deber insertarse en la conguracin de a o cada grupo de archivos que vamos a comprobar. Cuando alguno de estos archivos se modique, Tripwire noticar al destinatario especicado en esta directiva, utilizando para ello Sendmail o a Postx.

J.A. Bernal - F. Gordillo - H. Santander - P. Villegas

Thales-CICA 2005

Deteccin de intrusiones o

Pgina 46 a

Software libre y educacin: redes, gestores de contenidos y seguridad o

Cap tulo 3

Anlisis Forense a
La exigencia de la seguridad es la parte ms atractiva de la administracin de sistemas. a o Hollywood no describe el drama de trasladar una red operativa de un sitio a otro, la instalacin del ultimo hardware, la comedia de las preguntas de los usuarios o la tragedia o de operaciones de restauracin fallidas. Sin embargo, la intriga de la seguridad en las o computadoras ha sido objeto de numerosas pel culas. (Administracin de Sistemas Linux , o M Carling y otros)

Una de las armaciones ms conocidas en seguridad es la que dice algo as como que el servidor a ms seguro es aqul que se encuentra desconectado de la red y guardado en una caja de seguridad. a e Este servidor es tambin el ms intil ya que nadie tiene acceso a los posibles servicios que ofrece. e a u De aqu se deduce que la seguridad 100 % no existe y siempre, a pesar de nuestro esfuerzo, es posible que un atacante tenga xito en sus intentos por acceder de forma clandestina a nuestro e sistema. El Anlisis Forense de Sistemas (Computer Forensics) es el proceso de extraccin, conservaa o cin, identicacin, documentacin, interpretacin y presentacin de las evidencias de un ataque o o o o o informtico. La v a ctima de un ataque informtico es un servidor y es preciso que se compruebe el a alcance de la intrusin. No basta con borrar los contenidos y reinstalar de nuevo. En la reinstalao cin haremos uso de las copias de seguridad existentes en lo referente a cheros de conguracin y o o puede que stos hayan sido modicados por el atacante. Es necesario averiguar cundo se realiz el e a o ataque, en qu consisti el mismo y cual fue la puerta de acceso al sistema. Sin un anlisis forense e o a de sistemas se caer en los mismos errores que provocaron el acceso al sistema. a La metodolog bsica de un anlisis forense consiste en: a a a 1. Adquirir evidencias sin alterar el sistema original. Un primer paso a realizar es aislar el sistema sospechoso, si es posible deteniendo los servicios proporcionados y desconectndolo a de la red. 2. Comprobar las evidencias recogidas. Cualquier evidencia que se encuentre debe ser comprobada mediante tcnicas de hashing. De esta forma se obtendr una huella con la que e a comparar los datos recogidos. 3. Analizar los datos sin modicarlos. Lo ideal es acceder a los discos del servidor desde otro sistema en modo de solo lectura, evitando la posible modicacin accidental de algn dato, o u y realizar una copia de los mismos. Los pasos para empezar la investigacin de un incidente son diferentes en cada caso. El investigador o debe tomar decisiones basndose en su experiencia y el sexto sentido para llegar al fondo del a asunto. No es necesario seguir pasos determinados, ni su orden es importante a veces. 47

Thales-CICA 2005

Recopilando evidencias

Pgina 48 a

3.1.

Recopilando evidencias

Ya se ha visto que el primer paso a la hora de realizar un anlisis del sistema comprometido es a aislar los datos. Es importante recopilar la informacin antes de apagar el sistema comprometido. o Una vez apagado el ordenador se borrar cualquier evidencia posible de la intrusin (procesos a o escuchando en determinados puertos o procesos realizando tareas en segundo plano). Hay que resaltar que no es factible el anlisis de un sistema comprometido utilizando las herraa mientas del mismo, stas podr estar infectadas, haber sido modicadas para borrar evidencias. e an Esto puede solucionarse si se dispone de un dispositivo de almacenamiento extraible (CDROM, disco USB, ...) con el kit de herramientas necesarias para recopilar los datos1 . Para obtener datos del sistema de archivos, una opcin es realizar una copia de los distintos o sistemas de archivos para su estudio en otro servidor seguro, en el caso que no sea posible apagar el sistema comprometido. Ser necesario disponer de almacenamiento adicional para el volcado de a estas imgenes. a Mediante el comando mount se obtiene un listado de los sistemas de archivos montados en el servidor y mediante fdisk el listado de las particiones existentes en cada unidad de disco, independientemente que estn montadas o no. e Con los datos proporcionados por mount y fdisk se puede utilizar el comando dd para crear una imagen del disco. Este comando realiza imgenes copiando bit a bit los sistemas de archivo. a Es recomendable crear una imagen por cada particin del sistema. o dd if=/dev/hda1 of=/tmp/hda1.img Una vez generadas las imgenes es conveniente garantizar la autenticidad de las mismas para a su posterior vericacin. El comando md5sum proporcionar una huella de las imgenes para su o a a posterior comprobacin. o Para enviar estos datos a otro servidor, en el cual se realizar la investigacin, puede utilizarse a o el comando netcat2 :
( h o s t remoto ) # nc l p 8888 > f i c h e r o ( h o s t comprometido ) # r o u t e cn | nc g u a d a l i n e x 8888

Con las l neas anteriores el host remoto tiene a netcat escuchando por el puerto 8888, redireccionando todo lo que reciba a fichero. Desde el host comprometido se env las salidas de los an comandos necesarios, mediante un pipe, conectando con el host remoto guadalinex por el puerto 8888. En el caso de querer enviar por la red la imagen del sistema de archivos obtenida con dd:
( h o s t remoto ) # nc l p 8888 > hda . dd ( h o s t comprometido ) # dd i f =/dev /hda | nc g u a d a l i n e x 8888

El acceso a las imgenes para analizar su contenido se realizar montando el dispositivo vira a tual loop existente en Linux. Este dispositivo representa una abstraccin que permite acceder a o imgenes de sistemas de archivos. a
mkdir /mnt/ hda1 mount t e x t 2 o l o o p r hda1 . img /tmp/ hda1

Una vez montado se accede al mismo al igual que otro sistema de archivos convencional. Es importante tambin obtener datos del estado de la memoria. El que Linux trate como a e un chero la memoria hace esta labor ms fcil. La memoria principal se encuentra alojada en a a /dev/men y la memoria de swap en la particin correspondiente. o Mediante comandos como strings o grep puede recorrerse el contenido de la memoria. strings /dev/mem | more
1 Ser a 2 Como

necesario compilar las herramientas necesarias de forma esttica. a curiosidad ver la pgina del manual de netcat (man nc) para ver cul es la denicin de esta herramienta. a a o

Software libre y educacin: redes, gestores de contenidos y seguridad o

Thales-CICA 2005

Una ayuda al forense: Sleuthkit

Pgina 49 a

Visualizando este chero pueden descubrirse las librer que hay cargadas en memoria. Al ser la as memoria un dispositivo volatil es imposible vericar, como se hizo con los sistemas de archivos, que los datos capturados se corresponden con los originales. Otro punto interesante es la red. Es necesario comprobar las conexiones de red existentes y los servicios que se encuentran levantados, as como los procesos que los soportan. El comando netstat nos ayudar en este aspecto, siendo posible obtener informacin sobre los procesos asociados con a o cada conexin espec o ca: netstat -pan | more Dentro del proceso de recopilacin de evidencias es muy importante llevar un completo registro o (incluyendo fecha y hora) de las evidencias que se vayan descubriendo y los pasos que se estn a siguiendo. Un mtodo muy sencillo de hacer esto es con el comando script, el cual ir almacenando e a en un chero todo lo que se teclee en la consola. script -a fichero Para nalizar la captura de datos ser necesario teclear exit. a

3.2.

Analizando datos

Hasta ahora se ha conseguido obtener una foto detallada del sistema en el estado en el que se sospecha est comprometido. Es necesario seguir investigando para obtener ms datos que ayuden a a a descubrir la forma en que se produjo la intrusin. o Se empezar comprobando el chero /etc/passwd. Se comprobar detenidamente en busca de a a usuarios con permisos de root (UID y GID con valor 0) que no debieran tenerlos. Debe buscarse tambin directorios home de usuarios en localizaciones no habituales (/tmp o / son muy habituales e en estos casos). Los cheros dejados por los intrusos como troyanos y similares tambin suelen localizarse en e el directorio /dev. Esto hace que sea otro punto en el que deba investigarse, comprobando los cheros de dispositivos que se hayan creado ms recientemente. a Los troyanos que normalmente deja un intruso tienen como objetivo ocultar informacin sobre o el sistema que haga sospechar al administrador que algo va mal, as como puertas traseras que permiten al intruso acceder al sistema cuando quiera.

3.3.

Una ayuda al forense: Sleuthkit

Existen tambin herramientas que nos permiten realizar este anlisis de una forma ms eciente. e a a La herramienta Sleuthkit junto con su interfaz web Autopsy (http://www.sleuthkit.org) es un buen ejemplo. Sleuthkit es una coleccin de herramientas de anlisis forense, complementarias a o a las herramientas que proporciona Linux. Permiten examinar el sistema de cheros sospechoso de una forma no intrusiva. Tambin permiten analizar el medio, soportando el anlisis de particiones e a DOS, BSD, Mac y Sun entre otros. Cuando se realiza un anlisis completo del sistema de cheros, es de gran ayuda la interfaz a grca a estas herramientas. El Autopsy Forensic Browser, conocido familiarmente como Autopsy, a es la interfaz grca a las herramientas de Sleuthkit, permitiendo la organizacin de la informacin a o o en casos, comprobando la integridad de las imgenes del sistema, bsquedas, etc. a u Como caracter sticas de los datos de entrada que analiza Sleuthkit cabe destacar: Sistemas de cheros raw e imgenes de discos. a Soporta sistema de cheros NTFS, FAT, FFS, EXT2FS y EXT3FS. Dentro de las bsquedas que permite: u
J.A. Bernal - F. Gordillo - H. Santander - P. Villegas

Thales-CICA 2005

Una ayuda al forense: Sleuthkit

Pgina 50 a

Nombres de cheros borrados. Muestra los contenidos de todos los atributos NTFS. Muestra sistemas de cheros y detalles de la estructura de meta-datos. Crea una l nea de tiempo de la actividad de los cheros, con posibilidades de importacin y o creacin de informes. o Localiza las huellas (hashes) de los cheros. Organiza los cheros basmdose en su tipo. a Las herramientas que proporciona Sleuthkit pueden dividirse en cuatro categor as: 1. Informacin de sistemas de archivos completos: fsstat o 2. Acceso a datos almacenados en archivos: dcalc, dcat, dls y dstat 3. Informacin Meta almacenada en inodos: icat, ind, ils y istat o 4. Tareas de nivel archivos: mactime, le y sorter Para empezar a trabajar con Sleuthkit3 es necesario tener las imgenes del sistema (obtenidas a anteriormente con dd). Se montarn estas imgenes como solo lectura, utilizando el dispositivo a a virtual loop. El primer punto en el que hay que detenerse es el relativo a los archivos borrados, normalmente sern huellas que el intruso ha querido ocultar. El comando ils muestra la informacin del inodo a o de un archivo del sistema. Si queremos obtener informacin de los archivos borrados de la particin o o almacenada en hda1.dd de tipo ext3: ils -f linux-ext3 -r hda1.dd La salida de la ejecucin de ils muestra en un formato tabular la informacin. La l o o nea 1 contendr a la cabecera y la l nea 2 los datos correspondientes. Otro comando interesante es fls que permite recoger informacin de cualquier archivo que an existe. o u El conjunto de herramientas proporcionado por Sleuthkit es bastante completo y lo anterior es solo una pequea introduccin. Pueden ser dif n o ciles de usar y el formato en que ofrecen los resultados no ayuda, siendo necesario la ayuda de scripts auxiliares que hagan funciones de ltrado para discriminar informacin que no interese. o En estas circunstancias el uso de una interfaz grca mejora de forma considerable las cona diciones de trabajo. Autopsy proporcionar una capa abstracta para los comandos, presentando a unicamente los resultados, que realmente es lo que interesa. Proporciona tambin una herramienta e con la que documentar y comentar los datos y resultados. Autopsy permite abrir tantos casos como deseemos, permitindonos as almacenar informacin e o de varios incidentes. Se crear un directorio por cada caso, que servir como almacn de los a a e resultados y datos que vayan extrayndose de las imgenes. e a Desde Autopsy se puede realizar tambin la gestin de las imgenes que dispongamos, almae o a cenndolas en el directorio indicado anteriormente para su estudio o creando un enlace simblico a o
paquetes para la versin inestable de Debian. Instalar paquetes de esa versin puede hacer que nuestro o o sistema se vuelva inestable y debemos hacerlo con sumo cuidado y bajo nuestra responsabilidad. Si an as optamos u por instalarlos usando el comando apt-get, antes hemos de modicar nuestro chero /etc/apt/sources.list aadiendo la l n nea deb http://ftp.fi.debian.org/debian sid main contrib non-free y despus e #apt-get update #apt-get install sleuthkit autopsy
3 Existen

Software libre y educacin: redes, gestores de contenidos y seguridad o

Thales-CICA 2005

Una ayuda al forense: Sleuthkit

Pgina 51 a

Figura 3.1: Pantalla de inicio de Autopsy y anlisis de datos a

a las imgenes, tambin con origen en el directorio del caso. El procedimiento a seguir ser aadir a e a n todas las imgenes indicando el punto de montaje correspondiente, el tipo de sistema de cheros a que utiliza y si se desea que se calcule el MD5 de cada imagen. Esto ultimo nos permite comprobar la integridad de las imgenes. a Una vez acabado este proceso de creacin del caso puede comenzar la investigacin. Inicialmente o o puede hacerse una recogida de datos de la l nea de tiempo de los cambios producidos en el sistema. Sleuthkit es una herramienta muy potente y es muy utilizada en los anlisis forenses realizados a tanto sobre sistemas de archivos Linux como Windows. Sin embargo, estas herramientas son slo o ayudas para la persona que realiza el anlisis. Por s solas no van a decirnos qu ha pasado en el a e sistema. Ser el encargado de realizar el anlisis forense el que con su experiencia y conocimiento a a del sistema deduzca qu es lo que ha pasado. e Existen concursos en los que se publican las imgenes de un sistema comprometido y se propone a su estudio y anlisis4 . Los concursantes presentarn sus conclusiones as como los pasos y herraa a mientas utilizadas en el proceso. Si se tiene inters en profundizar sobre este tema es interesante e empezar con una de estas imgenes publicadas e intentar relizar el anlisis. Una vez nalizado a a es posible compararlo con las conclusiones obtenidas por los concursantas, descubriendo as los puntos que se hayan pasado por alto y las tcnicas que siguen distintas personas. e

4 Pueden

encontrarse cheros de desaf forense en http://project.honeynet.org/challenge/images.html o

J.A. Bernal - F. Gordillo - H. Santander - P. Villegas

Thales-CICA 2005

Una ayuda al forense: Sleuthkit

Pgina 52 a

Software libre y educacin: redes, gestores de contenidos y seguridad o

Cap tulo 4

Deteccin de virus o
Un virus es una secuencia de cdigo que se inserta en un chero ejecutable denominado host, de o forma que al ejecutar el programa tambin se ejecuta el virus; generalmente esta ejecucin e o implica la copia del cdigo viral, o una modicacin del mismo, en otros programas o o

Seguridad en Unix y Redes. Antonio Villalon Huerta


virus.(Del lat. virus). 1. m. Biol. Organismo de estructura muy sencilla, compuesto de prote nas y cidos nucleicos, y a capaz de reproducirse solo en el seno de clulas vivas espec e cas, utilizando su metabolismo. 2. m. Inform. Programa introducido subrepticiamente en la memoria de un ordenador que, al activarse, destruye total o parcialmente la informacin almacenada. o

DICCIONARIO DE LA LENGUA ESPANOLA (Vigsima segunda edicin) Real Acae o demia Espaola n

4.1.

Virus y Troyanos en UNIX

Podemos cometer errores o descuidos a la hora de congurar nuestro sistema o de programar una aplicacin. Esta es la fuente principal de los problemas de seguridad. Sin embargo, existen o otras fuentes, los denominados malware o software malicioso. Son programas o scripts creados con el objetivo concreto de daar un sistema o lograr informacin privilegiada del mismo. n o Es importante que nos concienciemos de ejecutar en nuestro sistema unicamente software del cual tengamos la certeza que proviene de una fuente able. Esta consideracin es especialmente o importante cuando hablamos de la administracin del sistema. Muchas labores de administracin o o se realizan desde el usuario root, que posee privilegios para realizar cualquier accin en el sistema1 . o Supongamos que encontramos en internet un programa que dice cambiar la conguracin gro a ca de nuestro sistema de X-Window. En la pgina donde nos podemos descargar este software a nos habla de las excelencias del programa, lo fcil de utilizar que es y nos muestra varias copias a de pantalla. Nos descargamos el paquete y en las instrucciones nos indica que ejecutemos el script install.sh con el usuario root. Conamos ciegamente en l y lo ejecutamos. Cual es nuestra e sorpresa cuando vemos cmo se empiezan a borrar todos los archivos de nuestro sistema porque o hay una l nea en este script que ejecuta cd /; rm -rf *. Este es un caso extremo, que no tiene porqu pasar verdad?, pero nos advierte de comprobar siempre las fuentes de nuestros programas, e especialmente si los bajamos de pginas underground 2 . a Si un usuario, que no sea root, ejecuta un programa que contiene un virus o un troyano, unicamente afectar a los archivos a los que el usuario tiene permiso de escritura o modicacin. a o Como acabamos de comprobar, esto se debe aplicar con ms rigor en el caso del administrador del a
1 Aunque 2 Los

esto cambiar con mecanismos como SELinux, por ejemplo. a bajos fondos de Internet.

53

Thales-CICA 2005

Antivirus ClamAV

Pgina 54 a

sistema. Si es root el que ejecuta el programa contaminado, cualquier archivo del sistema puede contagiarse. Adems de descargar el software de fuentes ables, es recomendable utilizar las huellas de a todos los programas, generalmente en forma de MD53 para vericar que hemos bajado el archivo leg timo. Igualmente, tambin tenemos la opcin, aunque ms ardua, de descargar el cdigo fuente e o a o y compilar nosotros mismos los programas. Lograremos as la posibilidad de revisar el cdigo fuente o en busca de potenciales problemas de seguridad.

4.1.1.

El problema de los virus

De forma similar a los virus que atacan nuestro cuerpo y nos provocan enfermedades, los virus informticos que atacan nuestros ordenadores, nos pueden producir dolores de cabeza y graves a problemas4 . Los virus informticos poseen mltiples v de transmisin (como la picadura de los a u as o mosquitos o los estornudos en los virus biolgicos), aprovechando cualquier descuido o resquicio o de seguridad tanto del sistema operativo, los programas de aplicacin o el propio usuario. Hay o pginas web que incluyen virus, programas que descargamos, incluso si no aplicamos los parches a de seguridad para mantener nuestro sistema actualizado, algunos intrusos como el Sasser pueden introducirse en l. Pero, sin duda, la difusin de virus a travs del correo electrnico debe llevarse e o e o todos los honores como principal v de contagio. a La mejor forma de proteger nuestra red frente a estos correos con virus, es que ni siquiera lleguen a entrar. El que nuestro servidor de correo disponga un mecanismo de deteccin y eliminacin de o o virus nos proteger de innidad de peligros. a Para ello utilizaremos ClamAV, que es un detector de virus con licencia GPL y que integraremos con nuestro agente de transporte de correo para rechazar los mensajes con virus. El propsito principal de este software es tanto la integracin con los servidores de correo o o (escaneo de datos adjuntos) como el escaneo de sistemas de cheros que puedan contener virus (p. ej. un servidor samba para clientes windows). En un sistema antivirus es muy importante la actualizacin de los cheros de rmas5 y de los o motores antivirus para adaptarse a las mutaciones y apariciones de nuevos virus. ClamAV dispone de una herramienta para actualizarse automticamente desde Internet. a El sitio principal de este antivirus es http://www.clamav.net, donde podremos ampliar informacin. o

4.2.
4.2.1.
Debian

Antivirus ClamAV
Instalacin o

Para instalarlo, usaremos apt-get, ejecutndolo como root. En esta ocasin suponemos que se a o ha instalado el servidor de correo Postx junto con amavis, como se explic en la tercera entrega o de este curso. En primer lugar necesitamos instalar, en nuestro caso casi todos estarn y, a lo sumo se actuaa lizarn, los paquetes relacionados con los cheros adjuntos, a n de poder inspeccionarlos: a
r o o t @ g u a d a l i n e x : / home/ mowgli# aptg e t i n s t a l l u n r a r l h a a r j unzoo z i p u n z i p bzip2 gzip cpio f i l e lzop Leyendo l i s t a de p a q u e t e s . . . Hecho Creando r b o l de d e p e n d e n c i a s . . . Hecho a u n r a r ya e s t en su v e r s i n ms r e c i e n t e . a o a
con $md5sum chero, podemos obtener la huella y comprobarla con la autntica, para comprobar e que no ha sido modicado por los malos. 4 Los efectos de los virus informticos pueden ir desde la simple broma o reivindicacin, a la ltracin de datos a o o condenciales o la destruccin de datos en el ordenador. o 5 La huella para detectar al virus.
3 Fcilmente a

Software libre y educacin: redes, gestores de contenidos y seguridad o

Thales-CICA 2005

Antivirus ClamAV

Pgina 55 a

u n z i p ya e s t en su v e r s i n ms r e c i e n t e . a o a b z i p 2 ya e s t en su v e r s i n ms r e c i e n t e . a o a g z i p ya e s t en su v e r s i n ms r e c i e n t e . a o a c p i o ya e s t en su v e r s i n ms r e c i e n t e . a o a Se i n s t a l a r n l o s s i g u i e n t e s p a q u e t e s e x t r a s : a libmagic1 Se i n s t a l a r n l o s s i g u i e n t e s p a q u e t e s NUEVOS: a a r j l h a l z o p unzoo Se a c t u a l i z a r n l o s s i g u i e n t e s p a q u e t e s : a f i l e libmagic1 zip 3 a c t u a l i z a d o s , 4 s e i n s t a l a r n , 0 para e l i m i n a r y 563 no a c t u a l i z a d o s . a N e c e s i t o d e s c a r g a r 680kB de a r c h i v o s . Se u t i l i z a r n 984kB de e s p a c i o de d i s c o a d i c i o n a l d e s p u s de desempaquetar . a e Desea c o n t i n u a r ? [ S/n ] S

A continuacin, instalaremos los paquetes propios de Clam Antivirus: o


r o o t @ g u a d a l i n e x : / home/ mowgli# aptg e t i n s t a l l clamav clamavb a s e clamav daemon clamavf r e s h c l a m l i b c l a m a v 1 Leyendo l i s t a de p a q u e t e s . . . Hecho Creando r b o l de d e p e n d e n c i a s . . . Hecho a Se i n s t a l a r n l o s s i g u i e n t e s p a q u e t e s e x t r a s : a l i b c u r l 3 libgmp3 Paquetes s u g e r i d o s : daemon l i b c u r l 3 g s s a p i ca c e r t i f i c a t e s Se i n s t a l a r n l o s s i g u i e n t e s p a q u e t e s NUEVOS: a clamav clamavb a s e clamavdaemon clamavf r e s h c l a m l i b c l a m a v 1 libgmp3 Se a c t u a l i z a r n l o s s i g u i e n t e s p a q u e t e s : a libcurl3 1 a c t u a l i z a d o s , 6 s e i n s t a l a r n , 0 para e l i m i n a r y 562 no a c t u a l i z a d o s . a N e c e s i t o d e s c a r g a r 3069kB de a r c h i v o s . Se u t i l i z a r n 4592kB de e s p a c i o de d i s c o a d i c i o n a l d e s p u s de desempaquetar . a e Desea c o n t i n u a r ? [ S/n ] S

En este momento se inicia de manera automtica el asistente de conguracin de Clam Antia o virus. Seleccionaremos como mtodo de actualizacin de la base de datos de virus el mtodo de e o e demonio (daemon) y pulsaremos Adelante:

Como mirror para la descarga seleccionamos el ms cercano a la localizacin geogrca de a o a nuestro servidor, y pulsamos Adelante:
J.A. Bernal - F. Gordillo - H. Santander - P. Villegas

Thales-CICA 2005

Antivirus ClamAV

Pgina 56 a

Si tenemos que usar un proxy para conectarnos a Internet deberemos congurarlo en esta pantalla, o nada con conexin directa a Internet y pulsamos Adelante: o

Activamos la opcin para que se nos avise tras la actualizacin y pulsamos Adelante, la o o instalacin de los paquetes continuar por el siguiente punto: o a

Se inicia la instalacin y conguracin de los paquetes y se aade el usuario y grupo clamav. o o n Por ultimo, se inicia el demonio clamd. Una vez concluida la instalacin6 , no es preciso modicar ningn chero de conguracin, pues o u o la instalacin ya nos deja todo lo que necesitamos funcionando adecuadamente. Podemos mirar o en el chero /etc/amavis/amavisd.conf.
6 Si todav los paquetes Debian no se han actualizado a la ultima versin, puede salir un mensaje de que no es a o la versin ms actual. Esperaremos a que se generen los paquetes y actualizamos con apt-get. o a

Software libre y educacin: redes, gestores de contenidos y seguridad o

Thales-CICA 2005

Antivirus ClamAV

Pgina 57 a

El modo de funcionamiento ser el siguiente: primero Postx, nuestro agente de transporte, a recibir los correos y a continuacin se los pasar a Amavis para que detecte si contiene virus a o a (dndole el trabajo a Clamav) o es un spam (en este caso el currito ser Spamassassin). a a Si observamos el siguiente error en el /var/log/mail.log:
l i n u x amavis [ 1 3 1 4 7 ] : (13147 01) Clam A n t i v i r u s clamd FAILED unknown s t a t u s : / var / l i b / amavis / amavis 20040818 T163812 13147/ p a r t s : A c c e s s d e n i e d . ERROR\n l i n u x amavis [ 1 3 1 4 7 ] : (13147 01) WARN: a l l primary v i r u s s c a n n e r s f a i l e d , c o n s i d e r i n g backups

Entonces, deberemos aadir el usuario clamav al grupo amavis, una vez que se haya creado, n de la siguiente forma:
#a d d u s e r clamav amavis

Y comprobamos que la directiva AllowSupplementaryGroups se encuentra en el chero /etc/clamav/clamd.conf. Reiniciamos el servidor de correo postfix, amavis y clamav, o el sistema completo.

4.2.2.

Probemos la medicina

Una vez instalados los tres paquetes, comprobemos que funciona correctamente. Primero, con el comando clamscan, comprobamos que los cheros o directorios que le especicamos, estn libres de virus o puede que encontremos alguna sorpresa. a
r o o t @ g u a d a l i n e x :/# clamscan r i l v i r . t x t / r o o t / LibClamAV Warning : LibClamAV Warning : This v e r s i o n o f t h e ClamAV e n g i n e i s o u t d a t e d . LibClamAV Warning : DON T PANIC ! Read h t t p : / /www. clamav . n e t / f a q . html LibClamAV Warning : / r o o t / . m o z i l l a / d e f a u l t /0 j i y r 4 u b . s l t / Mail /www. midominio . o r g / Sent : Worm. Gibe . F FOUND / r o o t / Desktop / D e s c a r g a s / h s g e j o q ( 1 ) . exe : Worm. Gibe . F FOUND / r o o t / Desktop / D e s c a r g a s / h s g e j o q . exe : Worm. Gibe . F FOUND / r o o t / h s g e j o q . exe : Worm. Gibe . F FOUND SCAN SUMMARY Known v i r u s e s : 34867 Engine v e r s i o n : 0 . 8 4 Scanned d i r e c t o r i e s : 257 Scanned f i l e s : 1257 Infected f i l e s : 4 Data scanned : 5 7 . 4 3 MB Time : 7 0 . 9 2 9 s e c ( 1 m 10 s )

El comando anterior (clamscan) busca recursivamente (-r) a partir del directorio o chero que le especicamos en ultimo lugar (en este caso desde el home de root /root). La opcin -i indica que solamente nos muestra los cheros infectados y la opcin -l nos indica o o que guardar un informe en el chero resultado-virus.txt. Puede que detectis algn intruso a e u en vuestro sistema, especialmente si compart con sistemas windows v Samba algn directorio. s a u Otro ejemplo de ejecucin es el siguiente: o
[ r o o t @ l i n u x tmp]# clamscan i / r o o t /tmp/ clamav 0 . 7 1 . t a r . gz : ClamAVTestS i g n a t u r e FOUND / r o o t /tmp/ msg27986 . z i p : Worm. SomeFool .Q FOUND SCAN SUMMARY Known v i r u s e s : 21635 J.A. Bernal - F. Gordillo - H. Santander - P. Villegas

Thales-CICA 2005
Scanned d i r e c t o r i e s : 1 Scanned f i l e s : 19 Infected f i l e s : 2 Data scanned : 3 . 8 9 MB I /O b u f f e r s i z e : 131072 b y t e s Time : 6 . 5 7 7 s e c ( 0 m 6 s )

Antivirus ClamAV

Pgina 58 a

En este caso ha detectado dos cheros con virus y nos presenta el informe nal. Tambin podemos utilizar el comando clamdscan. e
r o o t @ g u a d a l i n e x : / c u r s o l i n u x / e n t r e g a 6 / images# clamdscan / r o o t / h s g e j o q . exe / r o o t / h s g e j o q . exe : Worm. Gibe . F FOUND SCAN SUMMARY Infected f i l e s : 1 Time : 0 . 1 5 2 s e c ( 0 m 0 s )

4.2.3.

Freshclam

El proceso freshclam se encarga de mantener actualizado el chero de rma de virus. Podemos ejecutarlo directamente desde la l nea de comandos, aunque lo mejor es incluirlo como tarea peridica (en el sistema cron) para que se actualice automticamente. o a El siguiente comando comprueba los cheros de rmas de virus, y nos da como resultado que estamos actualizados.
[ r o o t @ l i n u x tmp]# f r e s h c l a m ClamAV update p r o c e s s s t a r t e d a t Sat May 22 1 4 : 5 4 : 0 4 2004 Reading CVD h e a d e r ( main . cvd ) : OK main . cvd i s up t o d a t e ( v e r s i o n : 2 3 , s i g s : 2 1 0 9 6 , f l e v e l : 2 , b u i l d e r : ddm) Reading CVD h e a d e r ( d a i l y . cvd ) : OK d a i l y . cvd i s up t o d a t e ( v e r s i o n : 3 2 5 , s i g s : 5 3 9 , f l e v e l : 2 , b u i l d e r : ccordes )

En la direccin http://news.gmane.org/gmane.comp.security.virus.clamav.virusdb, poo demos ver las versiones de los cheros de rma de virus y si son los que nosotros tenemos. En esta ejecucin se produce una actualizacin del chero daily.cvd a la versin 326. o o o
ClamAV update p r o c e s s s t a r t e d a t Sun May 23 1 1 : 0 2 : 3 1 2004 Reading CVD h e a d e r ( main . cvd ) : OK main . cvd i s up t o d a t e ( v e r s i o n : 2 3 , s i g s : 2 1 0 9 6 , f l e v e l : 2 , b u i l d e r : ddm) Reading CVD h e a d e r ( d a i l y . cvd ) : OK Downloading d a i l y . cvd [ ] d a i l y . cvd updated ( v e r s i o n : 3 2 6 , s i g s : 5 5 4 , f l e v e l : 2 , b u i l d e r : c c o r d e s ) Database updated ( 2 1 6 5 0 s i g n a t u r e s ) from d a t a b a s e . clamav . n e t ( 8 0 . 6 9 . 6 7 . 3 ) . Clamd s u c c e s s f u l l y n o t i f i e d about t h e update .

4.2.4.

Funcionamiento

Para comprobar que est funcionando, mandemos un correo de prueba al usuario aluma no1@midominio.org7 con nuestro cliente de correo preferido. Este es el resultado del correo una vez entregado, mostrando las cabeceras.
From alumno1@midominio . o r g Tue May 31 0 1 : 3 0 : 2 0 2005 ReturnPath : <alumno1@midominio . org> XO r i g i n a l To : alumno1@midominio . o r g
7O

el dominio que tengamos congurado en nuestro sistema.

Software libre y educacin: redes, gestores de contenidos y seguridad o

Thales-CICA 2005

Antivirus ClamAV

Pgina 59 a

D e l i v e r e d To : alumno1@midominio . o r g R e c e i v e d : from l o c a l h o s t ( g u a d a l i n e x [ 1 2 7 . 0 . 0 . 1 ] ) by g u a d a l i n e x ( P o s t f i x ) with ESMTP i d 8AA77A781 f o r <alumno1@midominio . org >; Tue , 31 May 2005 0 1 : 3 0 : 0 7 +0200 (CEST) R e c e i v e d : from g u a d a l i n e x ( [ 1 2 7 . 0 . 0 . 1 ] ) by l o c a l h o s t (www. midominio . o r g [ 1 2 7 . 0 . 0 . 1 ] ) ( amavisdnew , p o r t 1 0 0 2 4 ) with LMTP i d 08847 01 f o r <alumno1@midominio . org >; Tue , 31 May 2005 0 1 : 2 8 : 5 9 +0200 (CEST) R e c e i v e d : from [ 1 9 2 . 1 6 8 . 2 0 0 . 4 ] ( unknown [ 1 9 2 . 1 6 8 . 2 0 0 . 4 ] ) by g u a d a l i n e x ( P o s t f i x ) with ESMTP i d 672DE97A8 f o r <alumno1@midominio . org >; Tue , 31 May 2005 0 0 : 3 5 : 3 9 +0200 (CEST) MessageID : <429B953A . 7 0 7 0 9 0 1 @midominio . org> Date : Tue , 31 May 2005 0 0 : 3 5 : 3 8 +0200 From : alumno1 <alumno1@midominio . org> UserAgent : M o z i l l a / 5 . 0 ( X11 ; U; Linux i 6 8 6 ; esES ; rv : 1 . 7 . 6 ) Gecko /20050324 Debian /1.7.6 1 XAcceptLanguage : en MIME e r s i o n : 1 . 0 V To : alumno1 <alumno1@midominio . org> S u b j e c t : Re : d f R e f e r e n c e s : <429B9356 . 6 0 4 0 0 0 9 @midominio . org> InReplyTo : <429B9356 . 6 0 4 0 0 0 9 @midominio . org> ContentType : t e x t / p l a i n ; c h a r s e t=UTF8 ContentT r a n s f e r Encoding : 8 b i t XVirusScanned : by amavisdnew20030616 p10 ( Debian ) a t midominio . o r g Status : O XUID : 19 ContentLength : 27 XKeywords : alumno1 e s c r i b i : o > Hola

Comentemos las l neas ms interesantes. Primero el camino recorrido por el correo: a


R e c e i v e d : from [ 1 9 2 . 1 6 8 . 2 0 0 . 4 ] ( unknown [ 1 9 2 . 1 6 8 . 2 0 0 . 4 ] ) by g u a d a l i n e x ( P o s t f i x ) with ESMTP i d 672DE97A8

Estas l neas indican que la primera escala ha sido la recogida por parte de Postx como agente de transporte de correo (puerto 25 de la mquina 192.168.200.4) a
R e c e i v e d : from g u a d a l i n e x ( [ 1 2 7 . 0 . 0 . 1 ] ) by l o c a l h o s t (www. midominio . o r g [ 1 2 7 . 0 . 0 . 1 ] ) ( amavisdnew , p o r t 1 0 0 2 4 ) with LMTP i d 08847 01 f o r <alumno1@midominio . org >;

Postx de nuestra mquina local (127.0.0.1) lo ha pasado al puerto 10024 que es donde est a a escuchando amavisd-new. Aqu se aplican las reglas especicadas en el chero de conguracin o /etc/amavis/amavisd.conf.
R e c e i v e d : from l o c a l h o s t ( g u a d a l i n e x [ 1 2 7 . 0 . 0 . 1 ] ) by g u a d a l i n e x ( P o s t f i x ) with ESMTP i d 8AA77A781 f o r <alumno1@midominio . org >; Tue , 31 May 2005 0 1 : 3 0 : 0 7 +0200 (CEST)

Si nuestro valeroso correo pasa todas las pruebas de virus, spam y banned, llegar exitoso a a los brazos de la persona destinataria8 .
XVirusScanned : by amavisdnew20030616 p10 ( Debian ) a t midominio . o r g
sabe si es que nos ha llegado la devolucin de Hacienda. Para despidos o marrones, podemos aplicar o algn ltrillo en Amavis ;-) u
8 Quin e

J.A. Bernal - F. Gordillo - H. Santander - P. Villegas

Thales-CICA 2005

Antivirus ClamAV

Pgina 60 a

Nos dice que el correo ha sido escaneado y comprobado por amavisd-new.

4.2.5.

Ejemplo

Comprobemos cmo funciona enviando un virus de verdad. No os debe ser muy dif capo cil turar alguno, verdad?. De un correo cogemos el chero hsgjoq.exe, que contiene un virus. Lo guardamos y vamos a incluirlo como adjunto en un correo a nuestro sistema.

Lo enviamos y al usuario postmaster que est denido en nuestro sistema le llegar un mensaje e a de aviso. Podemos personalizar qu hacer cuando se detecta un virus. Lo recomendable es que slo e o se avise al postmaster, porque ayudar a ver de dnde procede el virus y desinfectar la mquina a o a responsable. Al destinatario normalmente no le interesa saber que un virus iba dirigido a l (hay e tantos). El supuesto remitente normalmente es engaoso, el virus se encarga de poner el remitente n que le interese para no despertar sospechas y lo que conseguimos es que una persona que no tiene nada que ver, reciba un mensaje diciendo que ha enviado un virus, siendo falso en la mayor de a los casos. En caso de que conguremos para que nos avise si un virus iba dirigido a nosotros, recibiremos un correo como ste. e

Software libre y educacin: redes, gestores de contenidos y seguridad o

Bibliograf a
[1] Seguridad en Unix y redes v2.0 Antonio Villalon Huerta [2] Seguridad prctica en Unix e Internet Garfinkel y Spafford a [3] Hacking Exposed Linux Brian Hatch y James Lee [4] Informacin de la NSA sobre SELinux en http://www.nsa.gov/selinux/ o [5] HOWTO - Getting Started with new SELinux

61

You might also like