Comments 92
Вы лучше покажите скрипт который автоматически банит ботов, заблокировать 80 порт на фаерволе это не самая сложная задача.
> заблокировать 80 порт на фаерволе
Не сложная — если есть доступ к этому самому фарволу. И если сам внешний файрвол есть…
> скрипт который автоматически банит ботов
При загрузке создаем правлио:
Потом собственно:
Не сложная — если есть доступ к этому самому фарволу. И если сам внешний файрвол есть…
> скрипт который автоматически банит ботов
При загрузке создаем правлио:
iptables -I INPUT -m set --set autoban src,dst -j DROP
Потом собственно:
sudo /sbin/ipset -A autoban $REMOTE_ADDR
Вспомнился — ddosviewer.narod.ru
Ну это как-то тапорно рубить весь порт. Может посмотреть в сторону iptables + limit-burst?
А MODevasive в связке с MODsecurity не пробовали?
Где в статье про защиту от DDoS-то? Судя по тексту, атака достигла цели. Гордиться тем, что получил доступ к серверу — невеликое достижение, IPKVM и иже с ними завсегда есть.
IPKVM — у нас нет. Только SSH.
А для того чтобы защитится, нужно сначала попасть на сервер. Собственно про это и статья.
А для того чтобы защитится, нужно сначала попасть на сервер. Собственно про это и статья.
Так продолжение будет? Что за дедик (ведь дедик в статье, не?) без возможности IPKVM/iLo/IPMI?
Продолжение планируется.
Дедик. Но ipkvm нет.
Кстати, при load average > 100, KVM особенно не поможет.
Дедик. Но ipkvm нет.
Кстати, при load average > 100, KVM особенно не поможет.
Имея КВМ можно после перезагрузки уйти в сингл-юзер мод и произвести необходимые настройки
loadavg 100 у вас от неправильной настройки сервера
Всеми обожаемый хетцнер, например :) Это и называется «дешево и сердито».
Что за дедик (ведь дедик в статье, не?) без возможности IPKVM/iLo/IPMI?
Десктопное железо или самосбор, м.б.? Не все же готовы переплачивать за серверные бренды по несколько тысяч USD.
Это пионерские методы и спасут они лишь от пионерской атаки. Делать mitigation средствами атакуемого же сервера — тупиковая затея.
Реверс-прокси должен по дефолту стоять фронтом на любом мало-мальски приличном проекте, это давно уже очевидно любому школьнику, на мой взгляд. Тем не менее, сервер общего назначения не сможет поглотить атаку в 30 килопакетов в секунду, например, что бы там ни стояло. Nginx великолепен, но рассматривать его как «защиту от DDoS» по меньшей мере неразумно. Это балансер, фронт-сервер, кеш-сервер, если хотите. Поглощать мусорный трафик в его задачи не входит, хотя он это делает много лучше динамических серверов с тредовой моделью, это тоже весьма очевидно.
ОК, 8-и часовое молчание принимается как отсутствие мыслей по заданному вопросу.
Итак, что мы имеем в сухом остатке?
Я задал прямые, простые вопросы по теме топика. Ты не ответил ни на один, уклонился, признав, очевидно, собственную некомпетентность, как я понимаю. Далее назвал меня троллем и бросил фразу «я все сказал», еще раз признавшись, что добавить, попросту, нечего. ОК.
Nuff said.
Я задал прямые, простые вопросы по теме топика. Ты не ответил ни на один, уклонился, признав, очевидно, собственную некомпетентность, как я понимаю. Далее назвал меня троллем и бросил фразу «я все сказал», еще раз признавшись, что добавить, попросту, нечего. ОК.
Nuff said.
Ах, да, слишком мало многозначительных точек, ты же их так любишь, держи:
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
Три дня назад таким вот пионерским методом отбил 8-часовую атаку в 13к хостов. Это когда у вас standalone сервер под один-два проекта — вы можете себе позволить и внешние сервера для отражения атаки, и даже циску в стойке ) А когда пара шаредных серверов — денег на «правильную» зашиту на особо наблюдается.
Ну, все правильно. Стоимость защиты должна быть адекватна ресурсу, который защищаем. Если дешевле лечь — лежим, если простой сервиса стоит больше, чем услуги по защите или даже закупка специализированного оборудования — покупаем. Если есть знакомый линуксойд с iptables наперевес, который может небольшую атаку митигировать — то почему нет. Но только не стоит преподносить этот метод как единственно верный, он работает, но лишь в некоторых конкретных случаях и его возможности весьма ограничены. Как принять 500 тысяч одновременных запросов на типовой сервер с линуксом? А миллион?
На «типовой сервер» с чем угодно вы не примете миллион запросов. Допустим даже, что у вас есть софт, который сможет это сделать (тут где-то пробегала статья на тему реализации HTTP-сервера на хаскеле, который миллионы) — зачем отказываться от горизонтального масштабирования?
Впрочем, мы уходим от темы :) По остальному не согласиться не могу )
Впрочем, мы уходим от темы :) По остальному не согласиться не могу )
Горизонтальное масштабирование тут ничем помочь не может, точка входа все равно будет одна — балансировщик. Можно, конечно, размазать так или иначе (DNS RR, BGP ANYCAST) по нескольким точкам, но суть проблемы от этого не меняется, если DDoS придет к вам по конкретному destination ip.
может все таки erlang?
> 10К адресов — это совсем незаметно.
Странно, но при 2K уже была видна задержка при работе по SSH. И загрузка процессора была приличная.
После того как подключили ipset, все стало «летать».
> Запросы приходят на Nginx, а он проксирует Апачу.
Тоже думали над таким вариантом.
> Сразу оговорюсь, универсальной таблетки не существует
100%
> Отрывками и комментариями могу поделиться.
Интересно было бы посмотреть.
Странно, но при 2K уже была видна задержка при работе по SSH. И загрузка процессора была приличная.
После того как подключили ipset, все стало «летать».
> Запросы приходят на Nginx, а он проксирует Апачу.
Тоже думали над таким вариантом.
> Сразу оговорюсь, универсальной таблетки не существует
100%
> Отрывками и комментариями могу поделиться.
Интересно было бы посмотреть.
Наша задача — отловить клиента с «левым» запросом («POST / HTTP/1.0», например) и записать его адрес в файл. Потом адрес скормить IPtables...
Это всё умеет fail2ban, то есть даже скрипт второпях писать не надо. Единственное, он не через ipset работает.
Для ограничения поедания апачем всех ресурсов есть более простой способ —
mod_load.c
pastebin.com/rBN2VD6V
устанолвите и потом в конфиге апача добавьте
LoadModule load_module /usr/lib/apache/mod_load.so
MaxLoad 50.00
mod_load.c
pastebin.com/rBN2VD6V
устанолвите и потом в конфиге апача добавьте
LoadModule load_module /usr/lib/apache/mod_load.so
MaxLoad 50.00
в современных ядрах это можно сделать и на уровне ядра, включив апач в группу ограниченных ресурсов, если не ошибаюсь
Или cpulimit, что универсальнее: Linux limit CPU usage per process.
Можно ещё настроить limits.conf (/etc/security/limits.conf в Debian), что само по себе тоже полезно. Поскольку нагрузку создаёт не столько Apache, сколько тормоза от множественных параллельных запросов к скриптовому интерпретатору, серверу баз данных и исчерпание оперативной памяти (а в особо критических случаях и свопа).
Можно ещё настроить limits.conf (/etc/security/limits.conf в Debian), что само по себе тоже полезно. Поскольку нагрузку создаёт не столько Apache, сколько тормоза от множественных параллельных запросов к скриптовому интерпретатору, серверу баз данных и исчерпание оперативной памяти (а в особо критических случаях и свопа).
Я избавился от тупого HTTP флуда с помощью nginx и cookies
Если идет запрос без специальной cookie, то юзера 301 редиректом отправляем получить cookie и потом посылаем обратно.
Тупые боты (в т.ч. и поисковые) не воспринимают либо редирект, либо cookies.
Для посетителей сайта все работает практически незаметно.
if ($cookie_antiflood !~* "что-нибудь") {
rewrite ^(.*)$ /set_cookie$1 permanent;
break ;
}
location ~ ^/set_cookie/ {
add_header Set-Cookie "antiflood=что-нибудь; path=/";
rewrite ^/set_cookie/(.*)$ /$1 permanent;
break ;
}
Если идет запрос без специальной cookie, то юзера 301 редиректом отправляем получить cookie и потом посылаем обратно.
Тупые боты (в т.ч. и поисковые) не воспринимают либо редирект, либо cookies.
Для посетителей сайта все работает практически незаметно.
Ботнеты не так тупы, как кажется. И если ботнет не ходит по редиректам, это не значит что он не умеет — просто операторы ботнета не поставили нужную галочку. Тоже видимо касается и кук (хотя именно куки я не проверял), а вот отпарсить страницу чтобы найти в ней JS-редирект — на это у ботнетов ума обычно не хватает
не любите вы поисковых роботов
Тут уж выбор, либо вообще все лежит, либо только для поисковиков
А почему нельзя просто отдавать статический контент и выставлять куку, чтобы второй заход сделал из меня человека, но данные я увидел в любом случае?
Какая-то дилетантская статья…
«у вас болит голова. отрубите её и она перестанет болеть. проблема решена».
Толсто
иногда без апача обойтись нельзя, например когда нужен WAF.
когда нужен WAF
может лучше не писать/держать заведомо дырявые приложения?
Когда нужен WAF, без апача запросто можно обойтись -)
например? mod_security под nginx нету, а более адекватных вэбсерверов кроме апача и nginx нет.
Ты и правда полагаешь, что mod_security — единственный/лучший в мире WAF?
да, я так полагаю, потому как он отвечает требованиям, которые возложены на WAF. Может хватит отвечать вопросом на вопрос?
Я уже оставлял ответ на твой вопрос в комментариях к этому топику.
И какие же требования возложены на WAF? В какой мере mod_security им отвечает? Входит ли в список требований time-lapsed-корреляция и динамическое профилирование, например?
И какие же требования возложены на WAF? В какой мере mod_security им отвечает? Входит ли в список требований time-lapsed-корреляция и динамическое профилирование, например?
Знаете ли, с вами не особо приятно разговаривать. Во первых вы прямо не ответили на вопрос, сославшись что ответ есть где-то неподалеку, увы, я его не нашел. Во вторых ваша манера тыкать незнакомому человеку.
Поэтому такому человеку как Вы, мне просто лень доказывать прописные истины:
1) что такое WAF и с чем его едят
2) что mod_security — это полноценный WAF, который отвечает многим стандартам защиты информации, например таким как PCI DSS первого уровня.
Поэтому такому человеку как Вы, мне просто лень доказывать прописные истины:
1) что такое WAF и с чем его едят
2) что mod_security — это полноценный WAF, который отвечает многим стандартам защиты информации, например таким как PCI DSS первого уровня.
Во первых вы прямо не ответили на вопрос, сославшись что ответ есть где-то неподалеку, увы, я его не нашелДа, мой косяк, извини, то была другая тема.
Что такое WAF мне известно, не переживай )
А так часто упоминаемый тобой стандарт PCI DSS, во-первых, не обязывает использовать WAF, предлагае его как один из двух вариантов достижения комплаенса, во-вторых, не выдвигает вообще никаких требований к самому WAF (см. п.6.6 стандарта), поэтому фраза
отвечает многим стандартам защиты информации, например таким как PCI DSS первого уровня.не несет никакой смысловой нагрузки.
Я ответил на твои вопросы? Ответь и на мои теперь, а то ты поспешил сделать оскорбленный вид и проигнорировать их, понимаю, это распространенная тактика капитулирования, но все же возьми себя в руки, ты же профессионал.
ОК, похоже еще один, которому нечего сказать. Откуда вас столько, только напускающих на себя вид специалистов? Зачем это делать?
Хммм. довольно странная защита от DDOS — блокировать рабочий порт. В чем профит?
ngrep можно заменить на tshark
будет выдавать построчно IP-адреса запросов клиентов, соответствующих заданным критериям (GET/POST метод, имя хоста на сервере, URI)
tshark -tad -R http \ -R '(http.request.method contains GET || http.request.method contains POST) && (http.host matches "example.com$") && (http.request.uri matches "^/$")' \ -T fields -e ip.src \ 'tcp dst port 80'
будет выдавать построчно IP-адреса запросов клиентов, соответствующих заданным критериям (GET/POST метод, имя хоста на сервере, URI)
Что за детский сад?
вы явно не видели 10.000 машин 100мбит ддос, хахаах.
вы явно не видели 10.000 машин 100мбит ддос, хахаах.
ДДоС на HTTP как правило не старается прогрузить входящий канал, чтобы не отсвечивать лишний раз, да и ресурсы лишние не задействовать. Хотя это от ботнета зависит, есть те, кто и гигабит входящего трафика организует (тут были топики).
А 10 тысяч машин как правило не принимают участие в атаке одновременно (большая часть ботнета — домашние компы в разных частях света) одновременно работает процентов 5-10 от общего числа. И да, 10.000 машин, которые заблокированы файрволлом и долбятся все сразу два раза в секунду своими SYN пакетами дают ровно 100 мбит (на считая оверхеда на ethernet). Но в случае атаки стотысячного ботнета одним сервером со 100 мбитами не спасёшься, это очевидно.
А 10 тысяч машин как правило не принимают участие в атаке одновременно (большая часть ботнета — домашние компы в разных частях света) одновременно работает процентов 5-10 от общего числа. И да, 10.000 машин, которые заблокированы файрволлом и долбятся все сразу два раза в секунду своими SYN пакетами дают ровно 100 мбит (на считая оверхеда на ethernet). Но в случае атаки стотысячного ботнета одним сервером со 100 мбитами не спасёшься, это очевидно.
А если ssh порт атакуют, что вы будете делать?
Не вздумайте спрятать статью в черновики!
Каменты все-же полезные!
Каменты все-же полезные!
memento mori — помни о DDOS-е.
Может поддерживать актуальные списки IP адресов правильных клиентов и в случае DDOS-а давать доступ только им?
Может поддерживать актуальные списки IP адресов правильных клиентов и в случае DDOS-а давать доступ только им?
Правильно ли я понял из статьи, что у вас была следующая ситуация:
1. У вас наружу смотрел apache
2. Не было nginx или другого аналогичного сервера
3. При старте системы очень быстро приходило много http запросов, из-за чего число процессов apache достигало критического для системы значения (50?) и у вас заканчивалась и оперативная память, и swap, из-за чего сервер переставал отвечать на какие-либо запросы?
4. однако, запуск скрипта из crontab все-таки работал?
Если да, то именно последний пункт — «запуск чего-нибудь из crontab» является интересным моментом. Это ценная информация.
Остальное, увы — действительно неправильно настроенный сервер.
Для предотвращения именно этой ситуации (с маленьким ростом нагрузки) проще всего было настроить так:
1. nginx как front-end
2. apache с числом одновременных процессов 5-10
в этом случае у вас будет практически невозможным перерасход памяти и вы всегда можете подключиться по ssh.
если при этом у вас nginx еще отдает статику — это будет дополнительное снижение нагрузки.
Увы, часто меры принимаются постфактум.
1. У вас наружу смотрел apache
2. Не было nginx или другого аналогичного сервера
3. При старте системы очень быстро приходило много http запросов, из-за чего число процессов apache достигало критического для системы значения (50?) и у вас заканчивалась и оперативная память, и swap, из-за чего сервер переставал отвечать на какие-либо запросы?
4. однако, запуск скрипта из crontab все-таки работал?
Если да, то именно последний пункт — «запуск чего-нибудь из crontab» является интересным моментом. Это ценная информация.
Остальное, увы — действительно неправильно настроенный сервер.
Для предотвращения именно этой ситуации (с маленьким ростом нагрузки) проще всего было настроить так:
1. nginx как front-end
2. apache с числом одновременных процессов 5-10
в этом случае у вас будет практически невозможным перерасход памяти и вы всегда можете подключиться по ssh.
если при этом у вас nginx еще отдает статику — это будет дополнительное снижение нагрузки.
Увы, часто меры принимаются постфактум.
Хорошо, что вы это написали… но поискав пару минут, вы бы нашли более простые и универсальные методы.
Блокировка сервиса это ни разу не выход.
ps: ipsec то не работает под 3.x…
Блокировка сервиса это ни разу не выход.
ps: ipsec то не работает под 3.x…
Я фигею. Отключение сервиса — это теперь защитой от DDOS называется?
Статья откровенно слабая. Был в подобной ситуации, написал быстро вычислялку самых активных айпи, банил их iptables. После 17 тыщ правил в iptables начинает сильно расходоваться системное время (%sy). В общем, правильно говорят, нужен какой-либо железный FW на входе.
Я бы для начала посмотрел не на адреса, а на подсети. В таких случаях частенько помогает отключение китайцев. Особенно если ваш сервис для них не нужен. На первое время хватит, чтобы «отдышаться». А вообще брать можно только шириной канала и распределенностью датацентров.
м-да, для вас 100мбит\с это флуд, а для кого-то это нормальная нагрузка… вместо того, чтобы ставить костыли в виде фаервола, вы бы лучше софт привели в порядок. Если вам не нужен WAF, у вас обычный сайт на php(например), то вас один голый nginx устроит(+php-fpm). Ну и провести кодревью не мешало бы еще, если что-то самописное. Ну и заведите себе ipkvm, это не серьезно — его не иметь, если нашлись те, кто вас ддосят. Банить правилами фаервола — это уже последнее дело.
Меня пару раз выручал sleep 120 в скрипте /etc/init.d/httpd
Но я сейчас, честно, не встречал провайдера без KVM-IP… Зато встречал провайдера у которого аплинк 1гбит и канал к серверу 1гб, положили сервер — положили аплинк, мне такой провайдер не могу выдать KVM-IP так как залипшим оказалась его главная железка и уже тут ее ребутали и пытались успеть втиснутся в админку))
Но я сейчас, честно, не встречал провайдера без KVM-IP… Зато встречал провайдера у которого аплинк 1гбит и канал к серверу 1гб, положили сервер — положили аплинк, мне такой провайдер не могу выдать KVM-IP так как залипшим оказалась его главная железка и уже тут ее ребутали и пытались успеть втиснутся в админку))
А можно обратится к автору с просьбой о помощи в похожем деле?
аська 66945401, скайп whoim2
аська 66945401, скайп whoim2
Sign up to leave a comment.
Защита от DDOS атаки подручными средствами. Получение доступа к своему серверу