Мы — долго запрягаем, быстро ездим, и сильно тормозим.

FreeBSD
  настройка
  подсчёт трафика
  программы
  почтовые системы
  Шелезяки
  Мелочи
  Файловая система
  WWW
  hosting
  mod_gzip
  mod_log_sql
  mod_geoip
  mod_bandwidth
  mod_accounting
  mod_bunzip2
  mod_mp3
  mod_shapvh
  mod_limitipconn
  mod_sqlinclude
  mod_auth_imap
  webalizer
  Apache + SSL
  auth_ldap
  Настройка AWStats
  apache 2.0
  mod_auth_external
  CMS - TYPO3
  phpBB-2/3
  mod_ntlm
  mod_ntlm2
  Nginx+php+fcgi
  OTRS на Apache1
  OTRS на Apache20
  ApacheStats
  mod_evasive
  Lighttpd
  nginx+php-fpm+mysql
  php + mssql
  MySQL + кодировки
  svn+apache+trac
  php5-oci8
  Lighttpd + Apache
  CMS Drupal 6.9
  Apache22+MySQL
  Оптимизация хоста для CMS
  блокировка spam на www
  PostgreSQL 8
  Apache 22 + PHP5 + suPHP
  lighttpd + mod_uploadprogress
  VirtualBox + phpVirtualBox
  DNS API
  Security
  system
  Games Servers
  X11
  Programming
Очумелые Ручки
OpenBSD
Cisco


www.lissyara.su —> статьи —> FreeBSD —> WWW —> mod_evasive

mod_evasive - защита от DOS и DDOS атак

Автор: HOSTER.


Собственно ДОС и ДДОС атаки проблема практически всех кто предоставляет такую услугу как хостинг и как всегда кому-то не очень понравится какой нить из проетов что размещены у вас на сервере и как всегда мозгов нет чтобы сломать а задосить ето и 5-ти класник может. Вот собственно нашел модуль какой сможет спасти вас от нашествия ДОС и ДДОС атак вместо того чтобы закидать всех негодяев в фаервол (что же ето за хостинг когда тебя пол мира не видит :)).


Данный модуль к апачу уже появился в портах!

Установка из портов
cd /usr/ports/www/mod_evasive && make && make install && make clean

После успешной установки берем конфиг для вашей версии апача что изложены ниже и перезапускаем апач.
apachectl graceful

Установка mod_evasive для Apache 1.3 и Apache 2.2 из исходников
Скачать модуль возможно тут.

srv2# wget http://www.zdziarski.com/projects/mod_evasive/mod_evasive_1.10.1.tar.gz
srv2# tar xfz mod_evasive_1.10.1.tar.gz
srv2# cd mod_evasive
srv2# whereis apxs
apxs: /usr/local/sbin/apxs /usr/local/man/man8/apxs.8.gz // По умолчанию он тут
srv2# /usr/local/sbin/apxs -i -a -c mod_evasive.c // для Apache 1.3
srv2# /usr/local/sbin/apxs -i -a -c mod_evasive2.c // для Apache 2.2
srv2# rehash

После успешной установки в конфиг апача нужно добавить несколько строк:

Для Apache 1.3

<IfModule mod_evasive.c> 
DOSHashTableSize 3097 
DOSPageCount 2 
DOSSiteCount 50 
DOSPageInterval 1 
DOSSiteInterval 1 
DOSBlockingPeriod 300 
</IfModule>

Для Apache 2.2

<IfModule mod_evasive20.c> 
DOSHashTableSize 3097 
DOSPageCount 2 
DOSSiteCount 50 
DOSPageInterval 1 
DOSSiteInterval 1 
DOSBlockingPeriod 300 
</IfModule>

После чего перезапустим Апач

srv2# /usr/local/etc/rc.d/apache restart

В падарок к етому модулю в архиве сразу предоставлен тест для проверки работоспособности модуля. С вот таким содержанием.

#!/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);
}

Только не забудте поставить на него права для запуска chmod 755 имя файла.
Если после запуска скрипта видим примерно вот такую штуку

HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden

Значит все работает отлично.


