URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 88698
[ Назад ]

Исходное сообщение
"Как защитить веб-сервер от DDOS"

Отправлено Saamuel , 13-Апр-10 10:36 
Здравствуйте,

Столкнулся с такой проблемой, вчера устроили ddos атаку на мой веб сервер.
На серваке стоит Nginx + Apache, на серваке стоит реальный IP адрес.

Как можно защитить сервер от ддос атаки?


Содержание

Сообщения в этом обсуждении
"Как защитить веб-сервер от DDOS"
Отправлено cuad0 , 13-Апр-10 12:34 
>Здравствуйте,
>
>Столкнулся с такой проблемой, вчера устроили ddos атаку на мой веб сервер.
>На серваке стоит Nginx + Apache, на серваке стоит реальный IP адрес.
>Как можно защитить сервер от ддос атаки?

Не существует готового 100% решения для защиты от ддос-атак. Это весьма комплексный набор мер и действий, зависящий, прежде всего от объекта атаки и, эммм, подвида атаки.
Как защитить - много читать, гуглить по "защита от ддос, ddos" и им подобному.


"Как защитить веб-сервер от DDOS"
Отправлено Saamuel , 13-Апр-10 13:04 
>Не существует готового 100% решения для защиты от ддос-атак. Это весьма комплексный
>набор мер и действий, зависящий, прежде всего от объекта атаки и,
>эммм, подвида атаки.
>Как защитить - много читать, гуглить по "защита от ддос, ddos" и
>им подобному.

А есть примеры решения на ipfw или еще чем.

Сейчас стоит snort но что то от него толку маловато, ловит только скан портов да и так по мелочи. Поможет ли платная подписка на правила snort?

Есть ли решения на аппаратном уровне?

Атака сейчас примерно на 10 мбит. IP с которых идут запросы на веб сервер постоянно меняются. Соединений на nginx примерно 5 000. Апач создает много процессов и система виснет.

Что можно предпринять чтоб сайт хоть как то работал, если можно приведите примеры?


"Как защитить веб-сервер от DDOS"
Отправлено cuad0 , 13-Апр-10 13:31 
>А есть примеры решения на ipfw или еще чем.

ограничение кол-ва соединений, вычисление атакующих ip, занесение их в таблицу и блокировка.

>Есть ли решения на аппаратном уровне?

Есть, но вместо хорошей железки я бы лучше купил автомобиль :) - это образно.


>Атака сейчас примерно на 10 мбит. IP с которых идут запросы на
>веб сервер постоянно меняются.

Это и называется DDOS (distributed DOS). Иначе было бы слишком просто.

>Соединений на nginx примерно 5 000. Апач
>создает много процессов и система виснет.

Выставьте ограничения в конфиге апача поменьше, MaxSpareServers, MaxClients, MaxRequestPerChild. Обязательно KeepAlive off.
Куда именно атака идет? Просто на установление соединения? Запрос страницы? Оформление гигантской корзины (чтобы нагнуть базу)?
Поглядите на http-заголовки, сравните с rfc2616, возможно в заголовках явные ошибки есть.
Может быть какие-нить модуля для апача помогут:
mod_limitconn - http://dominia.org/djao/limitipconn.html
mod_vhost_limit - http://apache.ivn.cl/
mod_ifier - http://www.steve.org.uk/Software/mod_ifier/
mod_security - http://www.modsecurity.org/
mod_evasive -
mod_ipdrop - http://miksir.pp.ru/?r=65

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


>Что можно предпринять чтоб сайт хоть как то работал, если можно приведите
>примеры?

Вычислять атакующие ip, блокировать - худо-бедно может и выберете большую часть бот-нета (но никто не убережет от второй, третьей,..., волны), блокируйте иностранный (или по конкретным странам) трафик файрволом.
Списки сетей (ссылки из загашника, могут быть устаревшими или не очень актуальными; но хоть что-то)
http://noc.zenon.net/nets/current - рус
http://www.completewhois.com/statistics/data/ips-bycountry/r.../ - остальное


Если есть в запасе завалявшийся в углу сервер - часть трафика можно перевести на него и заюзать его мощности.

