Comments 92
Вы лучше покажите скрипт который автоматически банит ботов, заблокировать 80 порт на фаерволе это не самая сложная задача.
+10
> заблокировать 80 порт на фаерволе
Не сложная — если есть доступ к этому самому фарволу. И если сам внешний файрвол есть…
> скрипт который автоматически банит ботов
При загрузке создаем правлио:
Потом собственно:
Не сложная — если есть доступ к этому самому фарволу. И если сам внешний файрвол есть…
> скрипт который автоматически банит ботов
При загрузке создаем правлио:
iptables -I INPUT -m set --set autoban src,dst -j DROP
Потом собственно:
sudo /sbin/ipset -A autoban $REMOTE_ADDR
-8
Вспомнился — ddosviewer.narod.ru
0
Ну это как-то тапорно рубить весь порт. Может посмотреть в сторону iptables + limit-burst?
0
А MODevasive в связке с MODsecurity не пробовали?
+1
Где в статье про защиту от DDoS-то? Судя по тексту, атака достигла цели. Гордиться тем, что получил доступ к серверу — невеликое достижение, IPKVM и иже с ними завсегда есть.
+27
IPKVM — у нас нет. Только SSH.
А для того чтобы защитится, нужно сначала попасть на сервер. Собственно про это и статья.
А для того чтобы защитится, нужно сначала попасть на сервер. Собственно про это и статья.
-6
Так продолжение будет? Что за дедик (ведь дедик в статье, не?) без возможности IPKVM/iLo/IPMI?
+3
Продолжение планируется.
Дедик. Но ipkvm нет.
Кстати, при load average > 100, KVM особенно не поможет.
Дедик. Но ipkvm нет.
Кстати, при load average > 100, KVM особенно не поможет.
0
Имея КВМ можно после перезагрузки уйти в сингл-юзер мод и произвести необходимые настройки
+4
loadavg 100 у вас от неправильной настройки сервера
+2
Всеми обожаемый хетцнер, например :) Это и называется «дешево и сердито».
+1
Что за дедик (ведь дедик в статье, не?) без возможности IPKVM/iLo/IPMI?
Десктопное железо или самосбор, м.б.? Не все же готовы переплачивать за серверные бренды по несколько тысяч USD.
0
UFO just landed and posted this here
Это пионерские методы и спасут они лишь от пионерской атаки. Делать mitigation средствами атакуемого же сервера — тупиковая затея.
+1
UFO just landed and posted this here
Реверс-прокси должен по дефолту стоять фронтом на любом мало-мальски приличном проекте, это давно уже очевидно любому школьнику, на мой взгляд. Тем не менее, сервер общего назначения не сможет поглотить атаку в 30 килопакетов в секунду, например, что бы там ни стояло. Nginx великолепен, но рассматривать его как «защиту от DDoS» по меньшей мере неразумно. Это балансер, фронт-сервер, кеш-сервер, если хотите. Поглощать мусорный трафик в его задачи не входит, хотя он это делает много лучше динамических серверов с тредовой моделью, это тоже весьма очевидно.
-2
UFO just landed and posted this here
ОК, 8-и часовое молчание принимается как отсутствие мыслей по заданному вопросу.
0
UFO just landed and posted this here
Итак, что мы имеем в сухом остатке?
Я задал прямые, простые вопросы по теме топика. Ты не ответил ни на один, уклонился, признав, очевидно, собственную некомпетентность, как я понимаю. Далее назвал меня троллем и бросил фразу «я все сказал», еще раз признавшись, что добавить, попросту, нечего. ОК.
Nuff said.
Я задал прямые, простые вопросы по теме топика. Ты не ответил ни на один, уклонился, признав, очевидно, собственную некомпетентность, как я понимаю. Далее назвал меня троллем и бросил фразу «я все сказал», еще раз признавшись, что добавить, попросту, нечего. ОК.
Nuff said.
-3
Ах, да, слишком мало многозначительных точек, ты же их так любишь, держи:
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
-3
Три дня назад таким вот пионерским методом отбил 8-часовую атаку в 13к хостов. Это когда у вас standalone сервер под один-два проекта — вы можете себе позволить и внешние сервера для отражения атаки, и даже циску в стойке ) А когда пара шаредных серверов — денег на «правильную» зашиту на особо наблюдается.
+2
Ну, все правильно. Стоимость защиты должна быть адекватна ресурсу, который защищаем. Если дешевле лечь — лежим, если простой сервиса стоит больше, чем услуги по защите или даже закупка специализированного оборудования — покупаем. Если есть знакомый линуксойд с iptables наперевес, который может небольшую атаку митигировать — то почему нет. Но только не стоит преподносить этот метод как единственно верный, он работает, но лишь в некоторых конкретных случаях и его возможности весьма ограничены. Как принять 500 тысяч одновременных запросов на типовой сервер с линуксом? А миллион?
+2
На «типовой сервер» с чем угодно вы не примете миллион запросов. Допустим даже, что у вас есть софт, который сможет это сделать (тут где-то пробегала статья на тему реализации HTTP-сервера на хаскеле, который миллионы) — зачем отказываться от горизонтального масштабирования?
Впрочем, мы уходим от темы :) По остальному не согласиться не могу )
Впрочем, мы уходим от темы :) По остальному не согласиться не могу )
0
Горизонтальное масштабирование тут ничем помочь не может, точка входа все равно будет одна — балансировщик. Можно, конечно, размазать так или иначе (DNS RR, BGP ANYCAST) по нескольким точкам, но суть проблемы от этого не меняется, если DDoS придет к вам по конкретному destination ip.
0
может все таки erlang?
0
> 10К адресов — это совсем незаметно.
Странно, но при 2K уже была видна задержка при работе по SSH. И загрузка процессора была приличная.
После того как подключили ipset, все стало «летать».
> Запросы приходят на Nginx, а он проксирует Апачу.
Тоже думали над таким вариантом.
> Сразу оговорюсь, универсальной таблетки не существует
100%
> Отрывками и комментариями могу поделиться.
Интересно было бы посмотреть.
Странно, но при 2K уже была видна задержка при работе по SSH. И загрузка процессора была приличная.
После того как подключили ipset, все стало «летать».
> Запросы приходят на Nginx, а он проксирует Апачу.
Тоже думали над таким вариантом.
> Сразу оговорюсь, универсальной таблетки не существует
100%
> Отрывками и комментариями могу поделиться.
Интересно было бы посмотреть.
-1
Наша задача — отловить клиента с «левым» запросом («POST / HTTP/1.0», например) и записать его адрес в файл. Потом адрес скормить IPtables...
Это всё умеет fail2ban, то есть даже скрипт второпях писать не надо. Единственное, он не через ipset работает.
0
Для ограничения поедания апачем всех ресурсов есть более простой способ —
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
+3
в современных ядрах это можно сделать и на уровне ядра, включив апач в группу ограниченных ресурсов, если не ошибаюсь
-1
Или cpulimit, что универсальнее: Linux limit CPU usage per process.
Можно ещё настроить limits.conf (/etc/security/limits.conf в Debian), что само по себе тоже полезно. Поскольку нагрузку создаёт не столько Apache, сколько тормоза от множественных параллельных запросов к скриптовому интерпретатору, серверу баз данных и исчерпание оперативной памяти (а в особо критических случаях и свопа).
Можно ещё настроить limits.conf (/etc/security/limits.conf в Debian), что само по себе тоже полезно. Поскольку нагрузку создаёт не столько Apache, сколько тормоза от множественных параллельных запросов к скриптовому интерпретатору, серверу баз данных и исчерпание оперативной памяти (а в особо критических случаях и свопа).
-1
Я избавился от тупого 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.
Для посетителей сайта все работает практически незаметно.
+9
Ботнеты не так тупы, как кажется. И если ботнет не ходит по редиректам, это не значит что он не умеет — просто операторы ботнета не поставили нужную галочку. Тоже видимо касается и кук (хотя именно куки я не проверял), а вот отпарсить страницу чтобы найти в ней JS-редирект — на это у ботнетов ума обычно не хватает
+3
не любите вы поисковых роботов
0
Тут уж выбор, либо вообще все лежит, либо только для поисковиков
0
А почему нельзя просто отдавать статический контент и выставлять куку, чтобы второй заход сделал из меня человека, но данные я увидел в любом случае?
0
Какая-то дилетантская статья…
+17
«у вас болит голова. отрубите её и она перестанет болеть. проблема решена».
+12
UFO just landed and posted this here
Толсто
-7
иногда без апача обойтись нельзя, например когда нужен WAF.
0
когда нужен WAF
может лучше не писать/держать заведомо дырявые приложения?
0
Когда нужен WAF, без апача запросто можно обойтись -)
0
например? mod_security под nginx нету, а более адекватных вэбсерверов кроме апача и nginx нет.
-1
Ты и правда полагаешь, что mod_security — единственный/лучший в мире WAF?
+1
да, я так полагаю, потому как он отвечает требованиям, которые возложены на WAF. Может хватит отвечать вопросом на вопрос?
0
Я уже оставлял ответ на твой вопрос в комментариях к этому топику.
И какие же требования возложены на WAF? В какой мере mod_security им отвечает? Входит ли в список требований time-lapsed-корреляция и динамическое профилирование, например?
И какие же требования возложены на WAF? В какой мере mod_security им отвечает? Входит ли в список требований time-lapsed-корреляция и динамическое профилирование, например?
0
Знаете ли, с вами не особо приятно разговаривать. Во первых вы прямо не ответили на вопрос, сославшись что ответ есть где-то неподалеку, увы, я его не нашел. Во вторых ваша манера тыкать незнакомому человеку.
Поэтому такому человеку как Вы, мне просто лень доказывать прописные истины:
1) что такое WAF и с чем его едят
2) что mod_security — это полноценный WAF, который отвечает многим стандартам защиты информации, например таким как PCI DSS первого уровня.
Поэтому такому человеку как Вы, мне просто лень доказывать прописные истины:
1) что такое WAF и с чем его едят
2) что mod_security — это полноценный WAF, который отвечает многим стандартам защиты информации, например таким как PCI DSS первого уровня.
0
Во первых вы прямо не ответили на вопрос, сославшись что ответ есть где-то неподалеку, увы, я его не нашелДа, мой косяк, извини, то была другая тема.
Что такое WAF мне известно, не переживай )
А так часто упоминаемый тобой стандарт PCI DSS, во-первых, не обязывает использовать WAF, предлагае его как один из двух вариантов достижения комплаенса, во-вторых, не выдвигает вообще никаких требований к самому WAF (см. п.6.6 стандарта), поэтому фраза
отвечает многим стандартам защиты информации, например таким как PCI DSS первого уровня.не несет никакой смысловой нагрузки.
Я ответил на твои вопросы? Ответь и на мои теперь, а то ты поспешил сделать оскорбленный вид и проигнорировать их, понимаю, это распространенная тактика капитулирования, но все же возьми себя в руки, ты же профессионал.
0
ОК, похоже еще один, которому нечего сказать. Откуда вас столько, только напускающих на себя вид специалистов? Зачем это делать?
0
Хммм. довольно странная защита от DDOS — блокировать рабочий порт. В чем профит?
+4
UFO just landed and posted this here
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)
-1
Что за детский сад?
вы явно не видели 10.000 машин 100мбит ддос, хахаах.
вы явно не видели 10.000 машин 100мбит ддос, хахаах.
+3
ДДоС на HTTP как правило не старается прогрузить входящий канал, чтобы не отсвечивать лишний раз, да и ресурсы лишние не задействовать. Хотя это от ботнета зависит, есть те, кто и гигабит входящего трафика организует (тут были топики).
А 10 тысяч машин как правило не принимают участие в атаке одновременно (большая часть ботнета — домашние компы в разных частях света) одновременно работает процентов 5-10 от общего числа. И да, 10.000 машин, которые заблокированы файрволлом и долбятся все сразу два раза в секунду своими SYN пакетами дают ровно 100 мбит (на считая оверхеда на ethernet). Но в случае атаки стотысячного ботнета одним сервером со 100 мбитами не спасёшься, это очевидно.
А 10 тысяч машин как правило не принимают участие в атаке одновременно (большая часть ботнета — домашние компы в разных частях света) одновременно работает процентов 5-10 от общего числа. И да, 10.000 машин, которые заблокированы файрволлом и долбятся все сразу два раза в секунду своими SYN пакетами дают ровно 100 мбит (на считая оверхеда на ethernet). Но в случае атаки стотысячного ботнета одним сервером со 100 мбитами не спасёшься, это очевидно.
+1
А если ssh порт атакуют, что вы будете делать?
0
Не вздумайте спрятать статью в черновики!
Каменты все-же полезные!
Каменты все-же полезные!
+7
memento mori — помни о DDOS-е.
Может поддерживать актуальные списки IP адресов правильных клиентов и в случае DDOS-а давать доступ только им?
Может поддерживать актуальные списки IP адресов правильных клиентов и в случае DDOS-а давать доступ только им?
+1
Правильно ли я понял из статьи, что у вас была следующая ситуация:
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 еще отдает статику — это будет дополнительное снижение нагрузки.
Увы, часто меры принимаются постфактум.
+3
Хорошо, что вы это написали… но поискав пару минут, вы бы нашли более простые и универсальные методы.
Блокировка сервиса это ни разу не выход.
ps: ipsec то не работает под 3.x…
Блокировка сервиса это ни разу не выход.
ps: ipsec то не работает под 3.x…
0
Я фигею. Отключение сервиса — это теперь защитой от DDOS называется?
+1
Статья откровенно слабая. Был в подобной ситуации, написал быстро вычислялку самых активных айпи, банил их iptables. После 17 тыщ правил в iptables начинает сильно расходоваться системное время (%sy). В общем, правильно говорят, нужен какой-либо железный FW на входе.
+1
Я бы для начала посмотрел не на адреса, а на подсети. В таких случаях частенько помогает отключение китайцев. Особенно если ваш сервис для них не нужен. На первое время хватит, чтобы «отдышаться». А вообще брать можно только шириной канала и распределенностью датацентров.
0
м-да, для вас 100мбит\с это флуд, а для кого-то это нормальная нагрузка… вместо того, чтобы ставить костыли в виде фаервола, вы бы лучше софт привели в порядок. Если вам не нужен WAF, у вас обычный сайт на php(например), то вас один голый nginx устроит(+php-fpm). Ну и провести кодревью не мешало бы еще, если что-то самописное. Ну и заведите себе ipkvm, это не серьезно — его не иметь, если нашлись те, кто вас ддосят. Банить правилами фаервола — это уже последнее дело.
+1
Меня пару раз выручал sleep 120 в скрипте /etc/init.d/httpd
Но я сейчас, честно, не встречал провайдера без KVM-IP… Зато встречал провайдера у которого аплинк 1гбит и канал к серверу 1гб, положили сервер — положили аплинк, мне такой провайдер не могу выдать KVM-IP так как залипшим оказалась его главная железка и уже тут ее ребутали и пытались успеть втиснутся в админку))
Но я сейчас, честно, не встречал провайдера без KVM-IP… Зато встречал провайдера у которого аплинк 1гбит и канал к серверу 1гб, положили сервер — положили аплинк, мне такой провайдер не могу выдать KVM-IP так как залипшим оказалась его главная железка и уже тут ее ребутали и пытались успеть втиснутся в админку))
+1
UFO just landed and posted this here
А можно обратится к автору с просьбой о помощи в похожем деле?
аська 66945401, скайп whoim2
аська 66945401, скайп whoim2
0
Sign up to leave a comment.
Защита от DDOS атаки подручными средствами. Получение доступа к своему серверу