Você está na página 1de 17

SNORT DESDE 0

Esta instalacin se ha efectuado en un Linux CentOS 6.3 versin minimal. Primero se actualiza el sistema: yum update

Aceptamos

Se reinicia: reboot Se instalan los paquetes de desarrollo

yum groupinstall "Development Tools"

Se instalan la dependencias para la compilacin de Snort: yum install libpcap libpcap-devel pcre pcre-devel tcpdump zlib-devel wget nano

Antes de compilar Snort, hay que instalar desde las fuentes:

llibdnet una librera que permite efectuar toda una serie de operaciones de bajo nivel en los paquetes de red DAQ - Data Acquisition library que viene utilizada desde la versin 2.9.0 de Snort para la captura de los datos Se inicia con libdnet: cd /usr/src wget http://downloads.sourceforge.net/project/libdnet/libdnet/libdnet1.11/libdnet-1.11.tar.gz tar -xf libdnet-1.11.tar.gz cd libdnet-1.11 ./configure --prefix=/usr make make install

Se continua con DAQ: cd /usr/src wget http://en.sourceforge.jp/projects/sfnet_snort.mirror/downloads/Snort%202.9.4/daq2.0.0.tar.gz/ tar -xf daq-2.0.0.tar.gz tar -xf daq-2.0.0.tar.gz cd daq-2.0.0 ./configure make make install

Se termina esta parte con la instalacin de la ultima versin de Snort disponible: cd /usr/src wget http://www.snort.org/dl/snort-current/snort-2.9.4.tar.gz -O snort-2.9.4.tar.gz

tar -xf snort-2.9.4.tar.gz cd snort-2.9.4 ./configure --enable-zlib --enable-sourcefire

make

make install

Se mira la versin de Snort instalada: snort --version

Si obtienes un error snort: error while loading shared libraries: libdnet.1: cannot open shared object file: No such file or directory Copias todas las libdnet de origen /usr/src/ archivos libdnet hacia el directorio /usr/local/lib/ pegas aqu :.Usar WINSCP Se mira la versin de Snort instalada: snort --version

Se crean las carpetas utilizadas para la configuracin: (en caso no existan) mkdir /etc/snort mkdir /etc/snort/rules mkdir /etc/snort/preproc_rules mkdir /etc/snort/so_rules mkdir /usr/local/lib/snort_dynamicrules mkdir /var/log/snort Para iniciar Snort como servicio, se instala el script de arranque: # cd /usr/src/snort-2.9.4/rpm/ cp snortd /etc/init.d/ chmod +x /etc/init.d/snortd chkconfig --add snortd cp snort.sysconfig /etc/sysconfig/snort

Como el script lo inicia el usuario snort, se crea ese usuario en el sistema: groupadd -g 40000 snort useradd snort -d /var/log/snort -s /sbin/nologin -c SNORT_IDS g snort useradd: warning: the home directory already exists. Not copying any file from skel directory into it.

Como el script busca el binario de Snort en la carpeta /usr/sbin, se crea un enlace simblico: ln -s /usr/local/bin/snort /usr/sbin/snort Ahora se pueden descargar las reglas brindadas por los desarrolladores de Snort Para hacerlo, hay que registrarse en la sitio web: https://www.snort.org/signup Una vez creada la cuenta se accede y en la pagina que aparece se selecciona la imagen Get Rules. En la nueva pagina se selecciona el enlace Download from the command line y luego el enlace Get a Oinkcode. En la nueva pagina aparecer el cdigo asignado. Se crea la carpeta donde descargar las reglas: cd /usr/src mkdir snortrules

cd snortrules y se descarga utilizando la siguiente sintaxis: Suponiendo que el oinkcode sea: be11a4dde5e407b460137e9bb1dda28116fb483d Se descargarn de la siguiente forma: wget http://www.snort.org/sub-rules/snortrules-snapshot-2940.tar.gz/codigo O snortrules-snapshot-2940.tar.gz Suponiendo que el oinkcode sea: caa1498ca806ff92ef816ab0808cb6e9f6 Se descargarn de la siguiente forma:

