date: 18 Jun 2010 title: Compter le nombre de connections par IP tags: planet-evolix, sécurité 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 : #!/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