El script es relativamente simple, descarga el paquete de reglas desde la página de snort (un tar.gz) a un directorio temporal, lo descomprime y luego, dependiendo de lo especificado en el archivo oinkmaster.conf, copia dichas reglas al directorio de reglas de snort. Si las reglas nuevas cambian con respecto a las que teníamos, copia las nuevas al directorio. Lo bueno es que en oinkmaster.conf podemos definir que si nosotros desactivamos una regla, cuando actualice la mantenga desactivada, además podemos aplicar reglas de modificación, y saltear archivos completos de reglas (es decir para que no los pise con reglas nuevas). Realmente un lujo. Pueden leer más en su web oficial (http://oinkmaster.sourceforge.net/). Próximamente estaré publicando un artículo bastante completo sobre configuración de snort que incluye al oinkmaster.
Una necesidad que surgió durante la desactivación de alertas de Snort es poder agregar rangos de SIDs (id de reglas) para deshabilitar. En el script original, si deshabilitamos las reglas cuyos sid son 2, 3, 4, y 5, tendremos que agregar a oinkmaster.conf la opción "disablesid 2,3,4,5". Con estos numeritos no es tan problemático, pero con los SID kilométricos de algunas reglas, si deseamos desactivar varios SIDs sucesivos, es una molestia tener que escribir uno por uno.
Por ello modifiqué el script perl para poder agregar opciones del estilo "disablesid 2-5" en oinkmaster.conf y así poder deshabilitar varias reglas sin necesidad de escribir todos los SIDs. Ya que estaba, también modifiqué el script para que acepte rangos en la opción localsid (SID de reglas que no debe tocar), y enablesid (SID de reglas que debe activar).
A partir de las modificaciones (nada del otro mundo, cabe destacar), cree un diff que permite parchar el script original, el cual pueden descargar aquí.
Para aplicar el patch simplemente copien el código en un archivo oinkmaster.patch, guardenlo en el directorio donde tienen el script original (suele llamarse oinkmaster.pl u oinkmaster) y parados en dicho directorio, ejecuten lo siguiente:
# patch < oinkmaster.patchEnvié estas modificaciones al autor original (Andreas Östling), el cual me contestó varias semanas después, diciéndome que las modificaciones le parecían muy interesantes y que iba a tratar de incorporarlas, aunque ya no tiene tiempo para trabajar en Oinkmaster, así que no sabía cuándo iba a poder hacerlo.
En fin, espero que les resulte útil como a mi!
6 comentarios:
Muy bueno! Aunque no pude aplicar el parche a la versión 1.406 de oinkmaster! :(
Al intentar ejecutar el parche, me devolvió:
/usr/sbin# patch < oinkmaster.patch
patching file oinkmaster
Hunk #1 FAILED at 573.
Hunk #2 FAILED at 601.
2 out of 2 hunks FAILED -- saving rejects to file oinkmaster.rej
Saludos!
El contenido del archivo generado (oinkmaster.rej) qué dice?
Seguro hay que cambiar el parche, dado que el que realicé es para la última versión de oinkmaster disponible, que es la 2.0 (que data del 2006). Si mejor descargas esa versión y aplicas el parche sobre la misma?
Tengo instalada la última versión de oinkmaster para Debian:
oinkmaster -V
Oinkmaster v2.0, Copyright (C) 2001-2006 Andreas Östling
---------
cat /usr/sbin/oinkmaster | grep oinkmaster.pl
# $Id: oinkmaster.pl,v 1.406 2006/02/10 13:02:44 andreas_o Exp $ #
---------
El contenido de oinkmaster.rej lo subo a dropbox para no ensuciarte el sitio:
http://dl.dropbox.com/u/307318/oinkmaster-rej.txt
Saludos!
Ya sé lo que está pasando. El código tiene caracteres html < y > y no se ven en el artículo, por eso cuando copias el código está incompleto y el patch no funciona.
Lo subí a google docs para que lo puedas descargar, con ese debería andarte: oinkmaster.patch
Saludos!
Ahora si!! Anduvo bárbaro!!!Muchas gracias!
Actualicé el post para que figure el link al archivo en lugar del código del diff, así no vuelve a ocurrir el mismo problema :)
Publicar un comentario