P.S. Проверял на Апаче 1,3  первых 5 - 10 минут ДОС атаки держыт дальше Апач всетаки падает. Всетаки Апач дайот ответ на запрос хоть и Forbidden но отвечает. А окончательно проблему возможно решить с ДОС и ДДОС атаками с стандартным фаерволом OpenBSD тоисть PF. Вскоре статья будет дополнена конфигурацией по настройке PF.

Вот собственно дополнение:

cat /etc/pf.conf

ext_if="em0"

table <ddos> persist
block in log quick from <ddos>

pass in on $ext_if proto tcp to $ext_if \
port www flags S/SA keep state \
( max-src-conn-rate 100/5, overload <ddos> flush)

А всех кто попал к нам в блек лист можем посмотреть вот так:
pfctl -t ddos -T show

А удалить вот так
pfctl -t ddos -T flush

А для удобства я кинул в крон вот такую строчку
чтобы каждых 20 минут само чистило
*/20    *       *       *       *       root     pfctl -t ddos -T flush



Ссылка на обсуждение: http://forum.lissyara.su/viewtopic.php?t=16822.

размещено: 2008-02-28,
последнее обновление: 2009-10-23,
автор: HOSTER

оценить статью:

SniZ, 2008-03-26 в 23:02:07

Снова ещё один гламурный падонак.

stooper, 2008-04-09 в 14:22:47

