miércoles, agosto 29, 2007

OSSIM y MySQL: ¿Qué tipo engine de MySQL es mejor?

Llevo un tiempo usando ossim, y he estado viendo cual es la mejor manera de optimizar el acceso a base de datos. OSSIM es una aplicación, ya sea desde los agentes de Snort, ya sea desde el servidor, que tiene una gran actividad de inserción simultáneas en base de datos.

Las lecturas a la base de datos se producen desde la consola forense (en este caso BASE), buscando por los eventos que se han almacenado en lo mismo. En principio, a este nivel sólo se debe de llegar en caso que no tengamos claro que puede estar creando anomalías en las gráficas que tenemos. En lineas generales, las tablas mayores son las de eventos y las tablas que almacenan la información de Snort. Estas tablas son fundamentalmente "append-only", produciéndose un montón de inserciones (ya sean de las sondas, ya sean de los hilos del server) en paralelo.

Los engines de almacenamiento que usa MySQL - olvidándonos del soporte de cluster - son básicamente dos myisam e innodb. La diferencia fundamental es que innodb soporta transaciones y claves ajenas, cosa que no soporta myisam. Se puede poner que el sistema use tablas innodb por defecto con la opción default-table-type = innodb en el my.cnf. Hay algunas cosas a tener en cuenta antes de usar este tipo de tablas:

  • innodb usa mucho más espacio que las tablas myisam (ver esta entrada del manual).
  • innodb usa dos ficheros en disco: uno donde se almacenarán los datos y otros que sirve para log de transaciones. Podemos aprovechar la situación de los mismos para repartir la carga por controladoras o varios discos.
  • innodb de serie, no permite hacer backups en caliente de la base de datos a través de una utilidad libre - hay que pasar por caja -, aunque si permite los clásicos backups de mysql.
  • Hay que preparar los páremetros de mysql para que se adapte a la carga que se tiene de ossim. Esto es lo que estoy investigando ahora.
Por ejemplo, se puede buscar en este blog, en especial en las presentaciones que hablan sobre como optimizar la base de datos.

Para ossim, lo mejor sería comprobar con ayuda de tcpreplay, de inyectar tráfico sobre las sondas, en especial de Snort, que es lo que más va a cargar la base de datos, y ver cual es su comportamiento.

Technorati Tags:

No hay comentarios: