Toda solución firewall necesita de ciertos componentes básicos en los cuales residirán las funciones de seguridad de control de acceso y otras como protección de tráfico, autenticación, etc.
Screening Router
Éste es un router utilizado para el filtrado de paquetes. Son configurados para bloquear o filtrar los protocolos y direcciones de forma transparente en los puntos de acceso a la red externa a la cual se conectan directamente.
El router permite el acceso selectivo a los sistemas y servicios del sitio, dependiendo de la política. Usualmente, los usuarios tienen acceso directo a Internet y el acceso a los sistemas del sitio desde Internet es restringido.
El screening router retransmite o rechaza un paquete IP basándose en la información contenida en el encabezado del paquete. Aunque también es capaz de basar las decisiones de ruteo en información que no se encuentra en el encabezado del paquete, por ejemplo, las interfaces de origen y destino.
Un router de filtrado de paquete puede implementar cualquier estrategia de seguridad, sin embargo tiene algunas desventajas
- La capacidad de registro de sucesos es mínima o nula por lo que es difícil determinar si un router ha sido comprometido por un ataque;
- Las reglas de filtrado de paquetes son difíciles de testear, lo que puede dejar un sitio abierto a vulnerabilidades no testeadas;
- Si se necesitan reglas de filtrado complejas, puede volverse inmanejable;
- Cada host directamente accesible desde Internet requerirá su propio conjunto de medidas de autenticación avanzadas.
Estas desventajas se ven aumentadas a medida que las necesidades de seguridad del sitio se vuelven más complejas y rigurosas. El uso de un screening router como único componente de seguridad es considerado como inadecuado para una solución efectiva.
Los hosts protegidos por un screening router son llamados screened hosts. De forma similar una subred protegida es llamada screened subnet o “zona desmilitarizada”.
¿Como se filtran los paquetes?
La decisión de filtrado se lleva a cabo de acuerdo con una Lista de Control de Acceso (ACL) asociada a cada interfaz física por la cual se recibe el paquete. Cada entrada de esta lista especifica valores para campos particulares de los encabezados de los paquetes, y acciones a ser tomadas si el paquete conforma con dichos valores. (ver Figura 23)
Las tareas de inspección de un screening router se realizan previas a que el paquete alcance la capa de red (la capa que procesa el protocolo que se está filtrando).
Figura 23: Un posible funcionamiento del filtrado de paquetes en un screening router (responde a la estrategia de rechazar aquello desconocido)
Los datos analizados por el router corresponden al encabezado IP y de los protocolos de transporte TCP y UDP (dependiendo de cada producto). Los campos comúnmente analizados son:
- Dirección IP origen y destino: Basándose en las direcciones IP, el router es capaz de bloquear el acceso desde o hacia algún sitio o hosts no confiable.
- Tipo de protocolo: indica si los datos encapsulados corresponden a TCP, UDP o ICMP
- Puerto TCP o UDP de origen y destino: el router hace uso de los puertos “bien conocidos” de TCP para permitir, denegar o rutear el acceso a servicios de Internet particulares. Por ejemplo, es posible bloquear todo el trafico de entrada excepto para correo electrónico, rechazando todos los paquetes cuyo puerto de origen sea diferente a 25, el puerto por defecto para SMTP. También podría rutear todo el tráfico Web (puerto 80) a un host en particular (por ejemplo, un servidor web).
- Bit ACK: que indica si el paquete es una confirmación de un paquete TCP recibido
De todas formas, no todos los routers soportan todos estos campos o listas de control para cada interfaz física.
Gateway a Nivel de aplicación
Son aplicaciones específicas para cada aplicación o programas servidores de propósito especial que se ejecutan en un host para formar parte de un firewall; ofrecen un medio de extender el control de acceso del tráfico de red a las capas de aplicación. Son también llamados aplicaciones o servidores proxies.
Estos programas proveen una barrera segura entre los usuarios internos e Internet actuando como intermediarios para cada sesión de comunicación. En lugar de conectarse directamente a Internet, por ejemplo con un browser Web el usuario interno se conecta al gateway de aplicación, quien establece la conexión con el servidor Web en Internet y actúa como intermediario en el intercambio de datos.
Ya que estos gateways operan sobre la capa de aplicación pueden proveer control de acceso al nivel de los protocolos de aplicación y pueden administrar contenido almacenándolo (mediante el uso de memoria cache) para mejorar el desempeño de la red o intercambiándolo de forma interactiva entre el cliente y el servidor final.
Los servidores proxies son capaces de comprender el protocolo de la aplicación y de examinar el contenido de cada paquete que intercepte (tanto de entrada como de salida) y por lo tanto capaces de controlar la sesión del usuario basado en las operaciones que son solicitadas. Por ejemplo, un proxy puede bloquear los comandos PUT de FTP y permitir los comandos GET del mismo.
Ya que todos los datos entre el cliente y el servidor son ruteados a través del proxy de aplicación, además de controlar la sesión, puede proveer funciones de registro de sucesos detalladas. Esta habilidad es una de las principales ventajas de un gateway de aplicación.
La principal desventaja de los gateways de aplicación es que requieren código de propósito especial para proveer cada servicio. Pero esto hace que deban implementar la política de rechazar todo a menos que sea explícitamente permitido, que se considera un enfoque ventajoso desde el punto de vista de seguridad. Adicionalmente y dado que efectúan un detallado análisis de los paquetes, son los filtros más costosos en términos de tiempo y capacidad de cómputo.
De las consideraciones del uso de servidores proxy pueden surgir dos cuestiones: primero, como evitar que un host externo intente contactarse con otro host local diferente al servidor proxy? Y segundo, como instruir al host interno que contacte al servidor proxy y no al servidor real de forma directa?.
Comunicación cliente externo / servidor proxy
Posiblemente, el servidor proxy se encuentre conectado a la red local. Los hosts externos no deberían conocer la topología de la red local y por lo tanto las direcciones IP o nombres de las maquinas conectadas a la misma. Solo deben conocer la dirección de la red o sitio, correspondiente al host que interconecta la red local con la red externa, que será el responsable de redirigir los paquetes al gateway.
Si un host externo conoce esta dirección podría intentar contactarlo y aprovecharse de la situación. Para prevenir esto se dispone de funciones de seguridad en el dispositivo que interconecta la red local para prevenir cualquier intento de acceso no permitido.
Comunicación cliente interno / servidor proxy
De la misma forma que en el caso anterior, se evita la conexión directa entre el cliente en la red local y el servidor real.
Existen dos tecnologías proxy para lograr esto, clásica y transparente. En la tecnología proxy clásica, se modifica el software cliente o se instruye al usuario de efectuar procedimientos especiales para contactar al servidor real a través del servidor proxy. En la tecnología proxy transparente, se configuran las tablas de ruteo de la red local para que todos los paquetes destinados a un servidor externo sean redirigidos a gateway de aplicación que sabrá interceptar los paquetes y crear ambas conexiones.
Gateway a Nivel de circuitos
Al igual que los gateways a nivel de aplicación, los gateways a nivel de circuitos son aplicaciones proxies pero se diferencian en los datos sobre los cuales aplican la función de filtrado.
Un gat eway a nivel de circuitos no interpreta el contenido de los protocolos de aplicación, sino que determina si una conexión entre dos puntos es permitida, de acuerdo con un determinado conjunto de reglas, manteniendo el estado a lo largo de la transmisión, agrupando los paquetes que pertenecen a la misma conexión. El control de acceso aplicado se basa principalmente en los datos del protocolo de transporte involucrado (orientado a conexiones, como TCP). Si la comunicación es aceptada, el proxy abrirá una sesión y permitirá el tráfico solo para la fuente permitida y posiblemente por un tiempo limitado para dicha conexión.
La principal ventaja de los gateways de circuito es que proveen servicios para un amplio rango de protocolos diferentes, sin embargo requieren software de cliente especial que utiliza llamadas al sistema provenientes de librerías tales como Socks. Aunque esto introduce el problema de que la seguridad basada en hosts no es escalable (en enfoques tradicionales de seguridad - perimetrales).
Una alternativa al procedimiento presentado es la utilización de tablas dinámicas en el proceso de reenvió de paquetes basadas en un examen de las banderas SYN/ACK de los paquetes TCP. Con el uso de estas tablas dinámicas, el firewall implementa una política de aceptar los paquetes que pertenezcan a conexiones iniciadas desde el proxy, no confiando en las conexiones iniciadas desde el exterior. Si existen proxies a nivel de circuitos presentes en la red, los hosts de la red local no podrán establecer conexiones directamente a destinos situados del otro lado del firewall (red pública) sino a través del proxy.
Un proxy de circuitos, entonces, usa reglas de acceso para determinar si una conexión debe ser establecida o bloqueada. Los Gateways a nivel de circuitos pueden implementar mecanismos de control de acceso elaborados, incluyendo autenticación e intercambio de mensajes de protocolo entre proxy y cliente.