De igual forma este tutorial se hace en Ubuntu 11.04 ya que es similar.
¿que es Snort?
Snort es un sniffer de paquetes y un detector de intrusos basado en red (se monitoriza todo un dominio de colisión). Es un software muy flexible que ofrece capacidades de almacenamiento de sus bitácoras tanto en archivos de texto como en bases de datos abiertas como lo es MySQL. Implementa un motor de detección de ataques y barrido de puertos que permite registrar, alertar y responder ante cualquier anomalía previamente definida. Así mismo existen herramientas de terceros para mostrar informes en tiempo real (ACID) o para convertirlo en un Sistema Detector y Preventor de Intrusos. Este IDS implementa un lenguaje de creación de reglas flexible, potente y sencillo.
La característica más apreciada de Snort, además de su funcionalidad, es su subsistema flexible de firmas de ataques. Snort tiene una base de datos de ataques que se está actualizando constantemente y a la cual se puede añadir o actualizar a través de la Internet. Los usuarios pueden crear ‘firmas’ basadas en las características de los nuevos ataques de red y enviarlas a la lista de correo de firmas de Snort, para que así todos los usuarios de Snort se puedan beneficiar. Esta ética de comunidad y compartir ha convertido a Snort en uno de los IDSes basados en red más populares, actualizados y robustos.
Requisitos
Primero Instalamos MySQL y PHP de esta forma:
sudo apt-get install apache2 php5 mysql-server phpmyadmin

durante la instalacion nos pide una contraseña en mi caso le puse admin posteriormente nos saldra un cuadro de instalacion con los procesos que se estan ejecutando para instalar mysql.

Probamos a ver si esta correcto escribiendo en nuestro navegador http://localhost/ deberia de salir Its works.
Ahora probamos phpmyadmin en http://localhost/phpmyadmin, si no nos funciona entonces en la terminal escribimos lo siguiente:
sudo mv /usr/share/phpmyadmin /var/www/
Para poder usar phpMyAdmin con Apache, editamos el archivo /etc/apache2/apache2.conf y agregamos la siguiente línea:
Include /etc/phpmyadmin/apache.conf
Ahora debemos reiniciar Apache, desde consola:
sudo /etc/init.d/apache2 restart
y probamos y ahora deberia de funcionar:

Ahora Procedemos a instalar la ultima version de Snort en la pagina oficial En este ejemplo, se desacargo la última versión a dia de hoy, la 2.9.0.5

Instalación
Instalando Snort: Nos situaremos en el directorio donde hemos descargado Snort en mi caso escribi cd home/david/Descargas y ahora procedemos a descomprimir Snort:
tar xvzf snort-2.9.0.5.tar.gz
cd snort-2.9.0.5

Instalamos dependencias que nos haran falta para compilar snort:
sudo apt-get install php5-gd php5-ldap php5-dev php5-mysql php-pear libnet1 libnet1-dev libpcap0.8 libpcap-dev libpcap0.8-dev libpcre3 expect gobjc libpcre3-dev flex bison libmysql++-dev libapache2-mod-php5 php5-cgi -y
Si nos resulta algun problema con el libdnet entramos a esta pagina y lo descargamos, luego en la carpeta donde se descargo lo extraemos, y ejecutamos el archivo que dice configure y empezara a configurarlo, luego en la terminarl escribimos sudo make install y empezara a instalar el libdnet
Configuramos, compilamos e instalamos para ello nos vamos a la carpeta donde tenemos el snort y nos vamos al archivo configure, lo ejecutamos en una terminal a como esta en la imagen:

y comenzara a configurarlo:

