Técnicas de prevención de intrusiones (IDS/IPS)

Como ya sabemos , cualquiera de nosotros puede ser el objetivo de un ataque cibernético. Algunos CEO’s estiman que nadie se interesaría por su empresa porque es poco conocida o muy pequeña . Eso es totalmente falso .

El sistema de información de una empresa debe estar protegido a todos los niveles , no simplemente instalando un antivirus.

Como lo indica el título , hoy haré una introducción a las técnicas de prevención de intrusiones a nivel sistema y red .

IDS Y IPS

¿ Qué es un IDS ?

ids

Hablamos de sistema de detección de intrusiones (Intrution Detection System , en inglés) para referirnos al mecanismo que permite detectar un ataque o actividad sospechosa .

Existen 2 tipos de IDS .

Los NIDS (Network-Based Intrution Detection System) , que supervisan la actividad de la red .

Los HIDS (Host-Based Intrution Detection System) , que supervisan la activad del sistema .

NIDS

Funcionan de la siguiente manera .

En primer lugar , el tráfico de la red es capturado gracias a PCAP (packet capture) .

A continuación , los paquetes capturados se filtran para refinar las búsquedas . Posteriormente , se efectúa un análisis de las firmas , con los mismos inconvenientes que tienen los antitivirus , es decir con la misma dificultad que tienen los Avs a la hora de detectar los 0days .

Finalmente , las alertas son gestionadas y alamacenadas en ficheros logs normalizados .

HIDS

Los HIDS supervisan la actividad de los usuarios , los procesos , los comandos utilizados , las fechas de conexión de los usuarios y mucho más .

También existen IDS híbridos , que desempeñan el papel de HIDS y NIDS .

Un IDS híbrido es muy práctico para analizar lo que llamamos “correlación” , es decir el enlace que existe entre varios eventos . Por ejemplo , si se genera un error http 404 , no sería sospechoso . Pero si al mismo tiempo otras peticiones generan errores , es probable que nuestro sitio web este siendo atacado .

Instalación de Snort

Snort es uno de los IDS más efectivos , y además , es gratis 🙂 .

En este tutorial utilizaré la versión 2.9.8.0 y la instalaré en una máquina con Ubuntu 15.10 . Pero no os preocupéis , porque funciona igualmente en versiones anteriores .

Lo primero que hay que hacer es instalar los requisitos :

sudo apt-get install -y build-essential libpcap-dev libpcre3-dev libdumbnet-dev bison flex zlib1g-dev

Vamos a crear una carpeta en la cual descargaremos snort .

mkdir ~/snort
cd ~/snort

Antes de instalar snort , tenemos que instalar DAQ (Data AcQuisition library)

wget https://www.snort.org/downloads/snort/daq-2.0.6.tar.gz
tar -xvzf daq-2.0.6.tar.gz
cd daq-2.0.6
./configure
make
sudo make install

NB : Hay que descargar la última versión , en mi caso es la 2.0.6

Ahora podemos instalar snort .

wget https://www.snort.org/downloads/snort/snort-2.9.7.6.tar.gz
tar -xvzf snort-2.9.8.0.tar.gz
cd snort-2.9.8.0
./configure --enable-sourcefire
make
sudo make install

NB : Hay que descargar la última versión , en mi caso es la 2.9.8.0

Un vez que hemos instalado snort , toca actualizar las bibliotecas compartidas y los enlaces simbólicos .

sudo ldconfig
sudo ln -s /usr/local/bin/snort /usr/sbin/snort

Para utilizar snort en modo IDS , vamos a crear una cuenta especial , copiar los archivos de configuración y darles los permisos necesarios .

