miércoles, 31 de agosto de 2011

Configurando el IDS e IPS Suricata

Hace ya bastante tiempo, hice un pequeño manual sobre el OSSEC, también IDS e IPS, y un comentario me recomendó cacharrear con el Suricata. Llevo probándolo unos días y os voy a comentar cómo instalarlo y configurarlo.

Antes que nada nos recomienda la web oficial bajarnos todas las librerías requeridas:

apt-get -y install libpcre3 libpcre3-dbg libpcre3-dev \
build-essential autoconf automake libtool libpcap-dev libnet1-dev \
libyaml-0-1 libyaml-dev zlib1g zlib1g-dev

apt-get -y install libnetfilter-queue-dev libnetfilter-queue1 libnfnetlink-dev libnfnetlink0



Bajamos la versión de turno, en estos momentos la 1.1Beta2.

wget http://www.openinfosecfoundation.org/download/suricata-1.1beta2.tar.gz
tar -zvxf suricata-1.1beta2.tar.gz
cd suricata-1.1beta2.tar.gz
./configure --enable-nfqueue
make
make install


Hay una versión en los repositorios de Debian, pero yo me la compilé porque necesito la NFQUEUE (para que funcione como IPS).

Instalado ya, tendremos los archivos de configuración en /etc/suricata/, y el principal es suricata.yaml (ojito con los espaciados, que si movemos un poquito algún margen luego hará que el Suricata no funcione).

Los archivos de reglas en los que se basará, a mí me cogió por defecto los de Snort (/etc/snort/rules/), aunque se pueden coger otras distintas (más actualizadas y además recomendadas) mediante el OinkMaster, explicado perfectamente y con dibujitos aquí https://redmine.openinfosecfoundation.org/projects/suricata/wiki/Rule_Management_with_Oinkmaster.

En estos archivos de reglas podemos editar las reglas que queramos, por ejemplo podemos crear una regla que bloquee todo acceso al Facebook y meterla al archivo /etc/snort/rules/web-misc.rules, o al archivo icmp.rules, realmente no importa, sólo se organizan en archivos distintos por orden (esta regla la robé por ahí):

drop tcp any any -> any any (content:"facebook"; msg:"Attention, Facebook!!!"; sid:1000002; rev:1;)

Aunque si realmente queréis ver un conjunto de reglas que bloqueen cierto contenido echad un ojo al archivo /etc/snort/rules/porn.rules, me ha hecho gracia ver un filtro de porno pululando por ahí.

Volviendo al tema, podéis crear vuestros propios filtros y reglas, yo por ejemplo tiro todos los paquetes que vayan por protocolo ICMP (por ejemplo el PING).

drop icmp any any -> any any (msg:"¡Tenemos una petición ICMP!";sid:20000;)

Con un poco de imaginación se puede hacer cualquier cosa. Pero para que el suricata pueda tirar paquetes, tenemos que decirle al IpTables que le mande todo lo que pille:

iptables -A INPUT -j NFQUEUE
iptables -A OUTPUT -j NFQUEUE
iptables -A FORWARD -j NFQUEUE


La NFQUEUE es la cola que procesará el suricata para analizar luego los paquetes. Para que nos funcione dicha cola tenemos que entrar a la configuración en /etc/suricata/suricata.yaml, buscar NFQ y descomentar mode: accept

Y por último ejecutamos el suricata

sudo suricata -c /etc/suricata/suricata.yaml -q 0

Como podéis ver el Suricata puede hacer muchas cosillas, aunque echo de menos cosas que tenía el OSSEC como los baneos inteligentes (durante varios minutos y luego se quitaba, o tras varios ataques seguidos en un corto periodo de tiempo, que con éste se puede hacer pero bastante más complicado).

Realmente el Suricata se parece mucho al Snort, me remito a la comparativa http://www.aldeid.com/wiki/Suricata-vs-snort, lo que tiene a mayores es una mayor optimización y rendimiento (Multi-thread y aceleradores de captura), y que parece que apunta a ser el sucesor del Snort, a ver qué pasa.

Espero que os haya servido de algo la miniguía,

Salu2!

No hay comentarios:

Publicar un comentario