-----BEGIN PGP SIGNED MESSAGE----- seg-FAQ - Preguntas más frecuentes acerca de seguridad informática -====================================================================- Versión 0.1.3 - 13 de Julio 1997 Sumario: 0. Introducción 1. Sniffers, Monitores de red, y otras herramientas 1.0 ¿ Qué es un Sniffer ? ¿ Qué es un analizador de protocolos ? 1.1 ¿ Qué quiere decir que lee información a nivel de enlace ? 1.2 Tengo una red con topología en estrella. ¿ Soy vulnerable ? 1.3 Quiero dar acceso a mi red vía modem, ¿ Pueden leer la información que circula por mi red desde el otro lado de la línea ? 1.9 Recursos de red. 2. Cortafuegos (firewalls). 2.1 ¿ Qué es un Firewall ? 2.2 ¿ Cómo funciona un Firewall ? 2.3 ¿ Qué tipos de Firewall existen actualmente ? 3. UNIX 3.1 ¿ Cómo separar cuentas shell y de correo en UNIX ? Glosario -====================================================================- 0. Introducción Esta FAQ contiene algunas de las preguntas más frecuentes formuladas en la lista de correo seg-l. El propósito de esta lista no es otro que difundir información acerca de seguridad informática en castellano, cubriendo así una (en mi opinión) acuciante necesidad de la comunidad hispanoparlante. Para suscribirse a seg-l, envíe un mail a con el texto: subscribe seg-l [su.dirección.de.correo@su.host.de.email] en el cuerpo del mensaje. El programa majordomo se le enviará un e-mail a su dirección de correo indicando si ha podido suscribirle o no. Una vez subscrito a la lista, puede enviar mensajes a la lista a través de la dirección . Recuerde que esta lista está moderada (afortunadamente Iván es bastante benévolo con el correo que llega ;) por lo que no se extrañe si alguna vez su mensaje no aparece; o bien incluye comentarios del moderador. Para borrarse de la lista, envíe a un mensaje con: unsubscribe seg-l [su.dirección.de.correo@su.host.de.email] en el cuerpo del mensaje. (Espero que nadie tenga que cancelar ninguna suscripción por no encontrar interesante seg-l ;) Este documento puede obtenerse en el WWW gracias a la ayuda de Manuel Mollar que me ofreció hospedar el documento en: http://moon.inf.uji.es/~inigo/seg-l/faq/ Nota: Debido a las peticiones que he recibido por parte de suscriptores de la lista, he incluido algunos temas que no se han discutido en la misma; pero que son de gran ayuda para aquella gente que está empezando en el campo de la seguridad. -====================================================================- 1. Sniffers, Monitores de red, y otras herramientas. 1.0 ¿ Qué es un Sniffer ? ¿ Qué es un analizador de protocolos ? Un sniffer es un proceso que "olfatea" el tráfico que se genera en la red *a nivel de enlace*; de este modo puede leer toda la información que circule por el tramo de red en el que se encuentre. Por este método se pueden capturar claves de acceso, datos que se transmiten, numeros de secuencia, etc... Un analizador de protocolos es un sniffer al que se le ha añadido funcionalidad suficiente como para entender y traducir los protocolos que se están hablando en la red. Debe tener suficiente funcionalidad como para entender las tramas de nivel de enlace, y los paquetes que transporten. Truco: Normalmente la diferencia entre un sniffer y un analizador de protocolos, es que el segundo está a la venta en las tiendas y no muestra claves de acceso. 1.1 ¿ Qué quiere decir que lee información a nivel de enlace ? Quiere decir que el sniffer se dedica a leer TRAMAS de red, por lo que los datos que obtendremos de él serán tramas que transporán paquetes (IP, IPX, etc...). En estos paquetes se incluyen los datos de aplicación (entre ellos claves de acceso). Estos programas ponen al menos un interfaz de red en _modo promiscuo_; es decir que al menos uno de los interfaces de red de la máquina está programado para leer toda la información que transcurra por el tramo de red al que esté conectado, y no solamente los paquetes con dirigidos a él. 1.2 Tengo una red con topologia en estrella, ¿ Soy vulnerable ? Probablemente Si. Cualquier tipo de red basada en BUS o ANILLO lógicos es vulnerable. Aunque los cables se envíen a un concentrador (hub) haciendo que la topología física sea de estrella, si la topología lógica de la red es en bus o en anillo las tramas podrán escucharse desde cualquier host conectado al concentrador. En general, IEEE 802.3 (ethernet), 802.4 (token bus), 802.5 (token ring), Ethernet 2, etc.. suelen ser vulnerables con la siguiente salvedad: Algunos concentradores de nueva generación aislan el tráfico entre hosts conectados a una misma red; por lo que en estas redes la utilización de sniffers es poco menos que inútil (aunque siempre hay quien tiene suerte). 1.3 Quiero dar acceso a mi red vía modem. ¿ Pueden leer la información que circula por mi red ejecutando un sniffer al otro lado de la línea ? Depende de cómo se configure la conexión. En este caso tendrás que engañar al router para que crea que las direcciones que se asignan para acceso telefónico pertenecen a tu misma red. Si tienes (un poco de) cuidado al configurar la máquina que controla estos hosts remotos no deberías tener ningún problema, ya que las tramas que se enviarán a estas máquinas serán únicamente aquellas que les corresponda recibir. Nota: Si se está ofreciendo acceso a Internet mediante Infovía, este problema ya no debe preocuparle; ya que entre su red y el usuario remoto hay una serie de mecanismos (routers y conexiones punto a punto) que hacen inefectivo el uso un Sniffer en la máquina remota. 1.4 ¿ Cómo puedo saber si hay alguien corriendo un sniffer en mi red ? Esto es más difícil de lo que parece. La forma más común de saber si un interfaz de red está en modo promiscuo consiste en ejecutar (en máquinas UNIX) el programa ifconfig de la siguiente forma: $ifconfig -a [ Muestra el estado de las placas de red. La salida sería similar a esto ] eth0 Link Encap: 10Mbps Ethernet HWaddr: xx:xx:xx:xx:xx:xx inet addr: a.b.c.d Bcast: a.b.c.f Mask: m.m.m.m UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1 ^^^^^^^------- OJO: Modo promiscuo. RX packets: 0 errors:0 dropped:0 overruns:0 TX packets:0 errors:0 dropped:0 overruns:0 Interrupt:15 Base Address:0x300 El problema de esta solución es que se necesita tener acceso root a todas las máquinas que deben comprobarse (otra opción sería hacer un crontab que compruebe el estado cada cierto tiempo). Según vIERJa , corre el rumor de que algunas tarjetas de red ethernet envían un broadcast al entrar en modo promiscuo; sin embargo hasta el momento nadie ha podido confirmar este punto. [Nota: No disponemos todavía de información acerca de cómo detectar sniffers en Windows NT y/o PPC. Cualquier aportación al respecto sería de gran ayuda.] 1.9 Recursos Algunos de los sniffers más mentados en la lista son: sniffit: Difícil de encontrar ¿ verdad ? ;) http://reptile.rug.ac.be/~coder/sniffit.html también en http://www.iti.upv.es/seguridad/ tcpdump: UNIX Este programa vuelca toda la información que entra o sale de la tarjeta de red. Hay una versión disponible para SCO en http://unix.hensa.ac.uk/ftp/mirrors/uunet/sco-archive/TLS/ (esta puede ser una buena ocasión para comprobar la compatibilidad binaria con ejecutables de SCO). esniff.c: Publicado en Phrack #45 Esta es la madre de todos los sniffers. La mayoría de los que se lanzaron después han setado basados en este programa para SunOS (nota: necesita una máquina con /dev/nit). juggernault: Publicado en Phrack Magazine #50 Ademas de actuar como sniffer, puede tomar conexiones suplantando a otros hosts. ethload.exe y ethdump.exe (DOS): ¿ ftp.cdrom.com ? Se han utilizado especialmente para estadísticas de tráfico en LAN (ethernet, por supuesto ;). Problema: El DOS no permite multitarea; por lo que si no tenemos un 386 viejo sin otro uso, tendremos que inutilizar (¿temporalmente?) una máquina. Prueba a buscarlos en: http://oak.oakland.edu/pub/msdos/lan http://ub4b.eunet.be/pub/ub4b/network/msdos netXray (Windows 95/NT): Producto comercial; sin embargo existen versiones de evaluación por 30 días. http://ing.umayor.cl/xray (Página no oficial). Otros: netzhack.exe [DOS] -====================================================================- 2.0 Cortafuegos (firewalls) 2.1 ¿ Qué es un firewall ? Un cortafuegos o firewall es un sistema de defensa basado en el hecho de que todo el trafico de entrada o salida a la red debe pasar obligatoriamente por un sistema de seguridad capaz de autorizar, denegar, y tomar nota de aquello que ocurre en la red. Aunque hay programas que se venden bajo la denominación de firewall, un firewall *no* es un programa. Un firewall consiste en un conjunto de medidas HARDWARE y SOFTWARE destinadas a asegurar una instalación de red. 2.2 ¿ Cómo actúa un firewall ? Un Firewall actúa en los niveles 3 (red) a 7 (aplicación) de OSI. Sus funciones son básicamente las siguientes: - Llevar contabilidad de las transacciones realizadas en la red. - Filtrar accesos no autorizados a máquinas (mediante filtrado de paquetes, o bien observando el contenido de las unidades de protocolo de Transporte, Sesión, Presentación, y aplicación). - Lanzar alertas en caso de ataques o comportamiento extraño de las comunicaciones. El Common Criteria define en en apartado cuarto del estándar a modo de ejemplo un "protection profile" que correspondería a un firewall a nivel de red y de transporte. 2.3 ¿ Qué tipos de Firewall existen ? Cualquier Firewall puede clasificarse dentro de uno de los tipos siguientes (o como una combinación de los mismos): Filtros (Paket Filters) Su cometido consiste en *filtrar* paquetes dejando pasar por el tamiz únicamente cierto tipo de tráfico. Estos filtros pueden implementarse a partir de routers (p.ej: en un Cisco, podemos definir access-lists asociadas a cada uno de los interfases de red disponible). Problemas: No son capaces de discernir si el paquete cuya entrada se permite incuye algún tipo de datos "maliciosos". Además, cualquier tipo de paquetes no permitidos puede viajar en el interior de tráfico permitido (ej: IP sobre IP). Desgraciadamente son difíciles de definir y depurar. Proxy (Circuit Gateways) En este caso la pasarela actúa del mismo modo que un simple cable (vía software) conectando nuestra red interna con el exterior. En general se requiere que el usuario esté autorizado para acceder al exterior y que tenga una cuenta de salida en el proxy. Problemas: Ciertos sistemas como SOCKS necesitan programas cliente modificados para soportarlo. Pasarelas a nivel de Aplicación (Application Gateway) Estas pasarelas se ocupan de comprobar que los protocolos a nivel de aplicación (ftp,http,etc...) se están utilizando de forma correcta sin tratar de explotar algunos problemas que pudiese tener el software de red. Problema: Deben estar actualizados; de otro modo no habría forma de saber si alguien está tratando de atacar nuestro sistema. 2.9 Recursos [Listas de correo] seg-l (¡por supuesto!) [Grupos de Noticias] comp.security.* - Seguridad en entornos informáticos. comp.protocols.tcpip - Discusión sobre la pila de protocolos TCP/IP [WWW] http://www.netcraft.co.uk/security/diary.html (o similar) Muy útil para ponerse al día con los últimos problemas encontrados en la red, especialmente si has estado unos días desconectado. [Libros] "Firewalls and Internet Security", William Cheswick & Bellowin. Ed. Addison-Wesley, 1990. "Building Internet Firewalls", Brent Chapman & Elizabeth D. Wicky. Existe una traducción al castellano publicada por McGraw-Hill con el título "Construya Firewalls para Internet". [Estandares] CCITSE-1.0 - Common Criteria for Information Security (CEE-96/14) En el apartado cuarto del estandar (Predefined Protection Profiles) se definen (a modo de ejemplo) las características que debería tener un Firewall para filtrado de paquetes a nivel de red y transporte. -====================================================================- 3. UNIX 3.1 ¿ Cómo separar cuentas shell y de correo en UNIX ? Hay varias opciones posibles: La más sencilla de ellas consiste en utilizar un paquete que integre el sistema de correo electrónico (smtp) y la estafeta de correos (pop). De este modo que habría que hacer sería definir en este paquete los usuarios de correo electrónico; mientras que aquellos usuarios con una cuenta shell se definirían usualmente. Otra opción consiste en asignar una shell especial para los usuarios de correo. El cometido de esta shell será mostrar un mensaje en pantalla avisando al usuario de que no está autorizado para hacer telnet a la máquina (esto es mas conveniente que especificar como shell /usr/bin/yes ya que este programa no temina por sí mismo). -----8<---------- Cortar Aquí ----------8<----- #!/bin/sh # Archivo: /root/noshell # Shell que echa al usuario tras mostrarle un mensaje. cat << EOF Lo siento, pero usted no está autorizado para utilizar una cuenta shell en esta máquina. EOF -----8<---------- Cortar Aquí ----------8<----- De este modo, la entrada en el archivo /etc/passwd para el usuario sin cuenta shell en la máquina quedaría como: usuario:Clave:XXX:YYY:Usuario de Correo:/home/usuario:/root/noshell donde XXX e YYY corresponden a los identificadores de usuario (UID) y grupo al que pertenece dicho usuario (GID). No olvidemos activar los permisos de ejecución para el archivo anterior; o de lo contrario nos sería imposible ejecutar el script. Además necesitamos dar de alta este script en el archivo /etc/shells con el fin de que el servicio de FTP funcione correctamente (algunos servidores FTP comprueban que el usuario disponga de una shell válida antes de permitirle el acceso). Para ello sólo necesitamos añadir al archivo una línea con el nombre y ruta de acceso de la shell que hemos creado: ----- Archivo /etc/shells ----- /bin/sh /bin/ksh /root/noshell <---- Esta es la que hemos añadido. ----- Archivo /etc/shells ----- Hay otras muchas soluciones tales como hacer uso de un deflector (relay) o crear un nuevo directorio raíz mediante chroot; pero son mucho más complejas que esta. -====================================================================- Glosario: Broadcast (Difusión): Mensaje cuya dirección de destino está codificada de forma especial para poder ser escuchado simultáneamente por todas las máquinas conectadas al mismo segnento de red en el que se originó. Niveles OSI: Estructura definida por ISO [ http://www.iso.ch ] con el objeto de normalizar la estructura de las redes de computadores. Se compone de las siguientes capas: 7 Aplicación 6 Presentación 5 Sesión 4 Transporte 3 Red (Network) 2 Enlace (Data Link) 1 Físico -====================================================================- Esta FAQ es Copyright (C) 1997 Iñigo González Ponce. Se prohibe la venta de este texto en cualquier medio presente o futuro, incluyendo formato electrónico, CD-ROM, o publicación del mismo sin la expresa autorización por escrito del Autor. -----BEGIN PGP SIGNATURE----- Version: 2.6.3i Charset: noconv iQCVAwUBM8iLq6QKqXTm2TCtAQEYwgP/STH6lDtAj320lSTbo7a5ca4FUoSm++fS PEg6MwQtuEfnXIuQ/9XkEPHHAhFbtAKROlHIkajq1f3gIY18PJw4SHAO6isYVy4v 4pr7mcsyF+mcBCpaoe7itfKitNrNTZTGL5INx0eqfJkJUimQEc2KXpvPwWvvKPpx aqH/KdLDO8M= =6esQ -----END PGP SIGNATURE-----