Monitorear el ataque de inundación TCP / UDP entrante y graficarlo

0

Estoy preparando una presentación sobre un problema de seguridad y quiero incluir una demostración. No será en tiempo real, solo necesito mostrar algunas imágenes de los resultados.

Tengo algunos VPS que realizarán un ataque de inundación tcp o udp simultáneamente en otro servidor específico (Debian / Ubuntu), todos ellos de mi propiedad, por supuesto. Algo así como un ataque DDoS a pequeña escala.

Quiero algunas sugerencias para que se instalen herramientas existentes o nuevos programas en el servidor de destino (distribución del servidor Debian / Ubuntu) que puede monitorear y producir gráficos de tráfico y gráficos relacionados para poder presentar el estado de la red antes y después del ataque.

No quiero mitigar o detener el ataque , sino mostrar los resultados y, si es posible, de forma elegante.

Apreciaría cada idea y sugerencia, gracias.

    
pregunta Ion 25.07.2012 - 14:32
fuente

1 respuesta

3

PhpChart (http://phpchart.net/) si tienes el servidor Apache.

pChart (http://pchart.sourceforge.net/) si está dispuesto a compilar php para trabajar con lib gráfico.

MRTG si solo desea que los archivos png / jpg se coloquen en una página web html simple.

Sencillo script bash para contar tráfico específico con tcpdump. Envíe la salida al archivo y cuente las líneas para pasar al motor de renderizado.

Uso algo como esto:

#!/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

Esto controlará el tráfico de icmp durante 60 segundos y luego repetirá la cantidad de paquetes. Pase la salida al archivo y haga que el motor de representación elegido genere la imagen.

<?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>

Esto es lo que uso para representar los datos (phpChart). Tiene 60 marcadores, uno por cada minuto. Espero que esto ayude.

    
respondido por el mnmnc 25.07.2012 - 15:09
fuente

Lea otras preguntas en las etiquetas