Pmacct :

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

Rrdtool c'est quoi ?

RDTool, ou plus exactement Round Robin Database Tool, c'est une suite d'outils permettant de stocker des données, sous un format ".rrd", de les restaurer et d'afficher un graphique avec ces données

Je vous donne l'adresse dans site French qui parle tres bien de Rrdtool : http://ed.zehome.com/?page=rrdtool

Fonctionnement

Un fichier Rrdtool ( RRD ) se compose de une ou plusieurs Data Source (DS) est au moins une archive RRA ( Round Robin Archive ) par Data Source,
sa taille ne bougera pas dans le temps, parce-que quand une Archive est pleine, la création d'une nouvelle donnée chasse la plus ancienne.
A la création les valeurs sont placées en valeur unknown ( inconnu ).

Par défaut la période de remplissage est 5 Minutes ou 300 Secondes ( step), Beaucoup de valeur dans rrdtool sont en Secondes.

Data Source ( DS ) :

DS:"nom":"Type":"Heartbeat":"Min":"Max" ou DS:in:COUNTER:600:0:U

    - Nom : Pas + de 19 caractères Alpha num

    - Type :

        GAUCHE    : pour une température
        COUNTER  : compteur pour mesurer un débit, une vitesse ( incrémantation )
        DERIVE       : Calcul les + ou - par rapport à la mesure précédente.
        ABSOLUTE : Comme COUNTER mais RAZ à chaque lecture

    - Heartbeat        : Battement de coeur, c'est l'intervalle de temps au bout duquel les données sont considérées comme "unknown"

    - Min                 : Valeur Mini ( métre U pour pas de Minimum )

    - Max                : Valeur Max 
( métre U pour pas de Maximum )

Round Robin Archive  ( RRA ) :

RRA:"CF":"XFF"STEPS":"ROWS"

     - CF: Une donnée peut être établie avec une ou plusieurs mesures et on doit préciser le facteur de consolidation.
     
        - AVERAGE pour la MOYENNE
        - MAX pour le maximum
        - MIN pour le minimum
        - LAST  pour le dernier
       
      - XFF : pour XFF, Nonbres points acceptables pour avoir une donnée valide.
      - STEPS : Combien de mesures constituent la donnée.
      - ROWS : Nombre de valeurs à garder.


Exemple :

rrdtool create eth0.rrd DS:in:COUNTER:600:U:U RRA:AVERAGE:0.5:1:576

Sur cette expemple création d'une base ethh0.rrd
avec comme nom de Data source = in
de type COUNTER
avec 600 secondes de
Heartbeat
pas de Mini & de Max ( Le grand "U" )

avec une Archive de type AVERAGE
XFF : 300
1 mesure
je garde 2 jours (  1 mesure * Step = 300 ou 5 minutes  ( 576 * 5 =  2880 minutes ))

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 testé sur une Ubuntu :

apt-get install rrdtool


l'exemple qui vient est pour le Monitoring de la bande passante de notre carte reseau :


Création de la Base Rrdtool


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

Maintenant il faut alimanter cette basse Rrd et genere au graphique, avec un script :

Dans ce script, il y a update de la base et la création du graph, je n'explique pas le fichier je pense qu'il est bien assez clair.

#!/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"

Rendre le script executaple ( chmod +x script )

Ensuite sous le compte courant de votre Linux

crontab -u votrelogin -e
*/5 * * * *  /rep/nomduscript > /dev/null

Va Excecuter toutes les 5minutes le script et notre basse Rrd va être aliment& et avec un joli graphique

Voila le résultat :



Pour faire l'intergration des données de PMACCT dans Rrdtool c'est le même principe, voila un script :

#!/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"


Bien sur on peut faire bien plus mais là, je pense que si vous aussi vous arrivez à sortir des graphs simples, alors en cherchant un peu ...


Voilà quelques Exemples de graphiques :






























 

  INDEX du site