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