Monitora l'attacco di flood TCP / UDP in arrivo e grafico

0

Sto preparando una presentazione su un problema di sicurezza e voglio includere una dimostrazione. Non sarà in tempo reale, ho solo bisogno di mostrare alcune immagini dei risultati.

Ho alcuni VPS che eseguiranno un attacco di tcp o udp flood su un altro server specifico (Debian / Ubuntu), tutti di mia proprietà, naturalmente. Qualcosa come un attacco DDoS su piccola scala.

Desidero alcuni suggerimenti per strumenti esistenti o nuovi programmi da installare sul server di destinazione (distro server Debian / Ubuntu) in grado di monitorare e produrre grafici di traffico e grafici correlati in modo da poter presentare lo stato della rete prima e dopo l'attacco.

Non voglio mitigare o fermare l'attacco , ma per mostrarne i risultati e se possibile in modo elegante.

Apprezzerei ogni idea e suggerimento, grazie.

    
posta Ion 25.07.2012 - 14:32
fonte

1 risposta

3

PhpChart (http://phpchart.net/) se hai il server Apache.

pChart (http://pchart.sourceforge.net/) se sei disposto a compilare php per lavorare con la lib grafica

MRTG se vuoi solo un file png / jpg da inserire in una semplice pagina Web html.

Semplice script bash per conteggiare traffico specifico con tcpdump. Invia l'output al file e conta le linee per passare al motore di rendering.

Uso qualcosa del genere:

#!/bin/bash


/usr/local/sbin/tcpdump -l icmp >> icmp.log &

pid=$!

# will monitor the traffic for 60 seconds 
sleep 60
kill -9 $pid &> /dev/null

packets=$( cat icmp.log | wc -l );
echo $packets
rm icmp.log

Questo monitorerà il traffico icmp per 60 secondi, quindi farà eco al numero di pacchetti. Passa l'output al file e fai in modo che il motore di rendering scelto generi l'immagine.

<?php
require_once("../phpChartX/conf.php");
?>
<!DOCTYPE HTML>
<html>
<head>
<script src="jquery.js"></script>
<script>
$(document).ready(function(){
    $("div.pg_notify").css("display","none");
});

</script>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>tcpdump</title>
</head>
    <body>
        <div><span> </span><span id="info1b"></span></div>


<?php

$max=0;
$file=file_get_contents("scripts/icmp.1h");

$file=explode( "\n" , $file );

$o1=explode(" ", $file[0]);
$o2=explode(" ", $file[1]);
$o3=explode(" ", $file[2]);
$o4=explode(" ", $file[3]);
$o5=explode(" ", $file[4]);
$o6=explode(" ", $file[5]);
$o7=explode(" ", $file[6]);
$o8=explode(" ", $file[7]);
$o9=explode(" ", $file[8]);
$o10=explode(" ", $file[9]);
$o11=explode(" ", $file[10]);
$o12=explode(" ", $file[11]);
$o13=explode(" ", $file[12]);
$o14=explode(" ", $file[13]);
$o15=explode(" ", $file[14]);
$o16=explode(" ", $file[15]);
$o17=explode(" ", $file[16]);
$o18=explode(" ", $file[17]);
$o19=explode(" ", $file[18]);
$o20=explode(" ", $file[19]);
$o21=explode(" ", $file[20]);
$o22=explode(" ", $file[21]);
$o23=explode(" ", $file[22]);
$o24=explode(" ", $file[23]);

//$all=array( $o1, $o2, $o3, $o4, $o5, $o6, $o7, $o8, $o9, $o10, $o11, $o12, $o13, $o14, $o15, $o16, $o17, $o18, $o19, $o20, $o21, $o22, $o23, $o24 );
$all=array( $o24, $o23, $o22, $o21, $o20, $o19, $o18, $o17, $o16, $o15, $o14, $o13, $o12, $o11, $o10, $o9, $o8, $o7, $o6, $o5, $o4, $o3, $o2, $o1 );

for ( $i = 0; $i < 23; $i++ )
{
        if ( $all[$i][1] > $max  )
        {
                $max=$all[$i][1];
        }
}
$max=$max+2;


    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //Line 1 Example
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


    $pc = new C_PhpChartX(array(
                                array(
                                        array(24-$o1[0], $o1[1]),
                                        array(24-$o2[0], $o2[1]),
                                        array(24-$o3[0], $o3[1]),
                                        array(24-$o4[0], $o4[1]),
                                        array(24-$o5[0], $o5[1]),
                                        array(24-$o6[0], $o6[1]),
                                        array(24-$o7[0], $o7[1]),
                                        array(24-$o8[0], $o8[1]),
                                        array(24-$o9[0], $o9[1]),
                                        array(24-$o10[0], $o10[1]),
                                        array(24-$o11[0], $o11[1]),
                                        array(24-$o12[0], $o12[1]),
                                        array(24-$o13[0], $o13[1]),
                                        array(24-$o14[0], $o14[1]),
                                        array(24-$o15[0], $o15[1]),
                                        array(24-$o16[0], $o16[1]),
                                        array(24-$o17[0], $o17[1]),
                                        array(24-$o18[0], $o18[1]),
                                        array(24-$o19[0], $o19[1]),
                                        array(24-$o20[0], $o20[1]),
                                        array(24-$o21[0], $o21[1]),
                                        array(24-$o22[0], $o22[1]),
                                        array(24-$o23[0], $o23[1]),

                                )),'chart1');

    $pc->set_title(array('text'=>'icmp'));
    $pc->set_axes(array('yaxis'=> array('numberTicks'=>round(($max+1)/2),'min'=>0,'max'=>$max,'show'=>'false'),'xaxis'=> array('min'=>1,'max'=>23,'numberTicks'$
$pc->set_grid(array('background'=>'#fefbf3','borderWidth'=>2.5));
$pc->add_series(array('color'=>'rgba(68, 124, 147, 0.7)'));
$pc->set_series_default(array('fill'=>true,'shadow'=>false,'showMarker'=>false));
    $pc->draw(600,200);


?>

    </body>
</html>

Questo è quello che uso per il rendering dei dati (phpChart). Ha 60 segnalini - uno per ogni minuto. Spero che questo ti aiuti.

    
risposta data 25.07.2012 - 15:09
fonte

Leggi altre domande sui tag