vážně se jde bránit proti DDoS útokům? jednou mi "kámoši" z turecka shodili web(i s celým hostingem) pomocí 2000 přístupů/vteřinu. napsal jsem si tehdy script na limitování počtu přístupů pomocí php+htaccess
$ip = $_SERVER['REMOTE_ADDR'];
$limit = 60;
$limitspojeni = 100;
@$spojeni = mysql_connect('server','jmeno','heslo') OR
die ('<p>Nepodařilo se připojit k serveru</p>');
// print '<p>Podařilo se připojit k serveru</p>';
@mysql_select_db('databaze',$spojeni) OR
die ('<p>Nepodařilo se připojit k databazi</p>');
// print '<p>Podařilo se připojit k databazi</p>';
$result = mysql_query("SELECT 1 FROM limiter WHERE ip = '$ip' AND cas > now() - INTERVAL $limit SECOND");
if (mysql_num_rows($result)==0)
mysql_query("INSERT INTO limiter (ip,cas) VALUES ('$ip',now())",$spojeni);
$result_celkem = mysql_query("SELECT COUNT(*) FROM limiter",$spojeni);
$pocet_celkem=mysql_result($result_celkem,0);
$result_minuta = mysql_query("SELECT COUNT(*) FROM limiter WHERE cas > now() - INTERVAL 1 MINUTE",$spojeni);
$pocet_minuta=mysql_result($result_minuta,0);
if ($pocet_minuta > $limitspojeni){
// echo 'nastalo přetížení - vypínám';
$htaccess = fopen('.htaccess', 'a'); // otevře soubor pro zápis na konci
fwrite($htaccess, 'deny from all'); // zapíše 'deny from all' all lze nahradit za IP adresu
fwrite($htaccess, "\n"); // zapíše 'deny from all' all lze nahradit za IP adresu
fwrite($htaccess, 'ErrorDocument 403 /403.html'); // zapíše chybovou hlášku
fclose($htaccess);
};
mysql_close($spojeni);
|