Como montar nuestro IDS (Intrusion Detection System) – Parte I – Instalando Snort

http://highsec.es/2013/12/como-montar-nuestro-ids-intrusion-detection-system-parte-i-instalando-snort/

Buenas a todos! Este es el primer post de una nueva serie dedicada a enseñar de forma practica como podemos montarnos nuestro propio IDS basado en Snort con otras funcionalidades como BASE, que nos va a permitir ver todos los datos de una forma muy gráfica mediante un entorno web, y veremos también como usar Snortby, una aplicación similar a BASE pero mas avanzada para tener control total de nuestra red gracias a nuestro NIDS.
Pero lo primero de todos es explicar que es un IDS, un IPS y demás variantes. IDS son las siglas de Intrusion Detection System, es decir, un sistema de detección de intrusos, que básicamente sirve para detectar un comportamiento anómalo ya sea en la red (En este caso se llaman NIDS ya que son Network Intrusion Detection System), en un host (HIDS de Host Intrusion Detection System) o en una red WiFi (WIDS de WiFi Intrusion Detection System).
Este comportamiento anómalo siempre que estemos hablando de un IDS suele basarse en patrones que buscara ya sea en la red, host o red Wifi, donde en caso de coincidencia generara una alarma advirtiendo de un posible ataque.
De forma rápida, el IPS que son las siglas de Intrusion Prevention System, tiene como finalidad anticiparse a los acontecimientos y poder detectar los ataques antes de que lleguen a suceder tomando acciones preventivas, a diferencia del IDS que únicamente avisa cuando algo ya a pasado y a sido detectado. Hay IPS tanto de red, host como WiFi, pero en esta serie únicamente vamos a ver como instalar y configurar un IDS de red basado en Snort.
Y… ¿Que es Snort? Es un sniffer open source construido sobre tcpdump, que nos permite capturar todo el trafico que llega al ordenador donde esta instalado. Una vez tiene todo ese trafico ira parseándolo en búsqueda de posibles coincidencias con los ataques que tiene catalogado Snort en sus reglas (Que se van actualizándose y pueden ser modificadas por cada uno para adaptarlo a sus circunstancias).
Para la instalación yo he utilizado un CentOS 6.4. Un ejemplo típico a nivel empresarial para poder montar esto seria el siguiente escenario:

 
Donde el IDS/IPS se encuentra a la entrada de la red, pudiendo observar todo el trafico de red mediante el port SPAN del switch de mas alto ‘nivel’ dentro de la organización, de tal forma que sea capaz de avisar/prevenir lo antes posible, aunque sin duda seria recomendable tener también otros IDS en la red interna para evitar posibles ataques desde dentro, pero eso lo veremos mas adelante,
Una vez hemos visto todo esto vamos a ver como instalaríamos el Snort:
Prerequisitos
Actualizar el sistema y reiniciarlo:
yum update -y
reboot
 
Instalamos el repositorio EPEL:
rpm -Uvh http://ftp.uninett.no/linux/epel/6/i386/epel-release-6-8.noarch.rpm
 
Instalamos PCRE, libdnet y otros paquetes necesarios:
yum install libdnet libdnet-devel pcre pcre-devel gcc make flex byacc bison kernel-devel libxml2-devel wget -y
 
Creamos un directorio de Snort para ir guardando el código de los diferentes módulos:
mkdir /usr/local/src/snort
cd /usr/local/src/snort
 
Descargamos e instalamos libpcap:
wget http://www.tcpdump.org/release/libpcap-1.3.0.tar.gz -O libpcap.tar.gz
tar zxvf libpcap.tar.gz
cd libpcap-*
./configure && make && make install
echo “/usr/local/lib” >> /etc/ld.so.conf
ldconfig -v
 
Descargamos e instalamos DAQ:
cd /usr/local/src/snort
wget http://www.snort.org/dl/snort-current/daq-2.0.0.tar.gz -O daq.tar.gz
tar zxvf daq.tar.gz
cd daq-*
./configure && make && make install
ldconfig -v
 
Creamos un usuario y un grupo para Snort:
groupadd snort
useradd -g snort snort
 
Instalación
Descargamos e instalamos Snort:
cd /usr/local/src/snort
wget http://www.snort.org/dl/snort-current/snort-2.9.4.6.tar.gz -O snort.tar.gz
tar zxvf snort.tar.gz 
cd snort-2*
./configure –prefix /usr/local/snort –enable-sourcefire && make && make install
 
Creamos los links para los ficheros de Snort:
ln -s /usr/local/snort/bin/snort /usr/sbin/snort
ln -s /usr/local/snort/etc /etc/snort
 
Configuramos Snort para que se inicie con el inicio del sistema (Como servicio):
cp rpm/snortd /etc/init.d/
chmod +x /etc/init.d/snortd
cp rpm/snort.sysconfig /etc/sysconfig/snort
chkconfig –add snortd
 
