2010-02-15

Une bien belle courbe

Suite de l'article gnuplot.

Il se trouve que quelques paquets traversent le routeur NetGear, par configuration. Certains d'entre eux finissent sur le firewall netfilter/iptables de ma machine.


Ils sont tracés, avec des commandes telles que :


(...)
IPT=/sbin/iptables
(...) 
$IPT -N logdrop
$IPT -A logdrop -j LOG --log-prefix "fwlogdrop "
$IPT -A logdrop -j DROP
(...)
$IPT -A INPUT -m conntrack --ctstate NEW -j logdrop
(...)

Bref, revoici le script "log2gp.pl", modifié pour prendre en compte aussi ces paquets :


#!/usr/bin/perl -w

use strict;

my @file = <STDIN>;
my %d;
my %mon2num = qw(
 jan 01 feb 02 mar 03 apr 04 may 05 jun 06
 jul 07 aug 08 sep 09 oct 10 nov 11 dec 12
);
my $month;
my $day;

while (my $l = shift(@file)) {
        chomp($l);
        if ($l =~ m/^(\w+)\s+(\d+).*Packet - Source:.* Destination:.* - \[Any\(ALL\) rule match\]/) {
                &add_log($1, $2);
        } elsif ($l =~ m/^(\w+)\s+(\d+).* kernel: .*IN=.*OUT=.*SRC=.*DST=.*/) {
                &add_log($1, $2);
        }
}

sub add_log {
        my $month = shift();
        my $day   = shift();
        $month = $mon2num{lc(substr($month, 0, 3))};
        $day = sprintf("%02d", $day);
        if (!defined($d{"$month/$day"})) { $d{"$month/$day"} = 0.0; }
        $d{"$month/$day"} += 1.0;
}

foreach my $k (sort(keys(%d))) {
        print("$k $d{$k}\n");
}

La commande pour générer la courbe est toujours la même :

zcat /var/log/syslog.*.gz | ./log2gp.pl > fw.dat
gnuplot plot.conf

Aucun commentaire:

Enregistrer un commentaire