Ну и глядите статистику сети - может у вас ресурсов для сетевой подсистемы выделяется по-умолчанию мало, оттого вы не можете сервером обработать достаточно много вход. соединений:
netstat -m
netstat -s -p tcp
netstat -Lan
sysctl vm.zone


"Как защитить веб-сервер от DDOS"
Отправлено Pahanivo , 13-Апр-10 13:46 
эти меры позволят лишь оставить сервак в работоспособном состоянии
он забивки канала не поможет


"Как защитить веб-сервер от DDOS"
Отправлено cuad0 , 13-Апр-10 14:00 
>эти меры позволят лишь оставить сервак в работоспособном состоянии
>он забивки канала не поможет

Это ли не цель первоначальной защиты? Лучше уж худо-бедно отвечающий, чем лежащий в глубоком дауне сервак.
На такой ботнет, который забьет весь канал провайдера, заказчик может пожалеть денег. А там уже и инженеры провайдера зачешутся. И железку дорогую достанут (если репутация и клиенты важны).


"Как защитить веб-сервер от DDOS"
Отправлено Saamuel , 13-Апр-10 14:13 
>>эти меры позволят лишь оставить сервак в работоспособном состоянии
>>он забивки канала не поможет
>
>Это ли не цель первоначальной защиты? Лучше уж худо-бедно отвечающий, чем лежащий
>в глубоком дауне сервак.
>На такой ботнет, который забьет весь канал провайдера, заказчик может пожалеть денег.
>А там уже и инженеры провайдера зачешутся. И железку дорогую достанут
>(если репутация и клиенты важны).

Согласен, самое главное чтоб сервак отвечал.

Жаль что провайдер такой что не чешется, а канал они нам предоставляют 100 мбит (анлим)

А что по поводу снорта, сможет он по заголовку определить атаку на www?

Предложили еще поставить Cisco ASA 5510 с модулем aip-10, говорят что спасет от ддоса, так ли это?


"Как защитить веб-сервер от DDOS"
Отправлено cuad0 , 13-Апр-10 14:48 
>А что по поводу снорта, сможет он по заголовку определить атаку на
>www?

А разве вы еще сами не в курсе этого? :)


>Предложили еще поставить Cisco ASA 5510 с модулем aip-10, говорят что спасет
>от ддоса, так ли это?

хз, может быть. Если грамотно настроить. Вы готовы отдать 100к рублей за железку + фиг знает сколько за настройку (а в идеале, за обучение собственного сотрудника)? Стоит ли ваш сервис и клиентура таких денег? Может, проще прова на адекватного сменить, если ддос будет продолжаться долго и в дальнейшем будет повторяться.


"Как защитить веб-сервер от DDOS"
Отправлено Pahanivo , 13-Апр-10 15:45 
>>эти меры позволят лишь оставить сервак в работоспособном состоянии
>>он забивки канала не поможет
>
>Это ли не цель первоначальной защиты? Лучше уж худо-бедно отвечающий, чем лежащий
>в глубоком дауне сервак.
>На такой ботнет, который забьет весь канал провайдера, заказчик может пожалеть денег.
>А там уже и инженеры провайдера зачешутся. И железку дорогую достанут
>(если репутация и клиенты важны).

я лишь подчеркунл что лекарства увы нЭт
для фильтрации клиентов обычно у нас тупо фильтруеца атакуемый айпи на сервис провайдере

а так люди говорят что на толстых каналах 100-200 мегабитные флуды бывает месяцами стоят


"Как защитить веб-сервер от DDOS"
Отправлено cuad0 , 13-Апр-10 16:39 
>для фильтрации клиентов обычно у нас тупо фильтруеца атакуемый айпи на сервис
>провайдере

Эм? блокируете все входящие на ip, который атакуют? :) Нет цели атаки - нет проблемы?)

>а так люди говорят что на толстых каналах 100-200 мегабитные флуды бывает
>месяцами стоят

Насколько толстых? Ну, когда 100-200 мбит - это 5-10% пропускной способности при общей невысокой загруженности... Наверное, ну и фиг с ним, пусть :)