Borramos las siguientes lineas del archivo de inicio del servicio:
vi /etc/init.d/snortd

# check if more than one interface is given
if [ `echo $INTERFACE|wc -w` -gt 2 ]; then

else
# Run with a single interface (default)
daemon /usr/sbin/snort $ALERTMODE $BINARY_LOG $NO_PACKET_LOG $DUMP_APP -D $PRINT_INTERFACE $INTERFACE -u $USER -g $GROUP $CONF -l $LOGDIR $PASS_FIRST $BPFFILE $BPF
fi
 
Comentamos las siguientes lineas del archivo /etc/sysconfig/snort y añadimos / a la variable LOGDIR:
vi /etc/sysconfig/snort

LOGDIR=/var/log/snort/

#ALERTMODE=fast

#BINARY_LOG=1

 
Descargamos las reglas de Snort desde http://www.snort.org/snort-rules para lo cual tendremos que registrarnos, y las metemos dentro de /usr/local/src/snort.
You have to register to the site in order to get the free register user rules
or you can pay and get the most update rules as a “Subscriber user”
 
Extraemos las reglas en el nuevo directorio:
cd /usr/local/snort
tar zxvf /usr/local/src/snort/snortrules-snapshot-2*
 
Creamos el directorio para el login de Snort:
mkdir -p /usr/local/snort/var/log
chown snort:snort /usr/local/snort/var/log
ln -s /usr/local/snort/var/log /var/log/snort
 
Creamos los links para las reglas dinámicas y para los directorios:
ln -s /usr/local/snort/lib/snort_dynamicpreprocessor /usr/local/lib/snort_dynamicpreprocessor
ln -s /usr/local/snort/lib/snort_dynamicengine /usr/local/lib/snort_dynamicengine
ln -s /usr/local/snort/lib/snort_dynamicrules /usr/local/lib/snort_dynamicrules
 
Damos permisos a Snort:
chown -R snort:snort /usr/local/snort
 
Comentamos las siguientes lineas de la configuración de Snort y añadimos el output:
vi /usr/local/snort/etc/snort.conf

#preprocessor reputation: \
#   memcap 500, \
#   priority whitelist, \
#   nested_ip inner, \
#    whitelist $WHITE_LIST_PATH/white_list.rules, \
#   blacklist $BLACK_LIST_PATH/black_list.rules

output unified2: filename snort.log, limit 128

 
Creamos el directorio para las reglas dinámicas:
mkdir /usr/local/snort/lib/snort_dynamicrules
 
Copiamos las reglas dinámicas:
– Sistemas i386:
cp /usr/local/snort/so_rules/precompiled/RHEL-6-0/i386/2.9*/*so /usr/local/snort/lib/snort_dynamicrules/
– Sistemas x86_64:
cp /usr/local/snort/so_rules/precompiled/RHEL-6-0/x86-64/2.9*/*so /usr/local/snort/lib/snort_dynamicrules/
 
Realizamos el dump de las reglas:
snort -c /usr/local/snort/etc/snort.conf –dump-dynamic-rules=/usr/local/snort/so_rules
 
Habilitamos todas las reglas dinámicas:
vi /usr/local/snort/etc/snort.conf

# dynamic library rules
include $SO_RULE_PATH/bad-traffic.rules
include $SO_RULE_PATH/chat.rules
include $SO_RULE_PATH/dos.rules
include $SO_RULE_PATH/exploit.rules
include $SO_RULE_PATH/icmp.rules
include $SO_RULE_PATH/imap.rules
include $SO_RULE_PATH/misc.rules
include $SO_RULE_PATH/multimedia.rules
include $SO_RULE_PATH/netbios.rules
include $SO_RULE_PATH/nntp.rules
include $SO_RULE_PATH/p2p.rules
include $SO_RULE_PATH/smtp.rules
include $SO_RULE_PATH/snmp.rules
include $SO_RULE_PATH/specific-threats.rules
include $SO_RULE_PATH/web-activex.rules
include $SO_RULE_PATH/web-client.rules
include $SO_RULE_PATH/web-iis.rules
include $SO_RULE_PATH/web-misc.rules

 
Comprobamos que Snort funciona de forma correcta:
snort -c /usr/local/snort/etc/snort.conf -T
 
Una vez echo esto ya tendríamos nuestro Snort funcionando perfectamente aunque de momento sin ningún tipo de entorno gráfico, por lo que para probarlo y testear un poco con el podríamos realizar el siguiente comando:
snort -c /usr/local/snort/etc/snort.conf -A console
 
Lo cual nos va a permitir ver únicamente las alarmas que genere el Snort por la consola. También podríamos probar a modificar algunas reglas, introducir las nuestras y un sin fin mas de cosas, pero eso sera en el próximo post.
Espero que os haya gustado!
Un saludo,
Eduardo – eduardo@highsec.es – @_Hykeos

Enviado por gReader

Anuncios
Esta entrada fue publicada en Security. Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s