Aspectos de seguridad para ofrecer acceso a Internet

Introducción

Esta sección está dedicada al caso en el que se desee dar acceso a Internet a un conjunto de ordenadores. Esta situación puede darse en el caso de una empresa u organización que quiere conectar a sus empleados a Internet o en el caso de que se desee montar un proveedor de servicios de Internet (ISP).

En la sección anterior se habló en general de aplicaciones de protección. Ahora es necesario distinguir entre los diferentes mecanismos que pueden ofrecerse para conseguir esta protección: filtros de paquetes, "TCP wrappers", etc.

Cabe destacar que todo lo dicho para el caso de acceso de ordenadores individuales a Internet, sigue siendo válido para este caso más general. Por un lado todos los ordenadores a los que se de acceso a Internet podrían aplicar los mecanismos descritos en el apartado anterior para controlar individualmente su seguridad. Por otro el sistema que sirva de punto de acceso podrá aplicar esas mismas técnicas o similares para protegerse a si mismo y ofrecer una protección global a la red interna.

La principal diferencia es que ahora la preocupación no es por un ordenador individual sino por toda una red. Por ejemplo, en el caso de un virus de mail el objetivo será evitar que llegue a ninguno de los ordenadores de la red a la que se da acceso. Si bien, cabe la posibilidad de proteger individualmente cada uno de los ordenadores es mucho más eficiente (en tiempo y dinero) solucionarlo de forma general para todos, instalando las herramientas adecuadas en los sistemas a través de los que accede toda la red.

También adquieren importancia algunas nuevas amenazas que no eran necesario considerar en el caso de acceso con un ordenador individual. Algunas de ellas se describen a continuación.

Un caso que se da con excesiva frecuencia ocurre cuando los usuarios de una red local usan las posibilidades que ofrecen sus sistemas operativos para compartir ficheros. Si en un momento dado la red local se conecta a Internet los usuarios pueden no ser conscientes de que están compartiendo sus ficheros con cualquier ordenador conectado a Internet. Esta es una amenaza de acceso no autorizado a información y esta información puede ir desde claves de acceso, información personal (económica por ejemplo), datos confidenciales de la empresa, etc. El asunto se agrava por el hecho de que aunque una persona de la red local tenga cuidado con su información compartida es posible que otra a la que le pasa esta información no haya tenido cuidado y al final una persona no autorizada puede acceder a ella.

Además de las amenazas enumeradas en la sección anterior pueden citarse otras dos que pueden tener bastante gravedad:

Sistemas de cortafuegos

En la sección anterior ya se comenzó el tratamiento de los sistemas de cortafuegos. Sin embargo entonces el tratamiento era desde el punto de vista del uso que podía darle un individuo para proteger su ordenador conectado a Internet.

Ahora se profundizará en estas herramientas para abarcar el caso de un cortafuegos que se sitúa entre Internet y una red local a la que debe proteger.

Podemos clasificar los cortafuegos en dos tipos genéricos:

Filtros de paquetes ("packet filters")

En los que se controla el envío, recepción y retransmisión de los paquetes TCP/IP que atraviesan el cortafuegos. Dentro de este tipo se encontrarían los filtros de paquete con inspección de estados que incorporarían el conocimiento del estado de las comunicaciones al filtrado de éstas.

Pasarelas de aplicación ("application proxies")

En este esquema la comunicación no se realiza nunca directamente contra la aplicación (servidor web, correo electrónico, ...). La conexión del sistema remoto se realiza contra la pasarela instalada en el cortafuegos. Esta comprueba la operación que se desea realizar sobre la aplicación, permitiendo de esta forma un control del origen, destino y contenido de la comunicación.

Envoltorios TCP (TCP Wrappers)

Estos filtros se sitúan entre la red y cada una de las aplicaciones que escuchan peticiones de la red. Se denominan así porque se sitúan al nivel del protocolo de transporte de Internet, TCP (ver glosario)

En los sistemas UNIX, y GNU/Linux no es una excepción, el filtro TCP más utilizado es tcpd de Wietse Venema. Esa herramienta permite especificar desde que ordenadores se podrá conectar y desde cuales no a cada uno de los servicios de nuestro ordenador.

