Логин:
Пароль:
 
 
Главная | Форум | Статьи | Фaйлы| Картинки WoW | Профиль | Регистрация | Вход

[ Новые сообщения · Правила форума · Поиск · RSS ]

WoW-Info — информационный World of Warcraft портал

способы защиты сервера от ddos атак - Форум

  • Страница 1 из 1
  • 1
Форум » MANGOS » Прочее для Mangos » способы защиты сервера от ddos атак
способы защиты сервера от ddos атак
DarkensandДата: Среда, 09.03.2011, 15:54 | Сообщение # 1



Darkensand
Главный Админ
Лучший из лучших
Группа: Администратор
Сообщений: 8083



Оффлайн
1.Способы защиты сервера авторизации и игрового сервера wow
DDos shied v0.2

DDoS щит, защита от DDoS атак вашего сервера.

Порядок запуска:
Запускаем DDoS Shield и ждем разрешения на запуск DDoS Shield Server Protector.
Запускаем DDoS Shield Server Protector, вводим IP и порты и радуемся.

2.Защита Сайта от DDOs атак
+ теперь антиддос реализован в виде класса
+ добавлена возможность использования мини шаблонов в ban_message({ICQ}, {IP}, {UA}, {DATE})
+ фикс мелких ошибок
+ упрощение некоторых нелепых конструкций
+ теперь добавлять поисковых ботов куда проще
+ фикс ошибки несуществующей функции под ОС windows
+ добавлена возможность установки максимальной нагрузки для сервера(для типа защиты - 5)
+ для типа 3 иначе генерируются логин и пароль к авторизации напрямую исходя из IP адреса посетителя
+ небольшая оптимизация кода

Установка :

1. Загрузить скрипт на сервер
2. Подключить скрипт в систему через include
3. Инициализировать объект, проще говоря - см. Example внизу скрипта
4. Выбрать тип атаки($object->ddos = type)
5. Указать директорию с ботами и создать её, а так же создать файл banned_ips вней($object->dir = 'bots')
6. Начать фильтровать запросы($object->start())

Code
<?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']), 0, 4);  
                     $this->ddospass = substr(ip2long($_SERVER['REMOTE_ADDR']), 4, strlen(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($f, ip2long($_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->indeficator, time() + 3600 * 24 * 7 * 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 * 7 * 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->indeficator, time() + 3600 * 24 * 7 * 356);      
                     setcookie('ddos_log', '1', time() + 3600 * 24 * 7 * 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();  
*/  
?>
 
DovidgenДата: Вторник, 04.04.2017, 21:48 | Сообщение # 2



Dovidgen
Сержант
Группа: Пользователи
Сообщений: 119

Замечания:

Оффлайн
the most equipped prices defy down into ascertain drugs [url=]http://www.mypharmacydrugs.com[/url] [url=]http://www.pharmacymy.com[/url] tylenol coumadin doxycycline
all this you predilection befall across into uncover on the website

[url=]www.mypharmacydrugs.com/[/url]
[url=]www.pharmacymy.com[/url]

thanks on blacken


http://www.mypharmacydrugs.com http://www.pharmacymy.com
 
Форум » MANGOS » Прочее для Mangos » способы защиты сервера от ddos атак
  • Страница 1 из 1
  • 1
Поиск:

Новые сообщения в темах
Очень хороший зароботок!!! · (Флудилка)
Автор: Hordcore
Последнее сообщение в 12:57
▃ ▅ █ STRIKE-DEATH | WOTL... · (Обычные сервера WoW)
Автор: Pensukdeath
Последнее сообщение в 01:18
Auctioneer · (Проверенные аддоны для WoW)
Автор: ADRE[N]ALINE
Последнее сообщение в 22:43
[Видео-Урок] Меняем фон фотогр... · (Уроки и прочее)
Автор: DjontaSs
Последнее сообщение в 09:26
Ежедневные задания: Кулинария · (Кулинария)
Автор: Darkensand
Последнее сообщение в 23:07
ToolRaces · (Программы TrinityCore)
Автор: R_a_Z_o_R
Последнее сообщение в 15:21
[2012]Новогодний Костюм · (Прочее для TrinityCore)
Автор: TiTaN-WoW
Последнее сообщение в 01:41
Билды на шамана · (Шаман)
Автор: [N1ke]Medved
Последнее сообщение в 18:21
Основы Sql · (Sql)
Автор: No-One
Последнее сообщение в 01:45
Баг на 30к крита 5.4.8 · (Баги WoW)
Автор: Darkensand
Последнее сообщение в 18:46
Баг на дамаг · (Баги WoW)
Автор: nikitadevil
Последнее сообщение в 18:44
Неуязвимость · (Баги WoW)
Автор: Darkensand
Последнее сообщение в 18:43
Бесконечный сокет · (Баги WoW)
Автор: Darkensand
Последнее сообщение в 18:42
Баг на ледянные баджи на uwow · (Баги WoW)
Автор: Darkensand
Последнее сообщение в 18:31
Новейший баг на дамаг ханта · (Баги WoW)
Автор: Act1mel
Последнее сообщение в 18:23

Контакты Контакты Copyright WoW-Info — World of Warcraft портал © 2018 | Условия и правила использования ресурса | Реклама / Услуги
WoW-Info портал.World of Warcraft портал — готовые сервера, сайты, картинки, аддоны, патчи, читы, баги, mangos, ArcEmu, TrinityCore, Warcraft 3, новости, Cataclysm...
Яндекс.Метрика Создать бесплатный сайт с uCoz