Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/11/2014, 14:24
Zedd
 
Fecha de Ingreso: octubre-2014
Mensajes: 6
Antigüedad: 10 años
Puntos: 0
Alguna forma de bloquear una ip a traves de PHP en IIS ?

Ok quiero hacer un anti DDOS, porque los programitas estos no funcionan, mi propocito es coger la ip que aunque el atacante tenga proxy , ya lo hice, guardar la ip en un blog lo hice, solo me falta contar las veces que ataca en menos de 3 segundo y si superan las 10 o 5 , pues que lo guarde en el log y bloquee la ip, alguien tiene alguna idea ?

Código PHP:
Ver original
  1. <?php
  2. function getRealIP()
  3. {
  4.  
  5.    if( $_SERVER['HTTP_X_FORWARDED_FOR'] != '' )
  6.    {
  7.       $client_ip =
  8.          ( !empty($_SERVER['REMOTE_ADDR']) ) ?
  9.             $_SERVER['REMOTE_ADDR']
  10.             :
  11.             ( ( !empty($_ENV['REMOTE_ADDR']) ) ?
  12.                $_ENV['REMOTE_ADDR']
  13.                :
  14.                "unknown" );
  15.  
  16.       // los proxys van añadiendo al final de esta cabecera
  17.       // las direcciones ip que van "ocultando". Para localizar la ip real
  18.       // del usuario se comienza a mirar por el principio hasta encontrar
  19.       // una dirección ip que no sea del rango privado. En caso de no
  20.       // encontrarse ninguna se toma como valor el REMOTE_ADDR
  21.  
  22.       $entries = preg_split('/[, ]/', $_SERVER['HTTP_X_FORWARDED_FOR']);
  23.  
  24.       reset($entries);
  25.       while (list(, $entry) = each($entries))
  26.       {
  27.          $entry = trim($entry);
  28.          if ( preg_match("/^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/", $entry, $ip_list) )
  29.          {
  30.             // http://www.faqs.org/rfcs/rfc1918.html
  31.             $private_ip = array(
  32.                   '/^0\./',
  33.                   '/^127\.0\.0\.1/',
  34.                   '/^192\.168\..*/',
  35.                   '/^172\.((1[6-9])|(2[0-9])|(3[0-1]))\..*/',
  36.                   '/^10\..*/');
  37.  
  38.             $found_ip = preg_replace($private_ip, $client_ip, $ip_list[1]);
  39.  
  40.             if ($client_ip != $found_ip)
  41.             {
  42.                $client_ip = $found_ip;
  43.                break;
  44.             }
  45.          }
  46.       }
  47.    }
  48.    else
  49.    {
  50.       $client_ip =
  51.          ( !empty($_SERVER['REMOTE_ADDR']) ) ?
  52.             $_SERVER['REMOTE_ADDR']
  53.             :
  54.             ( ( !empty($_ENV['REMOTE_ADDR']) ) ?
  55.                $_ENV['REMOTE_ADDR']
  56.                :
  57.                "unknown" );
  58.    }
  59.  
  60.    return $client_ip;
  61.  
  62.  
  63. }
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.     function get_real_ip()
  71.     {
  72.  
  73.         if (isset($_SERVER["HTTP_CLIENT_IP"]))
  74.         {
  75.             return $_SERVER["HTTP_CLIENT_IP"];
  76.         }
  77.         elseif (isset($_SERVER["HTTP_X_FORWARDED_FOR"]))
  78.         {
  79.             return $_SERVER["HTTP_X_FORWARDED_FOR"];
  80.         }
  81.         elseif (isset($_SERVER["HTTP_X_FORWARDED"]))
  82.         {
  83.             return $_SERVER["HTTP_X_FORWARDED"];
  84.         }
  85.         elseif (isset($_SERVER["HTTP_FORWARDED_FOR"]))
  86.         {
  87.             return $_SERVER["HTTP_FORWARDED_FOR"];
  88.         }
  89.         elseif (isset($_SERVER["HTTP_FORWARDED"]))
  90.         {
  91.             return $_SERVER["HTTP_FORWARDED"];
  92.         }
  93.         else
  94.         {
  95.             return $_SERVER["REMOTE_ADDR"];
  96.         }
  97.  
  98.     }
  99.  
  100. function BaseFile(){
  101.  
  102. $BaseF = basename($_SERVER['PHP_SELF']);
  103. $Base_F=getcwd().'/'.$BaseF;
  104. $BaseFile=str_replace("\\","/",$Base_F);
  105.  
  106. return $BaseFile;
  107.  
  108.  
  109. }  
  110.  
  111.  
  112.  
  113. $ip = $_SERVER["REMOTE_ADDR"];
  114.  
  115.  
  116. ?>
  117.  
  118. <?php //Ejemplo aprenderaprogramar.com, archivo escribir.php
  119. $file = fopen("maybe.txt", "a");
  120. fwrite($file, "############ Nuevo Registro ############".PHP_EOL);
  121. fwrite($file, "IP 1 : ". getRealIP() . PHP_EOL);
  122. fwrite($file, "IP 2 : ". get_real_ip() . PHP_EOL);
  123. fwrite($file, "IP 3 : ". $ip . PHP_EOL);
  124. fwrite($file, "Archivo : ". BaseFile() .PHP_EOL);
  125. fwrite($file, "".PHP_EOL);
  126.  
  127. fclose($file);
  128. ?>

ese es lo que tengo

PD: No puede ser en htaccess, debo hacerlo a traves de web.config

Última edición por Zedd; 01/11/2014 a las 14:30