bastion-firewall FAQ 1.0
Copyright © 2004 Jose María López
Hernández <jkerouac@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
- Introducción
- Características de
bastion-firewall
- Conceptos de
bastion-firewall
- ¿Que debo hacer para usar
bastion-firewall en mi empresa?
- ¿Puede usarse bastion-firewall
como firewall personal?
- ¿Cual es la licencia de
bastion-firewall?
- ¿Que es UNbeatABLE CD?
¿Sustituye a bastion-firewall?
- ¿Puede bastion-firewall usarse para una DMZ?
- ¿Como integro bastion-firewall y LVS?
- ¿Porque tarda tanto en cargar
la pagina de estadísticas?
- ¿Como genero
estadísticas de un servicio que quiero bloquear?
- ¿Las
estadísticas incluyen todo el tráfico para cada servicio?
- ¿Sustituye la
funcionalidad DNAT a una DMZ?
- ¿Puedo usar bastion-firewall
en Debian/Slackware/Red Flag/etc?
- ¿Debería compilar
bastion-firewall desde las fuentes o usar los binarios?
- ¿Puedo usar mi propio
servidor apache y PHP 4 para bastion-firewall-interface?
- ¿Cuanta CPU/Memoria consume
bastion-firewall-stats?
- ¿Porque mi bastion-firewall
produce errores en el codigo bash después de configurarlo?
- ¿Debo configurar
bastion-firewall desde cero o usar los templates?
- ¿Como puedo intercambiar el
flujo de tráfico y hacer que EXT sea mi red?
- ¿Puedo modificar
bastion-firewall y crear mi propio firewall o distribución como
UNbeatABLE CD?
- ¿Puedo usar el script
generado por bastion-firewall como firewall independiente?
- ¿El script generado por
bastion-firewall produce el mismo resultado que arrancar
bastion-firewall?
- ¿Como uso la funcionalidad de
listas de IPs? ¿Puedo introducir dominios en las listas?
- ¿Es fiable al cien por cien la
funcionalidad de las tablas?
- ¿Como puedo escribir un plugin o
addon para bastion-firewall?
- ¿Como y donde debería
añadir mi propio código a bastion-firewall?
- ¿Debería activar
todas las opciones de protección de los ficheros de
configuración?
- ¿Porque
bastion-firewall no tiene una herramienta para vigilar los logs?
- ¿Como puedo rotar los
logs de bastion-firewall?
- ¿Porque mi firewall genera
tantas entradas en mis ficheros de logs?
- ¿Que utilidad tiene la
funcionalidad de ulog?
- ¿Para que sirve
snort-inline y la funcionalidad QUEUE?
- ¿Como puedo hacer que el firewall
ignore el tráfico para una red o un interface?
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:
- Flexibilidad: Se
elegió bash como lenguaje de programación por ser
suficientemente conocido por los administradores de sistemas, sencillo
de modificar y reprogramar o añadir código.
También es lo suficientemente potente para realizar casi
cualquier algoritmo que se desee desarrollar.
- Robustez: La
elección de bash como lenguaje de programación asegura
una gran facilidad en la realización de tests y en la
modificación del código. Esto asegura que cualquier error
o fallo en el firewall pueda ser solucionado por el mismo administrador
del sistema, sin necesidad de contratar servicios de consultoría
o aprender lenguajes de programación nuevos. El lenguaje es lo
suficientemente rígido para asegurar que cualquier error en los
scripts o los ficheros de configuración sea detectado
fácilmente.
- Extensibilidad:
bastion-firewall puede ser modificado y extendido por medio del
añadido de addons o por medio de plugins muy fáciles de
programar en codigo bash y que se integran fácilmente en el
código del firewall. En puntos claves del firewall se permite la
introducción de código local para que un administrador
pueda añadir reglas o código sin tener que tocar los
ficheros básicos de bastion-firewall. Los addons permiten usar
programas externos integrados con bastion-firewall usando la
funcionalidad de este para usar programas externos para distintas
tareas. Dos ejemplos de addons integrados son ulogd y snort-inline, que pueden ser
añadidos al firewall usando la funcionalidad implementada en
este.
- Fácil mantenimiento:
La utilización de bash tanto en el código como en los
ficheros de configuración permite modificar y mantener el
firewall de forma muy sencilla para cualquier administrador con
conocimientos básicos de programación en shell.
- Actualizaciones:
bastion-firewall se compone de una parte central compuesta por
código bash y bastion-firewall-stats programado en C, todo lo
demás son addons que se integran sin necesidad de ser
modificados, lo que permite que puedan ser actualizados sin afectar al
funcionamiento del firewall. Una colección de ficheros build
permiten la configuración inmediata mediante comandos
./configure de los addons y los complementos como rrdtools, apache o
php4, y pueden así ser actualizados en un tiempo mínimo
sin afectar al firewall. Es posible en muchos casos incluso actualizar
parte de estos addons en caliente, sin tener que parar el firewall.
- Soporte: bastion-firewall
puede ser administrado y modificado por los mismos administradores del
sistema de producción, pero también puede solicitarse
servicios de consultoria y soporte técnico a bgSEC( www.bgsec.com).
También es posible solicitar a bgSEC modificaciones o
adaptaciones a sistemas de producción de bastion-firewall.
- Documentación completa:
Simplemente con los ficheros de configuración es posible
comenzar a funcionar con bastion-firewall, pues incluyen una gran
cantidad de ayuda en forma de comentarios para cada variable que se
puede modificar. Además se adjunta en la distribución una
gran cantidad de ficheros de ayuda que explican todos y cada uno de los
aspectos de bastion-firewall. Los ficheros de código
están profusamente comentados para una fácil
comprensión y mantenimiento, y se espera que estén
traducidos al ingles en un corto espacio de tiempo.
- Funcionalidad: bastion-firewall
permite crear una cantidad de reglas enorme simplemente editando una
serie de variables en los ficheros de configuración, usando las
facilidades de grupos de redes, grupos de servicios, mensajes icmp y
protocolos, así como el uso de listas de IPs que pueden
incluirse en cualquier sitio donde se solicite una dirección IP.
Es posible el crear scripts con más de 3000 reglas simplemente
editando cuatro o cinco variables de los ficheros de
configuración.
- Adaptabilidad:
bastion-firewall se adapta a múltiples entornos, e incluye
templates para algunos de estos, que permiten tener un firewall en
producción simplemente editando media docena de variables y sin
tener que leer prácticamente documentación. Esta
preparado para poder ser usado como un simple firewall personal, como
un firewall con DMZ para una gran empresa o como generador de scripts
de firewalls que pueden ser instalados en varias máquinas.
- Portabilidad: El
código bash y la utilización de herramientas estandard de
Linux hacen a bastion-firewall perfecto para ser adaptado a
múltiples distribuciones de Linux o a sistemas de
producción completamente diferentes.
- Rapidez: La
ordenación de las reglas por medio de tablas según el
tipo de tráfico y la agrupación de puertos para servicios
con varios puertos permiten a bastion-firewall generar reglas que
Netfilter puede recorrer muy rápido, proporcionando una
respuesta superior a la de otros firewalls o a la de scripts escritos a
mano por un administrador. La cache de reglas permite cargar miles de
ellas en segundos usando iptables-restores/iptables-save cuando los
ficheros de configuración no hayan cambiado, hecho que el propio
firewall detecta y tiene en cuenta. Una vez configurado el firewall la
carga y descarga de cadenas y reglas lleva un tiempo mínimo para
el sistema, lo que aventaja a los scripts que ejecutan iptables orden
por orden y tardan un tiempo en generar las reglas.
2. Características de
bastion-firewall
Las características principales de bastion-firewall son entre
otras:
- Programado en bash (99 por ciento del código) y C. Esto
proporciona flexibilidad y facilidad de modificación del
código. Unas 26000 lineas de código bash y C que
proporcionan una funcionalidad muy alta, implementando casi todas las
posibilidades de protecciones del kernel de Linux, incluidas las que se
modifican en /proc y las del sistema Netfilter/iptables.
- Basado en las facilidades Netfilter e Iptables proporcionadas por
casi todas las distribuciones de Linux y por el kernel oficial. El
firewall no usa ningún tipo de código propio o
facilidades programadas, por lo que las ordenes que invoca son todas
comandos iptables que crean reglas como lo haría un script, pero
sin tener que escribir ni una sola linea de código.
- El sistema no usa perl, python, ruby o comandos que puedan ser
utilizados por un supuesto atacante como herramientas de trabajo
después de un compromiso del sistema. bastion-firewall
puede correr en una distribución muy pequeña, en modo
texto y con un número de paquetes instalados mínimo.
- Administración basada en ficheros de configuración
en texto plano y tratados como código bash, permitiendo
introducir código en los ficheros de configuración para
la generación de los valores de las variables.
- Administración basada en web mediante
bastion-firewall-interface que modifica los ficheros de
configuración, habilitando al administrador a realizar una
configuración mixta, editando cosas con el interface y retocando
luego si es necesario o útil los ficheros de
configuración.
- Ficheros de configuración totalmente comentados y con
ayuda para cada variable que se puede alterar en el firewall. Los
ficheros son autoexplicativos e incluyen documentación sobre el
funcionamiento del firewall. En teoría sólo con esta
documentación bastaría para configurar completamente el
firewall y todas sus opciones, sin necesidad de leer ni una sola linea
de documentación.
- Sistema de estadísticas del tráfico basadas en web
y que contienen gráficas del tráfico realizadas con
rrdtool. Estas gráficas se generan automáticamente con
solo incluir una directiva en el fichero del configuración del
firewall o una opción en cada servicio o grupo de servicios de
los que queremos obtener gráficas de tráfico.
Creación automática de una página web que permite
ver las estadísticas gráficas con facilidad.
- Sistema de separación del tráfico y de
agrupación y ordenación de las reglas, servicios y
protocolos para obtener una máxima velocidad en el tratamiento
del tráfico por parte de Netfilter. La idea es que Netfilter
tenga que comprobar el mínimo número de reglas y que las
reglas que afectan a un servicio y tienen varios puertos estén
agrupadas en un solo comando.
- Ficheros preparados para añadir código local por el
administrador en puntos estratégicos de la carga de reglas del
firewall, esto permite modificar el firewall sin tener que tocar el
codigo.
- Posibilidad de escribir plugins de forma muy sencilla para
añadir funcionalidad al firewall. El firewall detecta los nuevos
plugins y los integra en las reglas a generar, proporcionando una forma
inmejorable de añadir código a bastion-firewall.
- Uso de programas externos y addons totalmente estandard, sin
ninguna modificación, permitiendo que sean actualizados o
substituidos por otros con facilidad.
- Funciona en sistemas o distribuciones con un mínimo de
comandos, básicamente usa bash, los comandos estandard de Linux
e incluye rrdtool y ulogd en la distribución, por lo que no es
preciso que estén instalados en el sistema.
- Sistema de blacklist para bloquear direcciones IP
permanentemente. Sistema de whitelist para indicar que direcciones
nunca se deben bloquear. Se proporcionan ordenes para administrar ambas
listas y pueden ser usadas desde un IDS o IPS para bloquear posibles
atacantes sin peligro de provocar un ataque de denegación de
servicio.
- Sistema de blacklist y whitelists para direcciones MAC. Es
similar al sistema de blacklist/whitelist para direcciones IP.
- Sistema de MACs restringidas que permite elegir que
máquinas podrán hablar con el firewall y cuales no, tanto
en la red local como en la red externa (como en una DMZ).
- Posibilidad de utilizar listas de IPs en cada lugar donde
normalmente introduciríamos una dirección IP.
bastion-firewall expandirá la lista de IPs y creará las
reglas para cada IP.
- Posibilidad de crear nuevos servicios, grupos de servicios y
grupos de redes, para gestionar el funcionamiento del firewall
simplemente editando un número mínimo de variables.
- Sistema MD5 para detectar cambios en la configuración y
elegir entre regenerar de nuevo las reglas o cargar las reglas en la
cache si no se ha modificado la configuración desde el
último reinicio del firewall.
- Doble filosofía de funcionamiento del firewall, la primera
usando flujos de tráfico a bloquear o permitir y la segunda
usando tablas donde se especifican las reglas.
- Permite para cada servicio especificar los flujos de
tráfico entre los interfaces de entrada y salida y las IPs de la
red local y la remota, así como si quieremos que se apunten las
conexiones en los logs, si queremos que se pasen a ulogd y si queremos
que se creen estadísticas para el servicio en cuestión.
- El administrador puede añadir mediante ordenes o editando
los ficheros nuevos servicios o grupos de servicios de forma muy
sencilla, y luego especificar las reglas para estos grupos o servicios.
No es necesario tocar el código para añadir nuevos
servicios al firewall, e incluso existe una orden para añadir
una lista de servicios contenida en un fichero al firewall, permitiendo
añadir gran cantidad de servicios sin tener que editar los
ficheros de configuración.
- Implementación de las facilidades incluidas en los pom
incluidos con iptables.
- Proteccion contra ataques contra el kernel, spoofing, ataques de
denegación de servicio, ataques de llenado de los logs, escaneos
de puertos.
- Posibilidad de especificar como queremos rechazar o aceptar los
paquetes. Uso de REJECT o DROP a elección del administrador.
- Creación de un fichero script cada vez que se regeneran
las reglas que contiene TODAS las ordenes que ha ejecutado el firewall,
tanto para activar las protecciones del kernel como las ordenes
iptables que ha ejecutado. La ejecución de este script tiene el
mismo efecto que arrancar el firewall. El script incluye comentarios de
cada orden que ejecuta y de los servicio que habilita o bloquea. Este
script permite usar bastion-firewall como un potente generador de
scripts que son firewalls en si mismos, habilitando al administrador a
crear firewalls ad-hoc para sistemas en concreto simplemente alterando
algunas variables en los ficheros de configuración. Es una de
las características más potentes y útiles de
bastion-firewall.
- Creación de logs del funcionamiento del firewall y avisos
de inicio y parada de este, así como de los addons.
- Detección y posible bloqueo de trafico nuevo sin SYN, de
fragmentos de tráfico, de tráfico considerado invalido
por conntrack o de trafico no valido o considerado spoofing.
- Permite mandar por ejemplo el trafico HTTP que se ha decidido
aceptar a snort-inline para que este lo inspeccione y decida si el
firewall debe bloquearlo o dejarlo pasar. Esto constituye una forma de
IPS bastante eficaz y muy segura si mantenemos una cantidad
pequeña de reglas en snort-inline. La ventaja de usar este
método es que snort-inline realiza un tratamiento completo del
tráfico HTTP por poner un ejemplo antes de comprobar con sus
reglas si debe ordenar al firewall que bloquee o permita el
tráfico.
- Permite usar ulogd para mandar los logs a una base de datos como
mysql o postgresql, o crear logs personalizados que luego pueden ser
tratados con swatch o programas similares.
- Tratamiento personalizado o configuración por defecto de
todo el trafico ICMP. Posiblidad de que conntrack devuelva mensajes
ICMP o no los devuelva.
- Posibilidad de creación de reglas mediante tablas usando
todas las facilidades de grupos de IPs o servicios del firewall y que
tienen precedencia sobre las demás reglas del firewall para
ajustar el firewall cuando tenemos varias redes que queremos tratar de
forma diferente.
- Funcionalidad de proxy transparente, NAT, SNAT, DNAT o REDIRECT
por medio de tablas y mediante fichero de configuración. Para
cada servicio puede indicarse un servidor interno de la red local que
proporcione servicios al exterior mediante DNAT simplemente
introduciendo su IP en una variable.
- Funciona sin modificaciones tanto sobre las versiones 2.4 del
kernel como en las 2.6.
- Al cargar el firewall y si debe regenerar las reglas comprueba
que estan disponibles todos los comandos necesarios así como
todas las IPs, grupos y listas que se incluyan en los ficheros de
configuración. También comprueba que las reglas tengan la
sintaxis correcta y produce errores intentando dar ayuda sobre donde se
ha producido el error si se introducen datos incorrectos.
- Permite el uso de rangos y listas de IPs, expandiendolos a
direcciones IPs, pues iptables no soporta rangos de IPs directamente.
- bastion-firewall puede funcionar con cualquier número de
interfaces de entrada o de salida, siempre que el enrutado sea correcto
entre estos interfaces y redes, esto permite por ejemplo tener
conexiones a varios routers ADSL desde una LAN y especificar reglas
para todo el trafico que ha de entrar o salir por ellos. Es necesario
que el administrador use el comando ip para habilitar el enrutado entre
la LAN y las interfaces que conectan a los routers.
- Permite una gran cantidad de combinaciones de logs, usando los
logs de apache o ulogd.
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:
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
fw-to-lan
fw-to-ext
FAQ
1. ¿Que debo hacer para usar
bastion-firewall en mi empresa?
Simplemente descargueló de
www.bgsec.com
o cualquier mirror que encuentre, instaleló en su máquina
y configureló. No necesita nada más. La licencia de
bastion-firewall permite su uso personal y comercial. Si no esta
familiarizado con el concepto de Software Libre y la licencia
pública GPL debería leer esta licencia (incluida con la
documentación de bastion-firewall tanto en ingles -la version
legalmente vinculante- o en español) o visitar el sitio de la
Free Software Foundation, donde puede descargarse la licencia GPL y
toda la información necesaría sobre el concepto de
copyleft y el Software Libre en general.
También puede ponerse en contacto con nosotros en consultoria@bgsec.com
para cualquier consulta que considere necesaria sobre el uso,
distribución o modificación de bastion-firewall y sus
addons.
2. ¿Puede usarse
bastion-firewall como firewall personal?
bastion-firewall puede usarse
perfectamente como firewall personal, solo es necesario usar el
template llamado soho (small office / home office) y cambiar media
docena de variables para tener un firewall personal perfectamente
capaz. También puede optar por no usar el template y configurar
completamente el firewall. Es conveniente leer al menos la
documentación que se incluye en los ficheros de
configuración para poder configurar el firewall, y es muy
conveniente leer el tutorial de bastion-firewall para comprender el
concepto de flujo de tráfico y de reglas que implementa
bastion-firewall. Si siempre usa las mismas reglas o estas no cambian
demasiado tambien puede usar bastion-firewall para crear un script que
es un firewall en si mismo y utilizar este script como firewall, a la
manera de por ejemplo fwbuilder.
3. ¿Cual es la licencia de
bastion-firewall?
bastion-firewall ha sido liberado
bajo la licencia pública GPL para el código y bajo la
licencia FDL para la documentación. Puede consultar ambas
licencias en los ficheros incluidos en la documentación. Si
tiene dudas puede visitar el sitio web de la Free Software Foundation.
Básicamente esta licencia le permite usar bastion-firewall tanto
de forma personal como comercial y modificarlo siempre que el resultado
de la modificación sea liberado bajo la licencia GPL para
el código y FDL para la documentación. El copyright del
código es propiedad de Jose María López
Hernández <jkerouac@bgsec.com>
y bgSEC (www.bgsec.com)
y para cualquier consulta puede dirigirse a estas direcciones. La
licencia GPL permite usar y modificar el código pero mantiene el
copyright del código original, no confundir con otro tipo de
licencias o con el software de dominio público.
Hay una excepción a la GPL y es que usted puede modificar
bastion-firewall en la forma que desee y usarlo internamente en su
empresa sin necesidad de liberarlo como GPL, siempre que no distribuya
la modificación y solo la use internamente, aunque sea para uso
comercial.
bastion-firewall esta dividido en dos partes, una parte desarrollada
por bgSEC que constituye el firewall en si mismo y que esta licenciado
como GPL y una serie de addons que se integran con bastion-firewall
pero que no son parte de él, y que por tanto tienen sus propias
licencias y propietarios de Copyright.
Los addons de bastion-firewall son Copyright de sus autores y
propietarios, y debe consultar uno por uno las licencias para ver si
puede usarlos en la forma que desea. En concreto ha de ser muy
cuidadoso con la modificación de los addons, pues depende
enormemente del tipo de licencia que tenga cada addon.
4. ¿Que es UNbeatABLE CD?
¿Sustituye a bastion-firewall?
UNbeatABLE CD es una
demostración tecnológica de la flexibilidad de
bastion-firewall y de como puede integrarse en un sistema de
producción fácilmente y sin apenas modificaciones o
configuración. No sustituye a bastion-firewall pues no es
más que una distribución Knoppix con bastion-firewall
incorporado, por tanto UNbeatABLE CD es bastion-firewall integrado en
una distribución, nada más. Para que pueda correr desde
un medio de solo lectura como un CD Live del tipo Knoppix
bastion-firewall ha sido ligeramente modificado para poder salvar y
recuperar la configuración de diversas formas y poder mantener
el estado del firewall. UNbeatABLE CD permite tener un firewall
funcionando en una máquina en un mínimo de tiempo,
simplemente inserte el CD en el lector, arranque la máquina y
tendrá a bastion-firewall funcionando, con una pequeña
configuración tendrá un firewall completo en unos
minutos. Su utilidad puede ser para hacer demostraciones, para
firewalls que no se van a dejar permanentemente funcionando o para
usarlo en máquinas que tienen otra función pero que
queremos que en un momento dado funcione como firewall.
UNbeatABLE CD se presenta en dos versiones, una con el firewall nada
más y un conjunto mínimo de herramientas de
administración, y otra versión preparada para ser usada
como herramienta de analisis de seguridad y para realizar firewall
stressing o tests de penetración. Esta versión incluye
gran cantidad de herramientas de seguridad y de red y son Copyright y
propiedad de sus autores. Debe consultar las licencias de cada una de
ellas así como de todo el software que se incluye en los CDs si
quiere modificar bastion-firewall.
5. ¿Puede bastion-firewall usarse para una
DMZ?
bastion-firewall es perfectamente
apto para ser usado en una DMZ. Simplemente instale bastion-firewall en
el firewall exterior y en el firewall interior de la DMZ y configure
los dos firewalls con las reglas necesarias para la DMZ. Tenga en
cuenta que en algunos casos puede ser más sencillo y útil
el usar la funcionalidad DNAT de Netfilter para mandar el
tráfico a una maquina dentro de la LAN que tener una LAN
completa dentro del perímetro de una DMZ. Es conveniente que si
alguno de los firewalls perimetrales de la DMZ solo va a hablar con una
serie de máquinas se use la funcionalidad de restringir por MAC
para asegurar una máxima seguridad. También es necesario
activar sólo los servicios imprescindibles para cada firewall,
evitando así que la DMZ se convierta en un firewall
detrás de otro firewall, en vez de definir un perímetro
donde tenemos unas reglas diferentes a las de la LAN.
6. ¿Como integro bastion-firewall y LVS?
La forma más adecuada de
integrar bastion-firewall y LVS (Linux Virtual Server) es usar la
funcionalidad NAT de LVS y usar como director a la máquina donde
tenemos el firewall, así podemos usar el plugin mark.bsf de
marcado de paquetes para marcar los paquetes según los
parametros que consideremos oportunos y luego administrar el
tráfico que se va a redirigir a los servidores reales con el LVS.
7. ¿Porque tarda tanto en
cargar la pagina de estadísticas?
Si ha definido bastantes
servicios con el parametro :stats para que se generen gráficas
de tráfico para esos servicios la página que
contendrá estas gráficas será bastante grande y el
navegador necesitará un tiempo para cargarla. Las pruebas que
hemos realizado con Internet Explorer, Mozilla y sus variantes y
Konqueror han sido positivas, con un tiempo razonable de carga y sin
bloqueos, incluso con páginas muy grandes con gran cantidad de
gráficas.
8. ¿Como genero
estadísticas de un servicio que quiero bloquear?
Simplemente especifique las
opciones :drop:stats en el parámetro del flujo de tráfico
en el servicio que quiere bloquear y se generaran estadisticas de los
intentos de comunicar con este servicio a través del firewall.
Ejemplo: ext-to-lan:drop:stats creará gráficas de los
intentos de comunicar con la lan desde el exterior pero
bloqueará todo el tráfico. También se puede
añadir :log para hacer log de los intentos de conexión.
9. ¿Las
estadísticas incluyen todo el tráfico para cada servicio?
Si, porque se las reglas de las
que bastion-firewall-stats lee los contadores para cada servicio se
insertan antes (en las cadenas) de las reglas que aceptan las
conexiones que ya han sido aceptadas y que van a ser tratadas como
tráfico ESTABLISHED o RELATED. Por tanto todo el tráfico
que se produce tanto en una y otra dirección de una
conexión aceptada es tenido en cuenta para generar las
estadísticas. No es posible especificar en cambio que solo se
tenga en cuenta el tráfico en una dirección. Ejemplo:
HTTP=lan-to-ext:stats creará gráficas con todo el
tráfico HTTP que va de la red LAN a EXT y de EXT a LAN para este
mismo servicio. En resumen el sistema de estadísticas se salta
el sistema de aceptar tráfico ESTABLISHED o RELATED por
connection tracking (conntrack) para poder ver todo el tráfico y
no sólo las conexiones iniciales.
10. ¿Sustituye la
funcionalidad DNAT a una DMZ?
En algunos casos sí y en
otros no, depende enormemente del tipo de red que queramos implantar,
de la seguridad que deseemos y de lo fino que queramos ajustar esta
seguridad. Por ejemplo si solo vamos a tener un servidor web bien
configurado podemos instalarlo dentro de la LAN y usar DNAT para mandar
el tráfico desde el firewall a este servidor con una seguridad
bastante aceptable. Si vamos a tener varios servidores de varios tipos
(HTTP, SMTP, LDAP, etc) o necesitamos una seguridad muy alta en la red
entonces necesitaremos una DMZ, con dos bastion-firewall perimetrales,
un red dentro del perímetro y una red interna, y con los
firewalls ajustados con la máxima seguridad, permitiendo
sólo los servicios necesarios en cada caso. Siempre que sea
posible es preferible el tener una DMZ, pero si tenemos limitaciones
económicas, técnicas o de administración es mucho
más barato y sencillo usar DNAT.
11. ¿Puedo usar
bastion-firewall en Debian/Slackware/Red Flag/etc?
bastion-firewall está
escrito en bash y con un pequeño daemon escrito en C y puede por
tanto correr prácticamente cualquier distribución Linux
que tenga las herramientas básicas y un kernel con Netfilter. La
única diferencia puede estar en donde estarán los
ficheros de inicio, que será en /etc/rc.d/init.d para las
versiones derivadas de RedHat y en /etc/init.d para las derivadas de
debian.
Si algún addon usa librerías que no existen en el sistema
deberán instalarse desde la distribución o el
código fuente, pero no suele ser necesario, pues no usan
ningún tipo de librería extraña.
12. ¿Debería
compilar bastion-firewall desde las fuentes o usar los binarios?
Para bastion-firewall base no hay
problema en usar una u otra opción, pues el 99 por ciento del
código es bash y es interpretado, y el resto,
bastion-firewall-stats es un pequeño programa en C que
sólo necesita tener las librerias e includes de iptables y
rrdtool (incluidas en el paquete) para ser compilado en cualquier
sistema.
Para los addons hay que remitirse a la documentación de cada uno
de los programas. Para cada programa o addon incluido en
bastion-firewall se adjunta un fichero build que ejecutado llama al
script configure con las opciones correctas, luego simplemente se hace
make y make install y ya tenemos el addon o programa instalado. No
debería ser muy complicado compilar por tanto los addons desde
el código fuente, pero por comodidad se recomienda usar los
binarios precompilados.
13. ¿Puedo usar mi propio
servidor apache y PHP 4 para bastion-firewall-interface?
Si, el servidor apache y el PHP 4
que se adjuntan como addons de bastion-firewall son versiones
compiladas con el mínimo de opciones necesarias para ocupar poca
memoria y ser más simples de compilar y mantener, pero puede
usarse cualquier servidor apache y PHP 4 que incluyan la funcionalidad
mínima que bastion-firewall-interface necesita. En concreto los
que incluyen las distribuciones más comunes tienen toda esta
funcionalidad y mucho más, por lo que serían
perfectamente válidos.
14. ¿Cuanta CPU/Memoria
consume bastion-firewall-stats?
bastion-firewall-stats es un
daemon que queda cargado en memoria cuando se arranca para actualizar
las bases de datos de rrdtool y crear las gráficas de
estadísticas de tráfico, llamando a una serie de scripts
para realizar este trabajo. Por tanto debemos distinguir dos estados:
bastion-firewall-stats permanece normalmente inactivo consumiendo
más o menos un mega de memoria cuando esta esperando, luego cada
cinco minutos actualiza las bases de datos mediante una serie de
llamadas a rrdtool que consumen poca CPU y memoria, y cada hora
actualiza las gráficas y la pagina web también con
llamadas a rrdtool. Para crear las gráficas consume algo
más de CPU y memoria que para actualizar las bases de datos,
pero tampoco es mucha. Los contadores de las cadenas de
estadísticas de Netfilter son leidos desde el código en C
y apenas se consume CPU.
En resumen bastion-firewall-stats consume muy pocos recursos del
sistema incluso aunque tengamos definidas gran cantidad de reglas de
estadísticas.
15. ¿Porque mi bastion-firewall
produce errores en el codigo bash después de configurarlo?
Hay que ser muy cuidadoso al
cambiar las variables en los ficheros de configuración, porque
son tratados como código bash, y han de seguir por tanto las
mismas reglas que cualquier código bash. Unas comillas
desemparejadas, una linea continuada sin usar \ o cualquier error
similar en lenguaje shell provocará errores extraños al
cargarse el firewall. Si el firewall da errores y no hay razón
aparente deben repasarse las variables que se hayan cambiado en los
ficheros de configuración y comprobar que no se ha cometido
ningún error al editarlas.
16. ¿Debo configurar
bastion-firewall desde cero o usar los templates?
Depende. Si su
configuración es similar a la pensada para alguno de los
templates entonces debería usar el template y se ahorrará
el editar muchas variables, pues vienen configurados con la
mayoría de opciones comunes para cada tipo de
configuración. Si su configuración es especial o desea
afinar más el firewall puede usar un template y ajustar todas
las variables necesarias o simplemente editar los ficheros de
configuración y ajustar las variables que necesite, el resultado
es el mismo.
17. ¿Como puedo intercambiar
el flujo de tráfico y hacer que EXT sea mi red?
bastion-firewall no tiene en
cuenta que red es la interna o la externa, los nombres de LAN y EXT son
simplemente para simplificar el concepto de flujos de trafico por el
firewall, pero puede intercambiarlos o configurarlos como desee, no hay
ninguna limitación para esto. Lo mejor que puede hacer es probar
y ver si funciona como desea, lo más probable es que sea
así.
18. ¿Puedo modificar
bastion-firewall y crear mi propio firewall o distribución como
UNbeatABLE CD?
Como se indicó más
arriba las licencias GPL y FDL bajo las que esta liberado
bastion-firewall le permiten modificarlo a su gusto o crear a partir de
él un firewall nuevo, siempre que lo libere también como
GPL y FDL y que haga constar el Copyright y los propietarios del
código original. Lo mismo es aplicable a la creación de
una distribución como UNbeatABLE CD. Consulte el punto 3 de este
FAQ para más información.
19. ¿Puedo usar el script
generado por bastion-firewall como firewall independiente?
El script generado por
bastion-firewall cuando se generan las reglas desde los ficheros de
configuración es un firewall independiente en sí mismo y
puede ser usado como firewall independiente que no necesita a
bastion-firewall para nada. Incluso puede generar el script en una
máquina con bastion-firewall y luego instalarlo en otra sin
bastion-firewall sin ningún tipo de problemas.
20. ¿El script generado
por bastion-firewall produce el mismo resultado que arrancar
bastion-firewall?
El script generado por
bastion-firewall en /var/lib/bastion-firewall/script realiza
exactamente las mismas acciones que realiza bastion-firewall, por lo
que el resultado en forma de cadenas, reglas y módulos cargados
es el mismo que si arrancamos bastion-firewall. Por tanto
bastion-firewall puede ser usado como un generador de firewalls
independientes.
21. ¿Como uso la funcionalidad
de listas de IPs? ¿Puedo introducir dominios en las listas?
Simplemente introduzca el fichero
.list en el directorio /etc/bastion-firewall/lists y luego especifique
el nombre del fichero .list en cualquier lugar dentro de
bastion-firewall donde se pueda especificar una IP. Así de
simple, no hay que hacer nada más, se usa como si fuera una IP y
bastion-firewall lo expande a todas las IPs que estén incluidas
en el fichero .list. Esto es especialmente util también para
introducirlos en los ficheros de las blacklists y las whitelists, se
pueden tener varios ficheros .list con diferentes tipos de IPs y luego
introducir los nombres en estos ficheros para bloquearlos o no
bloquearlos nunca según deseemos.
NUNCA se deben introducir dominios en las listas porque iptables
necesita hacer una resolucion de nombres para cargar cada dominio y
obtener su IP, lo que haría la carga del firewall extremadamente
lenta.
22. ¿Es fiable al cien por cien
la funcionalidad de las tablas?
Es bastante fiable, pero la
síntaxis es complicada y se pueden producir errores al
especificar las reglas que queremos introducir, lo mejor es probar y
ver en el fichero de script o en las reglas generadas que se ha
obtenido el resultado esperado. Si se especifican claramente las reglas
no debería haber problemas.
23. ¿Como puedo escribir un
plugin o addon para bastion-firewall?
No debería tener problemas
para escribir plugins para bastion-firewall, simplemente debe
comprender en que cadenas debe introducir las reglas y crear un codigo
que genere esas reglas, luego puede crear variables en el fichero de
configuración de los plugins que permitan configurar su plugin.
Si va a usar tablas lo mejor que puede hacer es coger el código
de un plugin como mark.bsf y estudiar como funciona para luego
modificarlo para que realize la función que desee. En el
template incluido se incluyen más indicaciones, pero
básicamente debe escribir código bash correcto, usar de
forma adecuada las variables del firewall, introducir su plugin en
/usr/lib/bastion-firewall/bsf/plugins y luego introducir en
/etc/bastion-firewall/plugins.conf las variables de
configuración. Si su plugin es muy simple puede ser más
adecuado el añadir código a bastion-firewall en los
ficheros indicados para ello (ver el siguiente punto del FAQ).
Para escribir un addon debe crear un programa independiente de
bastion-firewall y luego integrar su funcionalidad con bastion-firewall
de la forma que encuentre más adecuada. No hay un método
definido, pero puede estudiar el código y ver como está
integrado snort-inline para ver un ejemplo de integración de un
addon en bastion-firewall.
24. ¿Como y donde
debería añadir mi propio código a bastion-firewall?
Hay varios ficheros que puede
editar para introducir código en bastion-firewall, dependiendo
del tipo de reglas y del lugar en las cadenas donde quiere que estas
reglas sean introducidas. Los ficheros son:
localnat.bsf : Se carga al
principio del firewall y permite introducir reglas NAT antes de
realizar ninguna otra acción, permite mucha libertad para
escribir codigo.
localprespoofing.bsf : Se
carga
antes del chequeo de direcciones permitidas o denegadas y sirve para
introducir reglas antes de separar el trafico en cadenas, por lo que
tenemos libertad para hacer prácticamente cualquier cosa, como
aceptar o denegar direcciones o trafico.
localrules.bsf : Se carga
después del chequeo de direcciones y de separar el trafico
según los protocolos, debemos introducir las reglas en las
cadenas adecuadas según el protocolo (TCP, UDP, ICMP o todos) o
no conseguiremos el efecto deseado. Se aconseja introducir las reglas
con iptables -A para no alterar el funcionamiento del firewall, pues
así se añaden a lo que ya se ha creado y no se insertan
antes de otras reglas. Hay que tener un conocimiento del código
de bastion-firewall para introducir código aquí.
localrulesend.bsf : Ultima
oportunidad de introducir código antes de denegar
definitivamente el trafico, sirve para aceptar trafico que de otra
forma sería denegado al final de las reglas. Es aplicable
aquí todo lo indicado para localrules.bsf.
locallog.bsf : Sirve
sólo para introducir mensajes en los logs, y se puede
añadir código para introducir más mensajes o
mensajes personalizados. No debería usarse para ningun otro
cometido.
En cada fichero hay indicaciones de para que sirve y como editarlo.
25. ¿Debería
activar todas las opciones de protección de los ficheros de
configuración?
Debería activar todas las
opciones que se aconseja activar, sobre todo las que afectan al
directorio /proc de Linux, pero no debería activar las que
incluyen limitaciones en el tráfico o que se aconseja no
activar. En cualquier caso debe leer la ayuda para cada variable y
considerar si su activación tendrá repercusiones
negativas en el funcionamiento de las reglas del firewall.
26. ¿Porque
bastion-firewall no tiene una herramienta para vigilar los logs?
La razón principal es que
existen herramientas muy bien construidas para estudiar los logs, como swatch,
que permiten obtener datos de los logs de forma muy sencilla y potente,
la segunda razón es que hemos llegado a la conclusión de
que los administradores prefieren usar este tipo de herramientas o
escribir las suyas propias para estudiar los logs y no tener un sistema
integrado en el firewall para leer los logs.
27. ¿Como puedo
rotar los logs de bastion-firewall?
Utilize logrotate, que es muy
sencillo de configurar y extremadamente potente. Cree un fichero en
/etc/logrotate.d con las opciones que considere necesarias y logrotate
se encargará de rotar los logs por usted. Aproveche y
useló para rotar los logs del sistema. La mayoría de las
distribuciones lo traen ya configurado de serie y simplemente hay que
añadir el fichero para bastion-firewall.
28. ¿Porque mi firewall genera
tantas entradas en mis ficheros de logs?
Probablemente ha activado las
variables para loggear todo el trafico o todo el trafico aceptado o
denegado. No debería activar estas opciones más que
cuando esté probando el funcionamiento del firewall, nunca en
los sistemas de producción, cuando ponga el sistema
definitivamente en producción debería crear reglas para
loggear únicamente el tráfico que desee ver en los logs,
no todo el tráfico aceptado o denegado.
29. ¿Que utilidad tiene la
funcionalidad de ulog?
La funcionalidad más
importante es la de introducir logs en bases de datos, permite que
bastion-firewall loggee a mysql o postgresql además que en los
logs del sistema, o a ficheros de texto plano aparte de los logs del
sistema. Deberá configurarlo correctamente para que actue como
usted desea, y luego activar las reglas necesarias para pasar el
trafico a loggear a ulogd. También deberá cargar el addon
bastion-firewall-ulogd para poder usarlo. ulogd es muy sencillo de
configurar y usar y puede crear logs en bases de datos que pueden luego
ser estudiados con otras herramientas más potentes o para sacar
estadísticas usando programas o scripts que lean a bases de
datos, con lenguajes como perl o python.
30. ¿Para que sirve
snort-inline y la funcionalidad QUEUE?
snort-inline es un IPS, un addon que permite a bastion-firewall mandar
por ejemplo el tráfico HTTP que se va a aceptar al demonio de
snort-inline por medio de la funcionalidad QUEUE de Netfilter para que
snort-inline reconstruya la sesion HTTP (algo que Netfilter no puede
hacer), la ponga en forma estandard y compruebe por medio de sus listas
(que son las mismas que las de snort) si el tráfico es maligno y
debe denegarse o debe aceptarse, devolviendo a Netfilter una orden para
bloquear o permitir el tráfico. Es necesario que consulte la
documentación de snort-inline para modificar sus reglas y
reducir el número de reglas al mínimo para asegurar un
funcionamiento rápido del sistema. También debe
configurar correctamente snort-inline para que acepte el trafico de
bastion-firewall y cargarlo con su script bastion-firewall-snort-inline.
La funcionalidad de bastion-firewall con snort-inline se duplica, pues
permite bloquear servicios que funcionan a través del puerto
HTTP (80/tcp) por ejemplo y que no queremos permitir, pero permitiendo
el tráfico normal HTTP. Esto sólo es posible con un
snort-inline correctamente configurado y con reglas capaces de bloquear
el trafico indeseado que se enmascara por estos puertos que suele ser
necesario tener abiertos, como trafico P2P o programas de Mensajeria
Instantanea, incluso es capaz de
bloquear sistemas de update de programas que usan el puerto 80/tcp y
que no deseamos que pasen a través del firewall.
Se deben crear las reglas QUEUE antes de cargar snort-inline o sino
este último se negará a arrancar, y debemos cambiar en
sus reglas las directiva alert por drop para el trafico que queremos
bloquear. Como ejemplo de como funciona el sistema se incluye un
código muy simple de ejemplo que pasa todo el tráfico a
snort-inline:
#!/bin/bash
# Cargamos el modulo de ip_queue de Netfilter
# puesto que no se carga automaticamente
echo -n "Cargando el modulo ip_queue: "
modprobe ip_queue
echo "OK"
echo -n "Borrando todas las tablas y reglas: "
# Borramos las chains internas
iptables --flush
# Borramos las chains creadas (non built-in chains)
iptables --delete-chain
# Cambiamos todas las politicas a ACCEPT
iptables --policy INPUT ACCEPT
iptables --policy OUTPUT ACCEPT
iptables --policy FORWARD ACCEPT
echo "OK"
# Creamos reglas de netfilter para pasar el trafico
# a snort-inline
echo -n"Creando las reglas QUEUE: "
iptables -A INPUT -j QUEUE
iptables -A OUTPUT -j QUEUE
iptables -A FORWARD -j QUEUE
echo "OK"
# Snort-inline con la opcion -Q para que lea del
# queue. Tenemos que cambiar en las reglas alert por drop
# donde queramos bloquear
echo -n "Arrancando snort-inline de bastion-firewall: "
/usr/lib/bastion-firewall/snort-inline/bin/bastion-snort-inline -i any
-Q \
-c /usr/lib/bastion-firewall/snort-inline/etc/snort.conf
echo "OK"
31. ¿Como puedo hacer que el firewall
ignore el trafico para una red o un interface?
Simplemente use las variables NET_IGNORE e INTERFACE_IGNORE, que
permiten introducir una serie de IPs o redes e interfaces que el
firewall ignorará, dejando pasar todo el trafico que se enrute a
traves de él por estos interfaces o para estas redes. Esto sirve
para tener en el firewall interfaces que no se vean afectados por las
reglas y redes que se enrutan por ejemplo a internet a través
del firewall pero que no queremos que se las aplique ningún tipo
de reglas. El firewall ignorará y dejará pasar todo el
trafico originado o dirigido a estos interfaces y redes.