Skip to content

Compter le nombre de connections par IP

par billux le 18 juin 2010
firewall

Aujourd’hui au boulot, j’ai été confronté à un petit problème : sur un serveur victime d’une attaque DDoS (visiblement), je voulais savoir quelles IP ouvraient le plus de connections. Ne trouvant rien de bien intéressant dans les commandes Unix, j’ai écris un petit script en Perl.

Il se charge de récupérer la sortie de netstat (la commande est à adapter à votre besoin) et compte le nombre de lignes identiques (donc d’IP), qu’il se charge ensuite de trier par ordre décroissant et d’afficher.

Voici le script en question :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/usr/bin/perl
 
use strict;
use warnings;
 
my %addrs = (); 
my @netstatOut = split( /\n/, `netstat -taupen | grep SYN | tr -s " " | cut -d" " -f 5 | cut -d: -f1` );
for (@netstatOut) {                                                                                                                                          
    chomp $_; 
    $addrs{$_} += 1;
}
 
for my $key ( sort {$addrs{$b} <=> $addrs{$a}} keys %addrs ) { 
    print $addrs{$key}."\t$key\n";
}

Le script retourne alors son résultat sous la forme :

nbConnection    IP1
nbConnection    IP2
...

Il ne vous reste plus qu’à blacklister les IP les plus actives avec la commande

iptables -I INPUT -s IP -j DROP

3 Commentaires
  1. yamo, le 17 juillet 2010 à 11 h 34 min (permalien)

    N’y a t’il pas moyen que la commande fonctionne pour un utilisateur simple sur Ubuntu 10.04 et Debain 5.05 j’ai une erreur comme quoi je dois être root?

  2. billux, le 17 juillet 2010 à 13 h 13 min (permalien)

    Si effectivement, l’option -p de netstat nécessite d’être root et n’est pas nécessaire pour le script, tu peux l’enlever.
    Ce qui donne :

    netstat -tauen

    ligne 7 du script.

  3. seb, le 27 juillet 2011 à 19 h 14 min (permalien)

    bonjour,
    Pourrais tu le faire en php ?

    Car mon idées serrai m’en servir pour compter / limité le nombre de connexion par ip.
    merci

Poster une réponse

NB : Le XHTML est autorisé. Votre adresse email ne sera jamais publiée ou partagée.

S'abonner au flux RSS des commentaires