В общем и целом затюнить TCP мало поможет, в данном случае nginx решает проблему умного ddosa когда грузят скрипты и базы с ними.
Но вот от загаживания канала нужно разбираться на уровне железных решений :/
ну 3-4 дня поддосят и все, если не удалось сайт завалить, какой смысл продолжать? Если ДЦ располагает оборудованием, тогда можно и это задушить. +-25мбпс фактически не заметно при нормальных объемах.
повторяю свою изначальную мысль... "поддосят 3-4 дня и отстанут" - только если это попытка забить 100Мб канал потоком всего в 25Мб. Если это достаточно умный ддос, формурующий запросы сильно нагружающие приложение (например, опять-же, базу данных), то, несмотря на относительно свободный интернет канал, атака будет успешной. Подскочат averages под сотню-другую и всё встанет раком. Именно поэтому стоит даже такие на первый взгляд безобидные ддосы отслеживать и пресекать.
О пресечении этого написана статья на 3 скролла выше. После проведения описанных действий в сетке все рано останется флуд, который либо душить, либо забить на него.
не только железом. если хостер (ДЦ) не дает делать BGP announce, можно воспользоваться связкой bash+netstat+awk/grep/cut/sort/uniq+pf - 40 Мбит/с проходит практически незаметно.
Вот оригинал на опеннете: http://www.opennet.ru/base/net/ddos_nginx.txt.html
Это тоже стоит почитать: http://www.opennet.ru/base/net/tune_freebsd.txt.html (рекомендации Сысоева с РИТ2007)
а что делать с syn атаками?
или с icmp ддосом?
кому нибудь реально удавалось бороться с бот сетями размером от 5000 ботов?
недавно словил атаку ботами сначала get и post от 500 машин, затем icmp и syn запросы падали от 50000-80000 хостов, как мне показалось - на лицо был спуф адреса, так как реально держать такой ботнет тупо дорого.
Мои скрипты, которые отлавливали и втыкали правила на дроп в ipfw, обрезали кучу подсетей. Похоже просто ктото шалил, потому как на следующий день все прошло.
а отрезать ICMP никак? син-флуд вполне себе нормально можно убивать с помощью netstat+bash+хозяйство из /bin, /sbin+pf - но вы, я вижу, что-то похожее сами делали. единственное - я подсетями редко режу, каждый айпишник отдельно. ибо негоже из-за одного ламера отключать еще 200 человек.
Вы правы, я как раз подобными вещами и занимался. Но в том то и дело, что летело все с целых подсетей и по логике приходилось обрезать их всех(было похоже что бот рандомно подставлял себе последний байт ip адреса), что ни разу не гоже. С другой стороны если бот научился подменять последнюю цифру своего IP, то наверняка и любой другой разряд для него подменять не проблема (думаю реальных ботов итого за сутки было не более 500, судя по логам веб сервера), тогда и появляется проблема, которую я имел ввиду, с обрезанием целых подсетей гигантского ранга.
В моем случае присутствовали 500 ботов, которые смогли представиться 50000 хостами, а как бороться с ботнетами по 5000 зомбомашин?
Ну во первых, отрезать ICMP целиком нельзя - пакеты нескольких ICMP-типов все же придеться пропускать. Во вторых, ICMP пакеты замечательно фрагментируется и вы просто получите шквал ICMP фрагментов размером равным MTU. Любой пакетный фильтр бессилен - стандартная схема "положить канал".
SYN-флад вообще убить нельзя, тем более пакетным фильтром ;) В большинтсве случаев source адресса поддельные и что вы хотите добиться "с помощью netstat+bash+хозяйство из /bin, /sbin+pf" не очень понятно.
>>SYN-флад вообще убить нельзя, тем более пакетным фильтром
дело ваше - верить или нет. я убивал. причем эффективно. согласен с тем, что решение "костыльное", но в отсутствие доступа к BGP - единственное приемлемое. а решить, поддельные сорс-адреса или нет, можно "на глазок" - по хуизу десятка рандомно выбранных айпишников.
вы на циско работаете, что ли? ;) если у вас ДЦ нормальный, у вас будет возможность дать BGP announce и заблэкхолить attack-destination адрес. Если даже на этом же сервере еще хоть пять сотен аккаунтов вписана, перебить ДНС зоны с экспайром пятиминутным - не проблема. в итоге ваши сайты не будут работать только у тех визиторов, у которых провайдер - идиот.
Пригласите кого-то из Циски пускай вам расскажут о Guard и Anomaly Detector (я без сорказма)
В свое время я курировал тендер на защиту сетей одного крупного российского провайдера, много чего предлагали, рассказывали. Решили заморачиваться тендером после DDoS (на пике 600 Мегабит чистого флада, те самые фрагментированые ICMP пакеты, SYN-флад), сервера хостинга сдуло моментом (подключены по 100Мб), умудрились положить и MPLS сеть. На виртуальном хостинге около 2000 комерческих сайтов - рубить клиентов (тем более целыми сетками) у меня как инженера нет пермиссий (естесвенно). Ваш самый большой минус - то что вы человек, вы просто не в состоянии отследить/заметить то количество паттернов атак которые может заметить Anomaly Detecotor, и уж точно как человек вы не переварите 2Gb мусорного трафика как это делает Guard. Guard, кстати, фильтрует мусорный трафик, а не рубит все подряд.
вот тут спорить не буду. слава богу, больше 90МБит на своей шкуре не испытывал - не тот профиль. а сейчас, как ушел из хостинга, вообще забыл это страшное слово "DDoS" :)
Как вриант, можете сравнить еще с TippingPoint от 3com. Говорят такие железки уже ставили в России, но решение от Циски куда более гибкое (а притом что Guard и Anomaly Detector бывают в виде стандартных модулей к шеститоннику, то еще и значительно _дешевле_).
Такая схема не сработает для самого частого вида атак - обычного флуда GET запросами основного индекса или любой другой страницы. А если в такой странице будет нечто ресурсоемкое, например тяжелые SQL запросы - сервер ляжет...
И еще, не мешало бы писать зачем выставлены те или иные значения переменных или установок конфига, хотя бы кратко... я не про логику.
До динамики можно без куки не допускать, nginx это делает прекрасно.
Но вот если атакующий просекает фишку с кукой - то опа - начинатеся гонка вооружений.
В вашем случае ддос был оч тупой, т.к. определить схему атаки было очень просто + видимо мало ресурсов требовали скрипты, к которым обращались боты. У знакомого была подобная ситуация, там дуал зеон и 4 гига рамы на 6.0 бсд вылетали очень быстро (при отключенных логах, потюненой системе) и модуле перловом, который загонял всех ботов в одну бан таблицу (ipfw). Масштабы были такие, что циска, которую дал пров как временную меру спасала не полностью. Так что раз на раз не приходится, а вообще полезно, спасибо.
Борьба с DDOS и DOS на уровне nginx