Snort: Detección de intrúsos y ataques

Iniciado por MurdeR^^, 24 Septiembre 2007, 09:16 AM

0 Miembros y 1 Visitante están viendo este tema.

MurdeR^^

Snort: Detección de intrúsos y ataques  //  By MurdeR ( http://www.thefreeks.com.ar , x3m_murder@hotmail.com )

#######################
Instalación de Snort+ ACID:
#######################

Instalaremos Snort, utilizando una base de datos mysql y apache para el ACID (para ver estadísticas en vivo).

Paso 1: Bajar todos los paquetes;

- snort-x.x.x.tar.gz
- acid-x.x.x
- adodb-x.x-for-php
- jpgraph-x.x
- mysql-x.x.x
- apache-1.3.x
- php-4.x

(recomiendo apache 1.3 y php 4 ya que algunas características cambian en diferentes versiones)


Paso 2:

Descomprimir y compilar snort;

root@murder # tar -zxvf snort.tar.gz
root@murder # cd snort
root@murder # ./configure --sysconfdir=/etc --prefix=/usr --with-mysql=/usr && nice -19 make
root@murder # make install
y creamos un directorio para los logs:
root@murder # mkdir /var/log/snort

Paso 3:

Instalar mysql, apache y php;

http://www.diosdelared.com/foro/index.php?topic=636.0

Paso 4:

Crear tablas y configurar usuario en mysql;

root@murder # mysql -u root -p

Desde aca en mysql...

Creamos la db:

$ CREATE DATABASE snort

Le ponemos clave:

$ grant all on snort.* to root@localhost identified by "password"

$exit

Salimos de mysql.. volvemos a la consola;

root@murder # mysql -u root -ptu_contraseña < /usr/src/snort-x.x.x/schemas/create_mysql snort

Paso 5:

Configuramos Snort;

root@murder # mkdir /etc/snort; mkdir /etc/snort/rules
root@murder # cd /usr/src/snort-2.3.3/
root@murder # cp etc/* /etc/snort
root@murder # cd rules
root@murder # cp * /etc/snort/rules

Editamos el conf file;

root@murder # gedit /etc/snort/snort.conf

usando control f (buscar) buscamos la linea que pone RULE_PATH y la sustituimos por:

var RULE_PATH /etc/snort/rules

y localizamos la que pone "output database" y la sustituimos por:

output database: log, mysql, user=root password=tu_contraseña dbname=snort host=localhost

Guardar y cerrar gedit (o vim o lo que sea)

Paso 6:

Instalando ACID;

root@murder # tar zxvf acid-x.x.x.tar.gz

Lo movemos a htdocs (o donde pitos este el home de apache..)

root@murder # mv ./acid /var/www/htdocs/

Descomprimimos tambien jpgraph (para las imagenes) y adodb y los movemos:

root@murder # tar zxvf jpgraph-x.x.tar.gz
root@murder # mv ./jpgraph-x.x /var/www/htdocs/acid/jpgraph
root@murder # tar zxvf adodbxxx.tgz
root@murder # mv ./adodb/var/www/htdocs/acid/adodb

Editamos el conf file de acid:

root@murder # gedit /var/www/htdocs/acid/acid_conf.php

Localizamos y modificamos la linea que pone: $Dblib_path

$DBlib_path = "/var/www/htdocs/acid/adodb";

Y modificamos las alertas (control f, $alert ;), deben quedar así:

$alert_dbname = "snort";
$alert_host = "localhost";
$alert_port = "";
$alert_user = "root";
$alert_password = "tu_contraseña";
$ChartLib_path = "/var/www/htdocs/acid/jpgraph/src";

Ahora creamos el siguiente archivo:
root@murder # gedit /var/www/htdocs/acid/.htaccess

(Esta en blanco..) y ponemos lo siguiente:

AuthName ?Acid Access?
AuthType Basic
AuthUserFile /var/www/htdocs/acid/htpasswd.users
require valid-user

Guardar, salir y listo.


Paso (ya me perdi xD) ah si, 7:

Editamos el access de apache;

root@murder # gedit /etc/apache/access.conf

y agregamos:

<Directory /var/www/htdocs/acid/>
AllowOverride AuthConfig
order allow,deny
allow from all
Options ExecCGI
</Directory>

al final o donde quieran... guardar, salir

ahora editamos httpd.conf:

root@murder # gedit /etc/apache/httpd.conf

y modificamos el user  y group por:

User web

Group web

guardar, salir..

Para terminar, reiniciamos apache:

root@murder # apachectl restart

o si no esta arrancado:

root@murder # apachectl start

Paso final de la instalacion (8...):

Activamos el snort:

root@murder # snort -devyq -c /etc/snort/snort.conf -l /var/log/snort/ -D

y lo añadimos a rc.local (script bash de arranque-.-) para que arranque cada vez que se reinicia:

root@murder # echo snort -devyq -c /etc/snort/snort.conf -l /var/log/snort/ -D >> /etc/rc.d/rc.local

Para ver las estadisticas en el acid pongan en el navegador:

http://localhost/acid

y voilá.



#######################
Usando snort a mano:
#######################

Es muy sencillo e intuitivo, ponemos el snort a snifar el trafico de la interfaz deseada, en este caso eth0:

murder@murder $ snort -c /var/log/snort -i eth0

Listo, esto registrará todas las alertas de ataques, scaneos, etc. en los logs. Para verlo no hay mas que

murder@murder $ cd /var/log/snort
murder@murder $  ls
y obtendran un resultado como este:

192.168.0.2/   200.129.x.x/ alert


###################
Configuracion avanzada:
###################

