Victoriano Giralt
Resumen
Hemos detectado la necesidad de disponer de equipos de bajo coste y capacidades diversas, que incluyan entre sus funciones la posibilidad de conectar con Internet por la red telefónica conmutada y de encaminar los paquetes generados en la red local, con o sin enmascaramiento.
Dado que para realizar el enmascaramiento de la red local se utiliza el mismo paquete que para controlar el filtro de paquetes IP (ipchains), y dado el incremento de ataques que se ha producido en fechas recientes, hemos decidido centrar el desarrollo sobre un cortafuegos.
Sabemos de la existencia de desarrollos como Linux Router pensados para la realización de equipos de routing con Linux. Pero, estos desarrollos adolecen de la falta de facilidad de configuración de otras distribuciones Linux y de flexibilidad para añadir facilidades o capacidades a un sistema de mayor envergadura.
Por ello, hemos basado nuestro trabajo en una distribución estándar: RedHat 6.0 y su equivalente Eurielec 3.0, que añade la ventaja de incluir soporte en español. Así, hemos preparado un paquete RPM con soporte para configurar interfaces PPP y las facilidades de cortafuegos. En los bloques de configuración hemos creado nuevos conjuntos de paquetes específicos para el propósito de nuestro desarrollo.
Objetivos
- Obtener un sistema de fácil configuración para convertir equipos de bajo costo en routers para conectar redes locales a Internet, por medio de la red telefónica.
- Añadir facilidades de cortafuegos a dicho router con la misma simplicidad.
- El sistema debe poderse añadir a configuraciones de cualquier tamaño.
- Debe basarse en distribuciones estándar, para poder instalarlo como parte de una política global.
- Debe ser fácil de gestionar, requiriendo pocos ficheros de configuración y que sean sencillos
Descripción del sistema
El sistema se basa en una distribución estándar de Linux, inicialmente Eurielec 3.0 (equivalente a RedHat 6.0, con procedimientos de instalación y documentación en castellano), sobre la cual se instala un paquete RPM que configura determinados elementos del sistema operativo de forma simple.
Módem
Es el elemento físico fundamental para la conexión a Internet por medio de la red telefónica, primera finalidad del sistema. Al configurar VFW, se busca el fichero /dev/modem, si existe se utiliza y, si no, se preguntará al usuario por la línea serie a la que está conectado dicho dispositivo.
Interfaz PPP
Para que el sistema pueda conectar a Internet por medio de la red telefónica, es necesario configurar un interfaz PPP de tal manera que realice las conexiones a demanda. En un Linux basado en RedHat esto se define en/etc/sysconfig/network-scripts/ifcfg-ppp0(si es el único interfaz PPP, suposición válida inicialmente en nuestro caso).
VFW puede utilizar un interfaz PPP preexistente, verificando que tiene las opciones necesarias para el funcionamiento de la conexión bajo demanda:
OPTIONS=demand idle 180
Es decir, que funcione a demanda y que desconecte a los tres minutos de no enviar o recibir ningún paquete por el interfaz.
En caso de configurar el interfaz, VFW crea los dos ficheros necesarios para el funcionamiento de un interfaz PPP:
- ifcfg-ppp0
- chat-ppp0 (fichero para el establecimiento de la llamada)
Con esta configuración, el interfaz PPP0 está disponible en el sistema para poderlos activar y desactivar con los comandos normales (ifup e ifdown) y, además, cuando esté activo funciona bajo demanda, es decir, realiza una conexión automática cada vez que el sistema envía paquetes hacia la ruta por defecto, que será el interfaz PPP0.
Filtro de paquetes del núcleo
Una vez que el sistema es capaz de conectar a Internet a través del interfaz PPP, es necesario cumplir dos objetivos:
- Conectar la red local al exterior
Proteger al servidor de conexiones hostiles
- Las conexiones internas al sistema y desde la red local, tanto con destino en el propio sistema como con destino exterior, se permiten todas, tanto TCP como UDP e ICMP.
- Los paquetes ICMP de origen externo se permiten todos excepto las peticiones de echo (echo-request), dada la proliferación de ataques basados en ping.
- Por UDP sólo se permiten paquetes externos para el servicio de nombres.
- Por TCP sólo se permiten las conexiones iniciadas desde el exterior para el servicio de nombres, el servicio de autentificación y flujos de datos FTP.
- Cualquier conexión que no esté permitida de forma expresa, es denegada.
Lo más común en configuraciones como la planteada, es que la red local utilice direcciones privadas, con lo cual, la salida al exterior deber· realizarse por medio de enmascaramiento (masquerading), también conocido como traducción de direcciones de red (NAT o Network Address Translation). En la serie 2.2 del núcleo de Linux esto se consigue programando las cadenas IP (ipchains) o filtro de paquetes del núcleo.
Para hacer esto, VFW, durante la configuración, determina el interfaz Ethernet por el que accede la red local, si existe más de uno, o el único del sistema. Conocido el interfaz, en tiempo de arranque del sistema, se lee su configuración del fichero correspondiente en /etc/sysconfig/network-scripts/, para poder configurar el filtro de paquetes de manera que los procedentes de la red local sean enmascarados, con la siguiente regla:
- A forward -s $REDLOCAL -d 0.0.0.0/0 -j MASQ
Siendo $REDLOCAL la dirección de red del interfaz Ethernet.
Puesto que se utiliza el filtro de paquetes para enmascarar el tráfico de la red local, y, como cada vez son más frecuentes los ataques maliciosos a los sistemas conectados a Internet, se aprovechan los servicios de cortafuego del mismo para proteger al router y a la red local.
Con este fin, se aplica un conjunto de reglas restrictivas sobre el filtro de paquetes de entrada de los interfaces del router. Con la siguiente filosofía:
Activación del servicio router-firewall
El sistema está diseñado para que se pueda activar tanto en el proceso de arranque de la máquina (runlevels 3, 4 y 5) como por el administrador del sistema. En cualquier caso, el proceso consiste en:
- Carga de la configuración
- Activación del firewall
- Activación de la conexión exterior
La configuración en sí de VFW se limita a indicar los interfaces Ethernet y PPP a utilizar y si la IP de éste último va a ser estática o dinámica. Esta configuración se encuentra en el fichero /etc/sysconfig/vfw.conf.
Antes de conectar con el exterior, el sistema carga las reglas de filtro de paquetes que le permitirán, por un lado, conectar la red interna con el exterior y, por otro, protegerse de los ataques. Las reglas están definidas en /etc/sysconfig/vfw.rules.
Como pasos previos a activar el interfaz PPP, se configura el núcleo adecuadamente, aprovechando la facilidad de reconfiguración dinámica de los núcleos de la serie 2.2. Los parámetros que se modifican son: ip_forwarding, para actuar de router; ip_always_defrag, como protección frente a ataques basados en fragmentos de paquetes; e ip_dynaddr, si es necesario, para permitir la modificación dinámica de la dirección IP asignada al interfaz PPP. Hecho esto se activa el interfaz PPP, que conectará con el proveedor de acceso cuando exista tráfico con destino externo a la red local.
Desactivación del servicio router-firewall
Bien como parte del proceso normal de parada del equipo, o bien cuando se desee que no exista conexión exterior, se puede detener el servicio VFW. Este proceso realiza las siguientes tareas:
- Desactivación del interfaz PPP
- Reconfiguración del núcleo
- Eliminar las reglas de filtrado de paquetes
Se modifican los parámetros ip_forwarding e ip_dynaddr, para no permitir dichas acciones
Reconfiguración del firewall
En caso necesario, el sistema puede recargar las reglas del filtro de paquetes mientras esté activo.
Instalación
VFW se distribuye como un paquete RPM para su instalación en un sistema basado en RedHat o que utilice el mismo sistema de configuración de red. Este paquete contiene un conjunto inicial de reglas restrictivas para el filtro de paquetes, una herramienta de configuración de conexiones y los guiones para arranque y parada del servicio. Se incluye un guión que se integra en el sistema de arranque típico SYSV, por medio de chkconfig, en los niveles 3, 4 y 5. Arranca tras la red (56) y para justo antes que ella (44).
Además del paquete RPM, hemos trabajado sobre la distribución Eurielec 3.0 para preparar tres bloques de instalación que permiten, seleccionando únicamente uno de ellos, la instalación de sistemas con VFW y alguna otra capacidad como servidor Web o servidor de fax. Este proceso está en fase muy inicial, ya que los paquetes que instala el sistema Base de Eurielec configuran un sistema bastante pesado, lo cual hace que no sea demasiado adecuado a nuestros fines. Sin embargo, creemos que es viable trabajar sobre dicha distribución para reducir el número de los paquetes instalados en el sistema Base, pasando los otros a grupos más apropiados a su función o creando grupos nuevos.
Desarrollos realizados
En este punto del desarrollo, el sistema es instalable y se ha probado su funcionamiento con los siguientes elementos disponibles:
- Interfaz básico de configuración orientado a caracteres
- Controlador del sistema
- Ficheros de configuración
- /etc/sysconfig/vfw.conf. Contiene la información sobre los interfases utilizados (ETHIF y PPPIF) y si la IP del interfaz PPP será dinámica o no (IPDYN).
- /etc/sysconfig/vfw.rules. Contiene las reglas del filtro de paquetes, en el formato adecuado para utilizarlas como parámetros del comando ipchains. Hemos preferido utilizar este sistema, aunque es más lento en el momento de la carga (una orden por regla), es más claro a la hora de mantenerlo. Por ejemplo, las siguientes líneas para impedir el ip-spoofing:
- Paquete RPM
- Distribución
Para permitir su uso en sistemas pequeños con pocos recursos, se ha basado en un guión bash con llamadas a dialog (generador de elementos de interfaz de usuario) y algunas llamadas a grep y cut.
Igualmente se basa en un guión bash con llamadas a grep. Además, utiliza setserial para configurar el puerto del módem.
Aparte de los ficheros de configuración de los interfases de red, VFW utiliza dos ficheros propios de configuración:
# Se supone que el núcleo ya nos protege, pero ...
-A input -s $REDLOCAL -i ! $ETHIF -j DENY
-A input -s ! $REDLOCAL -i $ETHIF -j DENY
Hemos creado un paquete RPM que instala los ficheros necesarios para el funcionamiento de VFW.
Tenemos una distribución Eurielec 3.0 modificada que instala VFW en el proceso normal, así como bloques de configuración para tres variedades de router: mínimo, básico y con servidor Web.
Desarrollos futuros
Entre las características que nos gustaría añadir al sistema se incluyen:
- El uso de interfaces ISDN
- La mejora de la distribución
- router mínimo (sólo conexión a Internet, 386 8MB HD 40MB).
- router básico (Internet y servicio de impresoras y fax, 486DX 16MB HD300MB).
- Un interfaz gráfica de configuración del filtro.
Esta característica incluiría tanto el uso de interfases ISDN para levantar el interfaz PPP, síncrono o asíncrono, como facilitar la configuración de las mismas.
El objetivo es disponer de una distribución que permita instalar un sistema seleccionando opciones sencillas que describan el uso al que se destinará el sistema instalado del tipo:
Victoriano Giralt
victoriano [at] uma [dot] es
Área de Sistemas y Comunicaciones
Servicio Central de Informática
Universidad de Málaga