bastion-firewall Instalar 1.0

Copyright © 2004 Jose María López Hernández <jkerouac@bgsec.com>

Copyright © 2004 bgSEC (www.bgsec.com)

Este documento esta protegido bajo la licencia pública FDL de la Free Software Foundation.

bastion-firewall ha sido liberado bajo la licencia pública GPL de la Free Software Foundation.

El titular del copyright da permiso para que este documento sea copiado, distribuido y/o modificado bajo los terminos de la GNU Free Documentation License (FDL), siempre que se incluya una nota donde se especifiquen los autores originales del documento y el título del mismo. El texto de la licencia en inglés se incluye en este mismo documento y tiene validez legal plena.

Este documento y cualquier código fuente que se incluya se distribuyen con la esperanza de que resulten útiles, pero SIN NINGUNA GARANTIA; sin incluso la garantía implícita de COMERCIALIZACIÓN o ADECUACION PARA UN PROPÓSITO EN PARTICULAR. Si necesita más detalles consulte la GNU Free Documentation License (FDL) y la GNU General Public License (GPL) de la Free Software Foundation.



Tabla de Contenidos

Sobre bastion-firewall
Sobre los autores de bastion-firewall y este tutorial

  1. Introducción
  2. Características de bastion-firewall
  3. Conceptos de bastion-firewall
  4. Información general sobre la instalación
  5. Instalación desde rpm
  6. Instalación desde archivo tar.bz2
  7. Instalación desde código fuente
  8. Instalación de los programas de firewall stressing


Sobre bastion-firewall

bastion-firewall es un firewall desarrollado por Jose María López Hernández <jkerouac@bgsec.com> y bgSEC (www.bgsec.com) basado en Netfilter e iptables y liberado bajo la licencia GPL de la Free Software Foundation.

bastion-firewall  está pensado como firewall llave en mano para usuarios finales así como firewall completamente customizable para usuarios avanzados. La configuración por medio de ficheros bash permite una gran flexibilidad en la generación de reglas. El código del firewall esta escrito en un 99 por ciento en bash, con una pequeña parte en C para obtener los datos de Netfilter y generar las paginas con las gráficas de estadísticas de tráfico, este planteamiento permite a un usuario que pueda programar en bash el cambiar bastion-firewall para adaptarlo a cualquier sistema de producción. bastion-firewall ha sido liberado por bgSEC bajo licencia GPL y su documentación bajo licencia FDL, así que puede cambiar cualquier aspecto de bastion-firewall y usarlo en su sistemas de producción o liberarlo bajo licencia GPL manteniendo el Copyright original.

Como ejemplo de la flexibilidad de bastion-firewall bgSEC ha liberado UNbeatABLE CD bajo licencia GPL, una adaptación de la distribución Knoppix 3.3 con bastion-firewall integrado y que permite usar el firewalll desde el CD sin necesidad de disco duro. UNbeatABLE CD es una demostración de tecnología y debe considerarse como tal, puede tomarse como ejemplo de la flexibilidad del código o como punto de partida para generar firewalls ad-hoc para sistemas de producción.

bastion-firewall 1.0 ha sido considerado apto para sistemas de producción y se encuentra funcionando en varias máquinas con buenos resultados, también ha sido utilizado para generar scripts que son firewalls en si mismos y que después de editados y adaptados se encuentran funcionando en sistemas de producción con éxito.

bastion-firewall 1.0 ha sido desarrollado en España por Jose María López Hernández <jkerouac@bgsec.com> y bgSEC (www.bgsec.com) y por tanto los ficheros de configuración, la documentación y los comentarios del código están en español. Desde el comienzo del proyecto se pensó en traducir todo el firewall al idioma ingles, y se han adaptado las ordenes y los nombres de los ficheros para facilitar el cambio de idioma sin tener que cambiar la estructura general del firewall. En este momento se encuentran traducidos al ingles los ficheros de configuración con toda su ayuda, las páginas de manual, la ayuda de las órdenes, parte del interface gráfico bastion-firewall-interface y bastion-firewall-stats en su totalidad. También se han traducido los ficheros que acompañan a la distribución y la guía rápida de configuración. Esto debería bastar para que los angloparlantes puedan usar bastion-firewall sin ningún tipo de problemas, pero queda en el TODO la traducción completa de los comentarios del código, del tutorial, de la ayuda y completar la traducción del interface gráfico bastion-firewall-interface.


Sobre los autores de bastion-firewall y este tutorial

bastion-firewall, bastion-firewall-interface y bastion-firewall-stats han sido creados por Jose María López Hernández <jkerouac@bgsec.com> y bgSEC (www.bgsec.com) y liberados bajo licencia GPL (codigo) y FDL (documentación).

bastion-firewall-interface funciona sobre el servidor HTTP apache y PHP4, deberá consultar las licencias de ambos programas si quiere utilizarlos en su sistema de producción. Tanto apache como PHP4 son Copyright de sus propietarios y no tienen ninguna relación con bgSEC, aunque sus licencias permiten que sean distribuidos junto al firewall sin modificar.

Tanto ulogd como rrdtool son parte integrante de bastion-firewall pero sus Copyright pertenecen a sus propietarios, deberá consultar sus licencias si quiere usarlos en su sistema de producción con bastion-firewall-stats. Se distribuyen sin modificar en forma binaria y codigo fuente, en los ficheros de distribución se pueden consultar las licencias de cada uno de los programas.

Los addons hogwash, snort-inline, snort, pdumpq, Netfilter e iptables y los ficheros de firewall stressing (ethereal, fragrouter, ftest/ftestd, hping2, nasl, nmap/nmapfe, sing, snot y tcpdump) son Copyright de sus propietarios y no tienen ninguna relación con bgSEC. Se aconseja su uso para probar el firewall y se distribuyen sin ninguna modificación como addons de bastion-firewall. Su uso es opcional y no forman parte de bastion-firewall, se distribuyen como binarios y como código fuente sin modificar. En la distribución de cada programa se puede consultar la licencia y el Copyright de cada uno de ellos.


1. Introduccion

bastion-firewall es un firewall completo para el Sistema Operativo Linux basado en Netfilter e Iptables. Las premisas sobre las que se ha desarrollado bastion-firewall son las siguientes:

2. Características de bastion-firewall

Las características principales de bastion-firewall son entre otras:

Estas son simplemente las características más importantes de bastion-firewall, para más información consultar los ficheros de configuración y si tiene conocimientos de bash el codigo de firewall. De cualquier forma la manera más gráfica de ver como funciona el firewall es configurandolo someramente y luego estudiando el script que se ha creado, y comparando las opciones que hemos especificado con las reglas iptables que se han quedado. También podemos ver con iptables -L como se organizan las reglas, pero puede ser complicado seguir el flujo del tráfico en este momento, todo esto se explicará en las siguientes secciones.



3. Conceptos de bastion-firewall


El funcionamiento de un firewall es simple, se trata de un dispositivo que se introduce entre dos redes y que regula el tráfico que puede pasar de una red a otra, teniendo en cuenta una serie de reglas predeterminadas que indican que tráfico debe pasar y que tráfico debe bloquearse. Estas reglas pueden indicar que se bloquee o se permita el tráfico según una serie de parámetros que pueden ser entre otros: la dirección de origen, la dirección de destino, el interface de entrada, el interface de salida, el puerto de origen, el puerto de destino, etc.

bastion-firewall introduce el concepto de flujos de tráfico, entendiendo por flujo el flujo de datos que va de una red o una máquina a otra red u otra máquina, atravesando siempre el firewall. Estos flujos de datos se ordenan por medio de cuatro datos, el interface de entrada, el interface de salida, la red de origen y la red de destino, con lo que tenemos los siguientes flujos de datos:

lan-to-fw : Tráfico de la red LAN interna al firewall
fw-to-lan : Tráfico del firewall a la red LAN interna
ext-to-fw : Tráfico de la red EXT externa al firewall
fw-to-ext : Tráfico del firewall a la red EXT externa
lan-to-ext : Tráfico de la red LAN interna a la red LAN externa
ext-to-lan : Tráfico de la red EXT externa a la red LAN interna

Y por último un tipo de flujo especial que sirve para hacer DNAT (Destination Network Address Translation) de una red o maquina exterior de la red EXT a una maquina de la red LAN interna:

ext-to-dnat : Tráfico DNAT de la red EXT externa a una máquina de la red LAN interna

Estos tráficos son los que incluiremos en las variables de la configuración para habilitar el tráfico en una dirección para un flujo de datos, teniendo en cuenta que luego pueden llevar las siguientes opciones:

:drop  Bloquear el tráfico (para hacer solo log o estadísticas de trafico)
:log  Hacer log de las conexiones para este tipo de tráfico
:stats  Sacar estadísticas para este tipo de tráfico (para luego crear gráficas de tráfico)
:ulog  Mandar el trafico a ulogd para que cree un log en una base de datos o en un fichero de texto plano

Estos flujos de tráfico son para EL INICIO DE LA CONEXION, pues como el firewall usa la facilidad de Connection Tracking (conntrack) de Netfilter el tráfico de vuelta se permite siempre que se haya permitido el inicio de la conexión.

Por ejemplo: ext-to-lan:log:stats permitiría que se iniciara una conexión desde la red exterior EXT a la interior LAN y el trafico entre la red EXT y LAN y también por medio de conntrack el tráfico de LAN a EXT. Conntrack es lo suficientemente hábil como para llevar cuenta de las conexiones y sólo habilita el tráfico para una conexión en particular, por lo que se habla de Stateful Firewall (Firewall con estado), pues recuerda cuando se ha establecido una conexión (estado ESTABLISHED) e incluso cuando es otra conexión relacionada con la primera, como en el ftp (estado RELATED). El firewall permite por tanto con esta regla el trafico de EXT a LAN  por ser el inicio de la conexión y el de LAN a EXT por ser ESTABLISHED. Además el firewall apunta en los logs en el inicio de la conexión y crea estadísticas de todo el tráfico que se produce en la conexión. Netfilter guarda una tabla en /proc/net/ip_conntrack con las conexiones aceptadas, las establecidas y las relacionadas, para mantener en todo momento el estado del firewall y saber que conexiones permitir y cuales no.

Graficamente los tipos de tráfico que tenemos son:


trafico

donde cada tipo de tráfico es el explicado más arriba, y se entiende que cada dirección de tráfico indica el inicio de la conexión, habilitandose el tráfico en el sentido contrario por medio de Connection Tracking.

Veamos tres ejemplos gráficamente de flujos o direcciones de tráfico:

lan-to-ext


lan-to-ext


fw-to-lan

fwtolan


fw-to-ext


fwtoext




4. Información general sobre la instalación

bastion-firewall viene en dos versiones, la version en español y la version semi-traducida al ingles. Descargue de bgSEC (www.bgsec.com) la más conveniente según su idioma y proceda a la instalación según estas instrucciones.

El programa se distribuye en tres formatos, como paquetes rpm para distribuciones de tipo RedHat o deb para distribuciones de tipo Debian, como paquetes .tar.bz2 archivados con tar y comprimidos con bzip2 y como código fuente. Lo más conveniente es usar las distribuciones binarias, sean en forma de paquetes rpm o deb o como paquetes tar.bz2, pues es mucho más sencilla que la instalación desde el código fuente, que sólo debería usarse si no funcionan alguno de los paquetes binarios distribuidos o queremos realizar modificaciones en la distribución de bastion-firewall.

Los paquetes que tenemos son los siguientes:

Sistema base


Addon para el Interface a través de web


Addons integrados con bastion-firewall


Addons independientes no integrados con bastion-firewall


Deberá descargar obligatoriamente los dos primeros, y luego los addons que considere necesarios, en concreto es muy interesante contar con el addon para el Interface Web y los addons para ulogd y snort-inline. Luego deberá instalarlos en su sistema.


5. Instalación desde rpm o deb

Los pasos a seguir son los siguientes:

  1. Crear un usuario llamado bastion y un grupo llamado también bastion, puede usar adduser en RedHat por ejemplo para este cometido.
  2. Instalar los paquetes que haya elegido con rpm -i nombre_del_paquete.rpm para RedHat o dpkg -i nombre_del paquete.deb para Debian. Puede usar --nodeps si pregunta por otros paquetes
  3. Añadir si se considera necesario a los scripts de arranque los scripts de bastion-firewall, en RedHat puede hacerse con chkconfig.
  4. Configurar bastion-firewall con los ficheros de configuración o usando el Interface Web (debe haber arrancado primero el interface para esto)
  5. Arrancar bastion-firewall, el sistema de estadísticas y los addons de bastion-firewall.


6. Instalación desde archivo tar.bz2

Los pasos a seguir son los siguientes:
  1. Descomprimir los paquetes .tar.bz2 con la orden tar xjvf nombre_del_paquete.tar.bz2, se crearan una serie de directorios que se llamarán igual que el paquete pero sin la extensión .tar.bz2.
  2. Entrar en cada directorio y ejecutar la orden ./install.sh que instalará el programa o el addon en el sistema, copiando los ficheros necesarios y creando los directorios necesarios para bastion-firewall.
  3. Crear un usuario llamado bastion y un grupo llamado también bastion, puede usar adduser en RedHat por ejemplo para este cometido.
  4. Añadir si se considera necesario a los scripts de arranque los scripts de bastion-firewall, en RedHat puede hacerse con chkconfig.
  5. Configurar bastion-firewall con los ficheros de configuración o usando el Interface Web (debe haber arrancado primero el interface para esto)
  6. Arrancar bastion-firewall, el sistema de estadísticas y los addons de bastion-firewall.


7. Instalación desde código fuente

Para instalar bastion-firewall desde el código fuente se necesitan algunos conocimientos de como compilar un programa bajo Linux y de las complicaciones que pueden aparecer en este proceso, además necesitaremos el compilador gcc y las librerías necesarias para cada programa o addon.

Los pasos a seguir son los siguientes:

  1. Descomprimir los paquetes .tar.bz2 con la orden tar xjvf nombre_del_paquete.tar.bz2, se crearan una serie de directorios que se llamarán igual que el paquete pero sin la extensión .tar.bz2.
  2. Para el sistema base basta con entrar en el directorio y ejecutar la orden ./install-redhat.sh o install-debian.sh según la distribución que tengamos que instalará el programa en el sistema, copiando los ficheros necesarios y creando los directorios necesarios para bastion-firewall. bastion-firewall está escrito en bash y no necesita ser compilado. Este comando instalará también los scripts de inicio de bastion-firewall en /etc/rc.d/init.d para RedHat o /etc/init.d para Debian.
  3. Entrar en cada directorio y ejecutar la orden ./compile.sh que ejecutará el script configure de cada addon y luego make y make install para instalar el programa o el addon en el sistema, copiando los ficheros necesarios y creando los directorios necesarios para bastion-firewall. También puede hacerse a mano usando los scripts que vienen en el directorio build para cada programa o addon y que ejecutan la orden configure con los parámetros correctos, y luego ejecutando make y make install, y realizando los cambios que se consideren necesarios. La compilación de los addons puede llevar una gran cantidad de tiempo y espacio en el disco duro.
  4. Crear un usuario llamado bastion y un grupo llamado también bastion, puede usar adduser en RedHat por ejemplo para este cometido.
  5. Añadir si se considera necesario a los scripts de arranque los scripts de bastion-firewall, en RedHat puede hacerse con chkconfig.
  6. Configurar bastion-firewall con los ficheros de configuración o usando el Interface Web (debe haber arrancado primero el interface para esto)
  7. Arrancar bastion-firewall, el sistema de estadísticas y los addons de bastion-firewall.


8. Instalación de los programas de firewall stressing


Se incluye un último paquete con bastion-firewall llamado bastion-firewall-fwstressing.tar.bz2 que contiene un directorio con una serie de scripts que permiten configurar de forma adecuada una serie de programas de firewall stressing (prueba de firewalls) como por ejemplo nmap, ethereal, hping2 y similares. El usuario deberá descargar de los sitios web que se indican en la página web cada programa y usar los scripts para configurarlos (o configurarlos a mano) y luego compilarlos con las ordenes make necesarias. Algunos de estos programas pueden estar ya en su sistema y no necesitar ser compilados.