Lo más habitual es pensar que un ordenador de usuario final no tiene ningún servicio y por tanto esta protección no es necesaria, pero esto no es así. Como se ha dicho, por defecto hay diversos servicios de red activados. E incluso aunque se desactiven, en todo sistema operativo de red hay aplicaciones que 'abren' servicios para sus propios propósitos.

La configuración de tcpd es muy sencilla y por ello no existe ninguna herramienta específica para realizarla. Se basa en dos archivos, /etc/hosts.allow y /etc/hosts.deny donde se especifica desde donde se permite y desde donde no se permite respectivamente acceder a cada servicio. Además, estas definiciones pueden ser comprobadas con las herramientas tcpdchk y tcpmatch para verificar los posibles casos de uso.

Uno de los puntos débiles de tcpd y sus herramientas auxiliares es la falta de una herramienta de configuración de fácil uso y que integre todas las posibilidades que ésta ofrece. Sin embargo, con la importancia creciente que se está dando a este aspecto dentro del mundo del software libre es posible que aparezca alguna pronto.

Filtros de paquetes

Un filtro de paquetes puede admitir, rechazar o simplemente descartar los paquetes que le llegan con destino a una red interna o salientes desde ésta. Estas decisiones se toman en función de una serie de reglas establecidas por el administrador. Estas reglas pueden basarse, en principio, en la siguiente información contenida en un paquete:

  • Direcciones origen y destino

  • Puertos TCP origen y destino

  • Protocolo empleado

Una generación posterior de los cortafuegos de filtrado de paquetes puede incorporar una tecnología conocida como "inspección de estados" que permite validad los paquetes en función del estado de la conexión. Es decir, los paquetes TCP podrán rechazarse si no siguen el protocolo establecido ("three-way handshake"), por ejemplo, si se envía un paquete FIN sin haber establecido una comunicación previamente. Igualmente, acercándose cada vez más a los cortafuegos de pasarela de aplicación, se podrá limitar una comunicación a nivel de aplicación si no sigue el protocolo correcto, por ejemplo, el envío de un LS en una comunicación FTP sin haber realizado previamente la autenticación con el comando USER.

GNU/Linux (y también las distintas versiones de BSD) disponen de sistemas de filtrado de paquetes integrados en el propio sistema operativo. Esta integración ofrece una gran fiabilidad a este filtrado, ya que pasa siempre por el núcleo del sistema operativo antes de llegar a ninguna aplicación en el espacio de usuarios.

Este soporte de filtrado de paquetes viene dado por:

ipfwadm

Es la versión usada por las versiones antiguas de GNU/Linux (la serie 2.0)

ipchains

Es usado por las versiones de GNU/Linux 2.2. Contiene mejoras significativas como la posibilidad de crear grupos de reglas arbitrarios. Es decir no se limita al administrador a los típicos "input", "output" y "forward".

iptables (netfilter)

Es la nueva versión incluida (y escrita completamente desde cero) en la última serie del kernel de GNU/Linux, la 2.4. Contiene varias novedades muy interesantes. La más importante de ellas es que se implementa mecanismos de inspección de estados.

También se han hecho grandes mejoras en su gestión, que ahora es a la vez más fácil y potente. A pesar de ello iptables es compatible con versiones anteriores.

ipfw

Empleado por FreeBSD

SINUS

Es una alternativa independiente a las opciones anteriores. Es un producto bastante completo que se distribuye bajo la licencia GPL y que dispone de documentación bastante buena y herramientas de configuración propias. Para obtener SINUS o conseguir más documentación sobre él puede visitarse su página oficial.

El soporte de filtrado viene acompañado de una interfaz de administración de línea de comandos, pero además existen un número interesante de aplicaciones (gráficas en su mayoría) que facilitan su gestión. Generalmente estas aplicaciones funcionan para más de una herramientas listadas antes. Algunas de estas, pensadas para usuarios finales sin conocimientos profundos de seguridad han sido descritas en la sección anterior. Las herramientas que aquí se indican siguen siendo de gran ayuda para el administrador de red que tiene que configurar un cortafuegos por cuanto permiten una configuración más versátil de las reglas de este tipo de cortafuegos.

Generalmente el cortafuegos se sitúa en el sistema que actúa de encaminador (router) y que de todas formas es necesario, así que no es imprescindible incorporar hardware extra a la arquitectura de conexión.