Se descomprime el archivo: tar -xf snortrules-snapshot-2940.tar.gz Se copian los archivos de configuracin de Snort en la carpeta creada anteriormente: cp etc/* /etc/snort/ cp ../snort-2.9.4/etc/attribute_table.dtd /etc/snort/ Se copian las reglas en las respectivas carpetas: cp rules/* /etc/snort/rules/ cp preproc_rules/* /etc/snort/preproc_rules/ Se copian los objetos precompilados para la versin 6.X de CentOS en la respectiva carpeta:
cp so_rules/precompiled/RHEL-6-0/x86-64/2.9.4.0/* /usr/local/lib/snort_dynamicrules/

Se crean los archivos para las reglas definidas localmente: touch /etc/snort/rules/white_list.rules touch /etc/snort/rules/black_list.rules

touch /etc/snort/rules/local.rules Se cambian los permisos para las carpetas a las que debe acceder el usuario snort creado: cd /etc chown -Rf snort:snort snort chown -Rf snort:snort /var/log/snort Configuracin de Snort Para la configuracin de Snort el archivo que hay que modificar es snort.conf que se encuentra en la carpeta /etc/snort. Se abre: nano /etc/snort/snort.conf La primera lnea que hay que modificar es: ipvar HOME_NET any En esta lnea se indica el rango de IP locales que sern protegidas por snort. En el caso que el rango de nuestra red local sea: 192.168.1.1/192.168.1.255, se pone: ipvar HOME_NET 192.168.1.1/24 La segunda lnea que hay que modificar es: ipvar EXTERNAL_NET any Donde se pone: ipvar EXTERNAL_NET !$HOME_NET Que significa: cualquier IP que no sean las locales. Luego se modifican las lneas relacionadas con los archivos y carpetas de configuracin: var RULE_PATH ../rules var SO_RULE_PATH ../so_rules var PREPROC_RULE_PATH ../preproc_rules var WHITE_LIST_PATH ../rules var BLACK_LIST_PATH ../rules

Para que queden: var RULE_PATH rules var SO_RULE_PATH so_rules var PREPROC_RULE_PATH preproc_rules var WHITE_LIST_PATH rules var BLACK_LIST_PATH rules En el bloque 6 se configura el tipo de salida para los registros. Despus de esta lnea: # output unified2: filename merged.log, limit 128, nostamp, mpls_event_types, vlan_event_types Se aade: output unified2: filename snort.log, limit 128 Para terminar, en el bloque 8, se modifican las siguientes lneas: # include $PREPROC_RULE_PATH/preprocessor.rules # include $PREPROC_RULE_PATH/decoder.rules # include $PREPROC_RULE_PATH/sensitive-data.rules Para que queden: include $PREPROC_RULE_PATH/preprocessor.rules include $PREPROC_RULE_PATH/decoder.rules include $PREPROC_RULE_PATH/sensitive-data.rules

Se guardan los cambios y se "compilan" las reglas para las "Shared Objet Rules":

cd /usr/local/bin snort -c /etc/snort/snort.conf --dump-dynamic-rules=/etc/snort/so_rules

Se cambian los permisos en los archivo creados en la carpeta so_rules: chown -Rf snort:snort /etc/snort/so_rules/* Se abre nuevamente el archivo de configuracin de Snort: nano /etc/snort/snort.conf y al final del archivo, se modifica este bloque: # include $SO_RULE_PATH/bad-traffic.rules # include $SO_RULE_PATH/chat.rules # include $SO_RULE_PATH/dos.rules # include $SO_RULE_PATH/exploit.rules # include $SO_RULE_PATH/icmp.rules # include $SO_RULE_PATH/imap.rules # include $SO_RULE_PATH/misc.rules # include $SO_RULE_PATH/multimedia.rules # include $SO_RULE_PATH/netbios.rules # include $SO_RULE_PATH/nntp.rules # include $SO_RULE_PATH/p2p.rules # include $SO_RULE_PATH/smtp.rules # include $SO_RULE_PATH/snmp.rules # include $SO_RULE_PATH/specific-threats.rules # include $SO_RULE_PATH/web-activex.rules # include $SO_RULE_PATH/web-client.rules

# include $SO_RULE_PATH/web-iis.rules #include $SO_RULE_PATH/web-misc.rules para que quede: include $SO_RULE_PATH/bad-traffic.rules include $SO_RULE_PATH/chat.rules include $SO_RULE_PATH/dos.rules include $SO_RULE_PATH/exploit.rules include $SO_RULE_PATH/icmp.rules include $SO_RULE_PATH/imap.rules include $SO_RULE_PATH/misc.rules include $SO_RULE_PATH/multimedia.rules include $SO_RULE_PATH/netbios.rules include $SO_RULE_PATH/nntp.rules include $SO_RULE_PATH/p2p.rules include $SO_RULE_PATH/smtp.rules include $SO_RULE_PATH/snmp.rules include $SO_RULE_PATH/specific-threats.rules include $SO_RULE_PATH/web-activex.rules include $SO_RULE_PATH/web-client.rules include $SO_RULE_PATH/web-iis.rules include $SO_RULE_PATH/web-misc.rules Se guardan los cambios y se efecta una primera prueba para averiguar que la configuracin est bien: snort -c /etc/snort/snort.conf -T Si el mensaje final es: Snort successfully validated the configuration! Snort exiting Todo est bien.

Cmo se puede probar el programa para saber si efectivamente est detectando los paquetes definidos en las reglas? Escribiendo una de prueba. La sintaxis para escribir una regla es: accin protocolo IPorigen puertorigen direccin IPdestino puertodestino Opcin1 Valor1 Opcin2 Valor2 OpcinN ValorN sid revisin un ejemplo: nano /etc/snort/rules/local.rules Al final del archivo ponemos: alert icmp any any -> any any (msg:"ICMP Testing Rule"; sid:1000001; rev:1;) Guardamos los cambios. Esta regla nos alertar cada vez que el sistema capturar un paquete de Ping (Protocolo ICMP).

Las partes importantes:

o o

accin = alert El sistema nos alertar Protocolo = ICMP any Cualquier IP de origen any Cualquier Puerto de origen -> direccin any Cualquier IP de destino any Cualquier puerto de destino msg:"ICMP Testing Rule"; Opcin y valor sid = 1000001 Un identificativo nico de la regla. Hay que utilizar nmeros mayores a un milln ya que: el rango de 0 a 99 es reservado para uso futuro el rango de 100 a 1000000 es reservado a las reglas distribuidas por los desarrolladores de Snort rev =1 Indica que es la primera versin de la regla que estamos escribiendo Para probar la regla iniciamos Snort de manera que enve las alertas a la consola del terminal Linux: snort -c /etc/snort/snort.conf -A console Ahora desde otra ventana terminal efectuamos un ping a una direccin cualquiera: ping google.com Aparecer:

En la ventana de Snort:

Para salir del modo consola: CTRL-C

Ya podemos iniciar Snort como servicio: service snortd start En este caso las alertas se guardarn en el archivo /var/log/snort/alert: tail -f /var/log/snort/alert En otra ventana terminal, ejecutamos nuevamente el comando de ping: ping google.com En la ventana del log de alerta de Snort, volvern a aparecer los mensajes. Terminada esta prueba, quitamos la regla de local.rules y reiniciamos Snort.

Você também pode gostar