PostgreSQL 8.4. Creando base de datos para Snort. Volcando alertas a través de ODBC.

Ya vimos en Snort. Enviado log a base datos mysql. la creación de una base de datos MySql para su uso con Snort.

Después de la compra de MySql por parte de Sun y, a su vez, de Sun por parte de Oracle, MySql pierde el estatus de Software Libre. Por ello, creo que es el momento de ir mirando otras opciones.

snort y postgreSQL 8.4

El uso se PostgreSQL con Snort bajo Windows prácticamente no está documentado, además, no se puede ejecutar directamente usando output database ya que no existe compilación Snort Windows que soporte dicha base de datos.  Una solución es interponer ODBC (tampoco documentado correctamente). En en este caso, vamos a crear, para nuestra instalación de Snort, una base de datos PostgreSQL. Crearemos también todas las tablas necesarias para un correcto funcionamiento, permisos, etc, y volcaremos las alertas a través de ODBC.

Instalación PostgreSQL 8.4 para Windows. 

Descargamos el instalador Windows para PostgreSQLdesde aquí: http://www.enterprisedb.com/products/pgdownload.do#windows

La instalación es muy básica, solo hay que tener en cuenta que tendremos que indicar una contraseña para el usuario y servicio postgres. cuando nos pida la instalación de Stack Builder, decimos que sí para, cuando llegue el momento, marcar la opción Database Driver – psqlODBC.

Una vez instalado, abrimos una consola SQL Shell (psql):

snort y postgreSQL 8.4

Al abrir la consola dejamos tal cual:

  • Server
  • Database
  • Port
  • Username

y en la contraseña para Username [postgres] ponemos la que indicamos en la instalación para servicio y usuario postgres.

Creacion de la base de datos snort.

Una vez hecho esto, creamos la base de datos, el usuario snort…

shell psql postgreSQL

La \q es para salir de la shell.

Volvemos a entrar, pero ya a la base de datos creada snort con nuestro usuario snort creado.

Ahora tenemos que cargar el esquema de creación de tablas, etc, (tal como lo hicimos con MySql) que está ubicado, en nuestro caso, en  c:\snort\schemas\create_postgresql

Lo hacemos desde un DOS shell de la forma:

psql -U «usuario» -d «base_datos» -f «archivo_esquema»

En nuestro caso:

shell psql postgreSQL creacion tablas snort

Bien. Ya tenemos toda la estructura de nuestra base de datos snort en PostgreSQL.

Permisos de las tablas.

Ahora tenemos que asignar permisos con GRANT para SELECT, INSERT, UPDATE y DELETE para las diferentes tablas:

shell psql postgreSQL permisos base datos snort

shell psql postgreSQL permisos base datos snort

Para que os resulte más facil a la hora de copiar:

GRANT INSERT, SELECT, UPDATE ON TABLE data,detail,encoding,event,
icmphdr,iphdr,opt,reference,reference_system,
schema,sensor,sig_class,sig_reference,signature,tcphdr,udphdr TO snort;

GRANT USAGE,SELECT,UPDATE ON TABLE reference_ref_id_seq,
reference_system_ref_system_id_seq,sensor_sid_seq,
sig_class_sig_class_id_seq,signature_sig_id_seq, rtt to snort;

GRANT DELETE ON TABLE data,detail,encoding,event,
icmphdr,iphdr,opt,reference,reference_system,schema,sensor,
sig_class,sig_reference,signature,tcphdr,udphdr TO snort;

Configuración ODBC.

Al abrir el administrador de orígenes de datos ODBC, Agregamos el driver PostgreSQL35W (UNICODE) y lo configuramos tal como os muestro en la captura siguiente:

odbc para postgreSQL y snort

Configuración Snort para ODBC / PostgreSQL.

Ahora tenemos que ir a c:\snort\etc\snort.conf para indicar a Snort  vuelque los logs, alertas, etc a la base de datos PostgreSQL. Para ello descomentamos la línea referida a PostgreSQL y la modificamos de la siguiente forma:

modificar snort.conf para odbc postgresql sonrt

.

Ejecución de Snort para ODBC y PostgreSQL.

Tan solo tenemos que ejecutar snort de la forma:

ejecucion snort odbc postgresql

En un momento dado nos aparecerá la configuración de database output para ODBC u PostgreSQL:

configuracion snort odbc postgresql

Comprobación de los datos almacenados  en la base de datos.

A falta de ACID o similar, podenos comprobar que todo va bien usando, incluido en el paquete de inastalación para Windows de PostgreSQL.:

pgAdmin postgresql odbc snort datos

También podemos comprobar desde SQL Shell (psql):

\dt para ver todas las tablas de la base de datos:

snort-> \dt
Listado de relaciones
Esquema |      Nombre      | Tipo  |  Due
———+——————+——-+——-
public  | data             | table | snort
public  | detail           | table | snort
public  | encoding         | table | snort
public  | event            | table | snort
public  | icmphdr          | table | snort
public  | iphdr            | table | snort
public  | opt              | table | snort
public  | reference        | table | snort
public  | reference_system | table | snort
public  | schema           | table | snort
public  | sensor           | table | snort
public  | sig_class        | table | snort
public  | sig_reference    | table | snort
public  | signature        | table | snort
public  | tcphdr           | table | snort
public  | udphdr           | table | snort
(16 filas)

y el clasico SELECT para ver lpos datos contenidos:

snort=> SELECT * FROM event;
sid | cid | signature |       timestamp
—–+—–+———–+————————
1 |   1 |         1 | 2010-02-15 14:17:46+01
1 |   2 |         1 | 2010-02-15 14:19:19+01
1 |   3 |         2 | 2010-02-15 14:19:19+01
1 |   4 |         1 | 2010-02-15 14:19:24+01
1 |   5 |         2 | 2010-02-15 14:19:24+01
1 |   6 |         1 | 2010-02-15 14:19:30+01
1 |   7 |         2 | 2010-02-15 14:19:30+01
1 |   8 |         1 | 2010-02-15 14:19:35+01
1 |   9 |         2 | 2010-02-15 14:19:35+01
1 |  10 |         3 | 2010-02-15 14:19:35+01
1 |  11 |         1 | 2010-02-15 14:19:36+01
1 |  12 |         2 | 2010-02-15 14:19:36+01
1 |  13 |         3 | 2010-02-15 14:19:36+01
1 |  14 |         1 | 2010-02-15 14:19:37+01
1 |  15 |         2 | 2010-02-15 14:19:37+01
1 |  16 |         3 | 2010-02-15 14:19:37+01
1 |  17 |         1 | 2010-02-15 14:19:38+01
1 |  18 |         2 | 2010-02-15 14:19:38+01
1 |  19 |         3 | 2010-02-15 14:19:38+01
1 |  20 |         1 | 2010-02-15 14:19:43+01
1 |  21 |         2 | 2010-02-15 14:19:43+01
1 |  22 |         3 | 2010-02-15 14:19:43+01

etc, etc.

En la próxima veremos todo esto con Oracle 81 y Oracle 10g.

Esta entrada fue publicada en Seguridad y redes, Snort y etiquetada , , , , , , . Guarda el enlace permanente.

4 respuestas a PostgreSQL 8.4. Creando base de datos para Snort. Volcando alertas a través de ODBC.

  1. Roger dijo:

    Alfon gracias por tus conocimientos y por ponerlos a disposición de la comunidad. No se el tiempo que llevo intentando que funcionase postgre con snort. Gracias por este articulo. Roger.

  2. gabo dijo:

    no me sale y necesito cargar un bd a post gres desde un archivo que tengo en disco c

  3. Alfon dijo:

    gabo,
    Dime algo más. qué error te dá. Algún log, etc.

  4. william alfaro dijo:

    Hemmm.. tengo entendido que snort en sus versiones posteriores a la 8.0 ya soportan ipv6, como se vinculan los logs de las alertas para almacenarlas en la base de datos? porque el esquema está para ipv4

Deja un comentario