Pro 11 Опубликовано 28 декабря, 2012 (изменено) Здравствуйте, меня зовут Евгений! Я предлагаю Вам абсолютно новый подход к вопросу о защите сайта. Это SWD - Safety Web DDoS, звучит как название ботнета, но отнюдь наоборот, это средство для защиты от DOS-атак или же POST флуда. Вкратце. Система имеет 7 модулей защиты: REQUEST - Самый первый и оперативный модуль, проверяет объем и частоту POST запросов, потому что если послать серверу большой POST запрос то он не так уж оперативно его обработает, а если их тысяча. Данный модуль сразу на нет сводит такую возможность. COOKIES - Автоматически или Вручную, и так и так, но по мне так лучше когда выводится сообщение содержания "Не бот ли ты?" Это не просто сообщение с кнопкой, это проверка на куки-воспринимаемость, большинство ботнетов предлагаемых в рунете не имеет возможности принимать кукисы, от того и данный модуль. AOS (AntiOverloadSystem) - Это не просто модуль, это постоянный контроль за пользователем и количеством загружаемых страниц на сайте в заданный промежуток времени, защита от банального HTTP флуда, который так солит слабеньким серверам. SESSION - По аналогии с cookies, но полностью в автоматическом режиме, проверка на возможность присвоения сессий, клиенту. SYSTEM - Проще некуда. Windows, Mac, Linux - наши друзья, Unix и прочие - боты. BROWSER - По названию я думаю итак понятно, опять же большинство ботнетов или же флудеров не имеют такого свойства как название браузера и следовательно они никак не определяются, тогда в бан. PROTOCOL - Последнее, но не менее важное, проверка на прокси. Да может это и лишнее, но бывают же флудеры использующие прокси, это как раз специально для них. Почему я предлагаю это бесплатно? Сложно сказать, я занимался серверами La2 более пяти лет и очень устал от всего этого, сейчас хочется перейти в чуть другую сферу и помогать Вам, друзья. Если у кого-то есть какие-либо пожелания или предложения, с удовольствием выслушаю. Akumu привет P.S: Файл в прикреплении. P.P.S: Если будет пользоваться успехом, допилю конфиг в визуальную админку и добавлю еще пару плюшек. swd.zip Изменено 28 декабря, 2012 пользователем Pro 5 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
BlackDream 321 Опубликовано 28 декабря, 2012 Думаю будет полезно , очень даже полезно !!!1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
BlackDream 321 Опубликовано 28 декабря, 2012 что то файлов не наблюдаюю ) выложи просто ниже ссылки на файлы ) 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
BlackDream 321 Опубликовано 28 декабря, 2012 распиши ниже что к чему да как ) p.s. Надеюся ты не в бот нет набираеш ) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pro 11 Опубликовано 28 декабря, 2012 распиши ниже что к чему да как ) p.s. Надеюся ты не в бот нет набираеш ) Что именно расписать?) Мне кажется информация в шапке исчерпывающая, а процесс установки (ну как процесс, два шага и все) описан в текстовом файлике в архиве Ну а впрочем отвечу на все интересующие вопросы. 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
BlackDream 321 Опубликовано 28 декабря, 2012 вечером попрошу протестить ваш скрипт с помощью бот нета ) узнаем на сколько он живучий ) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
unsual 530 Опубликовано 28 декабря, 2012 3 строки нужно писать во всех tpl файлах, или хватит написать в индекс? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pro 11 Опубликовано 28 декабря, 2012 Не в tpl а в самый первый index.php который загружает все tpl, по идее он располагается в корневой директории Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
unsual 530 Опубликовано 28 декабря, 2012 (изменено) Не в tpl а в самый первый index.php который загружает все tpl, по идее он располагается в корневой директории Ясно, спасибо. Добавь в первый пост Изменено 28 декабря, 2012 пользователем unsual Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pro 11 Опубликовано 29 декабря, 2012 На сайте проекта [http://safety-web.ru/]новая версия. Немного оформил, по просьбам, сообщение подтверждающее человечность. Если что его менять можно самому в form.html 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
lacosta 206 Опубликовано 29 декабря, 2012 кто тестил нет не каких заподлянок ? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Saimon 332 Опубликовано 29 декабря, 2012 Интересно Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pro 11 Опубликовано 29 декабря, 2012 кто тестил нет не каких заподлянок ? Если бы бы были "заподлянки", зачем мне палить все свои данные?)) Попрошу пожалуйста отписывать о тестах, может что-то не учел и т.п, хотелось бы критики =) 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
mineral 97 Опубликовано 29 декабря, 2012 (изменено) Все закинул как написано в инструкции (разу говорю хостинг туфта, падает от нонтр+ф5), попробовал опять зажать контр+ф5, сайт выдал 502 Изменено 29 декабря, 2012 пользователем mineral 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pro 11 Опубликовано 29 декабря, 2012 (изменено) Все закинул как написано в инструкции (разу говорю хостинг туфта, падает от нонтр+ф5), попробовал опять зажать контр+ф5, сайт выдал 502 Настройте конфигурацию AOS более жестко. $ddos['aos_time'] = "5"; $ddos['aos_lim'] = "4"; Например так Отпишите, помогло ли это такому печальному хостингу =( Изменено 29 декабря, 2012 пользователем Pro Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
mineral 97 Опубликовано 29 декабря, 2012 (изменено) Даже локалка упала (Vertrigo) Один вопросик: <?php session_start( ); error_reporting( 0); define( "STRESSWEB", TRUE ); define( "ROOT_DIR", dirname( __FILE__ ) ); define( "INC_DIR", ROOT_DIR."/inc" ); define( "MOD", "index" ); session_start(); define('DDOS','SafetyWeb'); include "ddos/swd.php"; require_once( INC_DIR."/cache.php" ); require_once( INC_DIR."/data/config.php" ); require_once( INC_DIR."/data/config_db.php" ); require_once( INC_DIR."/cfg.default.php" ); require_once( INC_DIR."/lang/".$l2cfg['lang'].".php" ); require_once( INC_DIR."/classes/class.mysql.php" ); require_once( INC_DIR."/classes/class.template.php" ); include( './anti_ddos.php' ); $host=getenv("HTTP_HOST"); $tpl = new template_parse_class( ); $tpl->dir = ROOT_DIR.( "/skin/".$l2cfg['template'] ); $http_home_url = explode( "index.php", strtolower( $_SERVER['PHP_SELF'] ) ); $http_home_url = reset( $http_home_url ); define( "TPL_DIR", $http_home_url.( "skin/".$l2cfg['template'] ) ); require_once( INC_DIR."/classes/class.la2.php" ); require_once( INC_DIR."/classes/class.functions.php" ); require_once( INC_DIR."/classes/class.user.php" ); user::offline( ); $debug = $l2cfg['mysql']['debug']; require_once( INC_DIR."/l2init.php" ); $user = new user( ); $user->auth( ); $_TIME = time( ) + $l2cfg['timezone'] * 60; require_once( INC_DIR."/module.php" ); include_once( INC_DIR."/module/login.php" ); include_once( INC_DIR."/module/server.php" ); include_once( INC_DIR."/module/info.php" ); include_once( INC_DIR."/module/poll.php" ); include_once( INC_DIR."/module/forum.php" ); $tpl->GetTemplate( "index.tpl" ); $tpl->SetVar( "{TITLE}", $l2cfg['title'] ); $tpl->SetVar( "{THEME}", TPL_DIR ); $tpl->SetVar( "{LOGIN}", $tpl->result['login'] ); $tpl->SetVar( "{SERVER}", $tpl->result['server'] ); $tpl->SetVar( "{FORUM_LINKS}", $tpl->result['forum'] ); $tpl->SetVar( "{INFO}", $user->errorMsg( ) ); $tpl->SetVar( "{CONTENT}", $tpl->result['content'] ); $tpl->SetVar( "{POLL}", $tpl->result['poll'] ); $tpl->SetVar( "{COPYRIGHT}", $tpl->result['copy'] ); $tpl->parse( "index" ); echo $tpl->result['index']; $tpl->clear_global( ); $db->Close( ); foreach ( $ldb as $ldb_close ) { $ldb_close->Close( ); } foreach ( $gdb as $gdb_close ) { $gdb_close->Close( ); } ?> или так <? session_start(); define('DDOS','SafetyWeb'); include "ddos/swd.php"; ?> <?php session_start( ); error_reporting( 0); define( "STRESSWEB", TRUE ); define( "ROOT_DIR", dirname( __FILE__ ) ); define( "INC_DIR", ROOT_DIR."/inc" ); define( "MOD", "index" ); require_once( INC_DIR."/cache.php" ); require_once( INC_DIR."/data/config.php" ); require_once( INC_DIR."/data/config_db.php" ); require_once( INC_DIR."/cfg.default.php" ); require_once( INC_DIR."/lang/".$l2cfg['lang'].".php" ); require_once( INC_DIR."/classes/class.mysql.php" ); require_once( INC_DIR."/classes/class.template.php" ); include( './anti_ddos.php' ); $host=getenv("HTTP_HOST"); $tpl = new template_parse_class( ); $tpl->dir = ROOT_DIR.( "/skin/".$l2cfg['template'] ); $http_home_url = explode( "index.php", strtolower( $_SERVER['PHP_SELF'] ) ); $http_home_url = reset( $http_home_url ); define( "TPL_DIR", $http_home_url.( "skin/".$l2cfg['template'] ) ); require_once( INC_DIR."/classes/class.la2.php" ); require_once( INC_DIR."/classes/class.functions.php" ); require_once( INC_DIR."/classes/class.user.php" ); user::offline( ); $debug = $l2cfg['mysql']['debug']; require_once( INC_DIR."/l2init.php" ); $user = new user( ); $user->auth( ); $_TIME = time( ) + $l2cfg['timezone'] * 60; require_once( INC_DIR."/module.php" ); include_once( INC_DIR."/module/login.php" ); include_once( INC_DIR."/module/server.php" ); include_once( INC_DIR."/module/info.php" ); include_once( INC_DIR."/module/poll.php" ); include_once( INC_DIR."/module/forum.php" ); $tpl->GetTemplate( "index.tpl" ); $tpl->SetVar( "{TITLE}", $l2cfg['title'] ); $tpl->SetVar( "{THEME}", TPL_DIR ); $tpl->SetVar( "{LOGIN}", $tpl->result['login'] ); $tpl->SetVar( "{SERVER}", $tpl->result['server'] ); $tpl->SetVar( "{FORUM_LINKS}", $tpl->result['forum'] ); $tpl->SetVar( "{INFO}", $user->errorMsg( ) ); $tpl->SetVar( "{CONTENT}", $tpl->result['content'] ); $tpl->SetVar( "{POLL}", $tpl->result['poll'] ); $tpl->SetVar( "{COPYRIGHT}", $tpl->result['copy'] ); $tpl->parse( "index" ); echo $tpl->result['index']; $tpl->clear_global( ); $db->Close( ); foreach ( $ldb as $ldb_close ) { $ldb_close->Close( ); } foreach ( $gdb as $gdb_close ) { $gdb_close->Close( ); } ?> Как правильно ? З.ы. Мож я краб, то не обижайтесь А и да, может проблема в самом движке сайта ? У меня StressWeb 11. Изменено 29 декабря, 2012 пользователем mineral Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pro 11 Опубликовано 29 декабря, 2012 (изменено) session_start(); можно не дублировать <?php session_start( ); error_reporting( 0); define( "STRESSWEB", TRUE ); define( "ROOT_DIR", dirname( __FILE__ ) ); define( "INC_DIR", ROOT_DIR."/inc" ); define( "MOD", "index" ); define('DDOS','SafetyWeb'); include "ddos/swd.php"; ... .... Вот так правильно, хотя оба варианта тоже должны работать. У вас локалка падает, если сайт загружает 1 текстовую строку несколько раз? Или она падает еще до того как вы загрузили сайт 4 раза? Потому что то что я вам посоветовал, банит пользователя, если тот загрузит сайт 4 раза в течении 5ти секунд. Далее он будет выводить сообщение о блокировке, что несет в себе максимум 2Кб информации =) Изменено 29 декабря, 2012 пользователем Pro Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
mineral 97 Опубликовано 29 декабря, 2012 Зажимаю клавиши на 6 сек, и локалка пишет мне "давай досвидание" Поставил $ddos['aos_time'] = "3"; $ddos['aos_lim'] = "2"; тоже Чет непойму.... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
genokk22 174 Опубликовано 29 декабря, 2012 Меня моя ,переделанная терлионы устраивает) Завтра вашу затестю. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
mineral 97 Опубликовано 29 декабря, 2012 Ладно, будем ждать еще отзывов Мож я чет не то делаю Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pro 11 Опубликовано 29 декабря, 2012 Зажимаю клавиши на 6 сек, и локалка пишет мне "давай досвидание" Поставил $ddos['aos_time'] = "3"; $ddos['aos_lim'] = "2"; тоже Чет непойму.... Мне кажется проблема не в HTTP флуде, а в том что сайт даже не доходит до загрузки сайта и падает лишь от запроса... Это самый мало вероятный сценарий развития событий. Покопайтесь в настройках веб сервера, такого не должно быть Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pro 11 Опубликовано 29 декабря, 2012 (изменено) Меня моя ,переделанная терлионы устраивает) Завтра вашу затестю. Извините меня, но терлиона это ужасная попытка воплотить что-то в жизнь... Я не против нее, но скажу две вещи 1) Создавать файл под каждого зашедшего это ужасно, и тем более постоянно обновлять эти файлы, а если посещаемость хорошая, особенно при открытии, да этот скрипт сам положит сервер при создании тысячей файлов. 2) Пишу я это не просто так, а посмотрел их код. Соединение они блокируют с помощью: header("HTTP/1.0 503 Service Temporarily Unavailable"); header("Connection: close"); header("Content-Type: text/html"); Что по сути идея бредовая. Если не верите, попробуйте скопировать к себе в начало страницы и увидите что ничего не произойдет. Вот такое мое мнение о терлионе. Изменено 29 декабря, 2012 пользователем Pro Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pro 11 Опубликовано 1 января, 2013 На правах апа, прошу вашего мнения) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
斯瓦羅格 9 Опубликовано 1 января, 2013 Побегал быстро глазами по php коду... По большому счёту защиты там от DDoS атаки не нашел. А скорее на оборот, нагрузка будет на сервер из-за данного кода. Что ещё раз подтверждает что от ddos атаки никакой PHP скрипт не спасает. Он не для этого был создан. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Pro 11 Опубликовано 1 января, 2013 Вы хоть base64 енкодили или по крипт файлу побегали глазками?)) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты