¿Qué es esto? "Script anti genial of service"

Iniciado por WIитX, 17 Noviembre 2014, 15:29 PM

0 Miembros y 1 Visitante están viendo este tema.

WIитX

Pues lo saqué de el post de el-brujo lo posteo el ex-staff дٳŦ٭

http://foro.elhacker.net/tutoriales_documentacion/intentando_detener_un_ataque_ddos-t137442.14.html

Me gustaría saber si es efectivo y como lo ejecuto.

Nota para #drvy
No se si esto va en desarrollo web o el seguridad informática  :¬¬

Código (php) [Seleccionar]
<?
/*
/************************************************************
/                                                                                                        
/           NST Anti Denial of Service Script  v 0.1                                          
/                                                                                                        
/                                                                                                        
/                                                                                                        
/             Author: Link   < link07@gmail.com >                              
/                                                                                                        
/              ..::[N]eo [S]ecurity [T]eam::..                                          
/                                                                                                          
/              http://www.neosecurityteam.net    
/
/                   Date:  October - 2006                
/                                                                                                          
/                                                                                                          
/*************************************************************


    This script will prevent Dos and DDos attacks using request flood
    of http packets, that causes your server to excecute to much connections
    with the database and execute tha php interpreter a lot of times in a few
    seconds, all you have to do to install this is include it in a script that
    all your scripts use , an script for the database connection for example
    and create three empty txt files on the same folder with write and read
    permissions: log.txt , bans.txt , counter.txt
    This script will ban users using the .htaccess file, so dont forget to put
    this is script on the same folder as the .htaccess file as well
    It is very configurable just modify the parameters indicated below , to
    asign how sctrict the script will act.  

*/

$data = "";

$ban = "";

$visits = 1;

$error = 0;

$ahora = date("Y-n-j H:i:s");

$safemode = 0;

$new = "";

$flooder =0;

$registered = 0;

$wwwdir = "/home/neosecur/public_html/";

$ahora = date("Y-n-j H:i:s");

if(!$file = @fopen($wwwdir."log.txt","r"))

$error = 1;

while (!@feof($file))

{

$data .= @fgets($file);

}

$visitor = explode("\n",$data);

$i=0;

while($visitor[$i])

{

$iptime = explode("@",$visitor[$i]);

if ($_SERVER['REMOTE_ADDR'] == $iptime[0])

{



$tiempo = strtotime($ahora) - $iptime[1];

if ($tiempo <= 1)  // this line controls the acces of an ip, only one request during the number of seconds you replace here

{

$safemode = 1;


$flooder = 1;

}


$iptime[1]=strtotime($ahora);





$registered = 1;

}

$new .=$iptime[0]."@".$iptime[1]."\n";

$i++;

}


if (!$registered)

$new.=$_SERVER['REMOTE_ADDR']."@".strtotime($ahora)."\n";



if (!@fclose($file))

$error = 1;



if(!$file = @fopen($wwwdir."log.txt","wt"))

$error = 1;



@fwrite($file,$new);

if (!@fclose($file))

$error = 1;



if (!$fcount = @fopen($wwwdir."counter.txt","rt"))

$error = 1;

$vst = @fgets($fcount);

$count = explode("@",$vst);

if (strtotime($ahora) == $count[1])

{

$visits = $count[0] + 1;

$count[0] = $visits;

}

else

{

$count[0] = 1;

$count[1] = strtotime($ahora);

}

if (!@fclose($fcount))

$error = 1;



$new = $count[0]."@".$count[1];



if (!$fcount = @fopen($wwwdir."counter.txt","wt"))

$error = 1;



@fwrite($fcount,$new);



if (!@fclose($fcount))

$error = 1;




$new = "";

$registered = 0;



if ($visits > 4) // this line controls visits during a second, it is used to prevent ddos attacks you can modify this depending on the capacity of your server

{

$safemode = 1;

if ($flooder)

{

if (!$fban = @fopen($wwwdir."bans.txt","rt")) $error = 1;

while (!@feof($fban))

{

$ban .= @fgets($fban);

}

$ips = explode ("\n",$ban);

$i=0;

while ($ips[$i])

{

if ($_SERVER['REMOTE_ADDR'] == $ips[$i])

$registered = 1;

$i++;

$new .=$ips[$i];

}

if (!@fclose($fban)) $error = 1;



if (!$registered)

{

if (!$fban = @fopen($wwwdir."bans.txt","wt")) $error = 1;

$new .=$_SERVER['REMOTE_ADDR']."\n";

@fwrite($fban,$new);

if (!@fclose($fban)) $error = 1;

}

else

{

if (!$fht = @fopen($wwwdir.".htaccess","rt"))

$error = 1;

$cont = "";
$cont2 = "";
$eob = 0;
while (!@feof($fht))

{

$a = @fgets($fht);

if ($eob)
$cont2.=$a;
else
{
if ($a == "</Limit>\r\n" or $a == "</Limit>" or $a == "</Limit>\n")
{
$eob = 1;
$cont2.=$a;
}
else
$cont.=$a;
}

}



if (!@fclose($fht))

$error = 1;

if (!$fht = @fopen($wwwdir.".htaccess","wt"))

$error = 1;


$cont .= "Deny from ".$_SERVER['REMOTE_ADDR']."\n";
$cont .= $cont2;

@fwrite($fht,$cont);

if (!@fclose($fht))

$error = 1;

}

}


}


if ($error)

{

echo "ocurrio un error inesperado por favor trata actualizando de nuevo o vuelve en un rato. Gracias por tu comprensión.";

exit(0);

}

if($safemode)

{

echo '<META HTTP-EQUIV="Refresh" CONTENT="2;URL=">';

exit(0);

}



// if no restrictions have been activated , the content of the web will be displayed normally
//echo "contenido";
?>
"Es más divertido hacerse pirata que unirse a la marina." (Steve Jobs)

#!drvy

Es un script PHP para denegar el acceso a "usuarios" que hacen mas de X peticiones en X tiempo. Guarda las IP's en archivos y va mirando.

Si te soy sincero yo no le usaría, el hecho de que este en PHP significa que va a ir al ultimo punto de defensa, aparte el hecho de guardar IPs de esa forma significa que vas a incrementar el r/w (esto añadiendo mas carga al procesador y al hdd) y en casos donde tienes miles de IPs baneadas con esos while tardara en ejecutarse.

Deberías mirar reglas mas las reglas del firewall y los mods que tengas antes que estas cosas.

Una pregunta.. ¿Te están atacando y todo lo que pruebas no funciona o estas metiendo a saco todo lo que encuentras "por si acaso" ? Lo digo porque me parece un poco excesivo todo lo que he visto que metes xD

Saludos

el-brujo

ese script php no sirve de nada xD Me refiero que no debe ser nada efectivo ante un ataque, porque muchas peticiones no llegan a ejecutar el script php, son peticiones al servidor web que se quedan "a medias."

Mucho más efectivo un módulo para apache para  controlar el ancho de banda , un script basado en netstat, en /proc/sys o usar iptables, apft, etc

WIитX

Cita de: #!drvy en 17 Noviembre 2014, 16:18 PM
Es un script PHP para denegar el acceso a "usuarios" que hacen mas de X peticiones en X tiempo. Guarda las IP's en archivos y va mirando.

Si te soy sincero yo no le usaría, el hecho de que este en PHP significa que va a ir al ultimo punto de defensa, aparte el hecho de guardar IPs de esa forma significa que vas a incrementar el r/w (esto añadiendo mas carga al procesador y al hdd) y en casos donde tienes miles de IPs baneadas con esos while tardara en ejecutarse.

Deberías mirar reglas mas las reglas del firewall y los mods que tengas antes que estas cosas.

Una pregunta.. ¿Te están atacando y todo lo que pruebas no funciona o estas metiendo a saco todo lo que encuentras "por si acaso" ? Lo digo porque me parece un poco excesivo todo lo que he visto que metes xD

Saludos

Me atacan de vez en cuando y tal pero también lo hago para ir aprendiendo y esas cosillas  ;-)

Cita de: el-brujo en 17 Noviembre 2014, 16:30 PM
ese script php no sirve de nada xD Me refiero que no debe ser nada efectivo ante un ataque, porque muchas peticiones no llegan a ejecutar el script php, son peticiones al servidor web que se quedan "a medias."

Mucho más efectivo un módulo para apache para  controlar el ancho de banda , un script basado en netstat, en /proc/sys o usar iptables, apft, etc

Los modulos que intento instalar que es el que me dejaste el de mod_evasive no encuentro ningún tutoría de como hacerlo en windows, descargo perl, meto el mod en la carpeta mod de apache y ya no se como activarlo.

Saludos y gracias!
"Es más divertido hacerse pirata que unirse a la marina." (Steve Jobs)

JorgeEMX

Cita de: WIитX en 17 Noviembre 2014, 17:43 PM

Los modulos que intento instalar que es el que me dejaste el de mod_evasive no encuentro ningún tutoría de como hacerlo en windows, descargo perl, meto el mod en la carpeta mod de apache y ya no se como activarlo.

Saludos y gracias!

Que te sirva de experiencia! La verdad yo nunca confiaría en un entorno "Windows" para usar de servidor y mucho menos para un proyecto serio. Perdón por el offtopic :D

WIитX

Cita de: JorgeEMX en 18 Noviembre 2014, 00:30 AM
Que te sirva de experiencia! La verdad yo nunca confiaría en un entorno "Windows" para usar de servidor y mucho menos para un proyecto serio. Perdón por el offtopic :D

Gracias Jorge pero en este caso es un "emulador" entonces tengo que ejecutarlo en windows  :rolleyes:
"Es más divertido hacerse pirata que unirse a la marina." (Steve Jobs)