ahora nos regresamos a la terminal donde estabamos en la carpeta del snort (cd home/david/Descargas/snort-2.9.0.5 ) y ejecutamos:
make
make install
crearemos los directorios para Snort:
sudo mkdir -p /etc/snort
sudo mkdir -p /var/log/snort
sudo mkdir -p /etc/snort/rules
copiaremos ficheros necesarios:
# cp -r preproc_rules/ /etc/snort/
# cp etc/*.conf* /etc/snort/
# cp etc/*.map /etc/snort/
Ahora ya tenemos Snort instalado, ahora necesitaremos descargar las reglas, para ello, descargaremos oinkmaster desde su web (clic aqui).
La versión a dia de hoy es la 2.0. la descargaré y me situare en el directorio de descarga y :
tar xvzf oinkmaster-2.0.tar.gz
cd oinkmaster-2.0
Ahora deberemos registrarnos a la página de Snort, nos enviaran un correo para confirmar el registro; cuando esté confirmado entraremos a nuestra área privada (sign in), > my account > subscriptions and oinkcodes > oinkcodes : veremos algo así:
Oinkcodes
xxxx92xxxxx …..
Copiaremos esa cadena de números y letras y lo incluiremos a la configuración del oinkmaster:
nano oinkmaster.conf
Buscaremos esta línea:
# url = http://www.snort.org/pub-bin/oinkmaster.cgi//snortrules-snapshot-2.4.tar.gz
Eliminaremos la almohadilla del principio, cambiaremos <oinkcode> por nuestro código y también la versión del fichero por la versión de nuestro Snort; en mi ejemplo, la 2.8. Quedará así:
url = http://www.snort.org/pub-bin/oinkmaster.cgi/aquí tu código/snortrules-snapshot-2.8.tar.gz
Guardaremos el fichero con Control+o y saldremos del editor con Control+x
Ahora ejecutaremos oinkmaster para que nos descargue las reglas:
perl oinkmaster.pl -C oinkmaster.conf -o ./
Esperaremos un rato a que se descarguen y se descompriman.
Ahora moveremos las reglas (*.rules) que se nos an descomprimido en el actual directorio a snort:
# mv *.rules /etc/snort/rules/
creamos enlace simbólico:
# ln -s /usr/local/bin/snort /usr/sbin/snort
Crearemos un grupo y usuario específicos para manejar snort:
# groupadd snort
# useradd -g snort snort
Cambiamos grupo y dueño del directorio de logs de snort para que pueda ser utilizado por dicho dueño y grupo:
# chown snort:snort /var/log/snort/
# touch /var/log/snort/alert
# chown snort:snort /var/log/snort/alert
# chmod 600 /var/log/snort/alert
# touch /etc/snort/rules/local.rules
Configuraremos snort:
# nano /etc/snort/snort.conf
Buscaremos la línea : var RULE_PATH ../rules y la cambiaremos por:
var RULE_PATH /etc/snort/rules
también modificaremos la línea: var PREPROC_RULE_PATH ../preproc_rules y la cambiaremos por:
var PREPROC_RULE_PATH /etc/snort/preproc_rules
Buscaremos: # output database: log, mysql, user=root password=test dbname=db host=localhost y eliminaremos la almohadilla del principio y también haremos las siguientes modificaciones:
output database: log, mysql, user=snort password=un_password dbname=dbsnort host=localhost
Nota: cambiaremos un_password por una contraseña que queramos, la utilizaremos más adelante, no te la olvides
Ahora buscamos: # include $PREPROC_RULE_PATH/preprocessor.rules y eliminamos la almohadilla del principio, quedando:
include $PREPROC_RULE_PATH/preprocessor.rules
También eliminaremos la almohadilla de: # include $PREPROC_RULE_PATH/decoder.rules , quedando:
include $PREPROC_RULE_PATH/decoder.rules
Guardaremos el fichero con Control+o y cerraremos con Control+x
Creando la Base de Datos para Snort:
Ingresaremos:
mysql -u root -p
(ingresaremos la contraseña de nuestro usuario root de mysql).
Crearemos y configuraremos la BD:
CREATE DATABASE dbsnort;
GRANT CREATE, INSERT, SELECT, DELETE, UPDATE ON dbsnort.* TO snort@LOCALHOST;
SET PASSWORD FOR snort@LOCALHOST=PASSWORD(‘un_password‘);
FLUSH PRIVILEGES;
exit
Recordad sustituir un_password por vuestro password anterior.
Nos situaremos en el directorio donde descomprimimos snort, en mi caso es:
cd ~/snort-2.8.5.1/
Ejecutaremos el setup schema para la DB:
cd schemas
mysql -p -u snort dbsnort < create_mysql
Nos pedirá la contraseña que pusimos de un_password , la introducimos.
Instalando BASE para interpretar Snort gráficamente:
descargamos BASE de su web http://base.secureideas.net/
y descargamos ADOdb de su web http://adodb.sourceforge.net/
Por ejemplo, a dia de hoy descargo BASE 1.4.4 y ADOdb 5.10
Descomprimo con:
tar xvzf base-1.4.4.tar.gz && tar xvf adodb510.tgz
Cambio el nombre del directorio BASE para ser más ameno:
mv base-1.4.4 base
Los muevo a /var/www
# mv base/ adodb5/ /var/www
Damos acceso a apache:
# chown www-data /var/www/base/
Editamos php.ini :
# nano /etc/php5/cli/php.ini
Buscamos: error_reporting = E_ALL & ~E_NOTICE
Ahora existen dos posibilidades: tenemos la línea anter comentada (; delante) pero unas líneas más abajo la volvemos a tener descomentada o tenemos la línea anterior comentada y más abajo tenemos: error_reporting = E_ALL
Si estamos en el primer caso: no haremos nada.
Si estamos en el segundo: añadiremos a error_reporting = E_ALL lo que le falta para ser igual a la línea buscada, quedando: error_reporting = E_ALL & ~E_NOTICE , guardaremos el fichero y saldremos del editor. Reiniciaremos apache: /etc/init.d/apache2 restart
Instalaremos las extensiones PHP necesarias para BASE desde el repositorio de PHP (PEAR):
# aptitude install php-pear -y
# pear channel-update pear.php.net
# pear upgrade PEAR
# pear install Image_Color Image_Canvas Log Mail Mail_Mime Numbers_Roman Numbers_Words
Configuraremos BASE:
Introduciremos en el navegador :
http://localhost/base
En la página clic en continue.
Ahora seleccionaremos idioma, y le diremos la ruta de ADOdb, en mi caso: /var/www/adodb5
Clicaremos a Enviar Consulta (o lo que sea en vuestro idioma).
Ahora:
Pick a Database type: Dejaremos MySQL
Database Name: dbsnort
Database Host: localhost
Database Port: Pondremos el puerto que queramos, si lo dejamos en blanco será el que viene por defecto (3306). En mi caso, lo dejaré en blanco.
Database User Name: snort
Database Password: poned el que tengáis de un_password
Pulsaremos en Enviar Consulta.
Ahora nos pedirá un usuario y contraseña para acceder a BASE, lo ponemos y le damos a Enviar Consulta.
Ahora pulsamos sobre el botón: Create BASE AG
pulsamos sobre: step 5…
Ya estamos en la página principal de BASE.
Ahora nos falta iniciar Snort, crearemos un script:
# nano /etc/init.d/snort
Que contenga, el siguiente código:
#!/bin/bash
# This is a “simple” script written by bodhi.zazen to start snort.
# This script is released under the GPL V3.
# Feel free to make modifications.
# If you modify or redistribute this script please give the courtesy of credit.
# This script requires zenity if you wish to run it in X.
# Test root and display
############################################################
### Configuration options ###
############################################################
############################################################
# The following sections are used to configure snort
# Change “eth0″ to the interface you wish to use with snort
#
IFACE=”eth0″
# To Add hosts you wish to ignore to a “white list,
# Add them into the “WHITELIST”
# Be sure separate each ip address by a space
# Example WHITELIST=’192.168.1.1 192.168.1.2′
WHITELIST=”
# The following section formats the $WHITELIST into proper syntax for snort
if [ -z "$WHITELIST" ] ; then
HOST=”
else
c=’1′
for i in $WHITELIST; do
if [ "$c" = "1" ]; then
HOST=”host “$i”"
c=’2′
else
HOST=”"$HOST” or host “$i”"
fi
done
fi
############################################################
#
# To start snort at boot, put :
#
# “/etc/init.d/snort boot”
#
# in /etc/rc.local (without quotes, above the line exit 0)
#
############################################################
# Sanity checks
if [ -z "$DISPLAY" ] || [ ! -x "/usr/bin/zenity" ]; then
D=”e”
else
D=”z”
fi
uid=$(/usr/bin/id -u)
if [ ! "$uid" = "0" ];then
case “$D” in
e)
sudo bash $0 $@
exit 0
;;
z)
if [ -x "/usr/bin/gksu" ];then
gksu “$0 $@”
exit 0
else
kdesu “$0 $@”
exit 0
fi
;;
esac
fi
# Check for stale lock files
if [ -z "$PID" ]; then
rm -f /var/run/snort_”${IFACE}”*
fi
# Declair variables
SNORT=’/usr/local/bin/snort -c /etc/snort/snort.conf -u snort -g snort -D’
ZEN=”/usr/bin/zenity”
ZENINF=’$ZEN –width=700 –title “Bodhis snort script” –info –text’
ZENWARN=’$ZEN –width=700 –title “Bodhis snort script” –warning –text’
ZENMSG=’”$TXT”‘
PID=`pidof snort`
#Set prompt colors
RED=’\e[0;31m'
GREEN='\e[0;32m'
BLUE='\e[0;34m'
NC='\e[0m' # No Color
# functions
zeninfo ()
{
case "$D" in
e)
echo -e $BLUE"${TXT}" $NC
;;
z)
eval $ZENINF $ZENMSG
;;
esac
}
zenwarn ()
{
case "$D" in
e)
echo -e $RED"${TXT}" $NC
;;
z)
eval $ZENWARN $ZENMSG
;;
esac
}
start ()
{
#start snort
if [ -z "$HOST" ];then
$SNORT -i “$IFACE” &
else
$SNORT -i “$IFACE” not \(`echo “$HOST”`\)&
fi
# This sleep is necessary to allow snort to initialize.
# If you shorten it, snort may start, but fail.
# this sleep is skipped if you use the boot option
sleep 20
PID=`pidof snort`
if [ ! -z "$PID" ]; then
if [ ! -z "$WHITELIST" ]; then
TXT=”Snort successfully started, using a Whitelist of “$WHITELIST”"
else
TXT=”Snort started successfully …”
fi
zeninfo &
exit 0
else
TXT=”Snort failed to start …”
zenwarn &
exit 1
fi
}
stop ()
{
if [ ! -z "$PID" ]; then
kill -9 “”$PID”"
rm -f /var/run/snort_”${IFACE}”*
TXT=”Snort stopped …”
zeninfo &
exit 0
else
TXT=”Snort is not running …”
zenwarn &
exit 1
fi
}
restart ()
{
if [ ! -z "$PID" ]; then
kill -9 “$PID”
rm -f /var/run/snort_”${IFACE}”*
fi
start
}
status ()
{
if [ ! -z $PID ] ; then
TXT=”Snort is running …”
else
TXT=”Snort is not running …”
fi
zeninfo &
}
case “$1″ in
boot)
if [ ! -z "$PID" ]; then
exit 0
fi
if [ -z "$HOST" ];then
$SNORT -i “$IFACE” &
else
$SNORT -i “$IFACE” not \(`echo “$HOST”`\)&
fi
;;
start)
if [ ! -z "$PID" ]; then
TXT=”Snort is already running …”
zenwarn &
exit 1
else
start
fi
start
;;
stop)
stop
;;
restart|reload)
restart
;;
status)
status
;;
*)
TXT=”Usage start|stop|restart|reload|status|boot”
zenwarn
exit 1
;;
esac
exit 0
Si vuestra interfaz es eth0 no tocaremos nada, pero si es diferente, por ejemplo eth1 , en el script cambiaremos IFACE=”eth0″ por IFACE=”eth1″
Guardaremos con Control+o y saldremos con Control+x
Damos permisos:
# chown root:root /etc/init.d/snort
# chmod 500 /etc/init.d/snort
Iniciamos Snort:
# update-rc.d snort defaults
# /etc/init.d/snort restart
Ya tenemos nuestro Snort corriendo y ejecutándose en cada inicio.
Saludos.