Información
sobre bastion-firewall
bastion-firewall es un firewall basado
en Netfilter e iptables, funciona bajo
cualquier versión de Linux con el kernel 2.4 o superior y tiene
las siguientes características:
- Desarrollado por bgSEC (http://www.bgsec.com)
y Jose María López Hernández (jkerouac@bgsec.com)
y liberado bajo licencia GPL.
- 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.
|