gfcc

Permite configurar reglas de ipchains e ipfwadm de forma gráfica pero dejando al administrador el mismo control que la herramienta de línea de comandos. Para usar esta herramienta es necesario conocer la filosofía de funcionamiento de ipchains o ipfwadm.

ipmenu

Es una interfaz de usuario basada en la librería ncurses. En otras palabras es una interfaz textual basada en menús. A pesar de no ser gráfico es fácil de usar a la vez que potente en flexible. Está pensado para configurar iptables y permite desde una única interfaz configurar el filtrado y modificación de paquetes, la traducción de direcciones (NAT) y las características de encaminamiento (iproute2).

A continuación se muestra una captura de ipmenu. En ella se puede apreciar la gran potencia de esta herramienta.

Figura 5. Uno de los menús de ipmenu (Fuente: página oficial)

Para obtener más información sobre ipmenu se recomienda visitar su página oficial.

Easyfw

Esta es una herramienta gráfica bastante fácil de usar. Tras establecer la dirección de la interfaz interna y la dirección de la interfaz externa se pasa a configurar de forma independiente reglas para los paquetes entrantes (input rules), salientes (output rules) o que van a ser reenviados (forwarding rules).

Además dispone de la funcionalidad adicional de permitir almacenar varias configuraciones e incluso añadir comentarios a cada una para identificarlas fácilmente.

Easyfw incluye soporte para GNU/Linux únicamente, en concreto para ipfwadm e ipchains.

A continuación se incluye una captura de pantalla de la herramienta. Para obtener más información y obtener el programa se puede consultar su página web.

Figura 6. Pantalla principal de easyfw (Fuente: página web oficial)

Knetfilter

Es una interfaz interfaz de usuario de configuración de cortafuegos para el escritorio KDE. Es muy completo permitiendo realizar configuraciones comunes rápidamente a la vez que configuraciones más complejas y personalizadas.

Una característica muy interesante es su posible integración con tcpdump para examinar los paquetes que transcurren por la red y con nmap para realizar un escaneo para comprobar la fiabilidad del cortafuegos una vez configurado. Más adelante se describirán con más detalle estas herramientas.

Cabe notar que knetfilter sólo se encuentra disponible para la versión 2.4 de Linux.

Figura 7. Escritorio mostrando varias ventanas de knetfilter durante la configuración de un cortafuegos.

Knetfilter puede obtenerse en http://expansa.sns.it/knetfilter/. Esta página por contra no incluye mucha información sobre esta aplicación.

FERM

Esta es una herramienta de ayuda a los administradores que tienen que mantener cortafuegos muy complejos. FERM permite almacenar todas las reglas en un fichero y cargarlo empleando un comando. Este fichero de configuración tiene una sintaxis similar a un lenguaje de programación partiendo crear listas y agrupación por niveles de las reglas.

FERM se distribuye bajo la licencia GPL.

Puede obtenerse el software y más información sobre Lokkit en página oficial de la herramienta.

Mason

