Посоветуйте анти-дос или как защитится от доса?

Статус
В этой теме нельзя размещать новые ответы.
у меня стоит FreeBSD, причем все это хозяйство из пакета Софт 2006 для VDS
стоит апач 2.11 и nginx как фронтенд, что там не так может быть настроено?

Вот у Вас 2 веб сервера а не сам апач)
В перл скрипте есть строка вот такого содержания ( PeerAddr=> "127.0.0.1:80"); ) где 127.0.0.1 - IP где разположен АПАЧ и 80 порт на каком разположен апач, поскольку у Вас NGINX на 80 Вам нужно изменить порт в скрипте на тот где АПАЧ (думаю что он будет 8080).

И перл скрипт без разницы где ложыть всеравно егу нужно запускать ТОЛЬКО ИЗ КОНСОЛИ!

Добавлено через 4 минуты
и данный метоб защиты он ДДОСА Вам не поможет поскольку у Вас 2 веб сервера!
Поскольку не пользователей на прямую общается с апачем а нгинкс, и вовремя ддоса всем пользователям будет видно ошибку 403 вместо странички с сайтом и Ваш сервер всеже не будет работать (тобиж будет но толку ноль).
Так что пересобирайте ядро с поддержкой PF
 
да нет, спасибо, пересобирать наверно ничего не буду.. так как реально никаких атак нет, я просто интересовался на всякий случай.. но все равно спасибо за разьяснения.. хотя об этом я читал из других статей
тут вот какое дело, я ведь не руками собирал апача и нгинкса. это делает панель сама.. и файервол она ставит сама, просто в панели кликаем установить и все.. остальное IPSmanager делает сам...
добавил:
а вот ваш мануал Для просмотра ссылки Войди или Зарегистрируйся
там вы рассказываетет о том что у вас стоит тоже 2 вэб сервера, а мне тут отвечаете что вроде как толку не будет.. вобщем хотел бы посмотреть как должен выглядеть конфиг апача и нгинкса в связке, если можно в личку...
 
да нет, спасибо, пересобирать наверно ничего не буду.. так как реально никаких атак нет, я просто интересовался на всякий случай.. но все равно спасибо за разьяснения.. хотя об этом я читал из других статей
тут вот какое дело, я ведь не руками собирал апача и нгинкса. это делает панель сама.. и файервол она ставит сама, просто в панели кликаем установить и все.. остальное IPSmanager делает сам...
добавил:
а вот ваш мануал Для просмотра ссылки Войди или Зарегистрируйся
там вы рассказываетет о том что у вас стоит тоже 2 вэб сервера, а мне тут отвечаете что вроде как толку не будет.. вобщем хотел бы посмотреть как должен выглядеть конфиг апача и нгинкса в связке, если можно в личку...

там вы рассказываетет о том что у вас стоит тоже 2 вэб сервера, а мне тут отвечаете что вроде как толку не будет - толку не будет с mod_evasive а не с PF
И у меня на некоторый хостинг серверах тоже установлена панель ISPManager с дефолнтым конфигом Nginx'a какой генерит сам ISPManager,
а если Вы хотите зделать тонкую настройку нгинкса рекомендую подписаться на рассылки Nginx там обсуждают много различный деректив Nginx

На хостинг серверах у меня порт 8080 закрыт из мира а на порту 80 PF смотрит за трафиком.

Если что пишите помогу.
 
Здравствуйте.

у меня тоже почему то не срабатывает блокировка через модуль evasive. может подскажете возможные варианты ?
apache2-mpm-itk 2.2.6-02-1+lenny2+b2
libapache2-mod-evasive 1.10.1-1
$ cat /etc/apache2/mods-enable/mod-evasive.conf
<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 5
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 300
DOSEmailNotify my@email.name
DOSLogDir "/var/log/apache2/evasive.log"
</IfModule>
тестировал стандартным тестовым скриптом, идущим в комплекте с сорцами
$ cat test.pl
#!/usr/bin/perl

# test.pl: small script to test mod_dosevasive's effectiveness

use IO::Socket;
use strict;

for(0..100) {
my($response);
my($SOCKET) = new IO::Socket::INET( Proto => "tcp",
PeerAddr=> "127.0.0.1:80");
if (! defined $SOCKET) { die $!; }
print $SOCKET "GET /?$_ HTTP/1.0\n\n";
$response = <$SOCKET>;
print $response;
close($SOCKET);
}
апач работает как бекенд, фронтендом выступает nginx. на апаче используется модуль realip.
апач слушает на 127.0.0.1:80
nginx на внешнем ip

в логах апача всегда отдаётся код 200
 
свои правила в файрвол написать, токо не жесткие. Самое действенное.
 
Как вариант на php ограничить количество запросов при атаке отсекая скриптом.

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

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

PHP:
<?php

/* Время задержки в секундах */
$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);
   }
}
?>

Для просмотра ссылки Войди или Зарегистрируйся
 
Посоветуйте анти-дос или как защитится от доса?

Вообще это слишком серьезный вопрос, чтобы ответить в двух словах. Надеюсь, Вы уже получили нужную информацию из ответов в топике, но за спасение от целенаправленной продолжительной ддос атаки специалисты берут очень неплохие деньги :)
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху