Nueva característica para Oinkmaster
Para el que no lo tenga presente, Oinkmaster es un muy útil script en perl que nos permite mantener las reglas de snort actualizadas. Oinkmaster permite customizar la forma en que las reglas se actualizan, posibilitando que el administrador elija si hay reglas que no desea tocar, si hay reglas que desea modificar y varias cosas más.

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.patch
Envié 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:

Anónimo dijo...

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!

d3m4s1@d0v1v0 dijo...

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?

Anónimo dijo...

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!

d3m4s1@d0v1v0 dijo...

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!

Anónimo dijo...

Ahora si!! Anduvo bárbaro!!!Muchas gracias!

d3m4s1@d0v1v0 dijo...

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