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
###########