АНТИДДОС скрипты

Discussion in 'AntiDDos - АнтиДДОС' started by ReduKToR, 11 Aug 2009.

  1. ReduKToR

    ReduKToR Active Member

    Joined:
    5 Jan 2009
    Messages:
    257
    Likes Received:
    179
    Reputations:
    4
    И так ,скрипты "спасающие" от ддоса прошу выкладывать только здесь!​


    1.Каждый второй скажет что скриты, темболее на php неспасут от настоящего ддоса.
    -Это естественно, но от среднего HTTP Флуда они спасти смогут.

    1.Vbulletin antidd0s(1.2)
    Обязательно создайте каталог tmp с правами 777

    -
    VB_antiddos​

    Ставить на ветки 3.7.х \3.8.х
    ___________________________________

    2.IPB antidd0s(1)
    Обязательно создайте каталог tmp с правами 777


    -
    IPB_antiddos​

    Ставить на IPB 2.1.7 И аналоги
    ___________________________________
    -
    IPB_antiddos​

    Ставить на IPB 2.3.5 И аналоги


    Ну вообем это опять для тех кто сам собрать несможет..... Тех кто умеет гуглить и умеет некривые руки прошу некоментировать типа: и че ты сделал? типа любой так неможет......



    Если кому надо на другие системы то либо стучим ко мне в аську, либо собираем сами.....
    1.В самое начало index.php ставим это:
    <?
    include $_SERVER['DOCUMENT_ROOT'].'/antiddos.php';
    ?>

    2.Файлы из архива в корень и права на tmp -777

    Ну вот и все.... сильно непинать...сделано для новичков.....Скачать

    Последнее обновление ссылок: 04.11.09
     
    #1 ReduKToR, 11 Aug 2009
    Last edited: 4 Nov 2009
    5 people like this.
  2. freelsd

    freelsd Elder - Старейшина

    Joined:
    25 Oct 2007
    Messages:
    108
    Likes Received:
    25
    Reputations:
    10
    Команды ANTI-DDOS:

    Сколько апачей:
    Code:
        ps aux | grep httpd  |wc -l 
    
    Cколько коннектов на 80 порт:
    Code:
        netstat -na | grep ":80\ " | wc -l
    
    SYN
    Code:
        netstat -na | grep ":80\ " | grep syn
    
    Пример SYN-флуда:
    Code:
    netstat -na | grep ":80\ " | grep SYN | wc -l
    767
    Посмотреть много ли разных ай-пи:
    Code:
        netstat -na | grep ":80\ " | grep SYN | sort  -u | more
    
    На какой домен чаще всего идут запросы:
    Code:
        tcpdump -npi eth0 port domain
    Статус апача:
    Code:
        apachectl status
    
    Посмотреть откуда IP:
    Code:
        whois xxx.xxx.xxx.xxx
    
    или
    Code:
        jwhois xxx.xxx.xxx.xxx
    
    где xxx.xxx.xxx.xxx IP атакующего

    Просниферить траф идущий на domain.ru (атакуемый домен) с записью в файл output.txt:
    Code:
        tcpdump -n -i eth0 -s 0 -w output.txt dst port 80 and host domain.ru
    
    dst также можно поменять на src:
    Code:
        tcpdump -n -i eth0 -s 0 -w output.txt src port 80 and host domain.ru
    
    Допустим нашли IP (xxx.xxx.xxx.xxx) с которого много запросов:
    tcpdump и там где был атакуемый домен вводим этот IP:
    Code:
        tcpdump -n -i eth0 -s 0 -w output.txt src port 80 and host xxx.xxx.xxx.xxx
    
    С какого IP сколько запросов:
    Code:
        netstat -ntu | awk '{print $5}'| cut -d: -f1 | sort | uniq -c | sort -nr | more
    
    или просто
    Code:
        netstat -na | grep :80 | sort | uniq -c | sort -nr | more
    
    Посмотреть на какие порты:
    Code:
        netstat -na | grep xxx.xxx.xxx.xxx
    
    где xxx.xxx.xxx.xxx IP атакующего

    и блочить начиная с тех, где больше коннектов.

    Закрыть доступ для целой подсети IP (xxx.xxx.xxx.xxx), на конкретный протокол(-p) порт(–destination-port) в конкретном направлении(-d или -s:
    В одном направлении (-d):
    Code:
        iptables -A INPUT -d xxx.xxx.0.0/16 -p tcp --destination-port http -j DROP
    
    В другом направлении (-s):
    Code:
        iptables -A INPUT -s xxx.xxx.0.0/16  -p tcp --destination-port http -j DROP
    
    Тоже самое, но для конкретного IP (xxx.xxx.xxx.xxx)
    Code:
        iptables -A INPUT -s xxx.xxx.xxx.xxx  -p tcp --destination-port http -j DROP
        iptables -A INPUT -d xxx.xxx.xxx.xxx -p tcp --destination-port http -j DROP
    
    Блокировка по всем протоколам и портам, в направления -s и -d:
    Code:
        iptables -A INPUT -s xxx.xxx.xxx.xxx -j DROP
        iptables -A INPUT -d xxx.xxx.xxx.xxx -j DROP
    
    Если установлен файрвол APF, можно блочить с его помощью:
    Code:
        apf -d xxx.xxx.xxx.xxx
    
    Где xxx.xxx.xxx.xxx IP атакующего.
     
    2 people like this.
  3. ReduKToR

    ReduKToR Active Member

    Joined:
    5 Jan 2009
    Messages:
    257
    Likes Received:
    179
    Reputations:
    4
    AntiOverload *FIX*

    PHP:
    <?php
    /*
    *--------------------------------------------------------
    * Модуль antioverload
    *--------------------------------------------------------
    * Модуль предназначен для ограничения доступа к сайту или 
    * к страницам, где он включён.
    * Принцип работы в том, что запоминается ip-адрес и время
    * обращения с этого адреса. И если в течение заданного
    * времени происходит обращение с того же адреса, то ему
    * выдаётся ошибка 503.
    * Модуль необходимо подключать к скрипту самым первым.
    * Этим обеспечивается быстрота его работы.
    *--------------------------------------------------------
    */

    /* Время задержки в секундах */
    $ad_delay=2;
    /* Путь к папке с временными файлами. Должен существовать */
    $ad_DirName=$_SERVER['DOCUMENT_ROOT'].'/tmp';

    /*
    *---------------------------------------------------------
    * Список поисковых роботов.
    * Очень не хорошо, если поисковый робот будет натыкаться
    * на ошибки на сайте. Ему это может сильно не понравиться.
    * Поэтому пишем список юзер-агентов роботов; добавляем или
    * удаляем, что нужно.
    *---------------------------------------------------------
    */
    $ad_Robots_UserAgent=array(
       
    'aipbot',
       
    'Aport',
       
    'eStyleSearch',
       
    'Gigabot',
       
    'Gokubot',
       
    'Google',
       
    'MJ12bot',
       
    'msnbot',
       
    'PlantyNet_WebRobot',
       
    'StackRambler',
       
    'TurtleScanner',
       
    'Yahoo',
       
    'Yandex',
       
    'YaDirectBot',
    );
    /*
    *---------------------------------------------------------
    * Список доверенных IP.
    *---------------------------------------------------------
    */
    $ad_good_ip = array(
        
    '217.107.36.73',
    );

    /*
    *----------------------------------------------------------
    * Функция создаёт в указанной директории файл, начинающийся
    * с буквы a (для отличия от других возможных файлов) и
    * содержащий в имени ip-адрес клиента.
    *----------------------------------------------------------
    */
    function ad_WiteIP($dir){
       
    $f=fopen($dir.'/a'.$_SERVER['REMOTE_ADDR'], 'w');
       
    fclose($f);
    }
    /*
    *----------------------------------------------------------
    * Проверка на наличие в поле HTTP_USER_AGENT чего-нибудь из
    * вышенаписанного списка.
    *----------------------------------------------------------
    */
    $ad_IsRobot=false;
    foreach (
    $ad_Robots_UserAgent as $match){
       if (
    strstr($_SERVER['HTTP_USER_AGENT'], $match)){
          
    $ad_IsRobot=true;
          break;
       }
    }
    if( 
    in_array($_SERVER['REMOTE_ADDR'], $ad_good_ip) ) {
         
    $good_ip true;
    } else {
         
    $good_ip false;
    }
    /*
    *---------------------------------------------------------
    * Поисковые роботы не любят, когда к адресу страницы
    * добавляется переменная сессии. Поэтому, если на сайте
    * используются сессии, то их лучше включать, если агент -
    * не робот.
    * Если сессии не используются, то этот кусок можно убрать.
    *---------------------------------------------------------
    */
    if (!$ad_IsRobot AND !$good_ip){
       
    session_start();
    }

    if (!
    $ad_IsRobot AND !$good_ip){
       
    /*** Чтение каталога и удаление старых файлов ***/
       
    $ad_dir      =opendir($ad_DirName)
          or die(
    'Отсутствует директория для временных файлов');
       
    $ad_now      =time();
       
    $ad_forbid   =$ad_now-$ad_delay;
       
    /* IP-адрес в имени файла, начинающегося на букву a, 
          а время обращения - время изменения файла */
       
    while (false!==($ad_FName=readdir($ad_dir))){
          if (
    ereg('^a[1-9]',$ad_FName)
             && (@ 
    filemtime($ad_DirName.'/'.$ad_FName)<$ad_forbid)){
             @ 
    unlink($ad_DirName.'/'.$ad_FName);
          }
       }
       
    closedir($ad_dir);
       
    /*** Проверка на существование пометки
          о недавнем обращении с данного ip-адреса ***/
       
    if (file_exists($ad_DirName.'/a'.$_SERVER['REMOTE_ADDR'])){
          
    /* Если обращение было недавно, то выводим сообщение об ошибке */
          
    header('HTTP/1.0 503 Service Unavailable');
          
    header('Status: 503 Service Unavailable');
          
    header('Retry-After: '.$ad_delay*3);
    ?>
    <!doctype html public "-//W3C//DTD HTML 4.01//EN"
    "http://www.w3.org/TR/html4/strict.dtd">
    <html>
    <head>
    <title>Ошибка 503</title>
    <meta http-equiv="Content-Type" content="text/html; charset=Windows-1251" />
    </head>
    <body>
    <h1>Ошибка 503 (Service Unavailable)</h1>
    <p>Сервер не может в данный момент выдать запрашиваемую Вами страницу.
    Попробуйте вызвать эту страницу позже (клавиша F5).</p>
    </body>
    </html>
    <?php
          ad_WiteIP
    ($ad_DirName);   // Перед выходом записываем ip
          
    exit;
       }else{
          
    ad_WiteIP($ad_DirName);
       }
    }
    ?>
     
  4. Root-access

    Root-access Elder - Старейшина

    Joined:
    18 Jun 2008
    Messages:
    193
    Likes Received:
    195
    Reputations:
    91
    Вот хороший антиддос-скрипт от S(ript'а, админа xaknet.ru:

    PHP:
    <?php
    /*
    .##.....##....###....##....##.##....##.########.########
    ..##...##....##.##...##...##..###...##.##..........##...
    ...##.##....##...##..##..##...####..##.##..........##...
    ....###....##.....##.#####....##.##.##.######......##...
    ...##.##...#########.##..##...##..####.##..........##...
    ..##...##..##.....##.##...##..##...###.##..........##...
    .##.....##.##.....##.##....##.##....##.########....##...
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    @comment - При использовании кусков или полного исходного кода, авторство указывать обязательно
    @author - S(r1pt
    @version - 1.2
    @date - 27.11.2009
    */
    class antiDdos
    {
        
    // дебаг
        
    public $debug false;
        
    // директория для хранения файлов индефикации запросов
        
    public $dir '_bots/';
        
    // номер icq администратора
        
    public $icq '123456';
        
    // сообщение при выключенном сайте
        
    public $off_message 'Временные неполадки, пожалуйста, подождите.';
        
    // индивидуальный индефикатор
        
    private $indeficator null;
        
    // сообщение при бане, работают шаблоны, можно использовать - {ICQ}, {IP}, {UA}, {DATE}
        
    public $ban_message 'Вы были заблокированы antiddos системой.
                               Если это ошибка обратитесь к администратору, icq of admin: {ICQ}
                               <hr>(c)XakNet antiddos module, ваш IP - {IP}(<i>{UA}</i>), date - {DATE}'
    ;
        
    // команда выполнения бана в файрволле
        
    public $exec_ban 'iptables -A INPUT -s {IP} -j DROP';
        
    // тип защиты от ддоса:
        /* Возможные значения $ddos 1-5: 
        | 1. Простая проверка по кукам, по умолчанию(рекомендую)   
        | 2. Двойная проверка через $_GET antiddos и meta refresh   
        | 3. Запрос на авторизацию WWW-Authenticate   
        | 4. полное отключение сайта, боты не блокируются!!!   
        | 5. выключать сайт если нагрузка слишком большая на сервере, боты не блокируются!!!   
        */ 
        
    var $ddos 1;
        
    // часть домена поисковых ботов, см strpos()
        
    private $searchbots = array('googlebot.com''yandex.ru''ramtel.ru''rambler.ru''aport.ru''sape.ru''msn.com''yahoo.net');
        
    // временная переменные нужные для работы скрипта
        
    private $attack false;
        private 
    $is_bot false;
        private 
    $ddosuser;
        private 
    $ddospass;
        private 
    $load;
        public 
    $maxload 80;
        
        function 
    __construct($debug)
        {
            @
    session_start() or die('session_start() filed!');
            
    $this->indeficator md5(sha1('botik' strrev(getenv('HTTP_USER_AGENT'))));
            
    $this->ban_message str_replace(array('{ICQ}''{IP}''{UA}''{DATE}'), 
                                             array(
    $this->icq$_SERVER['REMOTE_ADDR'], $_SERVER['HTTP_USER_AGENT'], date('d.m.y H:i')),
                                             
    $this->ban_message
                                            
    );
            if (
    eregi(ip2long($_SERVER['REMOTE_ADDR']), file_get_contents($this->dir 'banned_ips')))
                die(
    $this->ban_message);
            
    $this->exec_ban str_replace('{IP}'$_SERVER['REMOTE_ADDR'], $this->exec_ban);
            
    $this->debug $debug;
            if(!
    function_exists('sys_getloadavg'))
            {
                function 
    sys_getloadavg()
                {
                    return array(
    0,0,0);
                }
            }
            
    $this->load sys_getloadavg();
            if(!
    $this->sbots())
            {
                
    $this->attack true;
                
    $f fopen($this->dir ip2long($_SERVER["REMOTE_ADDR"]), "a"); 
                
    fwrite($f"query\n"); 
                
    fclose($f); 
            }
        }
        
        
    /**
        * Старт работы антиддоса
        **/
        
    function start()
        {
            if(
    $this->attack == false)
                return;
            switch(
    $this->ddos)
            {
                case 
    1:
                    
    $this->addos1();
                    break;
                case 
    2:
                    
    $this->addos2();
                    break;
                case 
    3:
                    
    $this->ddosuser substr(ip2long($_SERVER['REMOTE_ADDR']), 04);
                    
    $this->ddospass substr(ip2long($_SERVER['REMOTE_ADDR']), 4strlen(ip2long($_SERVER['REMOTE_ADDR'])));
                    
    $this->addos3();
                    break;
                case 
    4:
                    die(
    $this->off_message);
                    break;
                case 
    5:
                    if (
    $this->load[0] > $this->maxload
                    {
                        
    header('HTTP/1.1 503 Too busy, try again later'); 
                        die(
    '<center><h1>503 Server too busy.</h1></center><hr><small><i>Server too busy. Please try again later. Apache server on ' $_SERVER['HTTP_HOST'] . ' at port 80 with <a href="http://forum.xaknet.ru/">ddos protect</a></i></small>'); 
                    } 
                    break;
                default:
                    break;
            }
            if (
    $_COOKIE['ddos'] == $this->indeficator
                @
    unlink($this->dir ip2long($_SERVER["REMOTE_ADDR"])); 
        }
        
        
    /**
        * Функция проверяет не является ли клиент поисковым ботом
        **/
        
    function sbots()
        {
            
    $tmp = array();
            foreach(
    $this->searchbots as $bot)
            {
                
    $tmp[] = strpos(gethostbyaddr($_SERVER['REMOTE_ADDR']), $bot) !== false;
                if(
    $tmp[count($tmp) - 1] == true)
                {
                    
    $this->is_bot true;
                    break;
                }
            }
            return 
    $this->is_bot;
        }
        
        
    /**
        * Функция бана
        **/
        
    private function ban()
        {
            if (! 
    system($this->exec_ban))
            { 
                
    $f fopen($this->dir 'banned_ips'"a"); 
                
    fwrite($fip2long($_SERVER['REMOTE_ADDR']) . '|'); 
                
    fclose($f); 
            }
            die(
    $this->ban_message); 
        }
        
    /**
        * Первый тип защиты
        **/
        
    function addos1()
        {
            if (empty(
    $_COOKIE['ddos']) or !isset($_COOKIE['ddos'])) 
            { 
                
    $counter = @file($this->dir ip2long($_SERVER["REMOTE_ADDR"]));
                
    setcookie('ddos'$this->indeficatortime() + 3600 24 356); // ставим куки на год.
                
    if (count($counter) > 10) { 
                    if (! 
    $this->debug)
                        
    $this->ban(); 
                    else 
                        die(
    "Блокированы."); 
                } 
                if (! 
    $_COOKIE['ddos_log'] == '1'
                { 
                    if (! 
    $_GET['antiddos'] == 1
                    { 
                        
    setcookie('ddos_log''1'time() + 3600 24 356); //чтоб не перекидывало постоянно рефрешем. 
                        
    if(headers_sent())
                            die(
    'Header already sended, check it, line '.__LINE__);
                        
    header("Location: ./?antiddos=1"); 
                    } 
                } 
            } elseif (
    $_COOKIE['ddos'] !== $this->indeficator
            { 
                if (! 
    $this->debug
                    
    $this->ban(); 
                else 
                    die(
    "Блокированы."); 
            } 
        }
        
        
    /**
        * Второй тип защиты
        **/
        
    function addos2()
        {
            if (empty(
    $_COOKIE['ddos']) or $_COOKIE['ddos'] !== $this->indeficator
            {
                if (empty(
    $_GET['antiddos'])) 
                { 
                    if (! 
    $_COOKIE['ddos_log'] == '1'
                        
    //проверям есть ли запись в куках что был запрос 
                        
    die('<meta http-equiv="refresh" content="0;URL=?antiddos=' $this->indeficator '" />'); 
                } elseif (
    $_GET['antiddos'] == $this->indeficator
                { 
                    
    setcookie('ddos'$this->indeficatortime() + 3600 24 356); 
                    
    setcookie('ddos_log''1'time() + 3600 24 356); //типо запрос уже был чтоб не перекидывало постоянно рефрешем. 
                

                else 
                { 
                    if (!
    $this->debug
                        
    $this->ban(); 
                    else 
                    { 
                        echo 
    "May be shall not transform address line?"
                        die(
    "Блокированы."); 
                    } 
                } 
            } 
        }
        
        
    /**
        * Третий тип защиты
        **/
        
    function addos3()
        {
            if (! isset(
    $_SERVER['PHP_AUTH_USER']) || $_SERVER['PHP_AUTH_USER'] !== $this->ddosuser || $_SERVER['PHP_AUTH_PW'] !== $this->ddospass
            { 
                
    header('WWW-Authenticate: Basic realm="Vvedite parol\':  ' $this->ddospass ' | Login: ' $this->ddosuser '"'); 
                
    header('HTTP/1.0 401 Unauthorized'); 
                if (! 
    $this->debug
                    
    $this->ban(); 
                else  
                    die(
    "Блокированы."); 
                die(
    "<h1>401 Unauthorized</h1>"); 
            }
        }
    }
    /*
    // Exmaple
    $ad = new antiDdos(false);
    $ad->dir = 'bots/';
    $ad->ddos = 2;
    $ad->start();
    */
    ?>
     
    1 person likes this.
  5. SoftLive

    SoftLive Member

    Joined:
    20 Dec 2009
    Messages:
    2
    Likes Received:
    16
    Reputations:
    0
    НЕкие скрипты для защиты !

    В этом топике постараюсь вам показать несколько скриптов, которые способны защитить от среднего HTTP флуда.


    Начнём.

    Первый, самый лёгкий скрипт, но даёт результат:

    Code:
    ### security protection ::: ANTIDDOS ###
    
    $google=false;
    if(eregi("googlebot",$_SERVER['HTTP_USER_AGENT']))$google=true;
    if(eregi("yandexbot",$_SERVER['HTTP_USER_AGENT']))$google=true;
    
    $nn = md5("837sgsa".$_SERVER['REMOTE_ADDR']);
    if (!isset($_COOKIE[$nn]) && FILE!=="/announce.php" && $google==false)
    {
    	if (isset($_POST[$nn])){
    		setcookie($nn, "yes");
    		header("Location: http://google.com".$_SERVER['REQUEST_URI']);exit;
    	}
    	echo "<html><body><form id=\"f\" action=\"http://google.com".$_SERVER['REQUEST_URI']."\" method=\"post\"><input type=\"hidden\" name='".$nn."' value='a'><script>document.getElementById('f').submit();</script><input type=\"submit\" value='Continue'></form></body></html>";
    	die();
    }
    ### security protection ::: ANTIDDOS ###
    
    

    Скрипты будут ещё выкладываться.

    Этот скрипт защищает немного сайт.. Пробовал ддосить сайт с обычной проги ламерской, не прошло :)
     
  6. zythar

    zythar Elder - Старейшина

    Joined:
    16 Feb 2008
    Messages:
    517
    Likes Received:
    109
    Reputations:
    5
    относится как к eregi, так и к ereg:

     
  7. ReanimatoR

    ReanimatoR Elder - Старейшина

    Joined:
    27 Aug 2006
    Messages:
    120
    Likes Received:
    118
    Reputations:
    34
    http://www.vbulletin.org/forum/showthread.php?t=221739
    Vbulletin antiddos.
     
    1 person likes this.
  8. CuCbKa

    CuCbKa Member

    Joined:
    14 Feb 2010
    Messages:
    63
    Likes Received:
    17
    Reputations:
    0
    пользы от них 000, если честно!
     
    8 people like this.
  9. Dark~Angel

    Dark~Angel Member

    Joined:
    25 Apr 2010
    Messages:
    308
    Likes Received:
    76
    Reputations:
    8
    Если руки прямые то польза есть!Ибо мой сервер ддосили раза 4 и провал!!!
     
  10. ReduKToR

    ReduKToR Active Member

    Joined:
    5 Jan 2009
    Messages:
    257
    Likes Received:
    179
    Reputations:
    4
    Смотря, что ты понимаешь под пользой.Если систему,которая будет блокировать сильно активные IP адреса и недопускать их до всего сайта, то очень даже хорошо помогают.

    А если ты ожидал,что одним скриптиком упасаешься от 100м\бит'ной Ddos атаки, то видимо тебе они и вправду некчему.
     
  11. FreeLanSeeR

    FreeLanSeeR New Member

    Joined:
    21 Dec 2010
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    ВОт проблема нада увеличить интервал при обновлении страницы , стоит 2 раза обновляеш

    AntiOverload *FIX*

    Цитата:
    Модуль предназначен для ограничения доступа к сайту или к страницам, где он включён.
    Принцип работы в том, что запоминается ip-адрес и время обращения с этого адреса. И если в течение заданного времени происходит обращение с того же адреса, то ему выдаётся ошибка 503.Т.е Если вы нажмёте кнопку обновить 3 раза подарят,вам выдаст это сообщение

    Установка:
    *Качаем antiOverload.txt
    *В корне сайта создаем папку tmp и выдаём права 777(Если папка есть,то не чего создовать не надо.)
    *Открываем index.php и перед:
    <?php


    Вот использую этот скрипт и есть проблема нада увеличить интервал при обновлении страницы , стоит 2 раза обновляеш и уходишь в бан , а мне нада хотяб 5 раз...
     
    #11 FreeLanSeeR, 23 Dec 2010
    Last edited: 23 Dec 2010
  12. adept002

    adept002 New Member

    Joined:
    10 Dec 2010
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    защита от ддоса на пхп, это миф (с)
     
  13. IBN_Sino

    IBN_Sino New Member

    Joined:
    18 Jul 2011
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    thenk you
     
  14. LuckyStrike

    LuckyStrike Banned

    Joined:
    31 Jul 2011
    Messages:
    61
    Likes Received:
    4
    Reputations:
    0
    от доса даже не могут спасти известные сайты - такие как ютуб и т.п. .. - это миф!
     
  15. [ STEF ]

    [ STEF ] Member

    Joined:
    19 Aug 2011
    Messages:
    69
    Likes Received:
    36
    Reputations:
    3
    Первый, самый лёгкий скрипт, но даёт результат:

    Код:

    ### security protection ::: ANTIDDOS ###

    $google=false;
    if(eregi("googlebot",$_SERVER['HTTP_USER_AGENT']))$google=true;
    if(eregi("yandexbot",$_SERVER['HTTP_USER_AGENT']))$google=true;

    $nn = md5("837sgsa".$_SERVER['REMOTE_ADDR']);
    if (!isset($_COOKIE[$nn]) && FILE!=="/announce.php" && $google==false)
    {
    if (isset($_POST[$nn])){
    setcookie($nn, "yes");
    header("Location: http://google.com".$_SERVER['REQUEST_URI']);exit;
    }
    echo "<html><body><form id=\"f\" action=\"http://google.com".$_SERVER['REQUEST_URI']."\" method=\"post\"><input type=\"hidden\" name='".$nn."' value='a'><script>document.getElementById('f').submit();</script><input type=\"submit\" value='Continue'></form></body></html>";
    die();
    }
    ### security protection ::: ANTIDDOS ###
     
  16. Art!P

    Art!P Elder - Старейшина

    Joined:
    22 Jan 2008
    Messages:
    169
    Likes Received:
    28
    Reputations:
    5
    По поводу PHP иногда полезно включать буферизацию, но это не всем подходит.
    http://forum.antichat.ru/showthread.php?t=128554
    вот тут описаны тонкости настройки апача.
    иногда ставлю:
    Timeout 10
    KeepAliveTimeout 15
    LimitRequestBody 0
    LimitRequestFields 100
    LimitRequestFieldSize 8190
    LimitRequestLine 8190

    Хотя конечно же лучше иметь nginx в качестве гейта (у которого очень высокая отказоустойчивость) и способный машрутизатор который сможет "разгрузить" сервера от SYN флуда сам (в автоматическом режиме).
    Практически все основные хостеры имеют такой "пионерский" арсенал
     
    #16 Art!P, 27 Sep 2011
    Last edited: 27 Sep 2011
  17. emomasson

    emomasson Member

    Joined:
    27 Jul 2010
    Messages:
    174
    Likes Received:
    12
    Reputations:
    5
    Скрипт DDoS-Deflate продемонстрировал себя неплохо при ддосе в 500-1000 ботов, при большем количестве атакующих нетстат начинает тупить, и оказываются запущенными 2-3 его копии, что еще больше гурзит сервак, так что советую допилить блокировку.
    Перед строками:
    TMP_PREFIX='/tmp/ddos'
    TMP_FILE="mktemp $TMP_PREFIX.XXXXXXXX"
    BANNED_IP_MAIL=`$TMP_FILE`


    Добавьте
    RUNCOPY="/tmp/ddos.run"
    if [ -f "$RUNCOPY" ] && [ ! "$RUNCOPY" == "" ]; then
    source $RUNCOPY
    head
    echo "Уже запущен."
    exit 1

    else
    source $RUNCOPY
    touch $RUNCOPY
    fi
    и в самом конце скрипта
    rm -f $RUNCOPY

    Немного поможет.

    Плюс парсинг логов нджинигса, и блок до*бывающихся по одинаковым запросам за определенный промежуток времени.

    UPD: Сами скрипты проигрывают из-за отсутствия реалтайма, раз в минуту это не "по-пацану" рекомендую юзать connlimit и прибить udp на 80.
     
    #17 emomasson, 14 Nov 2011
    Last edited: 22 Nov 2011
  18. Be$T

    Be$T New Member

    Joined:
    9 Dec 2011
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0

    а если атака будет сильной, наверняка она и этим антиДдос скриптом сервер повалит? :)
     
    #18 Be$T, 29 Mar 2012
    Last edited: 29 Mar 2012
  19. Fishki_Shark

    Fishki_Shark New Member

    Joined:
    2 May 2010
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    503 ошибка полный бред, можно подумать апач от 503 не грузится, хотелось бы что то вроде этого 3 раза обновил одну и ту же страницу = каптча с вопросом= еще 3 обновления = iptables
    хотелось бы еще от парсинга защититься, но тут практически нереально, хз под чем ходят клоак боты
     
  20. emomasson

    emomasson Member

    Joined:
    27 Jul 2010
    Messages:
    174
    Likes Received:
    12
    Reputations:
    5
    Я не парюсь, нгингсом кеширую.