Snort se basa en reglas para detectar los intentos de ataques, estas reglas se pueden crear manualmente (un rollazo) o descargar y cargar de la siguiente manera:

root@murder # wget http://www.snort.org/pub-bin/downloads.cgi/Download/vrt_os/snortrules-snapshot-CURRENT.tar.gz

Creamos un dir para las reglas:

root@murder # mkdir /etc/snort/rules

Descomprimimos:

root@murder # tar -zxvf snortrules-snapshot-CURRENT.tar.gz

Movemos al directorio recien creado:

root@murder # cp * /etc/snort/rules

root@murder # cd /etc/snort
root@murder # gedit snort.conf

y lo modificamos de la siguiente forma:

#######################################

var HOME_NET 192.168.126.0/24
        var EXTERNAL_NET !$HOME_NET
        var RULE_PATH /etc/snort/rules

--------include classification.config --> include
$RULE_PATH/../classification.config
--------include reference.config --> include $RULE_PATH/../reference.config

######################### end  #############################

Y despues de la linea preprocessor stream4_reassemble agregar lo siguiente:

###

preprocessor stream4_reassemble: both,ports 21 23 25 53 80 110 111 139
143 445 513 1433

### end ###

Descomentamos la linea:

#####
output database: log, mysql, user=snort password=snort dbname=snort host=localhost
#### end ####

Guardar... cerrar..


Ahora le cambiamos el propietario/grupo al dir de las reglas:

root@murder # chown -R snort.snort /etc/snort/rules

Y list...


########################
Actualización automatica: (esta parte es extraida de nabble.com)
########################

Instalar y Configurar OinkMaster para actualizar automaticamente snort
descargamos oinkmaster desde sourceforge y lo descomprimimos
cd /root/snortinstall
wget http://superb-west.dl.sourceforge.net/sourceforge/oinkmaster/oinkmaster-2.0.tar.gz
tar -zxvf oinkmaster-2.0.tar.gz

copiamos el archivo oinkmaster.pl a /usr/sbin/ y el archivo
oinkmaster.conf lo copiamos en /etc/
cd /root/snortinstall/oinkmaster-2.0/
cp oinkmaster.pl /usr/sbin/
cp oinkmaster.conf /etc/

le cambiamos los permisos a esos archivos:

        chmod +x /usr/sbin/oinkmaster.pl
        chmod 755 /etc/snort ????
       
entramos en la pagina de snort: http://www.snort.org y entramos con
nuestra cuenta de snort,
despues del acceso, nos dirigimos a la parte inferior de la pagina y
presionamos el boton "Get Code"
copiamos ese codigo y luego editamos el archivo /etc/oinkmaster.conf asi:
debemos copiar el codigo de seguridad generado anteriormente y
reemplazarlo donde dice <oinkcode>

        #url = http://www.snort.org/pub-bin/oinkmaster.cgi/<oinkcode>/snortrules-snapshot-CURRENT.tar.gz
        url = http://www.snort.org/pub-bin/oinkmaster.cgi/79a09e5e6d8531a8f34bc582167ab4ecb469bfcb/snortrules-snapshot-CURRENT.tar.gz

como superusuario le ponemos una contrasena al usuario snort:
su -
passwd snort
       
luego ejecutamos la actualizacion:
sudo -u snort /usr/sbin/oinkmaster.pl -o /etc/snort/rules

para programar la actualizacion todos los dias a las 7:30, agregamos
la siguiente linea al archivo /etc/crontab:
30 7 * * * snort /usr/bin/oinkmaster.pl -o /etc/snort/rules

###########

FIN

###########




http://www.diosdelared.com -> Blogs && Wargames

Lisbeth Salander

Mi pregunta es si es realmente necesario instalar una base de datos mysql y apache para el ACID o si por el contrario es solo un complemento. Gracias

T0rete

Con mysql y acid en otra maquina se trata de tener las alertas en otra maquina, de una forma ordenada y facil de consultar. Desde luego que puedes instalar simplemente el snort en una maquina y simplemente mira los logs.

Si lo vas a instalar en una red con algo de tráfico te recomiendo que instales estos u otros complementos que te premitan ver y clasificar los logs de forma clara.

Lisbeth Salander

Gracias por la informacion. Bueno pues estoy usando snort y estoy intentando añadir nuevas reglas, pero no se en que directorio estan ni que fichero tengo que modificar.
Concretamente quiero generar una alerta para detectar un ping procedente de una maquina que esta dentro de mi propia subred. Que es lo que hay que hacer?

T0rete

#4
La verdad es que nunca he hecho una regla (lo tengo en la maquina con el IPCOP), me limito a actualizar las firmas y activar las alertas que vienen en el conf pero es algo muy interesante.

En este taller viene como se crea una regla para un TCP ping, espero que te sea de ayuda.
http://nautopia.coolfreepages.com/snort_cap3.htm

Citaralert tcp $EXTERNAL_NET any -> $HOME_NET any (msg:"Escaneo ping con nmap";flags:A;ack:0; reference:arachnids,28;classtype:attempted-recon; sid:628; rev:1;)

Supongo que podrás hacer una regla para ICMP.

Nedsecurity

Hola, sé que este hilo está ya completamente en deshuso, pero me gustaría saber algunas reglas de snort para proteger un servidor de correo, he estado investigando y he visto pop3.rules, pero no se muy bien como usarla, si alguien me pudiese ayudar...

Un saludo

Aprendiz-Oscuro

Pues haces referencia a dicho hilo si quieres pero abriendo un tema nuevo. No se reviven temas tan antiguos. Lo siento.


Saludos!!
Leer las reglas del Foro



Hago montajes y/o configuraciones detalladas de ordenadores a medida. Para más información mandar mensaje privado.