Snort Howto

download Snort Howto

of 16

description

Snort Howto

Transcript of Snort Howto

SNORT HOWTO [email protected] [email protected] V1.0, 20 Enero 2012 Este documento va dirigido a usuarios Linux, que desean conocer un poco ms acerca de sistemas de deteccin y prevencin de intrusos (IDS/IPS).

1. INTRODUCCIN 1.1. Introduccin a IDS/IPS 1.2. Que es Snort? 1.3. Cmo conseguirlo? 1.4. Dnde conseguir manuales?

2. INSTALACIN 2.1. Qu debo instalar primero? 2.2. Instalacin 2.3. Configuracin

3. DEMO 3.1. Cmo establecer Snort en los diferentes modos?

1.

INTRODUCCIN

1.1. Introduccin a IDS/IPSEl trmino IDS (Sistema de deteccin de intrusiones) hace referencia a un mecanismo que, sigilosamente, escucha el trfico en la red para detectar actividades anormales o sospechosas, y de este modo, reducir el riesgo de intrusin. Monitorea no solo el trfico de la red sino tambin su comportamiento y contenido. Se lo puede definir como un proceso de auditora de la informacin del sistema de la red o de un computador, logrando a travs de una configuracin y de una base de datos firmas prevenir y detectar posibles ataques de intrusos.

Snort HowToDanny Fernando Guerrero Alicia Johanna Guerrero

1

El proceso de deteccin de intrusos, se lo define de la siguiente manera: Una base de datos con una recopilacin de ataques anteriores. Un sistema actual debidamente configurado. Estado actual, referente en trminos de comunicacin y procesos.

Tipos de IDS HIDS.- IDS basados en Host, estos solo procesan determinadas actividades de los usuarios o computadoras. Ejemplos: Tripwire, SWATCH, LIDS RealSecure y NetIQ Vigilent. NIDS.- IDS basados en Red, realizan sniffing en algn punto de la red, en busca de intrusos. Bien ubicados los NIDS en la red, puede ser una alternativa excelente para la prevencin de los intrusos y un bajo impacto en la red al abarcar grandes redes. Ejemplos: SNORT, RealSecure, NFR y el IDS de CISCO. DIDS.- Es parte del NIDS, solo que distribuido en varios lugares de la red, con un consolido en un solo banco de informacin. IDS basados en Log, revisa los archivos de Logs en busca de posibles intrusos, se caracteriza por su precisin y completitud.

Caractersticas de IDS Un IDS, debe poseer las siguientes caractersticas: Escalable Ligero Confiable Robusto Distinguir lo que es un ataque de lo que es compartir un recurso del sistema.

1.2. Qu es Snort?Snort es un IDS o Sistema de deteccin de intrusiones basado en red (NIDS). Implementa un motor de deteccin de ataques y barrido de puertos que permite registrar, alertar y responder ante cualquier anomala previamente definida como patrones que corresponden a ataques, barridos, intentos aprovechar alguna vulnerabilidad, anlisis de protocolos, etc conocidos. Todo esto en tiempo real. Snort (http://www.snort.org/) est disponible bajo licencia GPL, gratuito y funciona bajo plataformas Windows y UNIX/Linux. Es uno de los ms usados y dispone de una gran cantidad de filtros o patrones ya predefinidos, as como actualizaciones constantes ante casos de ataques, barridos o vulnerabilidades que vayan siendo detectadas a travs de los distintos boletines de seguridad. Este IDS implementa un lenguaje de creacin de reglas flexibles, potente y sencillo. Durante su instalacin ya nos provee de cientos de filtros o reglas para backdoor, ddos, finger, ftp, ataques web, CGI, escaneos Nmap. Puede funcionar como sniffer, registro de paquetes, o como un IDS normal. Snort HowToDanny Fernando Guerrero Alicia Johanna Guerrero

2

1.3. Cmo conseguirlo?La primera fuente para conseguir Snort es su propio sitio web [http://www.snort.org/] donde estarn siempre las ltimas versiones, documentacin, y reglas. Cabe resaltar que Snort es open source. En este lugar se encuentra cdigo fuente de Snort para ser compilado e instalado.

1.4. Dnde conseguir manuales?En el sitio web [http://www.snort.org/docs] se encuentra diferente documentacin, entre ella manual de instalacin, manual de usuario, FAQs.

2.

INSTALACIN

2.1. Qu debo instalar primero?En primera instancia tener instalado el sistema operativo Linux, distribucin Ubuntu 10.04 LTS, en el cual realizaremos la siguiente instalacin de paquetes, los cuales son requeridos por Snort para su correcto funcionamiento. Nota: En el caso de no tener Ubuntu 10.04 LTS, se puede descargar de la siguiente direccin web http://www.ubuntu.com en la seccin de descargas, buscar la siguiente ISO: Ubuntu10.04.3-server-i386.iso Los paquetes a instalar son: Primero se debe tener privilegios de administrador (root). $ # sudo su Ejecutar el siguiente comando, para instalar los paquetes requeridos. # # sudo apt-get install nmap nbtscan apache2 php5 php5-mysql php5-gd libpcap0.8-dev libpcre3-dev g++ bison flex libpcap-ruby Instalacin gestor de base de datos mysql. (Asignar una contrasea segura al usuario root) # # sudo apt-get install mysql-server libmysqlclient16-dev Por ultimo, aseguramos que el sistema este actualizado con los siguientes comandos: # # sudo apt-get update # # sudo apt-get upgrade

2.2. Instalacin.A continuacin se debern instalar algunos paquetes adicionales para administracin y generacin de reportes. JpGraph 3Danny Fernando Guerrero Alicia Johanna Guerrero

Snort HowTo

Este paso provee las libreras para la generacin de tortas en la pagina principal de Snort report. Ejecutar el siguiente comando, para instalar los paquetes requerido. o Descargar cdigo fuente # sudo wget http://hem.bredband.net/jpgraph/jpgraph-1.27.1.tar.gz o Creacin de directorio # sudo mkdir /var/www/jpgraph o Descompresin y desempaquetado de cdigo fuente # sudo tar zxvf jpgraph-1.27.1.tar.gz o Copiar las libreras al directorio anteriormente creado # sudo cp -r jpgraph-1.27.1/src /var/www/jpgraph

Snort report Para lograr esto se debe descargar y configurar Snort report, el cual esta disponible en http://www.symmetrixtech.com, en la seccin de descargas se encuentra el siguiente archivo snortreport-1.3.3.tar.gz , el cual debe descargarse en algn directorio del sistema. Ejecutar el siguiente comando, para instalar los paquetes requerido. o Descomprimir, desempaquetar y guardar en /var/www # sudo tar zxvf snortreport-1.3.3.tar.gz -C /var/www/ o Modificar el siguiente archivo. # sudo nano /var/www/snortreport-1.3.3/srconf.php o Cambiar lo siguiente. $pass="YOURPASS"; Por $pass="TUCLAVEMYSQL"; Grabar y salir

Snort Antes de instalar el Snort, se requiere de algunos paquetes para que Snort funcione correcta. Snort 2.9.0 introduce la nueva API (Data Acquisition), se debe descargar e instalar antes de instalar en ncleo de snort. o La versin actual de daq-0.6.2.tar.gz esta localizada en http://www.snort.org/downloads/1339, descargar en la maquina donde se procede a realizar las instalaciones.

o

Descompresin, desempaquetado, compilacin e instalacin. # sudo tar zxvf daq-0.6.2.tar.gz cd daq-0.6.2 # sudo ./configure # sudo make 4Danny Fernando Guerrero Alicia Johanna Guerrero

Snort HowTo

# sudo make install Libdnet es una API generica de red que provee acceso a varios protocolos. o Descargar libnet de la siguiente url http://libnet.googlecode.com/files/libdnet1.12.tgz o Descompresin, desempaquetado, compilacin, instalacin y creacin de enlace virtual. # sudo tar zxvf libnet-1.12.tgz cd libnet-1.12/ # sudo ./configure # sudo make # sudo make install # sudo ln -s /usr/local/lib/libdnet.1.0.1 /usr/lib/libdnet.1

Acontinuacin, descarga e instalacin de Snort. El cdigo fuente de Snort se encuentra localizado en http://www.snort.org/downloads/1347, descargarlo en la maquina que va a funcionar como IDS. Descompresin y desempaquetado. # sudo tar zxvf snort-2.9.2.tar.gz Cambio de directorio a recien desempaquetado. # sudo cd snort-2.9.2 Configuracin de cdigo fuente, para su compilacin y instalacin. # sudo ./configure --prefix=/usr/local/snort --enable-sourcefire Compilacin # sudo make Instalacin # sudo make install Creacin de directorio para logs de snort # sudo mkdir /var/log/snort Creacin de directorio # sudo mkdir /var/snort Creacin de grupo snort # sudo groupadd snort Creacin de usuario y asociacin a grupo anteriormente creado. # sudo useradd -g snort snort Cambio de propietario aplicado al directorio /var/log/snort # sudo chown snort:snort /var/log/snort Creacin Base de datos snort. # echo "create database snort;"|mysql -u root -p 5Danny Fernando Guerrero Alicia Johanna Guerrero

Snort HowTo

# mysql -u root -p -D snort < ./schemas/create_mysql Crear el usuario snort en la base de datos. Dar todos los permisos, sobre la base de datos Snort, al usuario anteriormente creado # echo "grant create, insert, select, delete, update on snort.* to snort@localhost identified by 'CLAVE'"|mysql -u root -p

Descargar e instalar reglas de snort. Cabe resaltar que se debe estar logueado en sourcefire (www.snort.org). Las reglas se encuentran localizadas en https://www.snort.org/snort-rules, en este espacio se encuentran 2 secciones, una para suscriptores, y otra para usuarios registrados donde se puede descargar reglas con vigencia de 30 das. Descargar el paquete de reglas snortrules-snapshot-2920.tar.gz Descomprimir, desempaquetar, copiar contenido de reglas en archivos deseados. # sudo tar zxvf snortrules-snapshot-2920.tar.gz -C /usr/local/snort # sudo mkdir /usr/local/snort/lib/snort_dynamicrules # sudo cp /usr/local/snort/so_rules/precompiled/Ubuntu-10-4/i386/2.9.2.0/* /usr/local/snort/lib/snort_dynamicrules # sudo touch /usr/local/snort/rules/white_list.rules # sudo touch /usr/local/snort/rules/black_list.rules # sudo ldconfig

2.3. ConfiguracinVamos a editar el archivo snort.conf sudo nano /usr/local/snort/etc/snort.conf Cambiar estas lineas: var WHITE_LIST_PATH /etc/snort/rules var BLACK_LIST_PATH /etc/snort/rules Por estas: var WHITE_LIST_PATH /usr/local/snort/rules var BLACK_LIST_PATH /usr/local/snort/rules Cambiar estas lineas: dynamicpreprocessor directory /usr/local/lib/snort_dynamicpreprocessor/ dynamicengine /usr/local/lib/snort_dynamicengine/libsf_engine.so dynamycdetection directory /usr/local/lib/snort_dynamicrules Snort HowToDanny Fernando Guerrero Alicia Johanna Guerrero

6

Por estas: dynamicpreprocessor directory /usr/local/snort/lib/snort_dynamicpreprocessor/ dynamicengine /usr/local/snort/lib/snort_dynamicengine/libsf_engine.so dynamycdetection directory /usr/local/snort/lib/snort_dynamicrules Por debajo de siguiente linea # output unified2: filename merged.log, limit 128, nostamp, mpls_event_types, vlan_event_types Adicionar esta linea output unified2: filename snort.u2, limit 128 grabar y salir Descarga e instalacin Barnyard2 Barnyard es un sistema de salida para snort. Snort crea un binario de salida especial llamado unified, barnyard lee este archivo, y luego renvia los datos a la base de datos. Barnyard2 administra los eventos enviados de la base de datos. El cdigo fuente se localiza en la http://www.securixlive.com/download/barnyard2/barnyard2-1.9.tar.gz # sudo tar zxvf barnyard2-1.9.tar.gz # cd barnyard2-1.9 # sudo ./configure with-mysql # sudo make # sudo make install # sudo cp etc/barnyard2.conf /usr/local/snort/etc # sudo mkdir /var/log/barnyard2 # sudo chmod 666 /var/log/barnyard2 # sudo touch /var/log/snort/barnyard2.waldo Modificar el archive de configuracin: Sudo nano /usr/local/snort/etc/barnyard2.conf Cambiar las siguientes lneas: Config reference_file: /etc/snort/reference.config Config classification_file: /etc/snort/classification.config Config gen_file: /etc/snort/gen-msg.map Config sid_file: /etc/snort/sid-msg.map #config hostname: thor #config interface: eth0 #output database: log, mysql, user=root password=test dbname=db host=localhost Snort HowToDanny Fernando Guerrero Alicia Johanna Guerrero

siguiente

url

7

Por estas: Config reference_file: /usr/local/snort/etc/reference.config Config classification_file: /usr/local /snort/etc/classification.config Config gen_file: /usr/local /snort/etc/gen-msg.map Config sid_file: /usr/local /snort/etc/sid-msg.map config hostname: localhost config interface: eth1 output database: log, mysql, user=root password=TUCLAVEMYSQL dbname=snort host=localhost Configuracin de Tarjetas de Red Editamos el siguiente archivo: # sudo nano /etc/network/interfaces Dejamos el siguiente contenido: auto eth0 iface eth0 inet static address 192.168.1.1 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 gateway 192.168.1.1 auto eth1 iface eth1 inet manual ifconfig eth1 up Guardar y salir. Reiniciar el servicio # sudo /etc/init.d/networking restart Ver la figura siguiente.

Snort HowToDanny Fernando Guerrero Alicia Johanna Guerrero

8

Fuente: Symmetrix TechnologiesFigura 1. Topologia de red. Eth0 est conectada a la misma subred que tu equipo que monitoreo y eth1 est conectada al segmento que tu deseas monitorear. Al realizar un ipconfig el resultado debe ser algo parecido a esto.

Snort HowToDanny Fernando Guerrero Alicia Johanna Guerrero

9

Figura 2. Configuracin de tarjetas de red. Probando Snort Para probar snort usa el siguiente comando # sudo /usr/local/snort/bin/snort u snort g snort c /usr/local/snort/etc/snort.conf I eth1

Figura 3. Testeo inicial, para comprobacin de instalacin Si se observa commencing packet processing, quiere decir que a comenzado a capturar paquetes. Y todo va bien. Ver snort con snort report Si se desea ver la pagina principal de snort report se debe ingresar en el navegador de la maquina IDS la siguiente url: http://192.168.1.1/snortreport-1.3.2/alert.php. Si usa diferente direccin IP es necesario cambiar 192.168.1.1 por la IP utilizada

Snort HowToDanny Fernando Guerrero Alicia Johanna Guerrero

10

Figura 4. Pantalla snort report.

3.

DEMO

3.1. Cmo establecer Snort en los diferentes modos?Snort proporciona 3 modos: Modo sniffer Modo registro de paquetes Modo NIDS Modo sniffer Comenzamos con lo basico, se quiere imprimir cabeceras de paquetes TCP/IP. Se debe iniciar snort de la siguiente manera: # ./snort v

Snort HowToDanny Fernando Guerrero Alicia Johanna Guerrero

11

-

Figura 5. Inicio de demonio snort en modo sniffer Si se desea correr snort y solo mostrar la IP y cabeceras TCP/UDP/ICMP. Si quiere ver la aplicacin como transmite datos, iniciar snort de la siguiente manera # ./snort vd

Figura 6. Inicio de demonio snort en modo sniffer, mas detalles. Si se desea ver de manera ms descriptiva inicie snort de la siguiente manera # ./snort vde 12Danny Fernando Guerrero Alicia Johanna Guerrero

Snort HowTo

Figura 7. Modo sniffer, manera descriptiva.

Modo registro de paquetes Para iniciar snort en este modo, se necesita especificar el directorio log. # ./snort dev l /var/log/snort

Figura 8. Iniciar demonio modo registro de paquetes Snort HowToDanny Fernando Guerrero Alicia Johanna Guerrero

13

-

-

Si se desea guardar en log registro de paquetes de una red especifica se debe realizar lo siguiente. # ./snort dev l /var/log/snort h 192.168.1.0/24 Si se desea guardar registro de paquetes especficos en un log especifico se debe realizar lo siguiente. # ./snort dvr packet.log icmp En este caso solo registra paquetes icmp

Modo NIDS Para habilitar este modo se debe iniciar snort de la siguiente manera. # ./snort dev -l /var/log/snort h 192.168.1.0/24 c /usr/local/snort/etc/snort.conf Ver registro de monitoreo (registro.txt).

Figura 9. Iniciar demonio modo NIDS. Resultado de monitoreo =============================================================== Run time for packet processing was 22.872775 seconds Snort processed 27 packets. Snort ran for 0 days 0 hours 0 minutes 22 seconds Pkts/sec: 1 ================================================ Packet I/O Totals: Received: 27 Snort HowToDanny Fernando Guerrero Alicia Johanna Guerrero

14

Analyzed: 27 (100.000%) Dropped: 0 ( 0.000%) Filtered: 0 ( 0.000%) Outstanding: 0 ( 0.000%) Injected: 0 ============================================================ Breakdown by protocol (includes rebuilt packets): Eth: 27 (100.000%) VLAN: 0 ( 0.000%) IP4: 12 ( 44.444%) Frag: 0 ( 0.000%) ICMP: 0 ( 0.000%) UDP: 12 ( 44.444%) TCP: 0 ( 0.000%) IP6: 12 ( 44.444%) IP6 Ext: 12 ( 44.444%) IP6 Opts: 0 ( 0.000%) Frag6: 0 ( 0.000%) ICMP6: 0 ( 0.000%) UDP6: 12 ( 44.444%) TCP6: 0 ( 0.000%) Teredo: 0 ( 0.000%) ICMP-IP: 0 ( 0.000%) EAPOL: 0 ( 0.000%) IP4/IP4: 0 ( 0.000%) IP4/IP6: 0 ( 0.000%) IP6/IP4: 0 ( 0.000%) IP6/IP6: 0 ( 0.000%) GRE: 0 ( 0.000%) GRE Eth: 0 ( 0.000%) GRE VLAN: 0 ( 0.000%) GRE IP4: 0 ( 0.000%) GRE IP6: 0 ( 0.000%) GRE IP6 Ext: 0 ( 0.000%) GRE PPTP: 0 ( 0.000%) GRE ARP: 0 ( 0.000%) GRE IPX: 0 ( 0.000%) GRE Loop: 0 ( 0.000%) MPLS: 0 ( 0.000%) ARP: 3 ( 11.111%) IPX: 0 ( 0.000%) Eth Loop: 0 ( 0.000%) Eth Disc: 0 ( 0.000%) IP4 Disc: 0 ( 0.000%) IP6 Disc: 0 ( 0.000%) TCP Disc: 0 ( 0.000%) UDP Disc: 0 ( 0.000%) Snort HowToDanny Fernando Guerrero Alicia Johanna Guerrero

15

ICMP Disc: 0 ( 0.000%) All Discard: 0 ( 0.000%) Other: 0 ( 0.000%) Bad Chk Sum: 0 ( 0.000%) Bad TTL: 0 ( 0.000%) S5 G 1: 0 ( 0.000%) S5 G 2: 0 ( 0.000%) Total:27

Snort HowToDanny Fernando Guerrero Alicia Johanna Guerrero

16