SET 39 Call For Papers

¿Eres un hacker? Si deseas pasar a formar parte de la historia del hacking hispano, colabora con la próxima edición de SET 39 enviándonos un artículo. No esperes más, esta es tu oportunidad de demostrar lo que sabes. Ayúdanos a construir una revista de hackers para hackers. SET Staff

Firewalls y Proxys I

      2668

Autor: Paseante
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.