Una de las funciones más importantes de un firewall es el filtrado o control de acceso de toda la información que sea recibida en los distintos puntos de acceso a la red interna o a los sistemas finales, que son administrados por aquél.
El filtrado de datos permite controlar la transferencia segura de datos basado principalmente en: la dirección de donde provienen los datos, la dirección de destino de los datos y los protocolos de transporte y aplicación utilizados.
Esta función puede ser implementada en diferentes niveles de la arquitectura de red, con lo cual se logran diferentes niveles de granularidad, es decir, qué tan minucioso es el control de seguridad efectuado. Sobre la base del nivel donde se efectúe el filtrado, la función se implementará en diferentes dispositivos1. Los niveles mencionados son tres2: filtrado de paquetes, control de acceso de conexiones y filtrado de datos de aplicación.
Filtrado de paquetes (a nivel de red)
Los filtros de paquetes operan al más bajo nivel de abstracción en el cual, los datos son transmitidos en paquetes y analizados como tales. En la familia de protocolos TCP/IP, los filtros son aplicados al nivel de transporte (TCP, UDP) y al nivel de red (IP) (ver Figura 6).
Figura 6 - Filtrado de paquetes en un Router o Gateway
Este mecanismo es implementado por lo general en los sistemas intermedios (gateways o routers) que conectan la red interna con la red pública. Cada paquete que ingresa a la red es interceptado y analizado por la función de filtrado, implementada por un filtro de paquetes en estos dispositivos intermedios. Suelen ser llamados Router de Filtrado de Paquetes o Gateways de Filtrado de Paquetes.
El filtro rechaza o reenvía los paquetes al destinatario original, según reglas especificadas en Listas de Control de Acceso (ACL), que son almacenadas en el router o gateway, basadas en los datos de los encabezados de los paquetes TCP e IP. Básicamente los datos analizados son las direcciones IP y puertos TCP de origen y destino de los paquetes.
Un filtro de paquetes no mantiene información de contexto para los paquetes que sean parte de una conexión; todos los paquetes son tratados de forma independiente, sin ser relacionados con ningún otro.
La principal ventaja del filtrado de paquetes es que permite proveer, en un único sitio o punto, una protección particular para la red entera. Además es transparente a los usuarios de la red ya que no requiere configuración alguna en los sistemas que interconecta ni realizar tareas especiales de transmisión u otro tipo, lo que ofrece una estructura flexible en el sentido de que puede ser modificada o re-estructurada sin necesidad de modificar el resto de la red.
Aunque existen algunas desventajas como posibles problemas de desempeño que pueden ser clasificados en tres categorías [Peri]: número de campos examinados, posición del campo en el paquete, demora del proceso. Esto afecta el espacio necesario para almacenar las reglas, el número de comparaciones y la complejidad del algoritmo.
El núcleo de un filtro de paquetes consiste de un lenguaje de descripción que permite expresar reglas de políticas de seguridad orientadas a paquetes. Las reglas definidas hacen referencia a entidades, es decir que identifica dispositivos o sistemas por medio de sus direcciones IP. La sintáxis de estos lenguaje no está estandarizada por lo que diferentes productos permiten expresar las reglas de diferentes formas.
Por ejemplo la siguiente regla (Figura 7) retransmitirá a la red interna todo paquete que provenga del socket 170.210.122.45:20, destinado al socket 130.15.214.23:1032.
Nombre | Dirección de origen y puerto | Dirección de destino y puerto | Acción |
R1 | 170.210.122.45:20 | 130.15.214.23:1032 | Permitir |
Figura 7 - Ejemplo de regla de seguridad
Para ser efectivo, un filtro debe permitir expresar reglas utilizando comodines y rangos de valores para referirse a más de un host o dispositivo. Por ejemplo “permitir los paquetes destinados al host 130.15.214.23 pero sólo entre los puertos 1000 y 1050 (130.15.214:1000..1050)”; y “negar todos aquellos paquetes provenientes de la red 170.210.122.0 (170.210.122.*:*)”.
También debe considerarse el espacio necesario para almacenar las reglas ya que existen múltiples caminos que pueden tomar los paquetes hasta llegar al dispositivo filtrador. De aquí surge, también, la necesidad de algoritmos de búsqueda de reglas. Todos estos aspectos afectan el desempeño del filtro afectando también el desempeño de la red.
Implementación
La función de filtrado de paquetes puede implementarse en varios sitios de la red interna. La forma más directa y simple es utilizar un router que la soporte.
Un router tendrá dos interfaces, una que conecte a la red externa y la otra a la red interna. Los filtros pueden aplicarse en una de las dos interfaces, o en ambas. Además puede aplicarse al tráfico de entrada como al de salida, o a ambos. Estas características varían con los diferentes routers. Tales consideraciones reflejan diferentes políticas más o menos flexibles, con más o menos puntos de control. Una buena política a respetar es que si un paquete ha de ser rechazado, que sea cuanto antes. Otra posible opción es efectuar el filtrado independientemente de la interfaz de red.
Una alternativa es utilizar filtros basados en hosts, tales como screend de Digital Equipment Corporation disponible para algunos sistemas operativos; ipfilterd de SGI Systems y Karlbridge. Otra herramienta es IPTables/NetFilter, la cuarta generación de filtros de paquetes para Linux. La primer generación fue ipfw, creada para BSD UNIX y portada para Linux. Uno de los objetivos de NetFilter es proveer una infraestructura de filtrado de paquetes dedicada que los usuarios y desarrolladores pudieran instalar como agregado en el kernel de Linux
Filtrado de paquetes con NAT
Es posible efectuar el filtrado de paquetes junto con la Traducción de Direcciones de Red sin causar dificultades a ninguna de las dos funciones. La función de filtrado de paquetes se diseña ignorando por completo cualquier traducción de direcciones que se lleve a cabo ya que ésta última se realiza entre la entrada / salida de datos en el borde de la red y el filtrado de paquetes. Las direcciones captadas por el filtro serán las direcciones origen y destino reales.
Control de Acceso de Conexiones
Este mecanismo controla y retransmite conexiones TCP manteniendo registro del estado de todos los paquetes que agrupan tal conexión, de forma que solo aquellos hosts externos confiables puedan establecer conexiones con aquellos dispositivos habilitados a ofrecer un servicio a tales usuarios. De la misma forma es posible restringir las conexiones originadas en la red interna con destino a ciertos sitios de la red externa. Esta función es realizada por un proceso proxy instalado en un gateway que interconecta la red interna con la red pública. Estos dispositivos son llamados gateways a nivel de circuitos. (ver Figura 8)
Una alternativa a mantener el contexto de cada paquete es utilizar tablas dinámicas basadas en las banderas SYN/ACK del encabezado de los paquetes TCP. En esta forma, la tabla de reglas se genera a medida que un host interno solicita una conexión con un sitio externo por lo que el gateway asume la política de reenviar solo aquellos paquetes entrantes que pertenezcan a conexiones iniciadas desde el interior y rechazar aquellas iniciadas en el exterior (similar a la estrategia lograda con NAT dinámico).
Mediante el uso del proxy, los sistemas internos no podrán establecer conexiones directas con el exterior sino por intermedio del proxy; quien solicite una conexión, se conectará a un puerto TCP del gateway, luego el proxy determinará si la conexión es permitida o no, basado en un conjunto de reglas de acceso que utilizan información del encabezado del paquete TCP, luego (si la conexión fue aceptada) el gateway crea una conexión al dispositivo interno final. En este caso, el gateway retransmitirá todos los paquetes involucrados en la conexión.
Estos gateways pueden implementar algunos mecanismos de control de acceso tales como autenticación e intercambio de mensajes de protocolo entre cliente y proxy para establecer ciertos parámetros del circuito.
El control de acceso de conexiones no es del todo transparente ya que los usuarios deben ser configurados para dirigir todas sus solicitudes al dispositivo que implemente esta función.
La ventaja del mecanismo de filtrado a nivel de circuitos es que provee servicios para un amplio rango de protocolos aunque requiere software especial en el cliente, lo que lleva al problema de que la seguridad basada en hosts no es escalable (con una arquitectura de seguridad perimetral). A medida que crece la red, la administración de la seguridad de los clientes se hace más compleja por lo que demora más tiempo llevarla a cabo y propensa al error; esto si no se efectúa un control central e implementado de forma distribuida.
Figura 8 - Control de Acceso de Conexiones en un Gateway
Filtrado de Datos de Aplicación
Este mecanismo interpreta los datos encapsulados en los paquetes correspondientes a protocolos de aplicación particulares para determinar si deben o no deben ser procesados por la aplicación correspondiente, ya que pueden contener datos que afecten el buen funcionamiento de las mismas. La función de seguridad ofrecida por este mecanismo es mucho más segura que las anteriores (ver Figura 9)
Son implementados por servicios proxies instalados en gateways, llamados gateways a nivel de aplicación. Proveen una barrera de seguridad entre los usuarios internos y la red pública. Los usuarios de la red interna se conectan al filtro de datos de aplicación, quien funciona como intermediario entre diferentes servicios de la red externa y el usuario interno.
Figura 9 - Filtrado de Datos de Aplicación en un Gateway
Son implementaciones de propósito especial que intentan ofrecer servicios de seguridad a las aplicaciones que procesen tales datos. Son específicos de la aplicación, es decir que se necesita un proceso proxy para cada aplicación. Esto presenta una desventaja de implementación. Aunque solo algunos programas o protocolos de aplicación necesitan ser analizados (por Ej. FTP y protocolos de correo electrónico, ICMP) ya que otros no presentan peligros de seguridad. El correo electrónico puede ser dirigido a través de estos dispositivos, sin importar que tecnología se utilice en el resto del firewall. También hay que tener en cuenta que el tipo de filtrado usado depende de las necesidades locales. Un sitio con muchos usuarios de PC debería analizar los archivos que reciba por posibles virus.
Además presentan otra ventaja, que en algunos ambientes es bastante crítica: el registro de todo el tráfico de entrada y salida es simple implementar.
1. Es común encontrar en la literatura que estos dispositivos sean llamados genéricamente “firewalls”. Este término es más apropiado para una arquitectura de seguridad que involucra estos dispositivos así como otras funcionalidades adicionales.
2. Los términos “control de acceso” y “filtrado” se refieren a la misma función, aceptar o denegar el ingreso de determinados datos, en cualquier forma que se presenten (un paquete independiente, una solicitud de conexión o simples datos). La elección de uno u otro término para cada nivel es solo una cuestión del criterio del autor.