Está en la página 1de 26

Si está ejecutando Snort como una máquina virtual VMware ESXi, se recomienda usar el adaptador de red vmxnet 3 .

Adelante
Entonces empecemos. Primero, debemos asegurarnos de que la tarjeta de red no trunca los paquetes de gran tamaño. Del Manual de Snort :
Algunas tarjetas de red tienen características denominadas "Descarga de recepción grande" (lro) y "Descarga de recepción genérica" (gro). Con estas características habilitadas, la tarjeta de red
realiza el reensamblado de paquetes antes de que sean procesados por el kernel. De forma predeterminada, Snort truncará paquetes más grandes que el tamaño predeterminado de 1518
bytes. Además, LRO y GRO pueden causar problemas con el reensamblado basado en objetivos de Stream5. Le recomendamos que apague LRO y GRO.
Edite / etc / network / interfaces como administrador:
1 sudo vi /etc/network/interfaces

Agregue las siguientes dos líneas para cada interfaz de red donde escuchará a Snort, asegurándose de cambiar eth0 para que coincida con el nombre de su interfaz (vea la nota a continuación
para Ubuntu 16):
1 post-up ethtool -K eth0 gro off
2 post-up ethtool -K eth0 lro off

Nota importante para las personas que ejecutan Ubuntu 16 : Comenzando con Ubuntu 15.10, las interfaces de red ya no siguen el estándar ethX (eth0, eth1, ...). En su lugar, los nombres de
las interfaces se asignan como Nombres de interfaz de red predecibles . Esto significa que necesita verificar los nombres de sus interfaces usando ifconfig -a . En mi caso, lo que originalmente
era eth0 ahora es ens160. Si está ejecutando Ubuntu 15.10, en cualquier lugar de esta guía verá eth0, deberá reemplazarlo con el nuevo nombre de su interfaz.
un ejemplo de cómo el archivo / etc / network / interfaces debe buscar una única interfaz:
1 # This file describes the network interfaces available on your system
2 # and how to activate them. For more information, see interfaces(5).
3 source /etc/network/interfaces.d/*
4 # The loopback network interface
5 auto lo
6 iface lo inet loopback
7 # The primary network interface
8 auto eth0
9 iface eth0 inet dhcp
10 post-up ethtool -K eth0 gro off
11 post-up ethtool -K eth0 lro off

A continuación, crearemos un directorio para guardar los archivos de tarball descargados:


1 mkdir ~/snort_src
2 cd ~/snort_src

A continuación, debemos instalar todos los requisitos previos de los repositorios de Ubuntu:
sudo apt-get install -y build-essential libpcap-dev libpcre3-dev libdumbnet-dev bison flex zlib1g-dev liblzma-dev openssl
1 libssl-dev
Desglose de los paquetes que está instalando:

 esencial para la compilación: proporciona las herramientas de compilación (GCC y similares) para compilar software.

 bison, flex : analizadores requeridos por DAQ (DAQ se instala más adelante).

 libpcap-dev : biblioteca para la captura de tráfico de red requerida por Snort.

 libpcre3-dev : Biblioteca de funciones para soportar expresiones regulares requeridas por Snort.

 libdumbnet-dev : la biblioteca libdnet proporciona una interfaz simplificada y portátil para varias rutinas de red de bajo nivel. Muchas guías para instalar Snort instalan esta biblioteca desde

la fuente, aunque eso no es necesario.

 zlib1g-dev : una biblioteca de compresión requerida por Snort.

 liblzma-dev : proporciona descompresión de archivos swf (adobe flash)

 openssl y libssl-dev : proporciona firmas de archivos SHA y MD5


La biblioteca final que Snort requiere es la biblioteca de desarrollo para Nghttp2 : una biblioteca HTTP / 2 C que implementa el algoritmo de compresión de encabezado HPAC .
En Ubuntu 16 la instalación es fácil:
1 # Ubuntu 16 only:
2 sudo apt-get install -y libnghttp2-dev

para Ubuntu 14, necesitamos compilar desde la fuente:


1 # Ubuntu 14 only (not Ubuntu 16)
2 sudo apt-get install -y autoconf libtool pkg-config
3 cd ~/snort_src
4 wget https://github.com/nghttp2/nghttp2/releases/download/v1.17.0/nghttp2-1.17.0.tar.gz
5 tar -xzvf nghttp2-1.17.0.tar.gz
6 cd nghttp2-1.17.0
7 autoreconf -i --force
8 automake
9 autoconf
10 ./configure --enable-lib-only
11 make
12 sudo make install

Snort utiliza la biblioteca de adquisición de datos (DAQ) para abstraer las llamadas a las bibliotecas de captura de paquetes. DAQ se descarga e instala desde el sitio web de Snort:
1 cd ~/snort_src
2 wget https://snort.org/downloads/snort/daq-2.0.6.tar.gz
3 tar -xvzf daq-2.0.6.tar.gz
4 cd daq-2.0.6
5 ./configure
6 make
7 sudo make install

Ahora estamos listos para instalar Snort desde la fuente. Cuando configuramos la compilación de Snort, usamos el indicador --enable-sourcefire , que habilita el Monitoreo de rendimiento de
paquetes (PPM), y coincide con la forma en que el equipo de Sourcefire construye Snort.
1 cd ~/snort_src
2 wget https://snort.org/downloads/snort/snort-2.9.9.0.tar.gz
3 tar -xvzf snort-2.9.9.0.tar.gz
4 cd snort-2.9.9.0
5 ./configure --enable-sourcefire
6 make
7 sudo make install

Ejecute el siguiente comando para actualizar las bibliotecas compartidas:


1 sudo ldconfig

Dado que la instalación de Snort coloca el binario de Snort en / usr / local / bin / snort , es una buena política crear un enlace simbólico a / usr / sbin / snort :
1 sudo ln -s /usr/local/bin/snort /usr/sbin/snort

El último paso de nuestra instalación de Snort es probar que el Snort Binary se ejecuta. Ejecute Snort con el indicador -V , lo que hace que Snort muestre el número de versión:
1 /usr/sbin/snort -V
y debería ver una salida similar a la siguiente:
1 user@snortserver:~$ snort -V
2
3 Version 2.9.9.0 GRE (Build 56)
4 By Martin Roesch & The Snort Team: http://www.snort.org/contact#team
5 Copyright (C) 2014-2016 Cisco and/or its affiliates. All rights reserved.
6 Copyright (C) 1998-2013 Sourcefire, Inc., et al.
7 Using libpcap version 1.7.4
8 Using PCRE version: 8.38 2015-11-23
9 Using ZLIB version: 1.2.8
Configurar Snort para ejecutar como un NIDS
Este es el segundo de un conjunto de artículos que lo guiará a través de los pasos para instalar y configurar Snort como un sistema de detección de intrusos en la red (NIDS). En el artículo
anterior, instalamos el binario Snort y verificamos que se ejecutó correctamente. En esta sección, configuraremos Snort para que se ejecute como NIDS mediante la creación de los archivos y
carpetas que Snort espera cuando se ejecute como NIDS, y conoceremos elarchivo de configuración de Snort: snort.conf .
Configuracion basica
En primer lugar, por razones de seguridad, queremos que Snort se ejecute como un usuario sin privilegios. Creamos un usuario y grupo de snort para este propósito:
1 sudo groupadd snort
2 sudo useradd snort -r -s /sbin/nologin -c SNORT_IDS -g snort

A continuación, debemos crear una serie de archivos y carpetas que Snort espera cuando se ejecuta en modo NIDS. Luego, cambiaremos la propiedad de esos archivos a nuestro nuevo usuario
de snort. Snort almacena los archivos de configuración en / etc / snort , las reglas en / etc / snort / rules , / usr / local / lib / snort_dynamicrules , y almacena sus registros
en / var / log / snort :
# Create the Snort directories:
1
sudo mkdir /etc/snort
2
sudo mkdir /etc/snort/rules
3 sudo mkdir /etc/snort/rules/iplists
4 sudo mkdir /etc/snort/preproc_rules
5 sudo mkdir /usr/local/lib/snort_dynamicrules
6 sudo mkdir /etc/snort/so_rules
7
8
# Create some files that stores rules and ip lists
9 sudo touch /etc/snort/rules/iplists/black_list.rules
10 sudo touch /etc/snort/rules/iplists/white_list.rules
11 sudo touch /etc/snort/rules/local.rules
12 sudo touch /etc/snort/sid-msg.map
13
14
# Create our logging directories:
15 sudo mkdir /var/log/snort
dieciséis sudo mkdir /var/log/snort/archived_logs
17
18
# Adjust permissions:
19
sudo chmod -R 5775 /etc/snort
20
sudo chmod -R 5775 /var/log/snort
21
sudo chmod -R 5775 /var/log/snort/archived_logs
22 sudo chmod -R 5775 /etc/snort/so_rules
23 sudo chmod -R 5775 /usr/local/lib/snort_dynamicrules
24
25 # Change Ownership on folders:
26 sudo chown -R snort:snort /etc/snort
27 sudo chown -R snort:snort /var/log/snort
28 sudo chown -R snort:snort /usr/local/lib/snort_dynamicrules
29
Ahora necesitamos mover los siguientes archivos desde el tarball de Snort extraído a la carpeta de configuración de snort:

 ranking.config describe los tipos de clasificaciones de ataques que Snort entiende (agrupando las reglas en estos tipos de clasificaciones), como trojan-activity o system-call-detect. La lista
de clasificaciones se puede encontrar en la sección 3.4.6 del Manual de Snort.

 file_magic.conf describe reglas para identificar tipos de archivos.


 reference.config contiene las direcciones URL a las que se hace referencia en las reglas que proporcionan más información sobre las alertas.
 snort.conf es el archivo de configuración de Snort, le dice a Snort dónde se encuentran los recursos y cómo emitir alertas, entre otras cosas.
 threshold.conf le permite controlar la cantidad de eventos necesarios para generar una alerta, lo que puede ayudar a suprimir las alertas ruidosas. Más información aquí .
 attribute table.dtd permite a Snort utilizar información externa para determinar protocolos y políticas. Más información aquí .
 gen-msg.map le dice a Snort qué preprocesador usa qué regla. Más información aquí .
 unicode.map proporciona una asignación entre los idiomas Unicode y el identificador. Este archivo es requerido por Snort para comenzar.
Ejecute los comandos a continuación para mover los archivos listados arriba a la carpeta / etc / snort :
1 cd ~/snort_src/snort-2.9.9.0/etc/
2 sudo cp *.conf* /etc/snort
3 sudo cp *.map /etc/snort
4 sudo cp *.dtd /etc/snort
5
6 cd ~/snort_src/snort-2.9.9.0/src/dynamic-preprocessors/build/usr/local/lib/snort_dynamicpreprocessor/
7 sudo cp * /usr/local/lib/snort_dynamicpreprocessor/
La carpeta de configuración de Snort y la estructura de archivos ahora deberían tener el aspecto siguiente:
1 user@snortserver:~$ tree /etc/snort
2 /etc/snort
3 ├── attribute_table.dtd
4 ├── classification.config
5 ├── file_magic.conf
6 ├── gen-msg.map
7 ├── preproc_rules
8 ├── reference.config
9 ├── rules
10 │.. ├── local.rules
11 │.. ├── iplists
12 │ .. ├── black_list.rules
13 │ .. ├── white_list.rules
14 ├── sid-msg.map
15 ├── snort.conf
dieciséis ├── so_rules
17 ├── threshold.conf
└── unicode.map
18
Edición del archivo de configuración de Snort
El archivo de configuración de Snort se almacena en /etc/snort/snort.conf y contiene todas las configuraciones que Snort usará cuando se ejecute en el modo NIDS. Este es un archivo
grande (más de 500 líneas), y contiene varias opciones para la configuración de Snort. Estamos interesados en solo unos pocos ajustes en este momento.
Primero, debemos comentar las líneas que hacen que Snort importe el conjunto predeterminado de archivos de reglas. Hacemos esto porque usaremos PulledPork para administrar nuestros
conjuntos de reglas, lo que guarda todas las reglas en un solo archivo. La manera fácil de comentar todas estas líneas es usar sed para agregar el carácter "#" (hash) a esas líneas. Esto se logra
ejecutando el siguiente comando:
1 sudo sed -i 's/include \$RULE\_PATH/#include \$RULE\_PATH/' /etc/snort/snort.conf
El resultado de este comando es que las líneas 547 a 651 en snort.conf ahora serán comentadas, lo que evitará que Snort cargue esos archivos de reglas en el inicio. Estos archivos de reglas
no existen y harán que Snort genere un error si intenta cargar un archivo que no existe. Si tuviera que descargar manualmente los archivos de reglas desde el sitio web de snort y extraerlos a
la carpeta / etc / snort / rules , querrá que esas reglas queden sin comentarios. Usaremos PulledPork (configurado más adelante) para administrar todas nuestras reglas y guardarlas en
un solo archivo, por lo que necesitamos que se comenten todos esos archivos de reglas.
A continuación, debemos editar manualmente algunas líneas en el archivo snort.conf. Use vi (o su editor favorito) para editar /etc/snort/snort.conf :
1 sudo vi /etc/snort/snort.conf

Primero, debemos informarle a Snort el rango de red de su red doméstica (los activos que está tratando de proteger) y todas las demás redes externas. Hacemos esto editando las líneas 45 y
48 de snort.conf para indicar los rangos de IP de estas dos redes. En el siguiente ejemplo, nuestra red doméstica es 10.0.0.0 con una máscara de subred de 24 bits (255.255.255.0), y nuestras
redes externas son todas las demás redes.
1 ipvar HOME_NET 10.0.0.0/24 # (line 45) make this match your internal (friendly) network
Nota : no se recomienda configurar EXTERNAL_NET en ! $ HOME NET como se recomienda en algunas guías, ya que puede hacer que Snort no detecte alertas.
A continuación, debemos informarle a Snort las ubicaciones de todas las carpetas que creamos anteriormente. Estas configuraciones también forman parte del archivo snort.conf . He
incluido los números de línea después del hash para que pueda encontrar la configuración más fácilmente (no escriba el número de línea, solo cambie la ruta para que coincida con la que se
muestra a continuación):
1 var RULE_PATH /etc/snort/rules # line 104
2 var SO_RULE_PATH /etc/snort/so_rules # line 105
3 var PREPROC_RULE_PATH /etc/snort/preproc_rules # line 106
4
5 var WHITE_LIST_PATH /etc/snort/rules/iplists # line 113
6 var BLACK_LIST_PATH /etc/snort/rules/iplists # line 114
Finalmente, queremos habilitar un archivo de reglas incluido: /etc/snort/rules/local.rules . Usaremos este archivo para almacenar nuestras propias reglas, incluida una regla que
escribiremos en el siguiente artículo de esta serie que nos permitirá verificar fácilmente que Snort está generando alertas correctamente. Anule el comentario de la siguiente línea (línea 545)
eliminando el hash desde el principio de la línea:
1 include $RULE_PATH/local.rules
Probando Snort con nuestro archivo de configuración
Snort tiene la capacidad de validar el archivo de configuración, y debe hacer esto cada vez que haga modificaciones en snort.conf . Ejecute el siguiente comando para que Snort pruebe el
archivo de configuración:
1 sudo snort -T -c /etc/snort/snort.conf -i eth0
La -T le dice a snort que pruebe, y -c le dice a snort la ruta al archivo de configuración, y se le pide que especifique la interfaz que desea escuchar con -i(este es un nuevo requisito a partir de
la versión 2.9.8.x de resoplido). Asegúrese de utilizar la interfaz correcta. Debería ver algunos resultados, con las siguientes líneas al final:
1 ...
2 Snort successfully validated the configuration!
3 Snort exiting
Escribir y probar una sola regla con Snort
En los dos artículos anteriores de esta serie, instalamos Snort y lo configuramos para que se ejecute como NIDS. En este artículo, vamos a crear una regla que hace que Snort genere una alerta
cada vez que vea un mensaje ICMP. Si lo desea, puede omitir esta sección, ya que no es necesario que el Snort NIDS esté en funcionamiento, pero le ayudará a comprender mejor cómo se crean
y cargan las reglas de Snort.
Adelante
En el artículo anterior, creamos el archivo /etc/snort/rules/local.rules y lo dejamos vacío. También editamos el archivo snort.conf para decirle a Snort que cargue este archivo
local.rules (cuando anulamos el comentario de la línea: incluya $ RULE_PATH / local.rules en snort.conf ). Cuando se inicia Snort, se utilizará la incluyen Directiva
en snort.conf para cargar todas las reglas en local.rules . El archivo local.rules es un lugar donde podemos colocar reglas que son específicas de nuestro entorno y es ideal para
realizar pruebas.
Primero, necesitamos editar el archivo local.rules :
1 sudo vi /etc/snort/rules/local.rules

Ingrese el siguiente texto y guarde el archivo:


alert icmp any any -> $HOME_NET any (msg:"ICMP test detected"; GID:1; sid:10000001; rev:001; classtype:icmp-
1
event;)

Lo que dice esta regla es que para cualquier paquete ICMP que vea desde cualquier red a nuestro HOME_NET , genere una alerta con la prueba ICMP detexto . La otra información aquí
(GID, REV, classtype) se usa para agrupar la regla, y será útil cuando instale BASE.
Barnyard2 no lee la metainformación sobre alertas del archivo local.rules. Sin esta información, Barnyard2 no sabrá ningún detalle sobre la regla que activó la alerta y generará errores no
fatales al agregar nuevas reglas con PulledPork (hecho en un paso posterior). Para asegurarse de que barnyard2 sepa que la regla que creamos con el identificador único 10000001 tiene el
mensaje "Detección de prueba ICMP", así como otra información (consulte esta publicación del blog para obtener más información). Agregamos las siguientes dos líneas
al archivo /etc/snort/sid-msg.map :
1 #v2

2 1 || 10000001 || 001 || icmp-event || 0 || ICMP Test detected || url,tools.ietf.org/html/rfc792

(el # v2 le dice a barnyard2 que la siguiente línea es el formato de la versión 2, en lugar de v1)
Ya que hemos hecho cambios en el archivo que se carga snort (local.rules), es una buena idea probar el archivo de configuración nuevamente:
1 sudo snort -T -c /etc/snort/snort.conf -i eth0

Si tiene éxito, debería poder desplazarse hacia arriba a través de la salida y ver que Snort ha cargado nuestra regla:
+++++++++++++++++++++++++++++++++++++++++++++++++++

Initializing rule chains...

1 Snort rules read

1 detection rules

0 decoder rules

0 preprocessor rules

1 Option Chains linked into 1 Chain Headers

0 Dynamic rules

+++++++++++++++++++++++++++++++++++++++++++++++++++

+-------------------[Rule Port Counts]---------------------------------------

| tcp udp icmp ip

| src 0 0 0 0

| dst 0 0 0 0

| any 0 0 1 0

| nc 0 0 1 0

| s+d 0 0 0 0

+----------------------------------------------------------------------------

Ahora para probar la regla. Necesitamos verificar que Snort genere una alerta cuando procesa un paquete ICMP. Lanzaremos Snort con las siguientes opciones:
-A console the console option prints fast mode alerts to stdout

-q Quiet. Don't show banner and status report.


-u snort run snort as the following user after startup

-g snort run snort as the following group after startup

-c /etc/snort/snort.conf the path to our snort.conf file

-i eth0 the interface to listen on

Ejecute Snort con el siguiente comando, modificando los parámetros según sea necesario para su configuración:
1 sudo /usr/local/bin/snort -A console -q -u snort -g snort -c /etc/snort/snort.conf -i eth0

Nota : Si está ejecutando Ubuntu 16, recuerde que el nombre de su interfaz no es eth0.
Una vez que haya iniciado Snort con el comando anterior, necesita usar otra computadora u otra ventana de terminal para hacer ping a la interfaz que le indicó a Snort que escuche. Debería
ver una salida similar a la siguiente en el terminal de la máquina Snort:
10/31-02:27:19.663643 [**] [1:10000001:1] ICMP test detected [∗∗] [Classification: Generic ICMP event] [Priority:3] {ICMP}
10.0.0.74 -> 10.0.0.64

10/31-02:27:19.663675 [**] [1:10000001:1] ICMP test detected [∗∗] [Classification: Generic ICMP event] [Priority:3] {ICMP}
10.0.0.64 -> 10.0.0.74
1
10/31-02:27:20.658378 [**] [1:10000001:1] ICMP test detected [∗∗] [Classification: Generic ICMP event] [Priority:3] {ICMP}
2
10.0.0.74 -> 10.0.0.64
3
10/31-02:27:20.658404 [**] [1:10000001:1] ICMP test detected [∗∗] [Classification: Generic ICMP event] [Priority:3] {ICMP}
4 10.0.0.64 -> 10.0.0.74

5 10/31-02:27:21.766521 [**] [1:10000001:1] ICMP test detected [∗∗] [Classification: Generic ICMP event] [Priority:3] {ICMP}
10.0.0.74 -> 10.0.0.64
6
10/31-02:27:21.766551 [**] [1:10000001:1] ICMP test detected [∗∗] [Classification: Generic ICMP event] [Priority:3] {ICMP}
7
10.0.0.64 -> 10.0.0.74
8
10/31-02:27:22.766167 [**] [1:10000001:1] ICMP test detected [∗∗] [Classification: Generic ICMP event] [Priority:3] {ICMP}
9 10.0.0.74 -> 10.0.0.64

10/31-02:27:22.766197 [**] [1:10000001:1] ICMP test detected [∗∗] [Classification: Generic ICMP event] [Priority:3] {ICMP}
10.0.0.64 -> 10.0.0.74

^C*** Caught Int-Signal


Debe usar ctrl-c para evitar que el snort se ejecute después de la salida anterior. El ejemplo anterior muestra los 4 mensajes de solicitud y respuesta de eco ICMP entre nuestro servidor Snort
(IP 10.0.0.64) y nuestra otra máquina (10.0.0.74). Si busca en / var / log / snort , también verá un archivo con el nombre snort.log.nnnnnnnnnn (las n son reemplazadas por
números), que contiene la misma información que Snort imprimió en la pantalla.
Instalación de Barnyard2
En los tres artículos anteriores de esta serie, instalamos Snort, lo configuramos para ejecutarse como NIDS y configuramos una regla. En este artículo, vamos a instalar y
configurar Barnyard2 , que es un spooler dedicado que ayudará a reducir la carga en el servidor Snort.
Notas
Se le solicitará que cree una contraseña de root de MySQL, así como una contraseña para un usuario de la base de datos MySQL. En los ejemplos a continuación, hemos elegido
usar MYSQLROOTPASSWORD como la contraseña de la raíz de MySQL, y MYSQLSNORTPASSWORD como el usuario de la base de datos de MySQL. Tenga en cuenta las diferencias cuando se
trabaja a continuación.
Adelante
Primero, necesitamos instalar algunos requisitos previos:
1 sudo apt-get install -y mysql-server libmysqlclient-dev mysql-client autoconf libtool

Se le pedirá la contraseña de root de MySQL. Elegimos MYSQLROOTPASSWORD para los siguientes ejemplos.
A continuación, necesitamos editar el snort.conf :
1 sudo vi /etc/snort/snort.conf

Necesitamos agregar una línea que indique a Snort que genere eventos en formato binario (para que Barnyard2 pueda leerlos). Después de la línea 520 en /etc/snort/snort.conf (una línea
que es un ejemplo comentado), agregue la siguiente línea y guarde el archivo:
1 output unified2: filename snort.u2, limit 128

Esta línea le dice a snort que emita eventos en el formato binario unificado (que es más fácil para que snort produzca en lugar de alertas legibles).
Luego necesitamos obtener, configurar e instalar Barnyard2.
Nota sobre la versión de Barnyard2: En los comandos a continuación, descargaremos la versión actual de Barnyard2 en lugar de un número de versión específico, que en este momento es
2.1.14. Ahora descargue y prepárese para instalar:
1 cd ~/snort_src

2 wget https://github.com/firnsy/barnyard2/archive/master.tar.gz -O barnyard2-Master.tar.gz

3 tar zxvf barnyard2-Master.tar.gz

4 cd barnyard2-master
5 autoreconf -fvi -I ./m4

Barnyard2 necesita acceso a la biblioteca dnet.h , que instalamos anteriormente con el paquete libdumbnet de Ubuntu. Sin embargo, Barnyard2 espera un nombre de archivo diferente para
esta biblioteca. Cree un enlace flexible de dnet.h a dubmnet.h para que no haya problemas:
1 sudo ln -s /usr/include/dumbnet.h /usr/include/dnet.h

2 sudo ldconfig

Dependiendo de la arquitectura de su sistema (x86 o x64), elija ejecutar una de las siguientes líneas para indicar a Barnyard2 dónde están las bibliotecas MySQL:
1 ./configure --with-mysql --with-mysql-libraries=/usr/lib/x86_64-linux-gnu

2 ./configure --with-mysql --with-mysql-libraries=/usr/lib/i386-linux-gnu

Luego continúa con la instalación:


1 make

2 sudo make install

Barnyard2 ahora está instalado en / usr / local / bin / barnyard2 . Realice una prueba para asegurarse de que Barnyard2 se instaló correctamente ejecutando:
1 user@snortserver$ /usr/local/bin/barnyard2 -V

Para configurar Snort para usar Barnyard2, necesitamos copiar algunos archivos del paquete fuente:
1 sudo cp ~/snort_src/barnyard2-master/etc/barnyard2.conf /etc/snort/

3 # the /var/log/barnyard2 folder is never used or referenced

4 # but barnyard2 will error without it existing

5 sudo mkdir /var/log/barnyard2

6 sudo chown snort.snort /var/log/barnyard2

8 sudo touch /var/log/snort/barnyard2.waldo

9 sudo chown snort.snort /var/log/snort/barnyard2.waldo


Ya que Barnyard2 guarda las alertas en nuestra base de datos MySQL, necesitamos crear esa base de datos, así como un usuario MySQL 'snort' para acceder a esa base de datos. Ejecute los
siguientes comandos para crear la base de datos y el usuario de MySQL.
Cuando se le solicite una contraseña, use la MYSQLROOTPASSWORD . También configurará la contraseña de usuario de MySQL snort en el cuarto comando mysql (a
MYSQLSNORTPASSWORD), así que cámbielo allí.
1 $ mysql -u root -p

2 mysql> create database snort;

3 mysql> use snort;

4 mysql> source ~/snort_src/barnyard2-master/schemas/create_mysql

5 mysql> CREATE USER 'snort'@'localhost' IDENTIFIED BY 'MYSQLSNORTPASSWORD';

6 mysql> grant create, insert, select, delete, update on snort.* to 'snort'@'localhost';

7 mysql> exit

Ahora que la base de datos Snort ha sido creada, necesitamos informarle a Barnyard2 sobre los detalles de la base de datos. Edite el archivo de configuración Barnyard2:
1 sudo vi /etc/snort/barnyard2.conf

y al final del archivo, agregue esta línea:


output database: log, mysql, user=snort password=MYSQLSNORTPASSWORD dbname=snort host=localhost sensor
1
name=sensor01

Como la contraseña está en el archivo barnyard2.conf, debemos evitar que otros usuarios la lean:
1 sudo chmod o-r /etc/snort/barnyard2.conf

Ahora Barnyard2 está configurado para trabajar con Snort. Para probar, ejecutemos Snort y Barnyard2 y generemos algunas alertas. Primero, ejecutamos Snort como un demonio. Usamos los
mismos parámetros que antes, con la adición de la marca -D , que le indica a snort que se ejecute como un demonio, y eliminamos una consola porque no queremos que aparezcan alertas en
la pantalla. Tome nota del PID del proceso para poder eliminarlo más tarde si es necesario:
1 sudo /usr/local/bin/snort -q -u snort -g snort -c /etc/snort/snort.conf -i eth0 -D

Haga ping a la dirección IP de la interfaz especificada anteriormente (eth0). Si verifica el directorio de registro de Snort, debería ver un archivo llamado snort.u2.nnnnnnnnnn (las n son
reemplazadas por números). Estas son las alertas binarias que snort ha escrito para que Barnyard2 las procese.
Ahora queremos decirle a Barnyard2 que mire estos eventos y que los cargue en la instancia de la base de datos de snort. Ejecutamos Barnyard2 con las siguientes banderas:
-c /etc/snort/barnyard2.conf the Barnyard2 configuration file

-d /var/log/snort the location to look for the snort binary output file

-f snort.u2 the name of the file to look for.

-w /var/log/snort/barnyard2.waldo the path to the waldo file (checkpoint file).

-u snort run Barnyard2 as the following user after startup

-g snort run Barnyard2 as the following group after startup

Ejecuta el siguiente comando:


sudo barnyard2 -c /etc/snort/barnyard2.conf -d /var/log/snort -f snort.u2 -w /var/log/snort/barnyard2.waldo -g snort
1
-u snort

Debería ver una salida similar a la siguiente:


--== Initialization Complete ==--

______ -*> Barnyard2 <*-

/ ,,_ \ Version 2.1.14 (Build 336)

|o" )~| By Ian Firns (SecurixLive): http://www.securixlive.com/

+ '''' + (C) Copyright 2008-2013 Ian Firns <firnsy@securixlive.com>

Using waldo file '/var/log/snort/barnyard2.waldo':

spool directory = /var/log/snort

spool filebase = snort.u2

time_stamp = 1412527313

record_idx = 16
Opened spool file '/var/log/snort/snort.u2.1412527313'

Closing spool file '/var/log/snort/snort.u2.1412527313'. Read 16 records

Opened spool file '/var/log/snort/snort.u2.1412528990'

Waiting for new data

Use ctrl-c para detener la ejecución de barnyard2, luego detenga el snort Daemon usando ps para encontrarlo y finalícelo como se muestra en el ejemplo a continuación):
user@snortserver:~$ ps aux | grep snort
1
snort 1296 0.0 2.1 297572 43988 ? Ssl 03:15 0:00 /usr/local/bin/snort -q -u snort -g snort -c
2 /etc/snort/snort.conf -i eth0 -D
3
user 1314 0.0 0.0 4444 824 pts/0 S+ 03:17 0:00 grep --color=auto snort
4
user@snortserver:~$ sudo kill 1296
5
user@snortserver:~$
Adelante
En las dos secciones anteriores de este artículo, instalamos Snort y lo configuramos para que funcione como un NIDS con paquetes de procesamiento de Barnyard2 que generaron alertas
basadas en una regla. En este artículo, vamos a instalar un script Perl llamado PulledPork , que descargará automáticamente los últimos conjuntos de reglas desde el sitio web de Snort.
Oinkcode
Para descargar el conjunto de reglas gratuito principal de Snort, necesitas un oinkcode . Regístrese en el sitio web de Snort y guarde su código de oink antes de continuar, ya que se requiere
el código de oink para el conjunto de reglas gratuito más popular.
Instalando PulledPork
Instale los requisitos previos de PulledPork:
1 sudo apt-get install -y libcrypt-ssleay-perl liblwp-useragent-determined-perl

Descarga la última versión de PulledPork e instala. Aquí copiamos el archivo perl real a / usr / local / bin y los archivos de configuración necesarios a / etc / snort :
1 cd ~/snort_src

2 wget https://github.com/shirkdog/pulledpork/archive/master.tar.gz -O pulledpork-master.tar.gz

3 tar xzvf pulledpork-master.tar.gz

4 cd pulledpork-master/

6 sudo cp pulledpork.pl /usr/local/bin

7 sudo chmod +x /usr/local/bin/pulledpork.pl

8 sudo cp etc/*.conf /etc/snort

Pruebe que PulledPork se ejecuta ejecutando el siguiente comando, buscando el resultado a continuación:
1 user@snortserver:~$ /usr/local/bin/pulledpork.pl -V

2 PulledPork v0.7.3 - Making signature updates great again!

4 user@snortserver:~$
Ahora que estamos seguros de que PulledPork funciona, necesitamos configurarlo:
1 sudo vi /etc/snort/pulledpork.conf

Realice los siguientes cambios en el archivo pullpork.conf . En cualquier lugar que vea ‹oinkcode› ingrese su código de oink desde el sitio web de Snort. He incluido números de línea para
ayudarlo a identificar la ubicación de estas líneas en el archivo de configuración.
Line 19: enter your oinkcode where appropriate (or comment out if no oinkcode)

Line 29: Un-comment for Emerging threats ruleset (not tested with this guide)

Line 74: change to: rule_path=/etc/snort/rules/snort.rules

Line 89: change to: local_rules=/etc/snort/rules/local.rules

Line 92: change to: sid_msg=/etc/snort/sid-msg.map

Line 96: change to: sid_msg_version=2

Line 119: change to: config_path=/etc/snort/snort.conf

Line 133: change to: distro=Ubuntu-12-04

Line 141: change to: black_list=/etc/snort/rules/iplists/black_list.rules

Line 150: change to: IPRVersion=/etc/snort/rules/iplists

Queremos ejecutar PulledPork una vez manualmente para asegurarnos de que funciona. Utilizamos las siguientes banderas:
-c /etc/snort/pulledpork.conf the location of the snort.conf file

-l Write detailed logs to /var/log

Ejecuta el siguiente comando:


1 sudo /usr/local/bin/pulledpork.pl -c /etc/snort/pulledpork.conf -l
Después de que se ejecute este comando (se demora), ahora debería ver snort.rules en / etc / snort / rules , y las reglas .so en / usr / local / lib / snort_dynamicrules . Pulled Pork
combina todos los conjuntos de reglas que descarga en estos dos archivos. Debe asegurarse de agregar la línea: incluya $ RULE_PATH / snort.rules al archivo snort.conf , o las reglas de
cerdo extraídas nunca se leerán en la memoria cuando se inicie Snort:
1 sudo vi /etc/snort/snort.conf

Agregue la siguiente línea para permitir que snort use las reglas que PulledPork descargó (línea 547), después de la línea para las reglas locales :
1 include $RULE_PATH/snort.rules

Ya que hemos modificado snort.conf , debemos probar que Snort se carga correctamente en modo NIDS con las reglas de PulledPork incluidas:
1 sudo snort -T -c /etc/snort/snort.conf -i eth0

Una vez que tenga éxito, queremos probar que Snort y Barnyard2 se cargan correctamente cuando se ejecutan manualmente como demonios:
sudo /usr/local/bin/snort -u snort -g snort -c /etc/snort/snort.conf -i eth0 -D
1
sudo barnyard2 -c /etc/snort/barnyard2.conf -d /var/log/snort -f snort.u2 -w /var/log/snort/barnyard2.waldo -g snort -
2
u snort -D

Como antes, haga ping a la dirección IP de la interfaz de snort eth0, y luego verifique la base de datos para ver más eventos (recuerde usar MYSQLSNORTPASSWORD ):
1 mysql -u snort -p -D snort -e "select count(*) from event"

La cantidad de eventos informados debe ser mayor que lo que vio la última vez que ejecutó este comando. Ahora que estamos seguros de que PulledPork se ejecuta correctamente, queremos
agregar PulledPork a crontab de root para que se ejecute diariamente:
1 sudo crontab -e

Elija cualquier editor si se le solicita


El equipo de Snort le ha pedido que realice una asignación aleatoria cuando PulledPork se conecta a su servidor para ayudarlo con el equilibrio de carga. En el siguiente ejemplo, tenemos
PulledPork revisando a las 04:01 todos los días. Cambie el valor de los minutos (el 01 a continuación) a un valor entre 0 y 59, y el valor de las horas (el 04 a continuación) a un valor entre 00 y
23. Para obtener más información sobre el diseño de crontab, consulte aquí :
1 01 04 * * * /usr/local/bin/pulledpork.pl -c /etc/snort/pulledpork.conf -l

Detener los demonios en ejecución de las pruebas anteriores:


1 user@snortserver:~$ ps aux | grep snort
2 snort 1296 0.0 2.1 297572 43988 ? Ssl 03:15 0:00 /usr/local/bin/snort -q -u snort -g snort -c
/etc/snort/snort.conf -i eth0 -D
3
user 1314 0.0 0.0 4444 824 pts/0 S+ 03:17 0:00 grep --color=auto snort
4
user@snortserver:~$ sudo kill 1296
5

6
user@snortserver:~$ ps aux | grep barnyard2
7
snort 1298 0.0 2.1 297572 43988 ? Ssl 03:15 0:00 barnyard2 -c /etc/snort/barnyard2.conf -d /var/log/snort -f
8
snort.u2 -w /var/log/snort/barnyard2.waldo -g snort -u snort -D
9
user 1316 0.0 0.0 4444 824 pts/0 S+ 03:17 0:00 grep --color=auto barnyard2

user@snortserver:~$ sudo kill 1298

Nota : Snort necesita ser recargado para ver las nuevas reglas. Esto se puede hacer con kill -SIGHUP snort-pid, o puede reiniciar el servicio de snort (una vez creado en una parte posterior de
esta guía).
Nota adicional sobre las reglas de objetos compartidos : además de las reglas regulares, la sección anterior descargará las reglas de objetos compartidos. Las reglas de objetos compartidos
también se conocen como "reglas de objetos compartidos", "reglas de SO", "reglas precompiladas" o "objetos compartidos". Estas son reglas de detección que están escritas en el lenguaje de
reglas de Objeto Compartido, que es similar a C.
Estas reglas son precompiladas por el proveedor de las reglas, permiten reglas más complicadas y permiten el ofuscado de las reglas (por ejemplo, para detectar ataques que aún no se han
parcheado, pero el proveedor desea permitir la detección sin revelar la vulnerabilidad). ). Estas reglas son compiladas por el proveedor para sistemas específicos. Uno de estos sistemas es
Ubuntu 12, y afortunadamente estas reglas también funcionan en Ubuntu 14 y 15.
Enhorabuena, si tiene una salida similar a la anterior, entonces ha configurado PulledPork con éxito. Continúe en la siguiente sección para instalar los scripts de inicio para Snort y
Barnyard2. Elija uno de los dos enlaces siguientes, dependiendo de su versión de Ubuntu. Creará una secuencia de comandos Upstart para Ubuntu 12 y 14, y una secuencia de comandos
systemD para Ubuntu 15.
Creando un script de inicio de systemD en Ubuntu 16
Ubuntu 16 se ha movido a systemD para servicios / daemons. Para obtener más información acerca de cómo crear y administrar servicios de systemD, consulte este excelente artículo.
Para crear el servicio SystemD de Snort, use un editor para crear un archivo de servicio:
1 sudo vi /lib/systemd/system/snort.service

con el siguiente contenido (cambie ens160 si es diferente en su sistema):


1 [Unit]

2 Description=Snort NIDS Daemon

3 After=syslog.target network.target

5 [Service]

6 Type=simple

7 ExecStart=/usr/local/bin/snort -q -u snort -g snort -c /etc/snort/snort.conf -i ens160

9 [Install]

10 WantedBy=multi-user.target

Ahora le decimos a systemD que el servicio debe iniciarse en el arranque:


1 sudo systemctl enable snort

Y comienza el servicio Snort:


1 sudo systemctl start snort

Verifique que el servicio se está ejecutando


1 systemctl status snort

A continuación, crea el servicio systemd de Barnyard2. Agregaremos dos indicadores aquí: -D para ejecutar como un demonio, y -a / var / log / snort / archived logs, esto moverá los registros
que Barnyard2 ha procesado a la carpeta / var / log / snort / archived /. Use un editor para crear un archivo de servicio:
1 sudo vi /lib/systemd/system/barnyard2.service

Con el siguiente contenido:


[Unit]
1
Description=Barnyard2 Daemon
2
After=syslog.target network.target
3

4
[Service]
5
Type=simple
6
ExecStart=/usr/local/bin/barnyard2 -c /etc/snort/barnyard2.conf -d /var/log/snort -f snort.u2 -q -w
7 /var/log/snort/barnyard2.waldo -g snort -u snort -D -a /var/log/snort/archived_logs
8

9
[Install]
10
WantedBy=multi-user.target

Ahora le decimos a systemD que el servicio debe iniciarse en el arranque:


1 sudo systemctl enable barnyard2

Y comienza el servicio barnyard2:


1 sudo systemctl start barnyard2

Verifique que el servicio se está ejecutando


1 systemctl status barnyard2

Reinicie la computadora y verifique que ambos servicios estén iniciados.


1 user@snortserver:~$ service snort status

2 snort start/running, process 1116

3 user@snortserver:~$ service barnyard2 status


4 barnyard2 start/running, process 1109

5 user@snortserver:~$
Instalando BASE en Ubuntu
BASE es una interfaz gráfica de usuario simple para Snort. Los productos alternativos incluyen Snorby, Splunk, Sguil, AlienVault OSSIM y cualquier servidor de syslog.
Splunk es un producto fantástico, ideal para ingerir, recopilar y analizar grandes conjuntos de datos. Splunk es de uso gratuito (limitado a 500 MB de datos por día, lo que es mucho para una
pequeña tienda). El cliente Sguil es una aplicación escrita en tcl / tk. Snorby está abandonado y se basa en versiones antiguas de muchos paquetes de Ruby, lo que dificulta la documentación de
la instalación y un objetivo en constante cambio.
He elegido usar BASE en esta guía porque es fácil de configurar, usar y funciona bien para lo que hace. Tanto BASE como Snorby son proyectos abandonados, y mientras Snorby ofrece una
buena interfaz web 2.0, ya que está escrito en Ruby-on-Rails, los paquetes de Ruby en los que se basa se actualizan constantemente, lo que causa problemas de compatibilidad con otros
paquetes Snorby requeridos. lo que causa demasiados problemas de instalación. Si desea intentar instalar Snorby, consulte estas guías desactualizadas no compatibles de Ubuntu
14 o Ubuntu 16 .
Hay una ligera diferencia entre BASE en Ubuntu 14 en comparación con 16: BASE requiere PHP 5, que no está disponible en los archivos de Ubuntu 16 (Ubuntu se ha pasado a PHP 7 en esta
versión), por lo que tenemos que usar un PPA en Ubuntu 16 para instalar los paquetes php 5:
# Ubuntu 16 only:
1
sudo add-apt-repository ppa:ondrej/php
2
sudo apt-get update
3 sudo apt-get install -y apache2 libapache2-mod-php5.6 php5.6-mysql php5.6-cli php5.6 php5.6-common php5.6-gd php5.6-cli php-pear
4 php5.6-xml
En Ubuntu 14, solo podemos instalar las librerías necesarias:
1 # Ubuntu 14 only:
2 sudo apt-get install -y apache2 libapache2-mod-php5 php5 php5-mysql php5-common php5-gd php5-cli php-pear

A continuación, instale el gráfico de imagen de pera:


1 sudo pear install -f --alldeps Image_Graph
Descargue e instale ADODB:
1 cd ~/snort_src
2 wget https://sourceforge.net/projects/adodb/files/adodb-php5-only/adodb-520-for-php5/adodb-5.20.8.tar.gz
3 tar -xvzf adodb-5.20.8.tar.gz
4 sudo mv adodb5 /var/adodb
5 sudo chmod -R 755 /var/adodb

Descarga BASE y copia a apache root


1 cd ~/snort_src
2 wget http://sourceforge.net/projects/secureideas/files/BASE/base-1.4.5/base-1.4.5.tar.gz
3 tar xzvf base-1.4.5.tar.gz
4 sudo mv base-1.4.5 /var/www/html/base/

Crea el archivo de configuración BASE:


1 cd /var/www/html/base
2 sudo cp base_conf.php.dist base_conf.php

Ahora edita el archivo de configuración:


1 sudo vi /var/www/html/base/base_conf.php
con la siguiente configuración (tenga en cuenta que se requiere la barra diagonal final en la línea 80, a pesar de las instrucciones en el archivo de configuración):
1 $BASE_urlpath = '/base'; # line 50
2 $DBlib_path = '/var/adodb/'; #line 80
3 $alert_dbname = 'snort'; # line 102
4 $alert_host = 'localhost';
5 $alert_port = '';
6 $alert_user = 'snort';
7 $alert_password = 'MySqlSNORTpassword'; # line 106

Mientras esté en el archivo conf.php base, también querrá comentar la línea 457 (no queremos la fuente de DejaVuSans) y dejar de comentar (eliminar las dos barras invertidas) de la línea
459, habilitando una fuente en blanco. La sección de fuentes (que comienza en la línea 456) debe tener este aspecto:
1 //$graph_font_name = "Verdana";
2 //$graph_font_name = "DejaVuSans";
3 //$graph_font_name = "Image_Graph_Font";
4 $graph_font_name = "";

Establezca permisos en la carpeta BASE, y como la contraseña está en el archivo conf.php base, deberíamos evitar que otros usuarios la lean:
1 sudo chown -R www-data:www-data /var/www/html/base
2 sudo chmod o-r /var/www/html/base/base_conf.php

reinicie Apache:
1 sudo service apache2 restart
El último paso para configurar BASE se realiza a través de http:

1. Busque http: //ServerIP/base/index.php y haga clic en el enlace de la página de configuración (reemplace ServerIP con la IP de su servidor Snort).

2. Haga clic en el botón Crear BASE AG en la parte superior derecha de la página.

3. Haga clic en el enlace de la página principal .


Nota: Si lee el archivo de configuración BASE, hay otras opciones que puede implementar si lo desea. Algunas opciones son las alertas de correo electrónico SMTP, la dirección IP para el
soporte de país y la autenticación de usuario.

También podría gustarte