sudo groupadd snort
sudo useradd snort -r -s /sbin/nologin -c SNORT_IDS -g snort
sudo mkdir /etc/snort
sudo mkdir /etc/snort/rules
sudo mkdir /etc/snort/preproc_rules
sudo touch /etc/snort/rules/white_list.rules /etc/snort/rules/black_list.rules /etc/snort/rules/local.rules
sudo mkdir /var/log/snort
sudo mkdir /usr/local/lib/snort_dynamicrules
sudo chmod -R 5775 /etc/snort
sudo chmod -R 5775 /var/log/snort
sudo chmod -R 5775 /usr/local/lib/snort_dynamicrules
sudo chown -R snort:snort /etc/snort
sudo chown -R snort:snort /var/log/snort
sudo chown -R snort:snort /usr/local/lib/snort_dynamicrules
sudo cp ~/snort/snort-2.9.8.0/etc/*.conf* /etc/snort
sudo cp ~/snort/snort-2.9.8.0/etc/*.map /etc/snort

Antes de ejecutar snort , vamos a editar el archivo de configuración .

sudo gedit /etc/snort/snort.conf
ipvar HOME_NET 192.168.1.101/24 #Vuestra ip local
ipvar EXTERNAL_NET $HOME_NET
var RULE_PATH /etc/snort/rules
var SO_RULE_PATH /etc/snort/so_rules
var PREPROC_RULE_PATH /etc/snort/preproc_rules
var WHITE_LIST_PATH /etc/snort/rules
var BLACK_LIST_PATH /etc/snort/rules

Las reglas serán descargadas de forma automática gracias a Pulledpork , por lo tanto podemos comentarlas .

sudo sed -i 's/include $RULE_PATH/#include $RULE_PATH/' /etc/snort/snort.conf

Para poder añadir una regla y probarla , vamos descomentar :

include $RULE_PATH/local.rules

Ahora hagamos una prueba de configuración .

sudo snort -T -c /etc/snort/snort.conf

Si hasta ahora lo estáis haciendo bien , tendréis este mensaje .

Snort successfully validated the configuration!
Snort exiting

Vamos a añadir una regla muy simple en el archivo : /etc/snort/rules/local.rules .

alert icmp any any -> $HOME_NET any (msg:"ICMP test"; sid:10000001; rev:001;)

Ejecutemos snort :

sudo /usr/local/bin/snort -A console -q -u snort -g snort -c /etc/snort/snort.conf -i wlan0

NB: Si usais ubuntu 15.10 , es posible que vuestra interface red no sea ni eth0 , ni wlan0 .

Y hagamos un ping hacia una máquina exterior para observar la alerta . Por ejemplo : ping example.com

10/31-02:27:19.663643  [**] [1:10000001:1] ICMP test [**] [Priority: 0] {ICMP} 93.184.216.34 -> 192.168.1.101
10/31-02:27:19.663675  [**] [1:10000001:1] ICMP test [**] [Priority: 0] {ICMP} 93.184.216.34 -> 192.168.1.101
10/31-02:27:20.658378  [**] [1:10000001:1] ICMP test [**] [Priority: 0] {ICMP} 93.184.216.34 -> 192.168.1.101
10/31-02:27:20.658404  [**] [1:10000001:1] ICMP test [**] [Priority: 0] {ICMP} 93.184.216.34 -> 192.168.1.101
10/31-02:27:21.766521  [**] [1:10000001:1] ICMP test [**] [Priority: 0] {ICMP} 93.184.216.34 -> 192.168.1.101
10/31-02:27:21.766551  [**] [1:10000001:1] ICMP test [**] [Priority: 0] {ICMP} 93.184.216.34 -> 192.168.1.101
10/31-02:27:22.766167  [**] [1:10000001:1] ICMP test [**] [Priority: 0] {ICMP} 93.184.216.34 -> 192.168.1.101
10/31-02:27:22.766197  [**] [1:10000001:1] ICMP test [**] [Priority: 0] {ICMP} 93.184.216.34 -> 192.168.1.101

A partir de aquí , solo nos queda crear nuestras propias reglas o descargarlas directamente aquí .

¿ Qué es un IPS ?

ips1

Los IPS funcionan de forma similar a los IDS , pero toman medidas contra las actividades o programas maliciosos que detectan .

Ya no hablamos de NIDS y HIDS , sino de NIPS y HIPS .

Un NIPS puede abandonar o anular una conexión TCP sospechosa , y un HIPS puede finalizar un proceso o eleminar un programa sospechoso .

También podemos utilizar snort como IPS gracias al plugin Snortsam .

fail2ban es uno de los IPS más conocidos , y permite analizar los logs del sistema en busca de motivos suficientes para tomar contramedidas .

¿Te gustó este artículo ? Deja un comentario y compártelo 🙂

3 thoughts on “Técnicas de prevención de intrusiones (IDS/IPS)

  1. Raul Bernarda

    Need to talk to u but from another server. Will get back to you.

  2. Heya i’m for the first time here. I found this
    board and I in finding It truly useful & it helpeed me out a lot.

    I hoope to offer something back aand help others like
    you helped me.

  3. Hey there! Do you know if they make any plugins to
    help with Search Engine Optimization? I’m trying to get my blog too rank for some targeted kwywords but I’m not seeing very good gains.
    If you know of any please share. Kudos!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> 

*