ModSecurity Logs mit Jarvinen in MySQL speichern

Jarvinen stellt ein einfaches webbasierendes Monitoring Werkzeug für Modsecurity bereit. Es besteht aus 2 Teilen. Zum einen ein Shell Script welches die Logfiles durchgeht und die einzelnen Einträge in eine Mysql Datenbank schreibt. Der andere Teil ist eine PHP Web Anwendung mit der man sich die Dinge auch ansehen kann. Den Download gibt es hier

In der Datei jarvinen_python_v1.tgz gibt es vier Dateien:

  • eine SQL Datei welche die Datenbanken erstellt.
  • eine Konfigurationsdatei mit den Datenbank Parametern wie user / password
  • das eigentliche Programm in Python geschrieben das die Logfiles durchsucht
  • ein Script welches das ganze automatisiert aufruft.

Je nach Linux Distribution muss man vielleicht noch andere Komponenten installieren die bei mir schon da waren (z.b. python-mysqldb)

1. Installation des Import Scripts

Meine Installationschritte sind von hier

wget http://jarvinen.googlecode.com/files/jarvinen_python_v1.tgz
tar xzvf jarvinen_python_v1.tgz
rm jarvinen_python_v1.tgz
cd jarvinen/

Datenbank anlegen und Datenbankstrukturen importieren

# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 192033

mysql> create database msaudit;
Query OK, 1 row affected (0.02 sec)

mysql> CREATE USER 'modsecuser'@'localhost' IDENTIFIED BY 'geheim';
Query OK, 0 rows affected (0.15 sec)

mysql> GRANT ALL ON msaudit.* TO 'modsecuser'@'localhost';
Query OK, 0 rows affected (0.00 sec)

mysql>quit

#mysql -u modsecuser -pgeheim < Create_Database.sql

2. Importroutine konfigurieren

Die Datenbankinformation anpassen in der Konfigurationsdatei eingetragen werden

vi jarvinen.conf

[[Mysql]
HostName=localhost
DbName=msaudit
DbUser=modsecuser
DbPassword=geheim
Socket=/var/lib/mysql.sock
[WhiteList]
SrcIp=127.0.0.1
[Log]
LogPath=/var/log/modsec_audit.log

3. Programm ausführbar machen und starten

chmod +x jarvinen.py
./jarvinen.py -c jarvinen.conf -l mod-sec-audit-20100610.log

4. PHP Anwendung einrichten

Die Anwendung muss auf dem Server entpackt und in das WebServer verzeichniss kopieren werden.

wget http://jarvinen.googlecode.com/files/jarvinen_web_v1.2.tgz
tar xzvf jarvinen_web_v1.2.tgz

mv jarvinen1.2/ /var/www/localhost/htdocs/jarvinen
cd /var/www/localhost/htdocs/
chown apache jarvinen -R

Einchecken in mein lokales SVN (optional aber empfohlen siehe hier  )

cd /var/svn/
svnadmin create jarvinen
cd /var/www/localhost/htdocs/jarvinen/
svn co file:///var/svn/jarvinen/ .
Checked out revision 0.
mail jarvinen # svn add *
A         ParameterControl.php
[.....]
A         web.css

svn ci -m "initial checkin of jarvinen"
Adding         ParameterControl.php
[....]
Adding         web.css
Transmitting file data ................
Committed revision 1.

Wir müssen noch unsere eigenen Datenbankeinträge in dem PHP code anpassen

vi functions.php
$connectStr = array("localhost", "modsecuser","geheim","msaudit") ;

Das war es. Dann aufrufen und

201006-jarvinen_v1_1.gif201006-jarvinen_v1_2.gif