On 25.10.2011 08:27, Aleksandr Sytar wrote: > 24 октября 2011 г. 23:23 пользователь Дмитрий Савельев > <dsavel...@tormail.net> написал: > >> Добрый вечер, >> >> Помогите пожалуйста начинающему линукс-одмину! >> Приобрел VDS под Debian Lenny, поднял на нем сайт, и тут ... пришла Злая >> Тётя Ддося. Как с ней бороться?! >> Какие-то козлы прямо на следующий день стали ужасно ддосить сервер. >> Надо сказать, до этого я поднимал свой сайт на другом сервере (тоже под >> Debian Lenny), и незадолго до того, как я ушел от них, меня стали >> жестоко ддосить. >> Тогда вопрос решился добавлением в правила iptables по этим инструкциям >> http://www.protocols.ru/files/Papers/iptables-tbf.pdf >> http://hlmod.ru/forum/zashita-igrovogo-servera/1178-ddos-zashita-linuxovskogo-servera-cherez-pravila-iptables.html >> Т.к. ведро у меня было старное (2.16.18), и не принимало правила >> hashlimit, я включил в него такие правила: >> iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT >> iptables -A INPUT -p tcp --syn -m limit -j DROP >> И проблема сразу решилась. >> Теперь мигрировал на новый сервер, поднял сайт, не успел он и дня >> проработать - опять началась атака. И опять самое тупейшее >> syn-наводнение на 80-й порт. >> Поскольку тут ядро поновее, я взял из второй инструкции такое правило: >> iptables -A INPUT -p tcp --dport 80 -m hashlimit --hashlimit 50/s >> --hashlimit-burst 50 --hashlimit-mode srcip --hashlimit-name CSS -j ACCEPT >> iptables -A INPUT -p tcp --dport 80 -j DROP >> Не помогло. Точнее, частично помогло, поскольку часть вражеских пакетов >> задерживает. Но не все. >> Ввел тогда до кучи еще и старое, думал - не будет работать, однако >> заработало. Поставил его перед последним, и что одно, что второе - >> задерживают пакеты. >> Сначала все было нормально... часа полтора. И вот опять - атака, которая >> оказалась успешной. Сервер "повис", пришлось останавливать веб-сервер. >> Так как "размножаются" как черти процессы апача - доходит до нескольких >> десятков + в системе "висит" куча (неск. десятков) таких процессов: >> /usr/bin/php5-cgi php >> Я уже думаю, не протроянили ли они меня, помимо ddos. Хотя когда >> убиваешь апач и пхп киллом - все убивается и не появляется, пока вновь >> не запустишь апач и через некоторое время атака не начнет вешать систему. >> Не подскажете что-нибудь умное? Вроде простейшая атака, а prefork MPMне >> получается >> побороть никак. >> > > - Настройте апач, чтобы он не плодил бесконечно процесы >
Настроил, задал директиву MaxClients 15 в prefork MPM и 150 в # worker MPM (не так много обычно у меня было легитимных посетителей одновременно). Видимо, сейчас второй тоже уменьшу где-нибудь до 25 чтоли. Также, руководствуясь этими инсрукциями http://dd0s.blogspot.com/2008/04/dos-ddos-apache.html, указал апачу следующие конфигурационные данные. Timeout 30 KeepAlive Off AcceptFilter http httpready AcceptFilter https dataready Кроме того, установил libapache2-mod-evasive и дописал в конфиге апача следующее: DOSHashTableSize 3097 DOSPageCount 2 DOSSiteCount 50 DOSPageInterval 1 DOSSiteInterval 1 DOSBlockingPeriod 120 DOSEmailNotify ad...@somedomain.com DOSSystemCommand "su - root -c '/sbin/iptables -I INPUT 2 -s %s -j DROP'" DOSWhiteList 127.0.0.* myipaddr1 myapaddr2n Не понял, как настраивать директивы LimitRequestBody, LimitRequestFields, LimitRequestFieldSize, LimitRequestLine, LimitXMLRequestBody , какие им давать значения. Поэтому не рискнул делать это методом ненаучного тыка, ибо так можно 10 дней трахаться. Решил попозже погуглить, или может кто умное подскажет в рассылке. Не совсем понял, работает или нет, по крайней мере правила в iptables не добавляются. Похоже, что в какой-то степени работают, в /var/log/apache2/error.log такая запись: [error] server reached MaxClients setting, consider raising the MaxClients setting [notice] caught SIGTERM, shutting down Только непонятно, в связи с чем он получил SIGTERM? Электронная почта же не отправляется, сообщения в iptbales не добавляются (а оно вообще может сделать это? апач же бегает под юзером www, а не под рутом? В /var/log/apache2/suexec.log только выполнение php. Инструкция была взята http://dd0s.blogspot.com/2008/03/flood-ddos-http-moddosevasive.html отсюда). Кроме того, прописал правила iptables, дропающие пакеты с ip, участвовавших в атаке, а также разослал абузы по их провайдерам. На абузы никто не ответил :), эти же правила iptables не работают, т.к. атака продолжается с других хостов. Если в первый день пакеты дропались, то сейчас в выводе iptables -L -v не дропнут ни один пакет. Сейчас опять пишу логи iptables, но это, имхо, как уничтожать крыс на помойке голыми руками. Вот если бы тот модуль настроить правильно, чтобы он автоматически блокировал хосты засранцев. В общем, при вышеизложенных настройках полдня сайт поработал, хотя грузился при тестовых посещениях не всегда сразу, и в итоге упал, не знаю точно когда. И сервер "завис", пришлось его рестартовать. Сейчас - судя по выводу tcpdump -n dst port 80, атака усилилась и пакеты бегают по экрану в несколько раз быстрее. > - Если ширины канала не хватит чтобы отдать всем ботам траффик - ограничьте > его > - Вы уверены, что то что вы написали в iptables вам помогает? > Не уверен, дропается очень мало пакетов: > 1728 85856 ACCEPT tcp -- any any anywhere > anywhere tcp flags:FIN,SYN,RST,ACK/SYN limit: avg 1/sec > burst 5 > 6 288 DROP tcp -- any any anywhere > anywhere tcp flags:FIN,SYN,RST,ACK/SYN limit: avg 3/hour > burst 5 > 695K 35M ACCEPT tcp -- any any anywhere > anywhere tcp dpt:www limit: up to 50/sec burst 5 mode srcip > 0 0 DROP tcp -- any any anywhere > anywhere tcp dpt:www (Это правда минут за 30, я перезагружал правила iptables с баном новых хостов, которые опять не работают - тк. видимо они вышли из атаки. Но вопрос в том, что и за сутки дропнутых пакетов было мало - в первом правиле неск. сотен, во втором - несколько). Был бы признателен за совет по тому, как правильно подобрать эти правила. Вроде бы когда я ужесточил первое из них, неск. часов сайт поработал. > - Вы уверены что машина справится с такой загрузкой? Мб, стоит > посмотреть, что может предложить хостер из железных решений. > Ну, вроде бы справляется, судя по тому, что обычно процессор загружен на 20 - 80 процентов, не больше. И память не полностью сжирается. Железные же решения денег стоят, сайт достаточно маленький, вот злодеи, надо же напасть было!!! Если честно, за свой небольшой опыт сего одминства, это первый случай ddos, до этого как то благополучно избегал :)