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