IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII o 02. FIREWALLS Y PROXYS o IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII Introduccion Esta es la primera parte de un 'cursillo' sobre proxys y firewalls que esta previsto tenga 3 capitulos, veremos este mes una introduccion, en la siguiente revista daremos una ojeada a las tecnicas de proteccion mas comunes y en la ultima entrega.....las tecnicas de ataque mas comunes. Es un poco arido para novatos _advierto_, por lo que voy a incluir un breve glosario de terminos para aquellos que pese a todo quieran leerlo y se "pierdan". Las redes de ordenadores tienen por naturaleza el cometido de permitir el libre flujo de informacion, hacer posible que un usuario de Madrid tenga un proceso en marcha en una computadora de Paris y al tiempo consulte la base de datos de la central en Londres todo como si los tres ordenadores estuvieran en la misma habitacion, detener o impedir este flujo de informacion es perjudicial tanto para las compa€ias como para los gobiernos pero proteger sus datos de intrusiones no autorizadas es vital, se crea asi el dilema de como establecer un sistema de seguridad que tenga el minimo impacto posible en la "utilidad" de la red. El proposito de los firewalls de Internet es pues proporcionar un punto de defensa que controle y vigile los accesos a los servicios que proporciona una red privada tanto desde dentro como desde fuera de esa red. Esto requiere un mecanismo que de manera selectiva autorice o bloquee el trafico entre Internet y la red protegida, basicamente hay dos sistemas: Routers y Screening. Los routers pueden controlar el trafico basandose en la direccion IP o el puerto utilizado de manera que ciertas direcciones IP tengan acceso y a otras les sea negado. Los host que efect£an screening pueden controlar el trafico a nivel de aplicacion, 'sacando' al usuario del nivel de protocolo y examinando mas detenidamente el acceso,. Para implementar un firewall que se base en 'routing and screening' se necesita al menos autorizar el acceso directo a la red protegida desde un nø x de direcciones IP, a nivel de screening esto no seria necesario pero son menos flexibles y requieren el desarrollo de unos 'forwarders' conocidos como proxys, el escoger un sistema u otro es optar por una mayor grado de servicio al usuario o un mayor grado de aislamiento de la red. Para un protocolo de red un proxy es una aplicacion que se ejecuta en un host firewall y ejecuta servicios requeridos a traves del firewall actuando como un 'gateway'. Los proxies dan la ilusion de una conexion directa punto a punto que en realidad no existe y dependiendo de su capacidad pueden interpretar el protocolo que manejan y dar mayor grado de control y vigilancia al administrador. Por ejemplo: Un proxy de FTP puede bloquear la exportacion de ficheros de un sistema y permitir por contra que se 'suban' (upload) ficheros mientras que los firewalls basados en routing no pueden hacer esto. Existen proxies para servicios como FTP, Telnet, etc... Posiblemente el mayor beneficio a la seguridad que da el utilizar un proxy es que da la oportunidad de autentificar al usuario. Por ejemplo: Cuando te conectas desde Internet a una red protegida, lo mas tipico es conectarse primero al proxy, autentificarse ante el y tras ello se completa la conexion con el host que ya pertenece a la red protegida, asi el proxy protege al mismo firewall, el usuario ya no accede ni siquiera al firewall para identificarse y ello protege a la red ya que solo los autenticos usuarios obtienen acceso al interior de la red. Por lo tanto aunque dentro de la red existan "agujeros de seguridad" el restringir el acceso a usuarios autorizados es una primera medida de precaucion. Otros servicios como SMTP y USENET usan unos 'daemons' que en ocasiones poseen privilegios de sistema, si estos daemons contienen bugs, un atacante pueden explotarlos en su beneficio. Para evitar este peligro los proxys se dise€an para ejecutarse sin privilegios de sistema especiales, idealmente un usuario exterior ni siquiera tendria la oportunidad de interactuar con un proceso privilegiado, en la practica el daemon master de Internet (inetd) que es el encargado de iniciar a los otros daemons necesita ejecutarse con privilegios, siempre existe la posibilidad de que el kernel contenga backdoors, servicios escondidos o bugs que permitan a un atacante acceder al sistema. Esta es posiblemente la mejor manera de atacar un proxy. Filosofia de Dise€o O sea, la manera en la que debe dise€arse un proxy para ser seguro. (Recomendaciones oficiales aqui resumidas pertenecientes a un trabajo realizado para la agencia ARP del Departamento de Defensa de los Estados Unidos) - Cualquier bug que pueda haber en la implementacion de un servicio de red no debe ser capaz de comprometer el sistema. Los servicios mal configurados no se ejecutaran antes que ofrecer potenciales brechas de seguridad. *_Importante_* - Los accesos desde el exterior de la red protegida no podran conectar directamente con el interior ni con servicios que posean privilegios. - Los servicios de red son implementados con un minimo de caracteristicas y complejidad, el codigo fuente debe ser lo suficientemente peque€o y simple como para ser revisado con celeridad. - Deben existir metodos razonables y practicos de 'testear' si el sistema esta correctamente instalado. Aclaraciones de Paseante --------------------------------------------------------- En un host-based firewall cuando se se hackea el host la red entera esta abierta al ataque, no obstante esta solucion es facil de instalar, mantener, configurar y monitorizar (seg£n ellos) ---------------------------------------------------------- Y ahora un ejemplito de las reglas de configuracion de un proxy que se que lo estabais deseando, (tened siempre en cuenta que se busca el equilibrio entre seguridad y posibilidad de uso) # Ejemplo ftp gateway rules: # -------------------------- ftp-gw: authserver 127.0.0.1 7777 // Se establece el servidor que se usa como "autentificador" ftp-gw: denial-msg /usr/local/etc/ftp-deny.txt // Mensaje de error al canto ftp-gw: welcome-msg /usr/local/etc/ftp-welcome.txt // Bienvenido user legitimo ftp-gw: help-msg /usr/local/etc/ftp-help.txt ftp-gw: timeout 3600 ftp-gw: permit-hosts 192.33.112.100 // Comienza el baile de permisos y restricciones ftp-gw: deny-hosts 128.52.46.* ftp-gw: permit-hosts 192.33.112.* -log { retr stor } -auth { stor } ftp-gw: permit-hosts * -authall A continuacion veremos como una red protegida utiliza proxys para prestar una serie de servicios con el minimo riesgo de verse comprometida. Logging E-mail DNS FTP Telnet Control de acceso TCP Vamos pues a examinar las caracteristicas que debe tener un proxy que sirva como gateway en esas areas para proporcionar servicios sin comprometer a la red. Logging Todo aquello de importancia y los registros de acceso son guardados en un host protegido de la red interna via syslog, el administrador puede ejecutar programas que "escaneen" el registro en busca de sucesos definidos y en caso de encontrarlos hacer saltar una alarma. Los tiempos de enviar claves "en claro" a traves de Inet quedan atras por temor a los sniffers, se recomienda las claves de un "solo uso" (CRYPTOCard..etc) basicamente el firewall nos hace una pregunta y un programita de nuestro ordenador la contesta, la pregunta es cada vez diferente y la respuesta se basa en una relacion matematica asi que aunque alguien se entere da igual porque la proxima vez pregunta y respuesta seran distintas. E-Mail Uno de los puntos de ataque favoritos (recordad el "gusano" de Morris), se han identificado muchos bugs del sendmail que han sido yendo corregidos en las nuevas versiones El problema de los mailers es complicado puesto que son complejos y necesitan privilegios para ejecutar acciones en beneficio del usuario (manipular mailboxes, ficheros..) Para proveer un sistema de correo seguro el acceso desde la red a sendmail de manera directa se evita y en su lugar se presenta una miniversion del SMTP un proxy llamado smap lo suficientemente peque€o para que su codigo no tenga ninguna "sorpresa" y lo £nico que hace es aceptar los mensajes y escribirlos en disco en un area especifica, tras ello otro proceso recoge el correo y lo entrega al autentico sendmail para que lo deposite en los buzones correspondientes (lo que sendmail puede hacer sin que se le otorguen privilegios) Aclaraciones de Paseante ------------------------------------------------- A£n hoy muchos firewalls de Internet ejecutan directamente sendmail porque confian en la "fiabilidad" de su version lo que no es la mejor opcion desde el punto de vista de la seguridad. Evidentemente puestos a buscar bugs es mucho mas facil detectarlos en las 700 lineas de codigo de smap que en las 20.000 de sendmail, smap ofrece ademas la proteccion adicional de solo ejecutar comandos como HELO, FROM, RCPT, DATA, y QUIT dando error en otros como VRFY y EXPN para evitar intrusiones. Smap no es la panacea, a medida que se desarrollan nuevos ataques los administradores tienen que procurarse nuevos medios de defensa pero cada vez lo ponen mas dificil y se hace mas complicado entrar 'a pelo' desde fuera. -------------------------------------------------- Domain Name Service (DNS) El software de DNS disponible para UNIX no puede ser utilizado para obtener acceso al sistema aunque algunos ataques se han basado en el spoofing de DNS para enga€ar al firewall, para eliminar esta amenaza el DNS ya no se considera como algo valido para acceder a informacion protegida y solo el servicio de correo "confia" en el. En los registros junto al DNS se guarda la direccion IP, cualquier direccion IP que no coincida con el DNS es automaticamente marcada como un intento de spoofing. Aclaraciones de Paseante -------------------------------------------------------- Evidentemente esto no significa que todos los sistemas se hayan adaptado ya a esto, os recuerdo que es solo la recomendacion oficial de lo que deberian hacer. --------------------------------------------------------- FTP La aplicacion de FTP es un proceso que media entre las dos conexiones FTP, no utiliza acceso a disco excepto para leer su configuracion y es un programa lo suficientemente peque€o y sencillo como para no ser una amenaza a la seguridad (y mas teniendo en cuenta que se ejecuta sin privilegios). Para controlar el acceso a FTP la aplicacion lee en su fichero de configuracion los comandos que al ejecutarse activan el log y los sistemas a los que se permite el acceso a FTP, si el administrador lo desea todo el trafico se puede registrar y presentarse resumido. TELNET La aplicacion TELNET es tambien (y siguiendo la filosofia de dise€o) peque€a y simple y su mision es intermediar entre el trafico TELNET, al igual que el gateway de FTP el £nico fichero que lee es el de su configuracion y tras ello es "chrooted" a un directorio restringido y como un proceso no privilegiado (esto es caracteristico de todas las aplicaciones proxy actuando como gateways.) El fichero de configuracion de TELNET determina que sistemas o redes exteriores pueden conectarse a nuestra red y a que sistemas o redes exteriores puede permitirse que se conecte quien esta dentro de nuestra red. Opcionalmente se puede requerir identificacion. Todas las conexiones y su duracion son registradas. Servicios basados en UDP Como hemos visto una caracteristica de los proxys es que NO SE PERMITE EL TRAFICO DIRECTO entre un sistema exterior y uno interior, pero el UDP es una conexion que no funciona a traves de proxys al ser punto a punto. Por lo tanto NO SE PERMITEN servicios UDP, algunos de estos servicios como NTP y DNS pueden no obstante prestarse a traves de un firewall si se configura el servidor como un "forwarder" de las peticiones originadas dentro de la red protegida. Uso y Acceso TCP En el UNIX basado en BSD muchos procesos de red se inician con una conexion al daemon master inetd que es quien desvia la peticion al programa que debe resolverla. Por ejemplo: Recibimos una peticion de TELNET, el inetd "oye" esta peticion y busca en su fichero de configuracion la entrada [TELNET] de acuerdo con ello ejecuta el programa especificado en esa entrada y se le "pasa" la peticion original. Inetd, el daemon de servicios de Internet no ejecuta otro funcion salvo la de llamar a procesos especificos para que manejen las peticiones que se les hacen. TCP Plug-Boards Algunos servicios como Usenet news se ofrecen com£nmente a traves de un firewall. En ese caso el administrador tiene la posibilidad de elegir si desea proporcionar el servicio en el mismo firewall o instalar un servidor proxy. Ejecutar las news en el firewall puede exponer la maquina a posible bugs en el soft de news por lo que es mas seguro utilizar un proxy como gateway a un sistema seguro para ello existen los "plugs-boards" que si bien en muchos casos han sido dise€ados para el servicio Usenet news pueden emplearse como proxys de proposito general si se desea ya que actuan como "una tuberia de datos" sin utilizar el disco local o llamar a otros procesos o subshells y por supuesto como todos los proxys pueden hacer un log de todas las conexiones. Aclaraciones de Paseante ---------------------------------------------------------------- Como nada es perfecto los plugs-boards no usan autentificacion del usuario (salvo la direccion del host y del cliente) y no examinan el trafico que pasa a traves de ellos. Si un servidor (por ejemplo el servidor de NNTP) tiene una brecha de seguridad podria ser explotada, el firewall haria a un atacante mucho mas dificil obtener acceso a la red para seguir explotando ese fallo pero si el servidor NNTP hubiese estado ejecutandose en el mismo firewall entonces todo el firewall se habria vuelto vulnerable. ----------------------------------------------------------------- En la practica que los servidores no tengan privilegios de sistema especiales incrementa de manera notable la seguridad del firewall, mas a£n la metodologia de desconectar todos los servicios al minimo y despues monitorizarlos uno a uno, caso a caso hace mayor la confianza de estar construyendo un sistema dificil de 'romper'. La decision de confiar mas en un sistema basado en "routers" o en "screenings" sigue siendo dificil y depende de muchos factores. Los firewall son necesarios porque muchos servicios fueron desarrollados con un nivel de seguridad muy bajo o sin ninguno en absoluto, los administradores de redes han aprendido rapidamente la necesidad de contar con severas medidas de identificacion y con protocolos bien dise€ados. Como siempre la ventaja tecnologica esta de parte del administrador, de su pereza e incompetencia depende que alguien vulnere la seguridad de su red.