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

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
подписка

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

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

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0458 секунд
Из них PHP: 29%; SQL: 71%; Число SQL-запросов: 77 шт.
Исходный размер: 124934; Сжатая: 21293