Comments 58
UFO just landed and posted this here
Достаточно эффективно.
Наиболее эффективен данный метод против syn flood атак, так как они как раз создают кучу открытых соединений.
Если поиграть со лимитом соединений на ip то большинство досеров отсеиваются достаточно быстро.
Для http я советовал бы еще потюнить в iptables параметры limit.
Наиболее эффективен данный метод против syn flood атак, так как они как раз создают кучу открытых соединений.
Если поиграть со лимитом соединений на ip то большинство досеров отсеиваются достаточно быстро.
Для http я советовал бы еще потюнить в iptables параметры limit.
>Для http я советовал бы еще потюнить в iptables параметры limit.
можно поподробнее?
можно поподробнее?
Наиболее эффективен данный метод против syn flood атак
а если syn flood + ip forge — не пришей кобыле хвост, можно хоть с одного адреса накидать
UFO just landed and posted this here
есть еще panoptis
Знаю, что многие не доверяют журналу Хакер, однако раз тема есть, вот ( www.xakep.ru/magazine/xa/081/066/1.asp ) небольшая статейка, думаю новичкам будет интересно.
Перенес в блог Web-разработка
интересно, а за эту минуту несколько тысяч ботов же могут положить сервер?
Конечно могут.
Только такие проекты на которые целят столь серьезные армии и защищаются методами другого уровня.
Данный скрипт не панацея, а возможность отсечь большинство атак, которых ботов не слишком много.
Только такие проекты на которые целят столь серьезные армии и защищаются методами другого уровня.
Данный скрипт не панацея, а возможность отсечь большинство атак, которых ботов не слишком много.
Скорее всего, сервер всё-таки ляжет, но после его поднятия атака прекратится, т.к. айпишники атакующих будут в логах. Я верно понял?
Зависит от конкретного случая.
Скрипт запускается каждую минуту и смотрит количество текущих открытых соединений, так что возможно при серьезной атаке сил не хватит даже чтобы запуститься, и только после этого банит. Но это довольно экзотический вариант.
Скрипт запускается каждую минуту и смотрит количество текущих открытых соединений, так что возможно при серьезной атаке сил не хватит даже чтобы запуститься, и только после этого банит. Но это довольно экзотический вариант.
id5958359
от банального пинга по айпи ничего не спасает, последни ддосы на нас именно так и были реализованы(ложится узкий канал. это если хостер не мегакрут)…
провайдер тупо отключал наш айпи и привет.
либо надо восходящему провайдеру применять меры, но отчего то они ничего не принимали…
провайдер тупо отключал наш айпи и привет.
либо надо восходящему провайдеру применять меры, но отчего то они ничего не принимали…
UFO just landed and posted this here
При чистейшем http- флуде при наличии какого-то отклонения в запрашиваемом URL (к примеру запрос вида «GET /lskdjflkdj.html») гораздо легче серверу выгребать инфу с помощью знакомого всем инструмента tail:
tail -1000 /var/log/nginx-access.log | grep «lskdjflkdj.html» | cut -f1 -d« „ |sort -u
Получаем список IP. Далее лучше по моему мнению записать все это хозяйство в какую нибудь базу, например тот же niggerz, НО, нужно проверить а нет ли в ней дубликатов (perl меня тут спасает), проверив пишем в базу, и в очищенный файлик к примеру ddos. Далее все просто, читаем файлик ddos где у нас флудные, но не забаненные IP, читаем номер правила предыдущего добавленного правила в фаервол из файлика rules (предполагается наличие такового), и закрываем новую партию, обновляем файлик с номером правила, чистим файлик ddos. Все. ~ 3000 — 4000 ботов выдержать с такой защитой можно, запуская такое решение по крону раз в минуту.
Сейчас постараюсь выложить готовое решение на perl под freeBSD (линукса у меня нету)
tail -1000 /var/log/nginx-access.log | grep «lskdjflkdj.html» | cut -f1 -d« „ |sort -u
Получаем список IP. Далее лучше по моему мнению записать все это хозяйство в какую нибудь базу, например тот же niggerz, НО, нужно проверить а нет ли в ней дубликатов (perl меня тут спасает), проверив пишем в базу, и в очищенный файлик к примеру ddos. Далее все просто, читаем файлик ddos где у нас флудные, но не забаненные IP, читаем номер правила предыдущего добавленного правила в фаервол из файлика rules (предполагается наличие такового), и закрываем новую партию, обновляем файлик с номером правила, чистим файлик ddos. Все. ~ 3000 — 4000 ботов выдержать с такой защитой можно, запуская такое решение по крону раз в минуту.
Сейчас постараюсь выложить готовое решение на perl под freeBSD (линукса у меня нету)
Было бы очень кстати!
Это слабое решение. Цель-максимум: не допустить ни одного вредоносного запроса вообще.
Большой ботнет на несколько десятков тысяч узлов из какой-нибудь Латинской Америки плавно просыпается когда у нас настаёт ночь, то, что вы заблокируете каждый его адрес после одного обращения не избавит вас от проблем.
Большой ботнет на несколько десятков тысяч узлов из какой-нибудь Латинской Америки плавно просыпается когда у нас настаёт ночь, то, что вы заблокируете каждый его адрес после одного обращения не избавит вас от проблем.
> ~ 3000 — 4000 ботов выдержать с такой защитой можно, запуская такое решение по крону раз в минуту.
Я не вел речи о большом ботнете. Максимум что мне доводилось отражать это 10 000 IP. Верхнее решение помогало мне 7 раз. Да, был такой ребяческий флуд. Начиная с 7-8 тысячи любое решение размещенное на самом атакуемом сервере теряет свою эффективность на 99%. Вот когда начинаешь задумываться над наличием цисок и другого железа установленного перед атакуемым сервером
Я не вел речи о большом ботнете. Максимум что мне доводилось отражать это 10 000 IP. Верхнее решение помогало мне 7 раз. Да, был такой ребяческий флуд. Начиная с 7-8 тысячи любое решение размещенное на самом атакуемом сервере теряет свою эффективность на 99%. Вот когда начинаешь задумываться над наличием цисок и другого железа установленного перед атакуемым сервером
Циска без профессионального человеческого вмешательства — металлолом, поверьте.
Извините, но это заблуждение. Есть решения которые отбивают хоть 20, хоть 30 тысяч ботов прямо с фронтенда без какого-либо дополнительного оборудования. Всё, конечно, зависит от того, удаётся ли получить сигнатуру атаки или нет. В большинстве случаев это возможно.
Начиная с 7-8 тысячи любое решение размещенное на самом атакуемом сервере теряет свою эффективность на 99%
Извините, но это заблуждение. Есть решения которые отбивают хоть 20, хоть 30 тысяч ботов прямо с фронтенда без какого-либо дополнительного оборудования. Всё, конечно, зависит от того, удаётся ли получить сигнатуру атаки или нет. В большинстве случаев это возможно.
Можно продолжить эту цепочку:
tail -1000 /var/log/nginx-access.log | grep «lskdjflkdj.html» | cut -f1 -d « » -f 1 | sort | uniq -c | grep -Eo «([2-9]|[1-9][0-9])+ ([0-9.]*)» | cut -d « » -f2
Порог срабатывания задается строкой
grep -Eo «([2-9]|[1-9][0-9])+ [0-9.]+»
В данном случае все, что больше 1
Все, что больше 9:
grep -Eo «[1-9][0-9]+ [0-9.]+»
Все, что больше 99:
grep -Eo «[1-9][0-9][0-9]+ [0-9.]+»
tail -1000 /var/log/nginx-access.log | grep «lskdjflkdj.html» | cut -f1 -d « » -f 1 | sort | uniq -c | grep -Eo «([2-9]|[1-9][0-9])+ ([0-9.]*)» | cut -d « » -f2
Порог срабатывания задается строкой
grep -Eo «([2-9]|[1-9][0-9])+ [0-9.]+»
В данном случае все, что больше 1
Все, что больше 9:
grep -Eo «[1-9][0-9]+ [0-9.]+»
Все, что больше 99:
grep -Eo «[1-9][0-9][0-9]+ [0-9.]+»
Вот: ddos-http.pl.txt. Решение это — сборное, что то в инете нарыл, что то сам дописал. Факт один — работает.
UFO just landed and posted this here
По существу. Но штука в том, что толковые решения в этой области редко кто будет обсуждать публично: у стен есть уши :-)
И покупать сервера специально под атаки мало кто, конечно, станет. В большинстве случаев серверов бывает ровно столько, сколько необходимо в текущий момент времени + 20-40% запаса. Таков бизнес, мало кто готов к скачку нагрузки в 100 в течение суток.
И покупать сервера специально под атаки мало кто, конечно, станет. В большинстве случаев серверов бывает ровно столько, сколько необходимо в текущий момент времени + 20-40% запаса. Таков бизнес, мало кто готов к скачку нагрузки в 100 в течение суток.
А одно из очень полезных вещей в цисках — автоматическое syn-проксирование + обучаемость. Остальное навёрстывается, конечно, самостоятельной аналитикой трафика и принятием правил.
Вы правы, машинам после некоторого порога становится пофиг, а вот ботнеты при этом перестают работать на «отказ» и начинают слать спам… Вот его тоже надо каким-то образом отсеивать…
>вообще каждая защита, также как и каждая отака это творческий процесс, и каждая сторона стремится изъебнуться по свойму.
Два умных программиста пытаются показать друг другу кто кого умнее =)
Два умных программиста пытаются показать друг другу кто кого умнее =)
Я бы предложил вместо отдельного правила на каждый IP адрес с deny
пихать всё в table который нужно блокировать
deny ip from table(1) to any
пихать всё в table который нужно блокировать
deny ip from table(1) to any
Не открывается :(
Не открывается ваше решение :(
очень просто да и безопасность поднимет, спасибо.
Если стоит nginx как фронтэнд можно использовать
клнструкцию
limit_zone one $binary_remote_addr 10m;
для ограничения кол-ва соединений с 1 IP.
Опять же я заметил что при connect атаках
зачастую используется 1) либо феэйк UserAgent
вида Netscape/4.7 либо 2) либо толпа рандомных.
Оба варианта можно отсечь ограничив на время
атаки доступ только по основным UserAgent, которые
вы предварительно вытянули из awstats напрмер.
Закрыть можно темже nginx.
Ну а ксли DDOS уж совсем по-взрослому, то тут
уж надо 'puzzle solving' механизмы
www.google.ca/search? hl=en&safe=off&q=ddos+puzzle+solving&btnG=Search&meta=
и BGP с разных точек на земле.
клнструкцию
limit_zone one $binary_remote_addr 10m;
для ограничения кол-ва соединений с 1 IP.
Опять же я заметил что при connect атаках
зачастую используется 1) либо феэйк UserAgent
вида Netscape/4.7 либо 2) либо толпа рандомных.
Оба варианта можно отсечь ограничив на время
атаки доступ только по основным UserAgent, которые
вы предварительно вытянули из awstats напрмер.
Закрыть можно темже nginx.
Ну а ксли DDOS уж совсем по-взрослому, то тут
уж надо 'puzzle solving' механизмы
www.google.ca/search? hl=en&safe=off&q=ddos+puzzle+solving&btnG=Search&meta=
и BGP с разных точек на земле.
Ребячество: большой ботнет будет ломить по одному разу в пять минут с каждого узла, чем создаст достаточно веселья
«Если стоит nginx как фронтэнд можно использовать
клнструкцию
limit_zone one $binary_remote_addr 10m;
для ограничения кол-ва соединений с 1 IP.»
К сожалению это типичный хабракомментарий.
=(
Тоскливо.
клнструкцию
limit_zone one $binary_remote_addr 10m;
для ограничения кол-ва соединений с 1 IP.»
К сожалению это типичный хабракомментарий.
=(
Тоскливо.
Какая новость (1 строка -> netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n), такой и коментарий,
все соразмерно.
все соразмерно.
Вот я и говорю соразмерно =)
Одни пишет «новость» не о чем. Скриптик откопал… netstat -ntu блин… =)) Нахрена повышать энтропию скриптами не о чем… если в линуксе (а автор видими о нем пишет ибо -ntu в BSD юникссокты покажет) можно ядром и модулями ограничить колличество соединений, а не баны придумывать.
Второй ему отвечает в стиле — я тут тоже звон слышал… тока не понимаю о чем… Но приведу строчку из конфига nginx, о котором тоже слышал… строчка красивая… но к делу не относится — она память выделяет… =)
Давай поминусуй… пионэр =)
Одни пишет «новость» не о чем. Скриптик откопал… netstat -ntu блин… =)) Нахрена повышать энтропию скриптами не о чем… если в линуксе (а автор видими о нем пишет ибо -ntu в BSD юникссокты покажет) можно ядром и модулями ограничить колличество соединений, а не баны придумывать.
Второй ему отвечает в стиле — я тут тоже звон слышал… тока не понимаю о чем… Но приведу строчку из конфига nginx, о котором тоже слышал… строчка красивая… но к делу не относится — она память выделяет… =)
Давай поминусуй… пионэр =)
Когдато давно писал habrahabr.ru/blogs/sysadm/20934/ посмотрите, может вам поможет.
UFO just landed and posted this here
Вынужден категорически не согласиться с Вами:
Страницы сайта есть предоставляемый системой ресурс. А юзать cisco для отражения атаки в 200 IP — вот это есть низкий уровень. Задачи понимаете разные у скриптов и железа, хотя цель одна.
DoS-атака (от англ. Denial of Service — «отказ в обслуживании») и DDoS-атака (Distributed Denial of Service — «распределённый отказ обслуживания») — это разновидности атак злоумышленника на компьютерные системы. Целью этих атак является создание таких условий, при которых легитимные (правомерные) пользователи системы не могут получить доступ к предоставляемым системой ресурсам, либо этот доступ затруднён.
Страницы сайта есть предоставляемый системой ресурс. А юзать cisco для отражения атаки в 200 IP — вот это есть низкий уровень. Задачи понимаете разные у скриптов и железа, хотя цель одна.
В данном случае речь идет не о веб скриптах, которые некоторые ставят себе на страницы, что бы защищатся от DDos`a
В данном случае речь идет не о веб скриптах, которые некоторые ставят себе на страницы, что бы защищатся от DDos`a
Хорошая идея.
Можно защитить себя от ддоса, таким способом, но вот только закрыть все дыры безопасности врядли получится, когда залатываете одно, даже не подозреваете что можете открыть что то другое.
Можно защитить себя от ддоса, таким способом, но вот только закрыть все дыры безопасности врядли получится, когда залатываете одно, даже не подозреваете что можете открыть что то другое.
конечно какой-то толк есть от этого, но он минимальный. Обычно при дос атаке главная цель забить канал, а уж потом сделать так чтоб сервер не мог ответить на запрос. Плюс мало представляю, что кто-то с одного IP будет досить… Плюс надо очень продумывать над кодом, что бы на начальном этапе инициализации не делались ни какие сложные вычесления или работа с DB. Ну и конечно немного спасет циски перед сервером, но опять же это только защитит от детский атак. Крупные атаки можно наверно только с помощью провайдера отразить, и то если он адекватный…
сам юзаю lighttpd, там для таких вещей есть mod_evasive с 1м параметром evasive.max-conns-per-ip = XX и никаких скриптов не надо;) хотя надо проверить срабатывает ли он при syn флуде
самое главное забыл про psad cipherdyne.org/psad/
ps: уже всё давно написано;)
ps: уже всё давно написано;)
Only those users with full accounts are able to leave comments. Log in, please.
Защита от DDos. Простой, но эффективный скрипт