srv2# /usr/local/sbin/apxs apxs -i -a -c mod_evasive2.c // для Apache 2.2
да, только синтаксис apxs немного другой))
# /usr/local/sbin/apxs apxs -i -a -c mod_evasive2.c
Usage: apxs -g [-S <var>=<val>] -n <modname>.........
ну естественно, тогда вот так:
# /usr/local/sbin/apxs -i -a -c mod_evasive2.c
....... cc: mod_evasive2.c: No such file or directory
cc: No input files specified
Все понятно. далю так:
/usr/local/apache2/bin/apxs -cia mod_evasive20.c
...... chmod 755 /usr/local/libexec/apache2/mod_evasive20.so
[activating module `evasive20' in /usr/local/etc/apache2/httpd.conf]
вот так то лучше!
#pf simple rules for apache anti-ddos:
table <abusive_http> persist
block in quick on $if inet proto tcp from <abusive_http> to any
pass in quick on $if inet proto tcp from any port > 1023 to $addr135 port { 80, 443 } modulate state ( max 300 source-track rule max-src-nodes 100 max-src-conn-rate 15/5 max-src-states 15 tcp.established 600 tcp.closing 10 overload <abusive_http>) flags S/SAFR
#where you can set max connections per ip per minute etc...
вот и дополнено =)))

Genry, 2009-03-22 в 8:54:20

Кстати говоря, модуль уже портирован

/usr/ports/www/mod_evasive

огромное спасибо спасибо за статью!

sens, 2009-04-01 в 22:09:15

у кого-то под фрей модуль работает?
у меня ничего не блочит
под гентуу всё ок

lissyara, 2009-04-01 в 22:18:23

У меня работает.
В том числе и на этом сервере.
Ставил из портов.

HOSTER, 2009-04-02 в 13:05:47

Отредактировал статейку и добавил установку из портов!

sens, 2009-04-02 в 20:19:36

в стаью надо выложить конфиг апача с которым работает этот модуль
иначе она не полная
при "раскрученом" апаче, расчитаным на большой траффик модуль не работает
если найду что в исходниках надо поправить чьто б работало по-людски
отпишу

sens, 2009-04-02 в 23:23:07

покрутил исходники,плюнул
написал скрипт на шелле

HOSTER, 2009-04-03 в 11:45:46

Все оч просто добавьте
<IfModule mod_evasive.c>
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 300
</IfModule>
в теги <virtualhost>
<IfModule mod_evasive.c>
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 300
</IfModule>
</virtualhost>

И тогда данный модуль будет работать только на данный ресурс!

sens, 2009-04-03 в 13:02:43

я говорю про настройки апача
количество startservers и тд
в что это писать в вируталхост и так понятно =)

HOSTER, 2009-04-03 в 17:11:58

Если интересно могу свой показать

sens, 2009-04-03 в 17:43:45

выкладуй
наверно он тебя дефолтный

владер, 2009-07-24 в 18:27:32

Модуль мне не понравился. Неадекватный он, тугой какой-то. При откровенных ботовских входах (5 запросов в сек) он никак не реагирует. Выкинул, буду искать другое что-то.

HOSTER, 2009-07-24 в 18:54:23

Не понравился или не помог, если не помог то испытайте правила для PF, работает стабильно, а модуль к апачу как дополнение отлично

desruptor, 2009-10-22 в 14:47:58

>права для запуска chmod +r

о_О разве права запуска не +x? или скриптам надо быть просто читаемыми?

Роман, 2012-09-05 в 11:30:10

привет модуль не качаеца как ево скачать?


Оставьте свой комментарий:
Ваше имя:   *
e-mail:  
жирный
наклонный
подчёркнутый
ссылка
цвет
Нынешний год:   *
 


Хостинг HOST-FOOD

2014-07-27, lissyara
gmirror

Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9

Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
2011-11-20, BlackCat
Разъём на WiFi-карту

Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
2011-09-14, manefesto
Настройка git+gitosis

Настройка системы контроля версия исходного кода в связке git+gitosis+ssh
2011-08-14, zentarim
Wi-FI роутер + DHCP + DNS

Настройка Wi-Fi роутера на Freebsd 8 + DNS сервер + DHCP сервер: чтобы Wi-Fi клиенты были в одной подсети с проводными, проводные и беспроводные клиенты получали адреса автоматически по DHCP, кэширующ
2011-06-15, -ZG-
Охранная система на FreeBSD+LPT

В этой статье описана попытка реализации простой охранной системы на базе FreeBSD с подключением к ней охранных устройтсв на LPT порт и видеорегистрацией.
2011-03-13, terminus
ng_nat

Описание работы ng_nat, практическое использование, достоинства и недостатки в сравнении с ipfw nat
2011-02-20, Капитан
Nagios+Digitemp

Статья описывает создание системы оповещения о превышении температуры в специальных помещениях на основе Nagios с использованием программы Digitemp.
2011-02-17, Le1
Zyxel Configuration

Скрипт для массового изменения конфига свичей Zyxel. Берет из файла iplist список ip-шек, заходит последовательно на каждый и выполняет комманды из файла commands, записывая происходящее в лог файл.
2011-02-16, fox
hast carp zfs ucarp cluster

HAST (Highly Available Storage), CARP, UCARP, ZFS, Cluster настройка и одаптация плюс личные размышления…
2011-02-04, BlackCat
Восстановление ZFS

История о том, как был восстановлен развалившийся RAIDZ ZFS-пул (перешедший в FAULTED) с помощью скотча и подручных средств. Или о том, какие приключения ожидают тех, кто не делает резервных копий.
2011-02-03, Капитан
1-Wire

Статья описывает самостоятельное изготовление контроллера DS9097 для съёма показаний с датчиков температуры DS1820 с помощью программы Digitemp.
2011-01-28, Капитан
Температура в серверной

Статья описывает построение системы наблюдения за температурой в помещении серверной с использованием программы Digitemp и выводом графиков в MRTG
2011-01-21, m4rkell
Syslog server

Как то буквально на днях, у нас завалилось, что то в еве) или не в еве не суть. Суть в том, что когда захотели снять логи с хостов esx обнаружили, что хранят эти негодяи логии только за последнии сутк
2011-01-07, lissyara
Canon/gphotofs

Монтирование цифровых фотоаппаратов Canon (PTP) как файловой системы, автоматизация этого процесса через события devd и внешние скрипты.
2010-12-13, Al
IPSec

Описание принципов работы IPSEC и способов аутентификации.
2010-12-07, manefesto
FreeBSD on flash

Было принято решении переехать на USB Flash и установить минимальный джентельменский набор для работы своего роутера. Делаем =)
2010-12-05, Fomalhaut
root ZFS, GPT

Инструкция по установке FreeBSD с использованием в качестве таблицы разделов GPT и в качестве основной файловой системы - ZFS
подписка

    вверх      
Статистика сайта
Сейчас на сайте находится: 8 чел.
За последние 30 мин было: 36 человек
За сегодня было
1 показов,
1 уникальных IP
 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0532 секунд
Из них PHP: 70%; SQL: 30%; Число SQL-запросов: 77 шт.
Исходный размер: 124055; Сжатая: 21186