"Как защитить веб-сервер от DDOS"
Отправлено Pahanivo , 13-Апр-10 18:24 
>Эм? блокируете все входящие на ip, который атакуют? :) Нет цели атаки
>- нет проблемы?)

ты не понял идеи
скажем идет флуд на клиента - 20 мегабит
у клиента линк 10 мегабит - клиент естно лежит
у нас скажем аплинк 50 мегабит забитый на 80% - автоматом кладется наш аплинк - как следствие начинают дергаться все клиенты
самый простой и быстрый вариант фильтровать у сервиспровайдера целевой хост (подсеть) атаки
при данном раскладе хер с ним с клиентом - надо оперативно погасить атаку



"Как защитить веб-сервер от DDOS"
Отправлено Saamuel , 13-Апр-10 14:15 
>Куда именно атака идет? Просто на установление соединения? Запрос страницы? Оформление гигантской
>корзины (чтобы нагнуть базу)?
>Поглядите на http-заголовки, сравните с rfc2616, возможно в заголовках явные ошибки есть.

Атака идет на запрос страниц.


"Как защитить веб-сервер от DDOS"
Отправлено cuad0 , 13-Апр-10 14:42 
Просто GET / HTTP/1.1 ? Что в http-заголовках?
Почитайте http://hostinghelp.biz/content/ddos-%D1%87%D1...
последнюю главу, соорудите что-нибудь похожее у себя. Если зомби не умеют редиректы, можно собственными скриптами собирать ip атакующих и запихивать в ipfw.


"Как защитить веб-сервер от DDOS"
Отправлено Saamuel , 13-Апр-10 14:58 
>Просто GET / HTTP/1.1 ? Что в http-заголовках?
>Почитайте http://hostinghelp.biz/content/ddos-%D1%87%D1...
>последнюю главу, соорудите что-нибудь похожее у себя. Если зомби не умеют редиректы,
>можно собственными скриптами собирать ip атакующих и запихивать в ipfw.

Вот пример заголовка

112.110.216.116 - - [13/Apr/2010:07:30:48 +0400] "GET /images/2217_logo.gif HTTP/1.1" 304 0 "http://сайт.ru/" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; AskTB5.6)"

60.49.133.186 - - [13/Apr/2010:07:30:49 +0400] "GET /images/logo.gif HTTP/1.0" 200 43 "http://сайт.ru/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6)"

190.167.58.180 - - [13/Apr/2010:07:30:48 +0400] "GET /images/cop_bg.gif HTTP/1.1" 304 0 "http://сайт.ru/" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6; MEGAUPLOAD 1.0; .NET CLR 1.1.4322; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; .NET CLR 2.0.50727)"

и таких очень много


"Как защитить веб-сервер от DDOS"
Отправлено cuad0 , 13-Апр-10 15:24 
Это лог запросов к серверу.
Пример заголовков вот:
GET / HTTP/1.1
Host: opennet.ru
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Proxy-Connection: keep-alive

напишите какой-нить простенький скрипт на главной странице, который будет скидывать все заголовки (в перле - %ENV) в текст. файл. И оставьте на пару минут. А анализ заголовков начинайте с запросов на /, а не на картинки, как в вашем примере.


>и таких очень много

тысячи их)))


"Как защитить веб-сервер от DDOS"
Отправлено Saamuel , 13-Апр-10 15:01 
>Просто GET / HTTP/1.1 ? Что в http-заголовках?
>Почитайте http://hostinghelp.biz/content/ddos-%D1%87%D1...
>последнюю главу, соорудите что-нибудь похожее у себя. Если зомби не умеют редиректы,
>можно собственными скриптами собирать ip атакующих и запихивать в ipfw.

Подскажите пожалуйста, как реализовать iptables -I INPUT 1 -p tcp --dport 80 -m string --string "GET / HTTP/1.0" --algo kmp -j DROP на ipfw


"Как защитить веб-сервер от DDOS"
Отправлено cuad0 , 13-Апр-10 15:27 
>Подскажите пожалуйста, как реализовать iptables -I INPUT 1 -p tcp --dport 80
>-m string --string "GET / HTTP/1.0" --algo kmp -j DROP на
>ipfw

хм, не уверен, что ipfw умеет iptables-овский -m string...