Snort Detección de intrúsos y ataques

En este manual explicare paso a paso como usar Snort para la deteccion de intrusos y ataques.


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@Homelesshacker # tar -zxvf snort.tar.gz
root@Homelesshacker # cd snort
root@Homelesshacker # ./configure --sysconfdir=/etc --prefix=/usr --with-mysql=/usr && nice -19 make
root@Homelesshacker # make install

Y creamos un directorio para los logs:
root@Homelesshacker # mkdir /var/log/snort

Paso 3:

Instalar mysql, apache y php;

su
passwd:*******
apt-get install apache2
apt-get install mysql
apt-get install php5
mysql -u root -p
apt-get install libapache2-mod-auth-mysql
apt-get install install php5-mysql
/etc/init.d/apache2 restart

Paso 4:

Crear tablas y configurar usuario en mysql;

root@Homelesshacker # 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@Homelesshacker # mysql -u root -ptu_contraseña < /usr/src/snort-x.x.x/schemas/create_mysql snort Paso 5:

Configuramos Snort;

root@Homelesshacker # mkdir /etc/snort; mkdir /etc/snort/rules
root@Homelesshacker # cd /usr/src/snort-2.3.3/
root@Homelesshacker # cp etc/* /etc/snort
root@Homelesshacker # cd rules
root@Homelesshacker # 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@Homelesshacker # tar zxvf acid-x.x.x.tar.gz

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

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

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

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

Editamos el conf file de acid:

root@Homelesshacker# 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@Homelesshacker # 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 7:

Editamos el access de apache;

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

y agregamos:


AllowOverride AuthConfig
order allow,deny
allow from all
Options ExecCGI


al final o donde quieran... guardar, salir

ahora editamos httpd.conf:

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

y modificamos el user y group por:

User web

Group web

guardar, salir..

Para terminar, reiniciamos apache:

root@Homelesshacker # apachectl restart

o si no esta arrancado:

root@Homelesshacker # apachectl start

Paso 8:

Activamos el snort:

root@Homelesshacker # 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@Homelesshacker # 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 listo.



Usando snort a mano:

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

Homelesshacker@Homelesshacker $ 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

Homelesshacker@Homelesshacker $ cd /var/log/snort
Homelesshacker@Homelesshacker $ 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 o descargar y cargar de la siguiente manera:

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

Creamos un dir para las reglas:

root@Homelesshacker # mkdir /etc/snort/rules

Descomprimimos:

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

Movemos al directorio recien creado:

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

root@Homelesshacker # cd /etc/snort
root@Homelesshacker # 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


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



Descomentamos la linea:

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


Guardar... cerrar..


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

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

Y listo.


Actualización automatica:

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


#url = http://www.snort.org/pub-bin/oinkmaster.cgi//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




Y bueno, con eso ya tienen el snort funcionando adecuadamente, con las reglas cargadas y actualizandose solito salu2.

0 comentarios: