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 :¬¬
<?
/*
/************************************************************
/
/ 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 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
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
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!
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
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: