вторник, 8 апреля 2008 г.

Защита от DoS и DDoS. Оптимизация конфигурации Apache

Любой сервер в Интернете может быть подвержен DDoS атаке. Один из самых популярных типов DDoS атак это атака по HTTP протоколу - HTTP flood, таким образом атакующий создает большую нагрузку на атакуемый веб-сервер. При большом количестве запросов по HTTP протоколу вполне реально что веб-сервер не успевает корректно обрабатывать запросы и может выйти из строя.

Цель данной заметки - как лучше всего оптимизировать конфигурацию веб сервера Apache что бы снизить нагрузку на веб сервер когда ваш-сервер находится под DDoS атакой. Рекомендуется использовать такой тип настроек только при обнаружении что ваш веб сервер атакуют злостные кибер-преступники, ботоводы.
Зачастую наиболее эффективным анти DDoS инструментом будет являться установленный брандмауэр. Например, большинство брандмауэров могут быть сконфигурированы так чтобы ограничивать число одновременных соединений от любых индивидуальных IP-адресов или сетей, тем самым предотвращая ряд простых атак. Конечно, это не поможет если будет мощная DDoS атака.

Давайте приступим к настройке параметров Apache, которые помогут избежать некоторых проблем вызванных DDoS атакой.

TimeOut - указывайте как можно меньшее значение для данной директивы (веб сервера который поддвержен DDoS атаке).

KeepAliveTimeout директва - также нужно снизить ее значение или полностю выключить.
Значения различных тайм-аут директив, представленные другими модулями должны быть проверены.

Директивы LimitRequestBody, LimitRequestFields, LimitRequestFieldSize, LimitRequestLine, LimitXMLRequestBody должны быть тщательно настроены на ограничение потребления ресурсов, вызванных запросами клиентов.

Убедитесь что вы используете директиву AcceptFilter (на ОС которые поддреживают ее).По умолчанию она включена в конфигурации Apache httpd, но для своей работы может потребовать пересборку с новыми настройками ядра вашей ОС (*nix, *bsd).

Используйте директиву MaxClients чтобы указать максимальное количество клиентов которые смогут
быть одновременно подключены к серверу, уменьшив значение директивы вы можете снизить нагрузку на web-сервер.

Выбор другого mpm-модуля может позволить вам обрабатывать больше одновременных соединений, тем самым смягчить (D)DoS атаку. По умолчанию в *nix системах устанавливается mpm - prefork, он наиболее прожорлив, и наимение производителен. Обзор mpm модулей выходит за рамки данной заметки, подробности смотрите сдесь : сдесь
и сдесь

Есть ряд сторонних модулей к Apache которые могут ограничивать определенные модели поведения клиента и тем самым смягчить DDoS атаки. Один из таких модулей я описывал в одной из своих заметок - Защита от легкой flood и ddos атаки по HTTP-протоколу используя mod_dosevasive

пятница, 4 апреля 2008 г.

Защита от DDoS с помощью (D)DoS Deflate

Защита от DDoS на программном уровне.

Что такое (D)DoS Deflate?
Это бесплатный скрипт с помощью которого можно избавится от детского флуда и ddos. Скрипт использует команду "netstat" что бы обнаружить ddos и флуд, после обнаружения блокирует ай-пи адреса откуда идет атака, делает это с помощью фаервола iptables или apf (работает только на APF v 0.96 или выше). Проверен мною на Linux Debian Etch 4.0. Скрипт написан на sh.

Установка и настройка (D)DoS Deflate.
Установка проходит очень быстро :
wget http://www.inetbase.com/scripts/ddos/install.sh
chmod 0700 install.sh
./install.sh

Удалить скрипты из системы можно используя следующие команды:
wget http://www.inetbase.com/scripts/ddos/uninstall.ddos
chmod 0700 uninstall.ddos
./uninstall.ddos

Конфигурационный файл для (D)DOS-Deflate называется ddos.conf, по умолчанию выглядит так:
FREQ=1
NO_OF_CONNECTIONS=50
APF_BAN=1
KILL=1
EMAIL_TO=”root”
BAN_PERIOD=600