Picviz
Picviz est un applicatif qui, à partir de fichiers log générés par des sources diverses telles que Apache, Netfilter, … va concevoir des graphiques au format png permettant une vue plus synthétique et plus compréhensible des données contenues dans ces fichiers log (erreurs, anomalies, …)
Picviz permet de générer des graphiques type coordonnées parallèles. Les coordonnées parallèles sont une technique permettant de visualiser un nombre important d'informations de façon non ambiguë (voir wikipedia).
Pré-requis
- Disposer des droits d'administration.
- Disposer d'une connexion à Internet configurée et activée.
- Dépôt universe activé (sinon voir depots).
Installation
Installation des paquetages prérequis (dont python et gcc)
apt-get install flex bison python-dev python-qt4 cmake cairo-dock gcc libpcre3 libpcre3-dbg libpcre3-dev
Installation de libpicviz (c'est la library de picviz développée en python) l'archive est disponible ici
cd .. wget http://pkgs.fedoraproject.org/repo/pkgs/picviz/libpicviz-0.6.tar.gz/bd2cd1dd250dc5df362b1d3a5edea3cd/libpicviz-0.6.tar.gz tar xvf libpicviz-0.6.1.tar.gz cd libpicviz-0.6.1 make sudo make install cd src/bindings/python sudo python setup.py install
Installation de picviz-cli (picviz en interface texte) l'archive est disponible ici
cd .. wget http://pkgs.fedoraproject.org/repo/pkgs/picviz/picviz-cli-0.6.tar.gz/4ef5edbb77811de3ac608af28d02dce6/picviz-cli-0.6.tar.gz tar xvf picviz-cli-0.6.tar.gz cd picviz-cli-0.6/src make sudo make install
Installation de picviz-Gui (picviz en interface graphique) l'archive est disponible ici
cd ../.. wget http://www.wallinfire.net/files/picviz/picviz-gui-0.7.tar.gz tar xvf picviz-gui-0.7.tar.gz cd picviz-gui-0.7 sudo ./setup.py install sudo ldconfig
Configuration
> picviz-gui
Intégrer picviz-gui au menu Application : Clic droit sur Application→ Éditer les menus → Accessoires → Nouvel élément → le nom Picviz, la commande picviz-gui
Utilisation
Picviz reçoit en entrée des fichiers au format PCV.
Avant d'utiliser le logiciel Picviz, il faut utiliser un script qui permet de convertir le fichier log en un fichier PCV par l'utilisation du langage PGDL (plus d'information).
Sources (Syslog, Netfilter, Apache) → Génération par le langage PGDL (utilisation de script) → fichier PCV → Conception du graphique (par utilisation picviz) → Graphique png
> picviz-cli
pcv -Tpngcairo -Rheatline -rrrrrrrra access-wallinfire.net.pcv > access.png
- Tpngcairo : format png
- Rheatline -Avirus : couleur
- rrrrrrrr : permet une haute résolution
- a : permet afficher du texte
Génération automatique de graphiques : Nous pouvons, à partir cron, créer un script qui permet de générer des images périodiques. Le script syslog2picviz.pl est disponible ici
#!/bin/sh ./syslog2picviz.pl syslogemu.log > syslogemu.pcv pcv -Tpngcairo -Rheatline -rrrrrrrra syslogemu.pcv > syslogemu.png echo "" | mutt -x -s "Picviz" root -a syslogemu.png rm syslogemu.pcv rm syslogemu.png
Un envoi de mail se fait automatiquement par utilisation d'un serveur mail
> picviz-gui
picviz-gui apporte un plus à la ligne de commande, mais comme celle-ci est écrite en python. Elle est relativement moins fluide et fine que ggobi.
> Exemple d'utilisation
La source
On récupère un log, dans mon cas syslogemu.log log de parfeu.
Extrait du fichier log
Mar 3 09:38:46 debian DINPUT IN=eth0 OUT= MAC=00:0c:30:db:0c:32:00:0c:30:b1:d9:e2:09:00 SRC=192.168.1.205 DST=192.168.1.240 LEN=44 TOS=00 PREC=0x00 TTL=55 ID=53647 CE PROTO=TCP SPT=48040 DPT=23 SEQ=2989621591 ACK=0 WINDOW=4096 SYN URGP=0 Mar 3 09:38:46 debian DINPUT IN=eth0 OUT= MAC=00:0c:30:db:0c:32:00:0c:30:b1:d9:e2:09:00 SRC=192.168.1.205 DST=192.168.1.240 LEN=44 TOS=00 PREC=0x00 TTL=40 ID=7426 PROTO=TCP SPT=48040 DPT=113 SEQ=2989621591 ACK=0 WINDOW=1024 SYN URGP=0 Mar 3 09:38:46 debian DINPUT IN=eth0 OUT= MAC=00:0c:30:db:0c:32:00:0c:30:b1:d9:e2:09:00 SRC=192.168.1.205 DST=192.168.1.240 LEN=44 TOS=00 PREC=0x00 TTL=56 ID=40787 CE PROTO=TCP SPT=48040 DPT=21 SEQ=2989621591 ACK=0 WINDOW=1024 SYN URGP=0 ...
Conversion
On convertit le log du parfeu en format PCV à l'aide de script. Le script syslog2picviz.pl est disponible ici, On peut le modifier selon la situation.
./syslog2picviz.pl syslogemu.log > syslogemu.pcv
Extrait du fichier pcv
header { title = "Syslog picviz analysis"; } axes { ipv4 SRC [label="Ip source"]; ipv4 DST [label="IP destination"]; port SPT [label="Port source"]; port DPT [label="Port destination"]; } data { PortIN="",SRC="192.168.1.205",DST="192.168.1.240",SPT="48040",DPT="23"; PortIN="",SRC="192.168.1.205",DST="192.168.1.240",SPT="48040",DPT="113"; PortIN="",SRC="192.168.1.205",DST="192.168.1.240",SPT="48040",DPT="21"; ... }
Création de l'image
On utilise la commande pcv pour convertir syslogemu.pcv en syslogemu.png. A partir de là, nous pouvons débuter l'analyse de l'image.
pcv -Tpngcairo -Rheatline -rrrrrrrra syslogemu.pcv > syslogemu.png