![]() |
En el anárquico mundo de Internet, es imprescindible la seguridad. Sea para la red local de nuestro hogar, oficina o la de un servidor. Es un mundo creado por el hombre, y por lo tanto siempre vulnerable. No existe un sistema realmente infranqueable, siempre ha habido y siempre habrá agujeros que un intruso podrá explotar para hacerse con el control, o sacar información de nuestra máquina. No obstante existen sistemas más seguros que otros (se die que OpenBSD es el más paranóico), pero lo cierto es que la robustez de un sistema depende casi totalmente del administrador. Por esto es imprescindible contar con unas buenas herramientas que nos ayuden a evitar la intrusión indeseada y que nos informen en caso de éxito para el atacante. En este artículo mostraremos paso por paso la instalación y configuración básica de Snort + Base + Arno's firewall. |
Las Herramientas
Arno's Firewall
Como todo el mundo sabe, el núcleo Linux dispone del framework NetFilter que es el encargado de manejar los paquetes que enviamos y llegan a nuestro sistema. La herramientas más conocida para administrarlo es IpTables, que nos permite crear reglas de filtrado de trafico en nuestro sistema (si, algo parecido a un firewall). Es muy interesante aprender como funciona IpTables, aunque debido a su gran potencia y flexiblidad supone mucho tiempo. Por eso existen aplicaciones como firestarter: un entorno gráfico muy amigable en GTK que configura IpTables por nosotros. O Arno's Firewall: un gran y potente bash script que bien configurado supondrá un gran obstáculo para nuestros agresores.
Si lo único que se quiere es instalar un Firewall en nuestro ordenador personal, recomiendo utilizar firestarter. Pero si lo que queremos es un Firewall para nuestro servidor o router, mucho mejor Arno's firewall ya que es más potente (y complejo) que firestarter y no necesita más que Bash y Iptables para funcionar.
Arno's iptables entre otras muchas cosas nos permite:
-
Todo lo que permite NAT y SNAT
-
Sopote a multiples conexiones de internet con balanceo de carga
-
Filtro mediante MAC
-
Crear DMZs
-
Detección de escaneo de puertos
-
Proteccion contra varios ataques DoS como SYN-floodng y ICMP-flooding
-
Administrar perfectamente los puertos de nuestro sistema
-
Protección contra ataques de fuerza bruta por SSH
Y todo mediante la simple configuración de un archivo de texto.
Para más información visita la web de Arno's Firewall
Snort + BASE
Podriamos rellenar páginas y páginas sobre Snort, pero aqui solo vamos a nombrarlo y explicar un poco por encima sus posiblidades.Snort es un sniffer y IDS (Sistema de detección de intrusos). Implementa un motor de detección de ataques que funciona mediante reglas que nosotros mismos podemos definir, y alerta ante cualquier anomalía detectada por esas reglas.
El lenguaje de creación de reglas es muy flexible, potente y relativamente sencillo, aunque aqui no apdrenderemos como crearlas, utilizaremos las ya hechas por la comunidad. Entre ellas disponemos de alerta contra Troyanos, DoS, FTP, SSH, ataques WEB, CGI, Nmap, etc...
Hay que decir que instalar Snort en una ordenador de escritorio es un poco absurdo, recomendable sólo para los más paranóicos. En cambio es de gran utilidad para un Router/Firewall, por el que pasa todo el tráfico de nuestra red.
Snort también puede funcionar con una base de datos SQL (MySQL, PostgreSQL o Oracle), guardando en ella toda la información de las alertas detectadas. En nuestro caso utilizaremos Postgres.
BASE (Basic Analysis and Security Engine), es una aplicación Web para la monitorización de Snort. Necesitaremos instalar un servidor apache con soporte PHP y SQL. La configuración es tan sencilla como indicar que Base de Datos utiliza snort.
El proceso
Arno's Firewall
La instalación de arno's firewall es muy sencilla. Si utilizamos debian bastará con un 'aptitude install arno-iptables-firewall' y luego debconf iniciará un asistente para la configuración básica. No obstante aqui enseñaremos como instalarlo desde el paquete original.
En primer lugar lo descargamos de la web de Arno
tar xvzf arno-iptables-firewall*.tar.gz |
El archivo arno-iptables-firewall es el script principal que ejecuta todas las reglas de iptables según la configuración del archivo firewall.conf. Necesitamos que se ejecute cada vez que iniciamos el sistema, para ello supondremos que estamos utilizando el sistema de arranque SysV (el más común).
¡Cuidado! los directorios pueden variar según nuestra distribución.
|
Ahora copiamos el archivo de configuración de ejemplo
mkdir /etc/arno-iptables-firewall |
Ya esta completada la instalación. Ahora solo nos queda jugar un poco con el archivo de configuración (/etc/arno-iptables-firewall/firewall.conf). Esta muy bien documentado, asi que solo nombraremos las opciones básicas para su funcionamiento.
-
INT_IF="eth1" La interfaz internat (LAN). Todo el tráfico sera aceptado por esta interfaz.
-
EXT_IF="eth0" La interfaz externa (internet). Todo el tráfico sera denegado (menos el que especifiquemos)
-
INTERNAL_NET="192.168.1.0/24" La red de área local
-
EXTERNAL_NET="10.0.0.0/24 La red conectada a internet"
-
LAN_OPEN_TCP="80 22" Los puertos TCP abiertos a la LAN
-
OPEN_TCP="8080 21" Los puertos TCP abiertos a internet
-
NAT=1 Con 1 damos internet a la red local
-
NAT_TCP_FORWARD="22,21>192.168.1.30 Con esto redireccionamos los puertos 22 y 21 a la ip 1.30"
Por último en el archivo custom-rules podemos definir nuestras propias reglas IpTables, que seran ejecutadas antes que ninguna otra. Y en el directorio plugins tenemos varios archivos que podemos activar editandolos y introduciendo ENABLED=1
Snort
La instalación de snort también es bastante sencilla. Lo instalaremos con suporte PostgreSQL. Suponemos que ya tenemos postgres instalado y funcionando.
Antes de nada necesitamos instalar las dependencia libpcap, libpcre y libpq sea con el gestor de paquetes de nuestra distribución o manualmente
En Debian etch serian los siquietes paquetes (las versiones pueden cambiar): build-essential libpcap0.8-dev libpcre3 libpcre3-dev libpq4
Instalación
Descargamos el paquete con el código fuente de snort.org
tar xvzf snort-*.tar.gz |
Puede que necesitemos crear un link simbólico de la libreria libpq5 de postgres: "ln -s /usr/local/pgsql/lib/libpq.so.5 /usr/lib/"
Las reglas
Las reglas que ofrece snort gratuitamente son antiguas y escasas. Por eso recomiendo utilizar las de Debian. Para ello descargamos los paquetes snort-rules-default de http://www.us.debian.org/distrib/packages
Busquemos la versión más cercana a la nuestra. En mi caso he utilizado la 2.7 de Debian sid. Desempaquetamos el .deb con deb2tar, deb2tgz, dpkg o cualquier otro. Luego copiamos el contenido del directorio rules en /etc/snort/rules.
cp snort-rules-default*/etc/rules/* /etc/snort/rules/ |
Configuración
Ahora editamos el archivo de configuración de snort /etc/snor/snort.conf y modificamos las siguientes líneas.
-
var HOME_NET 192.168.1.0/24
-
var EXTERNAL_NET !$HOME_NET #any seria otra buena opción, si no confiamos en nuestra red local
-
var RULE_PATH /etc/snort/rules
-
output database: log, postgresql, user=snort password=snort dbname=snort host=localhost
Es recomendable leerse detalladamente el archivo de configuración de snort.
Snort y PostgreSQL
Llegados a este punto, vamos a crear la base de datos y usuario snort con el password 'snort'. Suponemos que ya tenemos postgres instalado y funcionando correctamente.
su postgres |
Para ejecutar snort haremos: /usr/local/bin/snort -i eth0 -c /etc/snort/snort.conf
Y si queremos hacer el script de inicio para que arranque automaticamente:
cat < /etc/init.d/snort |
BASE
La instalación de BASE es muy sencilla. Esta hecho en PHP, lo único que necesitamos es copiar los archivos en un directorio de apache y iniciar la configuración asistida mediante un navegador web. En primer lugar descargamos el paquete de base.secureideas.net Suponemos que tenemos apache+php funcionando con el directorio /var/www como raiz.
tar xvzf base*.tar.gz |
Por último abrimos un navegador web y accedemos a http://localhost/base. Nos aparecerá un pequeño asistente donde deberemos añadir la base de datos, contraseña y usuario para que BASE pueda acceder a los datos generados por snort.
El aspecto final de BASE funcionando es este:
Nota del autor
Por último decir que este manual es bastante incompleto. Snort y Arno's Firewall disponen de muchisimas más posiblidades que las mencionadas aqui. Recomiendo visitar la documentación oficial de los dos proyectos. Además soy consciente de que me he dejado varios pasos, debido a que elaboré el texto tras tenerlo todo funcionando. Agradezco cualquier aportación/correción del contenido de este artículo.
- Inicie sesión o regístrese para enviar comentarios




