Il existe un magnifique petit programme qui permet de mettre sous forme de graphe des statistiques tirées de notre merveilleux firewall packet filter (pf pour les intimes)

Ce petit programme se nomme : pfstat il est présent dans le ports tree d'OpenBSD et de FreeBSD.

Pour OpenBSD :

# cd /usr/ports/net/pfstat

pour FreeBSD :

# cd /usr/ports/sysutils/pfstat

et ensuite on l'installe :

# make install clean

sous FreeBSD par défault pfstat est installé dans /usr/local/bin

Si vous tapez :

# /usr/local/bin/pfstat -q

Vous allez voir des nombres s'afficher ce sont les statistiques de pf.
Pour générer les graphes nous avons besoin de stocker ces valeurs à des intervalles réguliers.
Pour ce faire une petite ligne dans crontab va suffir.

# crontab -e
------------------------------------- SNiP ------------------------------------
*/5 * * * * /usr/local/bin/pfstat -q >> /var/log/pfstat.log
------------------------------------- SNiP ------------------------------------

Faites un tail -f sur /var/log/pfstat.log et vous verrez qu'une nouvelle ligne est ajoutée à ce fichier toutes les 5 minutes.

Bon c'est bien beau mais on a toujours pas de graphes…

Pour créer des graphes il faut d'abord créer un fichier de configuration que l'on appellera pfstat.conf par exemple et ensuite spécifier chaque graphe que nous voulons :

pfstat est capable de grapher les choses suivantes :

bytes_v4_in bytes_v4_out bytes_v6_in bytes_v6_out packets_v4_in_pass packets_v4_in_drop packets_v4_out_pass packets_v4_out_drop packets_v6_in_pass packets_v6_in_drop packets_v6_out_pass packets_v6_out_drop states_entries states_searches states_inserts states_removals counters_match counters_badoffset counters_fragment counters_short counters_normalize counters_memory

Voila un petit exemple :

# vi /usr/local/etc/pfstat.conf

------------------------------------- SNiP ------------------------------------
image "/var/www/pf/traffic_6h.jpg" {
    from 6 hours to now
    width 960 height 300
    left
    graph bytes_v4_in       label "inconming" color 0 255 0 filled,
    graph bytes_v4_out      label "outgoing"  color 0 0 255
}
------------------------------------- SNiP ------------------------------------

Ce qui permet de faire un graphe entrant et sortant sur une période de 6 heures.

Pour tous les détails de la configuration de pfstat je vous laisse consulter la man page très bien expliquée

# man pfstat

Enfin, ajoutez à votre pf.conf :

------------------------------------- SNiP ------------------------------------

set loginterface ton_interface

------------------------------------- SNiP ------------------------------------

Voila maintenant pour générer vos graphes toutes les 5 minutes et bien une ligne dans contrab va nous aider

# crontab -e

------------------------------------- SNiP ------------------------------------
*/5 * * * * /usr/local/bin/pfstat -c /usr/local/etc/pfstat.conf -d /var/log/pfstat.log
------------------------------------- SNiP ------------------------------------

Et pour terminer voila un exemple de configuration :

------------------------------------- SNiP ------------------------------------
image "/var/www/pf/traffic_month.jpg" {
    from 1 months to now
    width 960 height 300
    left
    graph bytes_v4_in       label "inconming" color 255 255 0 filled,
    graph bytes_v4_out      label "outgoing"  color 255 0 0 filled
}

image "/var/www/pf/traffic_week.jpg" {
    from 1 weeks to now
    width 960 height 300
    left
    graph bytes_v4_in       label "inconming" color 255 255 0 filled,
    graph bytes_v4_out      label "outgoing"  color 255 0 0 filled
}

image "/var/www/pf/traffic_day.jpg" {
    from 1 days to now
    width 960 height 300
    left
    graph bytes_v4_in       label "inconming" color 255 255 0 filled,
    graph bytes_v4_out      label "outgoing"  color 255 0 0 filled
}

image "/var/www/pf/traffic_12h.jpg" {
    from 12 hours to now
    width 960 height 300
    left
    graph bytes_v4_in       label "inconming" color 255 255 0 filled,
    graph bytes_v4_out      label "outgoing"  color 255 0 0 filled
}

image "/var/www/pf/traffic_6h.jpg" {
    from 6 hours to now
    width 960 height 300
    left
    graph bytes_v4_in       label "inconming" color 255 255 0 filled,
    graph bytes_v4_out      label "outgoing"  color 255 0 0 filled
}

image "/var/www/pf/firewall_6h.jpg" {
    from 6 hours to now
    width 960 height 300
    left
    graph packets_v4_in_pass        label "pass in" color 255 255 0 filled,
    graph packets_v4_in_drop        label "block in"  color 255 0 0 filled

    right
    graph packets_v4_out_pass       label "pass out" color 206 38 255,
    graph packets_v4_out_drop       label "block out" color 206 179 255
}
------------------------------------- SNiP ------------------------------------

Voila voila si vous avez la moindre question n'hésitez pas.

aflab.

bsd/statistiques_pf_packet_filter.txt · Last modified: 2010/01/12 13:29 (external edit)