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 ?


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 ?


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 .
Técnicas de prevención de intrusiones (IDS/IPS)  Técnicas de prevención de intrusiones (IDS/IPS) Reviewed by PDFREEBOOK on 15:15 Rating: 5