Ofrece una forma de configuración de cortafuegos de una forma enormemente original. Básicamente permite configurar un cortafuegos aprendiendo a partir de tráfico real generado en la red donde se desea que actúe el cortafuegos. La idea es instalarlo e ir generando tráfico de todos los tipos que se desea considerar a la vez que se indica si debe permitirse su paso o no.mason puede ser integrado con gfcc (ver http://www.govirtual.com.au/gfcc+mason.html).

PHP firewall generator

Esta herramienta está pensado para ser instalado en un ordenador propio con soporte para PHP (ver glosario). Se accede a ella a través de un navegador y mediante una serie de formularios se configuran directamente las reglas de filtrado del cortafuegos.

Esta aplicación se distribuye bajo licencia GPL y está alojado en SourceForge y su página del proyecto puede encontrarse en la dirección http://phpfwgen.sourceforge.net

A continuación se muestra una captura bastante completa que incluye la ventana principal y dos ventanas auxiliares, una con una lista de reglas (abajo) y otra editando una de estas reglas (arriba a la derecha).

Figura 8. Varias ventanas configurando un cortafuegos con PHP Firewall Generator

Una última opción interesante es Firewall configuration toolkit (TCP) que puede obtenerse en fct.linuxfirewall.org . Una vez instalado puede configurarse un cortafuegos rellenando información sobre la política de seguridad deseada a través de una interfaz web.

Cortafuegos propietarios

Una alternativa propietaria a los cortafuegos libres presentados es Firewall-1 de Check Point. Puede obtenerse más información de este cortafuegos en http://www.checkpoint.com/products/firewall-1/. Este es uno de los cortafuegos líderes del mercado, junto con el módulo de cortafuegos PIX de Cisco. Las capacidades de ambos son, en principio, similares a los productos presentados previamente aunque dirigidos a una solución completa que integra muchas otras funciones que las que se podrían, en principio, atribuir a un cortafuegos de filtrado. En el caso de Firewall-1, dispone de un software de gestión y monitorización del cortafuegos (que en los productos de software libre son funciones separadas debido a la habitual arquitectura modular de UNIX), generación de redes privadas virtuales (VPN), integración con software de alta disponibilidad, y capacidades de filtrado de URLs y código malicioso, del que carecen en principio, las tecnologías anteriores (aunque pueda ser un componente proporcionado por otros proyectos de software libre su integración no es inmediata).

Pasarelas de aplicación ("proxies")

Este tipo de herramientas se instalan en sistemas intermedios entre los ordenadores finales de la red interna e Internet. Cuando se desea conectar con el exterior se debe hacer a través de la pasarela, que será la que realmente se comunicará con los ordenadores externos. Cuando reciba una respuesta de estos la reenviará al ordenador interno que inició la conexión. La forma de hacer esto es específica de cada aplicación y por tanto sólo podrá usarse la pasarela con aquellas aplicaciones específicamente soportadas por esta. Las aplicaciones más usuales como la navegación por el web (HTTP) o el correo electrónico están soportadas por un gran número de pasarelas.

La gran ventaja de este esquema es que se tiene un control global sobre la seguridad y además este control se tiene a nivel individual sobre cada una de las aplicaciones. Esto permite comprender y mantener el estado en el que se encuentra una comunicación y con ello reconocer y evitar un mayor número de ataques.

Pero las pasarelas de aplicación también tienen inconvenientes. Una de ellas es precisamente que requiere una configuración específica para cada uno de los usos que se van a hacer de la red: HTTP, FTP, telnet, correo, news, etc. Además las aplicaciones finales de los usuarios deben estar preparadas para usar la pasarela como sistema intermedio para llegar a un destino. Afinando un poco más, en realidad esta última afirmación no es del todo cierta. Últimamente han aparecido las pasarelas transparentes que con algo de ayuda del sistema operativo permiten que las aplicaciones no tengan que ser modificadas.

En este tipo de cortafuegos, las implementaciones propietarias son múltiples destacando Gauntlet Firewall de PGP, y Raptor Eagle de Axent. Estos cortafuegos incorporan generalmente capacidades mixtas de proxy y de cortafuegos de filtrado (aunque no estén diseñados específicamente para esta función), pudiéndose establecer reglas de filtrado, de traducción de direcciones, redirección de puertos... De igual forma, dado que se hace una inspección de los contenidos, pueden integrarse con otras soluciones para categorización y filtrado de URLs, análisis de código malicioso, capacidades de antivirus, etc. Existe, por ejemplo, una plataforma de e-ppliance de la compañía Nokia basada en Gauntlet para ofrecer una solución antivirus de caja negra. En cualquier caso, es habitual encontrar en estos cortafuegos propietarios capacidades de establecimiento de redes privadas virtuales y de alta disponibilidad. Aunque ésta última característica aún está poco desarrollada en las implementaciones propietarias de estos cortafuegos.

Las implementaciones de tecnología proxy, en el campo de software libre, están, sin embargo, muy retrasadas frente a las implementaciones propietarias. En el caso del cortafuegos Gauntlet, se disponen de proxies a nivel de aplicación para más de treinta servicios distintos (desde http hasta bases de datos Oracle, servicios de X, whois, finger, correo...). Existen proxies disponibles en software libre para los servicios de http, DNS, X, correo, FTP e IRC, pero no existe un paquete integrado que los ofrezca todos de forma conjunta con una interfaz de administración única. Además, las capacidades de control de estos proxies están lejos de igualarse a las ofrecidas por los cortafuegos de proxy propietarios.