[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: И вот пришла Злая Тётя Ддося



On 25.10.2011 08:27, Aleksandr Sytar wrote:
24 октября 2011 г. 23:23 пользователь Дмитрий Савельев
<dsaveliev@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 admin@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, до этого как то благополучно избегал :)

Reply to: