Pourquoi ce tuto ? :
Après la mise en place de mon serveur Ssh à la maison et la connexion avec
Proxy Tunnel depuis mon entreprise, je voulais savoir
le trafic générée pour cette connexion.
J'ai un peut chercher demander sur des Forums et on ma parler de Pmacct bien
sur il y a d'autre solution avec des outils comme Tcpdump, Iptraf, Etc...
Je me suis dans lancer dans l'installation et la configuration et ont peut
faire plein de chose avec, aller ont y va !!!
Ps: Ceci et pas le documentation officiel de Pmacct, j'ai simplement mis en
ligne mon expérience et ci en plus sa peut vous aidez.
Pmacct c'est quoi ?
C’est la traduction très suc sente du site principale de pmacct. (Lien)
Pmacct est un petit outils passif pour la surveillance d'un réseau,
il Fonctionne en comptage et agrégat pour IPv4 et IPv6:
L'agrégation tourne autour du concept principal de primitives :
- Identification de VLAN.
- Source et destination des adresses MAC.
- Source et destination des Ports.
- Hosts
- Réseaux
Les résultas peuvent être stockés dans des tables mémoire, base de données, ou
sur un sortie stdout.
C'est données sont rassemblées en employant libpcap
En utilisant la mémoire ou des tables Sql, Pmacct peut facilement alimenter des
données aux outils comme Rrdtool, Mrtg ou autre.
Installation & Configuration
Pour l'installation soit par les sources que l'on trouve sur le site ou
comme moi sur ma Debian j'ai aussi tester sur une Ubuntu un petit :
apt-get install pmacct
Le fichier de configuration du daemon " Pmacctd " est dans le
répertoire /etc/pmacct il s'appelle pmacctd.conf.
Voila mon fichier pmacctd pour le comptage du port Ssh en entré et sortie.
pmacctd.conf #daemonize : daemonize: true #chemin du pid de pmacctd pidfile: /var/run/pmacctd.pid #message erreur à syslog ( par default dans /usr/log/daemon.log ) syslog: daemon #Interface reseau a surveiller interface: eth0 #aggregate "in" stoke les Sources Ports. aggregate[in]: src_port #aggregate "out" stoke les Destinations Ports. aggregate[out]: dst_port #Passage en memoire de "in" et "out" plugins: memory[in], memory[out] #stokage de "in" dans /tmp/in.pipe imt_path[in]: /tmp/in.pipe #stokage de "out" dans /tmp/out.pipe im_path[out]: /tmp/out.pipe |
Ce fichier de config récupère
tout le trafic des ports en Src & Dst du PC.
Dans le fichier de configuration on peut lui mètre une fonction de filtre sur
le fichier de sortie.
aggregate[in]: src port "Numero du port" aggregate[out]: dst port "Numero du port" |
On lance /etc/init.d/pmacct
restart pour recharger la configuration, et un ps -A | grep pmacct pour vérifier
qu'il tourne bien.
Récupération des Données :
La récupération des données ce fait en ligne de command avec pmacct.
pmacct -s -p /tmp/in.pipe ( les ports entrant )
&
pmacct -s -p /tmp/out.pipe ( les ports sortant )
Exemple de fichier: pmacct -s -p /tmp/in.pipe SRC PORT PACKETS BYTES 8080 7873 8086590 etc etc etc |
Pour le moment je cherche que la récupération des données
sur un port données le port Ssh
On tape alors:
Si pas de filtre sur le fichier de configuration pmacct -c dst_port -N 22 -p /tmp/out.pipe && pmacct -c src_port -N 22 -p /tmp/in.pipe Si deja le filtre sur le fichier de configuration pmacct -s -p /tmp/in.pipe && pmacct -s /tmp/out.pipe |
Et là j'ai deux valeurs:
3218738
27423226
c'est valeurs sont en Byte
Bon ces bien beau de récupère des valeurs et la je me suis dit et pourquoi pas
les mètres en forme dans un bon graphique.
J'ai chercher....j'ai bien trouver des scripts ou des applis qui font sa très
bien.
Je me suis arrêté à RRDTOOL bon j'ai pas tous compris, mais j'ai réussi quand même
à sortir de jolie graph.
rrdtool create eth0.rrd DS:eth0in:COUNTER:576:0:U DS:eth0out:576:O:U RRA:AVERAGE:0.5:1:576 RRA:AVERAGE:0.5:12:168 RRA:MAX:0.5:1:576: RRA:MAX:0.5:12:168 |
#!/bin/bash SEC_PER_DAY=86400 NOW=`date +%s` NOW1D=`expr $NOW-$SEC_PER_DAY` RRDPATH=/usr/bin RRDATAPATH=/home/cyril/rrdtool IFACE=eth0 DATABASE=eth0.rrd IN=`/sbin/ifconfig $IFACE | grep "RX bytes" | cut -f2 -d: | cut -f1 -d " "` OUT=`/sbin/ifconfig $IFACE | grep "RX bytes" | cut -f3 -d: | cut -f1 -d " "` $RRDPATH/rrdtool update $RRDATAPATH/$DATABASE $NOW:$IN:$OUT $RRDPATH/rrdtool graph /home/cyril/rrdtool/eth0.gif --start $NOW1D --end $NOW DEF:download=$RRDATAPATH/$DATABASE:eth0in:AVERAGE \ DEF:upload=$RRDATAPATH/$DATABASE:eth0out:AVERAGE LINE2:download#FF0000:"Download" LINE2:upload#00FF00:"Upload" |
#!/bin/bash SEC_PER_DAY=86400 NOW=`date +%s` NOW1D=`expr $NOW-$SEC_PER_DAY` RRDPATH=/usr/bin RRDATAPATH=/home/cyril/rrdtool IFACE=eth0 DATABASE=eth0.rrd IN=`/usr/bin/pmacct -c src_port -N 443 -p /tmp/in.pipe`` OUT=`/usr/bin/pmacct -c dst_port -N 443 -p /tmp/out.pipe` $RRDPATH/rrdtool update $RRDATAPATH/$DATABASE $NOW:$IN:$OUT $RRDPATH/rrdtool graph /home/cyril/rrdtool/eth0.gif --start $NOW1D --end $NOW DEF:download=$RRDATAPATH/$DATABASE:eth0in:AVERAGE \ DEF:upload=$RRDATAPATH/$DATABASE:eth0out:AVERAGE LINE2:download#FF0000:"Download" LINE2:upload#00FF00:"Upload" |