f i r e w a l l s  -  f t p

"Cortafuegos"

¿ 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.


¿ 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).
          - - - Alertar en caso de ataques o comportamiento extraño de los sistemas de comunicación.

El Common Criteria define en el 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.
 


¿ 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 (Packet 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 interfaces de red disponible). (véase Apartado 4.0 de esta sección: Filtros de paquetes).

Problemas: No son capaces de discernir si el paquete cuya entrada se permite incluye 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 o interior 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.

Problemas: Deben estar actualizados; de otro modo no habría forma de saber si alguien está tratando de atacar nuestro sistema.
 


¿ Qué servicios/puertos conviene bloquear en un cortafuegos ?

Bloquee todos los servicios basados en datagramas que no hagan uso de autentificación (todos los basados en UDP no cifrados), y  todos los servicios basados en TCP que no se consideren estrictamente necesarios (evidentemente existen excepciones a esta regla).

Por favor, lea en apartado siguiente para sopesar los riesgos que implica habilitar ciertos servicios en una Internet.
 


¿ Qué riesgos puedo correr habilitando el servicio... ?

A continuación se presenta una lista de servicios accesibles en una Internet junto su descripción y posibles problemas que pueden surgir con cada uno de ellos. Ciertos servicios de esta lista sólo se han definido bajo TCP, y sin embargo tienen asignado también un puerto UDP. Esto es debido a la política que sigue la IANA en la asignación de puertos, por lo que no se descarta que alguno de estos protocolos pudiese eventualmente ser implementado bajo UDP:

echo (7/tcp,udp)
Se utiliza únicamente para depuración. Sin embargo, un atacante puede realizar "labores de depuración" creando bucles en la red a partir de este puerto (véase udp chargen/19).
BLOQUEAR.

systat (11/tcp/udp)
Muestra información acerca del host como usuarios conectados, carga del sistema, procesos en funcionamiento, etc..
BLOQUEAR.

chargen (19/tcp,udp)
Se utiliza únicamente para depuración. Basta con enviar un paquete a este puerto aparentemente originado en el puerto de echo (7/udp) para provocar un bucle en la red.
BLOQUEAR.

telnet (23/tcp,udp)
Vulnerable a "toma de sesiones". Es preferible utilizar en su lugar otras soluciones como SSH.

smtp (25/tcp,udp)
Históricamente la mayoría de las entradas en hosts han venido a través de este puerto. Se debe FILTRAR este puerto y mantener SIEMPRE la última versión estable conocida de cualquier programa de correo, especialmente si trabajamos con sendmail.

time (37/tcp,udp)
Devuelve la hora del sistema en un formato legible por la máquina (4 bytes mas o menos). Puede ser accedido tras un ataque vía ntp(123/tcp,udp).

nameserver (42/tcp,udp)
Si dispone de una red privada, debe instalar un servidor de nombres para ella. Bloquee el acceso a dicho servidor desde el exterior, y utilice siempre la última versión de BIND para resolver nombres. En este caso, puede cortar sin excesivos problemas el acceso al DNS sobre UDP.

tftp (69/tcp,udp)
Falta de autentificación. Bloquear si no se dispone de máquina alguna con arranque remoto.

private dialout (75/tcp,udp) - - - [RFC1700]
Si encontramos una traza de este puerto en los diarios del sistema (logs), en el mejor de los casos estaremos siendo analizados por un scanner de puertos.
BLOQUEAR.

finger (79/tcp,udp)
Puede obtenerse información acerca de usuarios concretos, información que puede utilizarse para adivinar claves de acceso. BLOQUEAR o SUSTITUIR por una política coherente de asignación de direcciones de correo (Juan Fernadez - - -> juan.fernandez@host.com) y un mensaje advirtiendo de dicha política.

http (80/tcp,udp)
¡¡¡Cuidado!!! los servidores web son cada vez más complejos y permiten demasiadas cosas. Conviene redirigir el acceso a un puerto no privilegiado en maquinas unix. A ser posible, utilice servidores http específicos para la tarea a realizar (servir archivos, acceso a Bases de datos, etc...).

npp (92/tcp,udp) - [Network Printing Protocol]
Nadie quiere imprimir documentos ajenos ¿ verdad ?.

objcall (94/tcp,udp) - [Tivoli Object Dispatcher]
Utilizado por la herramienta de Gestión de redes Tivoli. Si utilizamos tivoli, aplicar las mismas precauciones que con SNMP.

sunrpc (111/tcp,udp)
Especialmente peligroso sobre UDP. No autentifica fuentes, y es la base para otros servicios como NFS.

auth (113/tcp,udp)
No debería permitirse obtener información acerca de puertos privilegiados (puede utilizarse para realizar un portscan). No se utiliza mas que en Unix.

ntp (123/tcp,udp)  [Network Time Protocol]
Se utiliza para sincronizar los relojes de las máquinas de una subred. Un ejemplo de ataque clásico consiste en enviar paquetes a este puerto para distorsionar los logs de la máquina.

netbios (137,138,139/tcp,udp)
No dispone de suficiente autenticación. Afortunadamente según los RFC2001 y 2002 NetBIOS es capaz de funcionar correctamente a pesar de que se estén enviando bloques de datos con información errónea o corrompida.

snmp (161/tcp,udp)
¿ Quién puede querer administrar nuestra red desde el exterior ? Se puede obtener mucha información a través de este servicio, como por ejemplo estado de los interfaces de red, conexiones concurrentes en la máquina, etc...
BLOQUEAR.

snmp-trap (162/tcp,udp)
Traps de SNMP. A través de este puerto se realizan solicitudes que pueden cambiar la configuración del host.
BLOQUEAR.

irc (194/tcp,udp)
No es peligroso en sí; sin embargo sus usuarios suelen divertirse atacando los hosts de otras personas con el fin de echarlos cuando no pueden hacer uso de la orden 'kick'. Generalmente conviene bloquear los puertos 6666, 6667 y 6668 ya que son a los que se enganchan los servidores de IRC.

exec (512/tcp)
Ejecuta ordenes en estaciones remotas. Como todos los comandos 'r' (rexec, rcp, rlogin) en la otra partes cuando se accede desde un conjunto de direcciones IP definidas por el usuario. No se realiza más autentificación que la basada en dirección IP y usuario remoto. MUY PELIGROSO (aunque muy potente).
BLOQUEAR.

biff (512/udp)
Notifica de la llegada de correo. Buen candidato para posibles desbordamientos de buffer, o simplemente para obligar a abandonar la sesión a un  usuario debido a la llegada masiva de mensajes de correo. (biff suele funcionar incluso con mesg n)
BLOQUEAR.
login (513/tcp) - rlogin. (ver exec)
BLOQUEAR.

who (513/udp)
Muestra quien está utilizando el host remoto. Se puede obtener información bastante detallada acerca de quién utiliza una máquina y desde que terminal, uptime (tiempo que lleva en funcionamiento), carga de la máquina, etc...
BLOQUEAR.

cmd (514/tcp)
Similar a exec (512/tcp), mismas precauciones.
BLOQUEAR.

syslog (514/udp)
BLOQUEAR a menos que existan suficientes razones como para mantenerlo. Suele atacarse para corromper los diarios (logs) del sistema con entradas falsas.

printer (515/tcp,udp)

router (520/tcp,udp) - Local routing process.
BLOQUEAR

ingreslock (1524/tcp)
En la mayoría de los Un*x se puede encontrar esta entrada en /etc/services. Ya que está dado de alta y es un puerto no privilegiado es un buen lugar para una puerta trasera (no sería la primera vez que ocurre).

Hay más puertos considerados poco seguros; por lo que la lista crecerá en futuras ediciones...
 


Recursos

Estándares
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.

ISO-7498-2 OSI/RM - Information Processing Systems Open Systems Interconnection. Basic Reference Model.  Part 2: Security Architecture. 1989
Cabe destacar que, a pesar del tiempo trancurrido desde su aparición, la norma ISO-7498-2 (tb. publicada como norma X.800 del ITU-TSS) mantiene su vigencia, ya que no han aparecido nuevos mecanismos de seguridad no catalogados por la norma.