Здравствуйте,Столкнулся с такой проблемой, вчера устроили ddos атаку на мой веб сервер.
На серваке стоит Nginx + Apache, на серваке стоит реальный IP адрес.Как можно защитить сервер от ддос атаки?
>Здравствуйте,
>
>Столкнулся с такой проблемой, вчера устроили ddos атаку на мой веб сервер.
>На серваке стоит Nginx + Apache, на серваке стоит реальный IP адрес.
>Как можно защитить сервер от ддос атаки?Не существует готового 100% решения для защиты от ддос-атак. Это весьма комплексный набор мер и действий, зависящий, прежде всего от объекта атаки и, эммм, подвида атаки.
Как защитить - много читать, гуглить по "защита от ддос, ddos" и им подобному.
>Не существует готового 100% решения для защиты от ддос-атак. Это весьма комплексный
>набор мер и действий, зависящий, прежде всего от объекта атаки и,
>эммм, подвида атаки.
>Как защитить - много читать, гуглить по "защита от ддос, ddos" и
>им подобному.А есть примеры решения на ipfw или еще чем.
Сейчас стоит snort но что то от него толку маловато, ловит только скан портов да и так по мелочи. Поможет ли платная подписка на правила snort?
Есть ли решения на аппаратном уровне?
Атака сейчас примерно на 10 мбит. IP с которых идут запросы на веб сервер постоянно меняются. Соединений на nginx примерно 5 000. Апач создает много процессов и система виснет.
Что можно предпринять чтоб сайт хоть как то работал, если можно приведите примеры?
>А есть примеры решения на 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
эти меры позволят лишь оставить сервак в работоспособном состоянии
он забивки канала не поможет
>эти меры позволят лишь оставить сервак в работоспособном состоянии
>он забивки канала не поможетЭто ли не цель первоначальной защиты? Лучше уж худо-бедно отвечающий, чем лежащий в глубоком дауне сервак.
На такой ботнет, который забьет весь канал провайдера, заказчик может пожалеть денег. А там уже и инженеры провайдера зачешутся. И железку дорогую достанут (если репутация и клиенты важны).
>>эти меры позволят лишь оставить сервак в работоспособном состоянии
>>он забивки канала не поможет
>
>Это ли не цель первоначальной защиты? Лучше уж худо-бедно отвечающий, чем лежащий
>в глубоком дауне сервак.
>На такой ботнет, который забьет весь канал провайдера, заказчик может пожалеть денег.
>А там уже и инженеры провайдера зачешутся. И железку дорогую достанут
>(если репутация и клиенты важны).Согласен, самое главное чтоб сервак отвечал.
Жаль что провайдер такой что не чешется, а канал они нам предоставляют 100 мбит (анлим)
А что по поводу снорта, сможет он по заголовку определить атаку на www?
Предложили еще поставить Cisco ASA 5510 с модулем aip-10, говорят что спасет от ддоса, так ли это?
>А что по поводу снорта, сможет он по заголовку определить атаку на
>www?А разве вы еще сами не в курсе этого? :)
>Предложили еще поставить Cisco ASA 5510 с модулем aip-10, говорят что спасет
>от ддоса, так ли это?хз, может быть. Если грамотно настроить. Вы готовы отдать 100к рублей за железку + фиг знает сколько за настройку (а в идеале, за обучение собственного сотрудника)? Стоит ли ваш сервис и клиентура таких денег? Может, проще прова на адекватного сменить, если ддос будет продолжаться долго и в дальнейшем будет повторяться.
>>эти меры позволят лишь оставить сервак в работоспособном состоянии
>>он забивки канала не поможет
>
>Это ли не цель первоначальной защиты? Лучше уж худо-бедно отвечающий, чем лежащий
>в глубоком дауне сервак.
>На такой ботнет, который забьет весь канал провайдера, заказчик может пожалеть денег.
>А там уже и инженеры провайдера зачешутся. И железку дорогую достанут
>(если репутация и клиенты важны).я лишь подчеркунл что лекарства увы нЭт
для фильтрации клиентов обычно у нас тупо фильтруеца атакуемый айпи на сервис провайдереа так люди говорят что на толстых каналах 100-200 мегабитные флуды бывает месяцами стоят
>для фильтрации клиентов обычно у нас тупо фильтруеца атакуемый айпи на сервис
>провайдереЭм? блокируете все входящие на ip, который атакуют? :) Нет цели атаки - нет проблемы?)
>а так люди говорят что на толстых каналах 100-200 мегабитные флуды бывает
>месяцами стоятНасколько толстых? Ну, когда 100-200 мбит - это 5-10% пропускной способности при общей невысокой загруженности... Наверное, ну и фиг с ним, пусть :)
>Эм? блокируете все входящие на ip, который атакуют? :) Нет цели атаки
>- нет проблемы?)ты не понял идеи
скажем идет флуд на клиента - 20 мегабит
у клиента линк 10 мегабит - клиент естно лежит
у нас скажем аплинк 50 мегабит забитый на 80% - автоматом кладется наш аплинк - как следствие начинают дергаться все клиенты
самый простой и быстрый вариант фильтровать у сервиспровайдера целевой хост (подсеть) атаки
при данном раскладе хер с ним с клиентом - надо оперативно погасить атаку
>Куда именно атака идет? Просто на установление соединения? Запрос страницы? Оформление гигантской
>корзины (чтобы нагнуть базу)?
>Поглядите на http-заголовки, сравните с rfc2616, возможно в заголовках явные ошибки есть.Атака идет на запрос страниц.
Просто GET / HTTP/1.1 ? Что в http-заголовках?
Почитайте http://hostinghelp.biz/content/ddos-%D1%87%D1...
последнюю главу, соорудите что-нибудь похожее у себя. Если зомби не умеют редиректы, можно собственными скриптами собирать ip атакующих и запихивать в ipfw.
>Просто 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)"
и таких очень много
Это лог запросов к серверу.
Пример заголовков вот:
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) в текст. файл. И оставьте на пару минут. А анализ заголовков начинайте с запросов на /, а не на картинки, как в вашем примере.
>и таких очень многотысячи их)))
>Просто 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
>Подскажите пожалуйста, как реализовать iptables -I INPUT 1 -p tcp --dport 80
>-m string --string "GET / HTTP/1.0" --algo kmp -j DROP на
>ipfwхм, не уверен, что ipfw умеет iptables-овский -m string...