PDA

Просмотр полной версии : Статьи АнтиДДОС


Fata1ex
06.07.2009, 19:41
Предлагаю в этой теме постить найденные или написанные вами небольшие статьи и заметки по данной теме.



Защита от DDos. Простой, но эффективный скрипт
Недавно озаботился поиском адекватного решения для защиты некоторых подконтрольных ресурсов от DDos атак.
Первое что посоветовали — Cisco Guard. Но так как требовалось что то легкое и не столь дорогое, то решил посмотреть в сторону софтверных продуктов.
После непродолжительного гугления наткнулся на небольшой скриптик (D)DoS Deflate (http://deflate.medialayer.com/)

Работает довольно просто — каждую минуту по крону запускается команда
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
и выбираются все айпишники число соединений с которых превышает заданное в конфиге ограничени(по умолчанию 150).
Время бана тоже настраивается в конфиге. Также можно выбрать с каким файрволом работать — iptables или apf(надстройка над iptables).

Решение довольно очевидное, словесные описания проскакивали и до этого, но такой готовой реализации ранее не встречал.

UPD: не забываем что этот скрипт в силу своей простоты не спасет от серьезных заказных атак, но большинство кулхацкеров остановит.
(c) (http://habrahabr.ru/blogs/webdev/39509/)




Борьба с DDOS и DOS на уровне nginx
FreeBSD, сетевая Intel fxp, порт 100Мбит, polling, http accept-filter
в sysctl
sysctl kern.maxfiles=90000
sysctl kern.maxfilesperproc=80000
sysctl net.inet.tcp.blackhole=2
sysctl net.inet.udp.blackhole=1
sysctl kern.polling.burst_max=1000
sysctl kern.polling.each_burst=50
sysctl kern.ipc.somaxconn=32768
sysctl net.inet.tcp.msl=3000
sysctl net.inet.tcp.maxtcptw=40960
sysctl net.inet.tcp.nolocaltimewait=1
sysctl net.inet.ip.portrange.first=1024
sysctl net.inet.ip.portrange.last=65535
sysctl net.inet.ip.portrange.randomized=0


в nginx моменты

worker_processes 1;
worker_rlimit_nofile 80000;
events {
worker_connections 50000;
}

server_tokens off;
log_format IP ‘$remote_addr’;
reset_timedout_connection on;

listen xx.xx.xx.xx:80 default rcvbuf=8192 sndbuf=16384 backlog=32000 accept_filter=httpready;

фильтрацию url например по критерию POST index.php?action=login с пустым реферером можно реализовать так
set $add 1;
location /index.php {
limit_except GET POST {
deny all;
}
set $ban “”;
if ($http_referer = “” ) {set $ban $ban$add;}
if ($request_method = POST ) {set $ban $ban$add;}
if ($query_string = “action=login” ){set $ban $ban$add;}
if ($ban = 111 ) {
access_log /var/log/nginx/ban IP;
return 404;
}
proxy_pass http://127.0.0.1:8000; #тут живёт апач
}


Дальше резали на уровне pf - загружали в таблицу IP с которых приходило слишком
много хитов. PF с таблицами работает очень быстро. Исходники парсера логов есть на
http://www.comsys.com.ua/files.

ну и по крону уже раз в минуту добавлять в ip table новые ip из лога

25Мбитный DDoS, преимущесвенно режущийся ip, остатки проходят на nginx, который по критерию обучает ip и остатки проксирует на апач - LA 0, сайт работает.
(c) (http://habrahabr.ru/blogs/sysadm/20934/)




Так же можно почитать статьи:

FreeBSD для обслуживания 100-200 тысяч соединений (http://www.opennet.ru/base/net/tune_freebsd.txt.html)
Методы защиты от DDoS нападений (http://www.securitylab.ru/analytics/216251.php)
Не так страшен DDoS, как его малюют (http://www.securitylab.ru/contest/357397.php)
DDOS - что делать. Если сервер только один - Linux с Apache. (http://hostinghelp.biz/content/ddos-%D1%87%D1%82%D0%BE-%D0%B4%D0%B5%D0%BB%D0%B0%D1%82%D1%8C-%D0%B5%D1%81%D0%BB%D0%B8-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80-%D1%82%D0%BE%D0%BB%D1%8C%D0%BA%D0%BE-%D0%BE%D0%B4%D0%B8%D0%BD-linux-%D1%81-apache)

Не стал здесь приводить ввиду их объемности )

banana
07.07.2009, 10:42
Как бороться с ламерами ддосерами.

Значит, ваш сайт задосили. Вы себя херово чуствуете. Вы хотите убить ДДоСера который уничтожил ваш сайт. Не проблема!!

Нам понадобится ...

* Логи ддоса
* мИРЦ // не обезательно
* IRIS Sniffer
* Пару сплойтов
* Ну у мазги нах!


И так, у вас есть логи. Скажем с них ты выдрал IPшники: 231.32.32.211, 4.5.6.7, 6.7.8.9, 12.13.14.15, 23.24.25.26. Окей. Не проблема. Теперь у нас есть 50/50 шанс того что эти машины были зомбированы с помощью любого бота типа пхатБот, ериксБот и другие кул-хацкерские боты.

Значит нам прежде всего нужны сплойты для LSASS, PnP, DCOM135, DCASS . Их можно найти на секлабе - securitylab

Прежде всего, мы берем эти IP и поочереди проверяем их на дырявость сплойтами. Если вам удалось войти в систему - считайте что Вы уже уничтожили пол-кулхакера. Теперь нам надо поставить rAdmin или любую другую тулузу remote administrating. Поставили, запустили и готово.

Теперь вам надо подключится рАдмином к машине, и дождатся полного затишья на ней. Тоесть что бы там никого не было. После чего вызовите Task Manager и посмотрите на подозрительные проги типа ezkiyeq.exe , svcroot.exe, update001.exe, winupdt0.exe etc...

Найдите этот файл. Скопируйте к себе и плюньте на ту тачку. Теперь вам надо будет протроянить самих себя. Вам нужен будет IRIS Sniffer. Запускайте сниффер, выставляйте снифф-фильтр на слова USER IRC SERVER NICK IDENT 6667 и активируйте сниффер. После чего запускайте трой и следите за сниффом. Он вам скажет что происходит - куда трой коннектится, на какой канал заходит.

Впринципе этой инфы достаточно что бы отрапортавать ФБР, или ФСБ. Просто напишите им письмо.. После чего сеть пропадет.

Для извратов, попробуйте подключится к серверу юзая мирку и зайти на тот канал. Если его mode не +m, то вам повезло smile.gif Главное изначально прикинутся ботом. Ждите комманд от ботовода. Когда он пошлет что то типа .login mylamepassword, набирите тоже самое и наберите .remove smile.gif
. - место . может быть ! @ # $ % ^ & * ( ) ` etc ...

Главное юзайте прокси. .remove уничтожит весь его ботнет (ботовода).

Установка mod_evasive и mod_dosevasive

# wget http://www.zdziarski.com/projects/mo..._1.10.1.tar.gz
# tar -xzvf mod_evasive_1.10.1.tar.gz
# cd mod_evasive

# /usr/local/apache/bin/apxs -i -a -c mod_evasive.c
# /etc/init.d/httpd restart


Редактирование конфига апача

# vi /usr/local/apache/conf/httpd.conf

-------------------------------------------------
<IfModule mod_evasive.c>
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
</IfModule>
-------------------------------------------------


Перезапуск вэбсервера

# /etc/init.d/httpd restart


Оптимизация конфига httpd.conf

# vi /usr/local/apache/conf/httpd.conf

исправить значения у оригинала

MaxKeepAliveRequests 50 (100)
KeepAliveTimeout 60 (30)

после этого отредактировать значения

Timeout
KeepAliv
MinSpareServers
MaxSpareServers
MaxClients

Timeout луче поставить 15

у кого APF можно поставить мини скрипт защиты от ддос
# wget http://www.inetbase.com/scripts/ddos/install.sh
# sh install.sh
не забудте добавить его в крон
кто не знает
# crontab -e
*/5 * * * * /usr/local/ddos/ddos.sh >/dev/null 2>&1



и наконец
ручная блокировка )))
поиск айпишек
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
и их блок
# iptables -I INPUT -s АЙПИАДРЕС -j DROP
# service iptables save
# service iptables restart

и блок в APF
# vi /etc/apf/deny_hosts.rules
<Add the IPs at the end>

# service apf restart

P.S. большинство хостеров используют APF
кому интересно напишу как установить

для апача можно еше использовать mod_limitipconn
http://dominia.org/djao/limitipconn.html
но с виртуалхостами у него тяжко


(c) nulled.ws

kezz
08.07.2009, 13:45
Скрипт защиты от ДДОС атаки - Klavasoft AntiDDOS

Скрипт Klavasoft AntiDDOS

Скрипт Klavasoft AntiDDOS используется для защиты сайта от DDOS атаки по линии HTTP. Разумеется, скрипт не претендует на звание универсального и полного защитника от DDOS - для этих целей лучше использовать оборудование, стоимость которого измеряется десятками тысяч долларов. Если у вас нет такого оборудавания, но есть доступ к настройкам сервера, то вы также сможете обеспечить более эффективную защиту от DDOS, чем та, что предоставляет этот скрипт. А вот защитить виртуальны аккаунт от легонького любительского DDOSa этот скрипт вполне сможет, а такие ДДОС атаки встречаются наиболее часто ввиду дороговизны полномасштабных мероприятий.

Немного о реализации защиты от ДДОС

Скрипт хранит в разделяемой памяти списки времен заходов с каждого IPa за последнее время. Если количество заходов в таком списке превысит определенный уровень, посетителю выдается техническая страница, которая информирует его о загруженности сервера и автоматически повторяет запрос страницы через некоторое время.
Вот пример такой страницы:


<html>
2.<meta http-equiv='refresh' content='20'>
3.<body>
4.<h2>Our server is currently overloaded, your request will be repeated automatically in 20 seconds</h2>


В 3-й версии скрипта реализована блокировка всей сети класса C, что многократно повышает эффективность скрипта, так как часто бывает инфицированна вся сетка компьютеров, осуществляющих DDOS. Такой режим включен по умолчанию, и отменить его можно установкой поля block_cnet объекта в false.

Настройка.

Все упомянутые параметры поддаются настройке. Вот развернутый вариант ее:


<?
02.

03.// пример использования скрипта Klavasoft AntiDDOS
04.

05.include "$_SERVER[DOCUMENT_ROOT]/ks_antiddos.php";
06.$ksa = new ks_antiddos();
07.

08.// скрипт анализирует активность текущего ИПа за последние $seconds_limit секунд
09.$seconds_limit = 20;
10.// считая заходы свыше $hit_limit - подлежащими блокированию
11.$hits_limit = 10;
12.

13.// скрипт определяет статус посетителя ($ks->visitor) как:
14.// raw - посетитель бы по каким-либо причинам не обработан скриптом
15.// new - это первый заход посетителя за последние $seconds_limit секунд
16.// cool - количество заходов посетителя - от 2 до $ksa->warm_level
17.// hot - количество заходов больше чем hits_limit и посетитель должен быть заблокирован (приостановлен)
18.

19.// опционально можно сделать настройки
20.$ksa->auto = false; // не проводить блокирования hot-посетителей скриптом (вы предполагаете сами это сделать)
21.$ksa->warm_level = 3; // значение warm_level по умолчанию - $hits_limit/2
22.$ksa->delay = 10; // предлагать 'hot' посетителю вернуться через $ksa->delay секунд
23.
// значение по умолчанию - 20
24.

25.

26.// определяем статус посетителя
27.$ksa->doit($seconds_limit,$hits_limit);
28.// если вы не сбросили значение поля $ksa->auto и статус посетителя $ksa->visitor=='hot'
29.// то скрипт отправит браузеру headers and HTML которые организуют задержку перед повторным запросом.
30.

31.// если $ksa->auto == false, то проверяем надо ли банить посетителя
32.if ($ksa->visitor=='hot')
33.{
34.
header('HTTP/1.0 503 Service Unavailable');
35.
header('Status: 503 Service Unavailable');
36.
header('Retry-After: 30');
37.
die('sleep');
38.}
39.

40.$lite_version = $ksa->visitor=='warm'; // по этой переменной можно отдавать "теплым" посетителям
41.
// облегченную версию сайта
42.

43.?>


А если вкратце, то достаточно вставить в хэдер сайта такой код


include "$_SERVER[DOCUMENT_ROOT]/ks_antiddos.php";
2.$ksa = new ks_antiddos();
3.$ksa->doit(20,10);



в предположении, что скрипт располагается в корневой папке вашего сайта.

Технические требования

Хотя судя по мануалу, функции работы с разделяемой памятью доступны во всех версиях PHP, случаются хостинги без средств межпроцессного взаимодействия. Чтобы выяснить, будет ли скрипт работать на вашем хостинге, вызовите функцию


shm_attach();

и если вы не получите

Fatal error: Call to undefined function: shm_attach() in...


то пациент жить будет :)

Для просмотра и удаления списка фрагментов разделяемой памяти требуется доступ к командной строке. Заметим, что что эта функция не критически важна - скрипт отлично работает без просмотра админом данных о разделяемой памяти. Более того, если доступа к командной строке нет - скрипт все равно способен удалить область расширенной памяти. (Которая, вобщем-то и так сканчается при ближайшей перезагрузке)

Для доступа к разделяемой памяти не используются семафоры, поскольку зависание семафора способно заблокировать весь трафик. Время выполнения скрипта - пол миллисекунды и вероятность накладки ничтожна. И, конечно, в таких случаях скрипт нормально восстанавливается.


Файлы

KS Antiddos ver 2.1 (zip) (http://klavasoft.com/codefiles/ksantiddos21.zip)

KS Antiddos ver 3.0 (zip) (http://klavasoft.com/codefiles/ksantiddos30.zip)

(c) + оффсайт klavasoft.com

it's my
08.07.2009, 13:45
http://dd0s.blogspot.com/
ANTI DDOS. ЗАЩИТА ОТ DDOS
ВСЕ БОЛЕЕ АКТУАЛЬНЕЕ СТАЕТ ВОПРОС О ЗАЩИТЕ СЕРВЕРОВ ОТ DDOS АТАК. КАК БОРОТЬСЯ С ЗОМБИ СЕТЯМИ КОТОРЫЕ АТАКУЮТ ВАШ СЕРВЕР. ЗАЩИТА НА УРОВНЕ СОФТА, ЯДРА. ИДЕНТИФИКАЦИЯ БОТОВ И БЛОКИРОВКА АТАКУЮЩИХ АЙ-ПИ СЕТЕЙ. DDOS И DOS. КАКИХ РАЗМЕРОВ ДОСТИГАЮТ СОВРЕМЕННЫЕ БОТНЕТЫ И МНОГО ПОЛЕЗНОЙ ИНФОРМАЦИИ ПО ДАННОЙ ТЕМЕ ВЫ НАЙДЕТЕ НА МОЕМ БЛОГЕ.

http://avy.ru/programs/antiddos/ <- ОГРАНИЧЕНИЕ ВЫДАЧИ СТРАНИЦ

-Gory King-
08.07.2009, 15:40
Защит от Атак DOS

Атаки DoS - это бедствие нынешнего виртуального мира, приводящие в хаос
мощные вычислительные системы. Борьба с ними усложняется еще и тем, что
все эти атаки подчас невозможно отразить иначе, кроме как закрытием всех се-
тевых соединений атакованного хоста, что очень часто неприемлемо по финан-
совым соображениям. Тем не менее, отмечается, что иногда выгоднее уве-
личить мощности компьютерной системы, подверженной атакам DoS, чем за-
крыть к ней доступ, скажем, остановить работу Web-сервера организации.
Расчет здесь строится на истощение ресурсов атакующей стороны, которой про-
сто не удастся превзойти ресурсы Web-сервера. Другое важное средство защи-
ты - переход на современные операционные системы и программное обеспече-
ние, которое «осведомлено» о последних изобретениях по части атак DoS.
Однако все это может не устоять перед атакой DDoS - хакер, овладевший таки-
ми средствами, может стать воистину всемогущим, поскольку нет такого серве-
ра, который мог бы устоять перед атакой, идущей со всех сторон земного шара с неопределенно большого числа комьютеров-зомби.
Вместо настройки системы защиты сервера, усиления ресурсов подверженного
атакам компьютера, В ответ на
атаку DDoS, использующей сотни и тысячи «зомби», Foundstone предлагает са-
мому перейти в наступление и заглушить работу «зомби» встречной атакой.
Для выполнения такой контратаки сотрудник фирма Foundstone, разработала и предоставила всем желающим возможность
загрузить на сайте http://www.foundstone.com бесплатную утилиту DDoSPing 2.0,
которая выполняет тестирование компьютера на предмет наличия в нем програм-
мы-зомби. Далее работу выявленного зомби можно заглушить, воспользовавшись
программой флудера UDP, «Флудер UDP» .Другой, не менее популярной утилитой для выявления компьютеров-зомби
является программа Zombie Zapper (http://razor.bindview.com/tools/
ZombieZapper__form.shtml), которая как раз и является творцом атаки WinTrinoo.
Однако в отличие от DDoSPing 2.0, программа Zombie Zapper не позволяет вы-
полнять настройку тестирования хостов и не снабжена такими удобными сред-
ствами наблюдения за ходом проверки, как DDoSPing 2.O.

Fata1ex
08.07.2009, 15:44
Огромная просьба указывать копирайты (-Gory King-) и не выкладывать рекламу (Fristail). Не стоит тут постить о сервисах, предоставляющих услуги защиты от ддоса!

Andres
08.07.2009, 19:24
DDOS-атаки и методы борьбы с ними.

Данная статья писалась с целью объяснить простому вебмастеру, как происходит DDOS, и как с ним бороться.

Определение: DDoS атака - сокращение от «Distributed Denial Of Service Attack»

При помощи этих атак временно падали крупнейшие и известнейшие компании, такие как Yahoo!, eBay, Buy.com, Amazon.com, CNN.com и целый ряд других ...

Я не буду жевать сопли и напишу то, о чем как правило никто не никогда не пишет в статьях про DDoS.

В основном то что мы видим в сети это поверхностные описания удачных атак, или вопли пострадавших от них.

1) Цель и принцип DDoS

# Цель DDoS вывести обьект атаки из рабочего состояния что может повлечь за собой большие финансовые потери во время дауна или расходы на оборудование для защиты от него и з/п специалистов. Любой вебмастер понимает, что даун его сайтов на 2-3 часа нанесет серьезный вред бизнесу, а если на неделю, то ресурс скорее всего придется поднимать с нуля снова . Я вообще не говорю о владельцах платных сайтов и серьезных Е-комерс ресурсов, чьи убытки могут составлять десятки тысяч долларов в день.

# Технология DDoS атак подразумевает метод грубой силы - вы тем или иным способом пытаетесь "забить" канал, открывая максимально возможное количество соединений на тот или иной сервис или отправки огромного кол-ва информации которое сервер не в состоянии обработать. все это ведет к потере скорости или полной остановке (зависанию) атакуемого ресурса.

2) DDoS - это Distributed атака то есть распространенная, когда вас атакует не один сервер от которого можно легко закрыться фаирволом, а сразу тысячи или десятки тыс., иногда могут быть сотни тысяч и миллионы атакующих ботов ( многие называют их зомби )

Что есть зомби?

Зомби - это зараженный программой (или сломанный) компьютер или сервер, который будет выполнять команды управляющего сервера.

Как компьютер становится зомби?

Зомби создаются как правило используя эксплоиты для ОС. Заражая машины через веб браузер при посещении сайтов, при получении почты, или через установку программного обеспечения с установленными в него троянами.

Как много может быть зомби?

Cуществуют дыры которые до сих пор не закрыты и иногда процент заражаемости трафика может достигать 80 % всего трафика на сайте, спам может рассылаться огромными тиражами и как результат мы имеем десятки тысяч зомби.

В зависимости от совершенства кода на самом зомби они могут выполнять разные типы запросов на сервера, иногда делая себя совсем не видимыми для фаирвола или сложно отличимыми от реального серфера, что разумеется усложняет борьбу с ними.

Типы атак я описывать не стану они очень сильно варьируются от старинных типа пинг и syn флуда до новых разработанных персонально для новой атаки.

Все они ведут к тому что сервер ложится как правило и попытки его вернуть к жизни заканчиваются тем, что он снова лежит.

В общем довольно грустная история с DDOS атаками. Многие хостеры просто выключают сервера в случае обнаружения атаки. Это демонстрирует то, что они не могут реально ничего с ними поделать.

Борьба с DDoS

Это самый наверное интересный кусочек, а так же самый сложный.

Самое сложное в том что борьба с DDoS в 98 % случаев ложится на плечи вебмастера, так как провайдеры в большинстве своем просто бьют болт и стандартная схема у них, это поставить на нуль роутинг ваши ip и таким образом для них проблема DDoS решена. Вебмастера такое решение не очень радует, так как его сайты при этом ложатся вообще.

Конечно, есть продвинутые провайдеры, которые могут посодейтвовать в борьбе, но это редкость и опять же наджо будет им платить пятизначные цифры что бы иметь какое то влияние на них. Так что остается решать проблемы самому, о том как их решать я и расскажу вам.

1) На уровне сервера. Сервер должен иметь удаленный ребут и вывод консоли сервера на другой ip адрес по ssh протоколу. Это позволит вам быстро перезагружать сервер, что бывает более чем нужно в самом начале DDOS атаки. Вывод консоли позволит полностью выключить ssh на сервере. Это необходимо потому, что его тоже очень часто досят вместе например с вебсервером, что бы усложнить работу админа сервера или сделать сервер вовсе не доступным для администрации.

2) На уровне сервисов сервера. Секюрити аудит – must be, то-есть, по-русски, должен быть сделан, все сервисы машины должны быть отпатчены от всех известных и не известных дырок. О тюнинге веб сервера под DDoS атаками можно писать целую книгу, поэтому я не буду лишать себя куска хлеба. :)

3) На уровне сети. Для начала блокируются все то, что может дать больше инфы атакующему о вас. Блокируется пинг и трейс. Сервер убирается под NAT. Маскируется его ip как только это возможно. Это уже очень професиональный способ защиты сервера путем прятания его ip адреса. Применяется в многих платных системах защиты от DDOS.

4) На уровне провайдера. Через анализ пакетов или через блокирование ip адресов.

5) На уровне железа. Применяя хардварные решения от ведущих фирм производителей типа Сisco, 3com, Nortel и тп. Данные решения борьбы на аппаратном уровне потребуют больших финансовых затрат от 10к и выше. Комплексные решения обойдутся около 50-80 тыс долларов. Так же сюда можно отнести производителей 3rd party оборудования для хардварной защиты. Большая их часть действует по принципу анализа пакетов и дальнейшей их фильтрации где нужный пакеты проходят к серверу, а ненужные фильтруются и сегменты сети откуда они пришли блокируются роутером или фаирволом. Более продвинутые системы умеют прятать ваш сервер полностью и в сети никогда не встретится его ip адрес и его прямое сканирование и DDoS атака невозможны.

6) На уровне админов вашего сервера. Используя логи фаирвола сервера вы видите кучу ip адресов откуда на вас идут атаки. Вы можете анализировать его и искать уязвимые рабочие станции среди них, из 10000 машин 1-3 обязательно окажутся доступными для того что бы по ним полазить. Вы можете найти самого зомбика который осуществляет атаку на вас. Далее его можно попытаться поковырять, чтобы найти кто пускает атаки на вас и если повезет найти контрольный сервер и как вариант контратаковать его. Хотя такое будет не возможно если DDOS атака не контролируемая, а например вирусная. Напомню, это когда вас атакуют рабочие станции которые были заражены предварительно и их действия не контролируются вручную, они не очень опасны так как если вы смените, например, ip и домен, то такая атака умрет сама.

7) Комбинированное использование всех систем.

В заключение хочу сказать что всё, что тут написано не покрывает и 80 % всех методов борьбы с DDOS и на эту тему работают очень много людей во всем мире. Так что я в этой небольшой статье не смогу описать всего, даже если очень захочу. Но, надеюсь, она вам немного поможет для понятия азов того, как необходимо бороться с DDoS атаками.

(с) magic

[Dead]Demon
22.11.2009, 16:04
Твое утро начинается с чтения багрепортов и анализа логов. Ты ежедневно обновляешь ПО и ежечасно дорабатываешь правила брандмауэра. Snort твой лучший друг, а Zabbix - невидимый помощник. Ты построил настоящий бастион, к которому не подобраться ни с одной стороны. Но! Ты совершенно беззащитен против самой коварной и подлой атаки на свете - DDoS.

Трудно сказать, когда впервые появился термин DoS-атака. Специалисты говорят о 1996-м, попутно намекая, что до широких масс этот тип атак "дошел" только в 1999 году, когда один за другим попадали web-сайты Amazon, Yahoo, CNN и eBay. Еще раньше DoS-эффект использовали для тестирования устойчивости систем и каналов связи. А если копнуть глубже и воспользоваться термином DoS для обозначения явления, то становится ясно, что он существовал всегда, со времен первых мейнфреймов. Вот только задумываться о нем как о средстве устрашения начали гораздо позже.

Говоря простым языком, DoS-атаки - это некоторый вид злонамеренной деятельности, ставящей своей целью довести компьютерную систему до такого состояния, когда она не сможет обслуживать правомерных пользователей или правильно выполнять возложенные на нее функции. К состоянию "отказ в обслуживании" обычно приводят ошибки в ПО или чрезмерная нагрузка на сетевой канал или систему в целом. В результате чего ПО, либо вся операционная система машины, "падает" или же оказывается в "зацикленном" состоянии. А это грозит простоями, потерей посетителей/клиентов и убытками.
Анатомия DoS-атак

DoS-атаки подразделяются на локальные и удаленные. К локальным относятся различные эксплойты, форк-бомбы и программы, открывающие по миллиону файлов или запускающие некий циклический алгоритм, который сжирает память и процессорные ресурсы. На всем этом мы останавливаться не будем. А вот удаленные DoS-атаки рассмотрим подробнее. Они делятся на два вида:

1. Удаленная эксплуатация ошибок в ПО с целью привести его в нерабочее состояние.
2. Flood - посылка на адрес жертвы огромного количества бессмысленных (реже – осмысленных) пакетов. Целью флуда может быть канал связи или ресурсы машины. В первом случае поток пакетов занимает весь пропускной канал и не дает атакуемой машине возможность обрабатывать легальные запросы. Во втором - ресурсы машины захватываются с помощью многократного и очень частого обращения к какому-либо сервису, выполняющему сложную, ресурсоемкую операцию. Это может быть, например, длительное обращение к одному из активных компонентов (скрипту) web-сервера. Сервер тратит все ресурсы машины на обработку запросов атакующего, а пользователям приходится ждать.

В традиционном исполнении (один атакующий - одна жертва) сейчас остается эффективным только первый вид атак. Классический флуд бесполезен. Просто потому что при сегодняшней ширине канала серверов, уровне вычислительных мощностей и повсеместном использовании различных анти-DoS приемов в ПО (например, задержки при многократном выполнении одних и тех же действий одним клиентом), атакующий превращается в надоедливого комара, не способного нанести какой бы то ни было ущерб. Но если этих комаров наберутся сотни, тысячи или даже сотни тысяч, они легко положат сервер на лопатки. Толпа - страшная сила не только в жизни, но и в компьютерном мире. Распределенная атака типа "отказ в обслуживании" (DDoS), обычно осуществляемая с помощью множества зомбифицированных хостов, может отрезать от внешнего мира даже самый стойкий сервер, и единственная эффективная защита - организация распределенной системы серверов (но это по карману далеко не всем, привет Google).
Методы борьбы

Опасность большинства DDoS-атак – в их абсолютной прозрачности и "нормальности". Ведь если ошибка в ПО всегда может быть исправлена, то полное сжирание ресурсов - явление почти обыденное. С ними сталкиваются многие администраторы, когда ресурсов машины (ширины канала) становится недостаточно, или web-сайт подвергается слэшдот-эффекту (twitter.com стал недоступен уже через несколько минут после первого известия о смерти Майкла Джексона). И если резать трафик и ресурсы для всех подряд, то спасешься от DDoS, но потеряешь добрую половину клиентов.

Выхода из этой ситуации фактически нет, однако последствия DDoS-атак и их эффективность можно существенно снизить за счет правильной настройки маршрутизатора, брандмауэра и постоянного анализа аномалий в сетевом трафике. В следующей части статьи мы последовательно рассмотрим:

* способы распознавания начинающейся DDoS-атаки;
* методы борьбы с конкретными типами DDoS-атак;
* универсальные советы, которые помогут подготовиться к DoS-атаке и снизить ее эффективность.

В самом конце будет дан ответ на вопрос: что делать, когда началась DDoS-атака.
Борьба с flood-атаками

Итак, существует два типа DoS/DDoS-атак, и наиболее распространенная из них основана на идее флуда, то есть заваливания жертвы огромным количеством пакетов. Флуд бывает разным: ICMP-флуд, SYN-флуд, UDP-флуд и HTTP-флуд. Современные DoS-боты могут использовать все эти виды атак одновременно, поэтому следует заранее позаботиться об адекватной защите от каждой из них.
1. ICMP-флуд.

Очень примитивный метод забивания полосы пропускания и создания нагрузок на сетевой стек через монотонную посылку запросов ICMP ECHO (пинг). Легко обнаруживается с помощью анализа потоков трафика в обе стороны: во время атаки типа ICMP-флуд они практически идентичны. Почти безболезненный способ абсолютной защиты основан на отключении ответов на запросы ICMP ECHO:
# sysctl net.ipv4.icmp_echo_ignore_all=1
Или с помощью брандмауэра:
# iptables -A INPUT -p icmp -j DROP --icmp-type 8
2. SYN-флуд.

Один из распространенных способов не только забить канал связи, но и ввести сетевой стек операционной системы в такое состояние, когда он уже не сможет принимать новые запросы на подключение. Основан на попытке инициализации большого числа одновременных TCP-соединений через посылку SYN-пакета с несуществующим обратным адресом. После нескольких попыток отослать ответный ACK-пакет на недоступный адрес большинство операционок ставят неустановленное соединение в очередь. И только после n-ой попытки закрывают соединение. Так как поток ACK-пакетов очень велик, вскоре очередь оказывается заполненной, и ядро дает отказ на попытки открыть новое соединение. Наиболее умные DoS-боты еще и анализируют систему перед началом атаки, чтобы слать запросы только на открытые жизненно важные порты. Идентифицировать такую атаку просто: достаточно попробовать подключиться к одному из сервисов. Оборонительные мероприятия обычно включают в себя:

Увеличение очереди "полуоткрытых" TCP-соединений:
# sysctl -w net.ipv4.tcp_max_syn_backlog=1024
Уменьшение времени удержания "полуоткрытых" соединений:

# sysctl -w net.ipv4.tcp_synack_retries=1

Включение механизма TCP syncookies:
# sysctl -w net.ipv4.tcp_syncookies=1
Ограничение максимального числа "полуоткрытых" соединений с одного IP к конкретному порту:
# iptables -I INPUT -p tcp --syn --dport 80 -m iplimit --iplimit-above 10 -j DROP
3. UDP-флуд.

Типичный метод захламления полосы пропускания. Основан на бесконечной посылке UDP-пакетов на порты различных UDP-сервисов. Легко устраняется за счет отрезания таких сервисов от внешнего мира и установки лимита на количество соединений в единицу времени к DNS-серверу на стороне шлюза:
# iptables -I INPUT -p udp --dport 53 -j DROP -m iplimit --iplimit-above 1
4. HTTP-флуд.

Один из самых распространенных на сегодняшний день способов флуда. Основан на бесконечной посылке HTTP-сообщений GET на 80-ый порт с целью загрузить web-сервер настолько, чтобы он оказался не в состоянии обрабатывать все остальные запросы. Часто целью флуда становится не корень web-сервера, а один из скриптов, выполняющих ресурсоемкие задачи или работающий с базой данных. В любом случае, индикатором начавшейся атаки будет служить аномально быстрый рост логов web-сервера.

Методы борьбы с HTTP-флудом включают в себя тюнинг web-сервера и базы данных с целью снизить эффект от атаки, а также отсеивание DoS-ботов с помощью различных приемов. Во-первых, следует увеличить максимальное число коннектов к базе данных одновременно. Во-вторых, установить перед web-сервером Apache легкий и производительный nginx – он будет кэшировать запросы и отдавать статику. Это решение из списка "must have", которое не только снизит эффект DoS-атак, но и позволит серверу выдержать огромные нагрузки. Небольшой пример:

# vi /etc/nginx/nginx.conf
# Увеличиваем максимальное количество используемых файлов
worker_rlimit_nofile 80000;
events {
# Увеличиваем максимальное количество соединений
worker_connections 65536;
# Использовать эффективный метод epoll для обработки соединений
use epoll;
}
http {
gzip off;
# Отключаем таймаут на закрытие keep-alive соединений
keepalive_timeout 0;
# Не отдавать версию nginx в заголовке ответа
server_tokens off;
# Сбрасывать соединение по таймауту
reset_timedout_connection on;
}
# Стандартные настройки для работы в качестве прокси
server {
listen 111.111.111.111 default deferred;
server_name host.com www.host.com;
log_format IP $remote_addr;
location / {
proxy_pass http://127.0.0.1/;
}
location ~* \.(jpeg|jpg|gif|png|css|js|pdf|txt|tar)$ {
root /home/www/host.com/httpdocs;
}
}

В случае необходимости можно задействовать nginx-модуль ngx_http_limit_req_module, ограничивающий количество одновременных подключений с одного адреса (http://sysoev.ru/nginx/docs/http/ngx_http_limit_req_module.html). Ресурсоемкие скрипты можно защитить от ботов с помощью задержек, кнопок "Нажми меня", выставления кукисов и других приемов, направленных на проверку "человечности".
Универсальные советы

Чтобы не попасть в безвыходное положение во время обрушения DDoS-шторма на системы, необходимо тщательным образом подготовить их к такой ситуации:

1. Все сервера, имеющие прямой доступ во внешнюю сеть, должны быть подготовлены к простому и быстрому удаленному ребуту (sshd спасет отца русской демократии). Большим плюсом будет наличие второго, административного, сетевого интерфейса, через который можно получить доступ к серверу в случае забитости основного канала.
2. ПО, используемое на сервере, всегда должно находиться в актуальном состоянии. Все дырки - пропатчены, обновления установлены (простой, как сапог, совет, которому многие не следуют). Это оградит тебя от DoS-атак, эксплуатирующих баги в сервисах.
3. Все слушающие сетевые сервисы, предназначенные для административного использования, должны быть спрятаны брандмауэром ото всех, кто не должен иметь к ним доступ. Тогда атакующий не сможет использовать их для проведения DoS-атаки или брутфорса.
4. На подходах к серверу (ближайшем маршрутизаторе) должна быть установлена система анализа трафика (NetFlow в помощь), которая позволит своевременно узнать о начинающейся атаке и вовремя принять меры по ее предотвращению.

Добавь в /etc/sysctl.conf следующие строки:

# vi /etc/sysctl.conf
# Защита от спуфинга
net.ipv4.conf.default.rp_filter = 1
# Проверять TCP-соединение каждую минуту. Если на другой стороне - легальная машина, она сразу ответит. Дефолтовое значение - 2 часа.
net.ipv4.tcp_keepalive_time = 60
# Повторить пробу через десять секунд
net.ipv4.tcp_keepalive_intvl = 10
# Количество проверок перед закрытием соединения
net.ipv4.tcp_keepalive_probes = 5

Следует отметить, что все приемы, приведенные в прошлом и этом разделах, направлены на снижение эффективности DDoS-атак, ставящих своей целью израсходовать ресурсы машины. От флуда, забивающего канал мусором, защититься практически невозможно, и единственно правильный, но не всегда осуществимый способ борьбы заключается в том, чтобы "лишить атаку смысла". Если ты заимеешь в свое распоряжение действительно широкий канал, который легко пропустит трафик небольшого ботнета, считай, что от 90% атак твой сервер защищен. Есть более изощренный способ защиты. Он основан на организации распределенной вычислительной сети, включающей в себя множество дублирующих серверов, которые подключены к разным магистральным каналам. Когда вычислительные мощности или пропускная способность канала заканчиваются, все новые клиенты перенаправляются на другой сервер (или же постепенно "размазываются" по серверам по принципу round-robin). Это невероятно дорогая, но очень стойкая структура, завалить которую практически нереально.

Другое более-менее эффективное решение заключается в покупке дорогостоящих хардварных систем Cisco Traffic Anomaly Detector и Cisco Guard. Работая в связке, они могут подавить начинающуюся атаку, но, как и большинство других решений, основанных на обучении и анализе состояний, дают сбои. Поэтому следует хорошенько подумать перед тем, как выбивать из начальства десятки тысячи долларов на такую защиту.
Кажется, началось. Что делать?

Перед непосредственным началом атаки боты "разогреваются", постепенно наращивая поток пакетов на атакуемую машину. Важно поймать момент и начать активные действия. Поможет в этом постоянное наблюдение за маршрутизатором, подключенным к внешней сети (анализ графиков NetFlow). На сервере-жертве определить начало атаки можно подручными средствами.

Наличие SYN-флуда устанавливается легко - через подсчет числа "полуоткрытых" TCP-соединений:
# netstat -na | grep ":80\ " | grep SYN_RCVD

В обычной ситуации их не должно быть совсем (или очень небольшое количество: максимум 1-3). Если это не так - ты атакован, срочно переходи к дропанью атакующих.

С HTTP-флудом несколько сложнее. Для начала нужно подсчитать количество процессов Apache и количество коннектов на 80-ый порт (HTTP-флуд):

# ps aux | grep httpd | wc -l
# netstat -na | grep ":80\ " | wc -l

Значения, в несколько раз превышающие среднестатистические, дают основания задуматься. Далее следует просмотреть список IP-адресов, с которых идут запросы на подключение:
# netstat -na | grep ":80\ " | sort | uniq -c | sort -nr | less

Однозначно идентифицировать DoS-атаку нельзя, можно лишь подтвердить свои догадки о наличии таковой, если один адрес повторяется в списке слишком много раз (да и то, это может говорить о посетителях, сидящих за NAT'ом). Дополнительным подтверждением будет анализ пакетов с помощью tcpdump:
# tcpdump -n -i eth0 -s 0 -w output.txt dst port 80 and host IP-сервера

Показателем служит большой поток однообразных (и не содержащих полезной информации) пакетов от разных IP, направленных на один порт/сервис (например, корень web-сервера или определенный cgi-скрипт).

Окончательно определившись, начинаем дропать неугодных по IP-адресам (будет гораздо больше эффекта, если ты сделаешь это на маршрутизаторе):
# iptables -A INPUT -s xxx.xxx.xxx.xxx -p tcp --destination-port http -j DROP

Или сразу по подсетям:
# iptables -A INPUT -s xxx.xxx.0.0/16 -p tcp --destination-port http -j DROP
Это даст тебе некоторую фору (совсем маленькую; зачастую IP-адрес источника спуфится), которую ты должен использовать для того, чтобы обратиться к провайдеру/хостеру (с приложенными к сообщению логами web-сервера, ядра, брандмауэра и списком выявленных тобой IP-адресов). Большинство из них, конечно, проигнорируют это сообщение (а хостинги с оплатой трафика еще и порадуются - DoS-атака принесет им прибыль) или просто отключат твой сервер. Но в любом случае это следует сделать обязательно, – эффективная защита от DDoS возможна только на магистральных каналах. В одиночку ты справишься с мелкими нападками, направленными на истощение ресурсов сервера, но окажешься беззащитным перед более-менее серьезным DDoS'ом.
Борьба с DDoS во FreeBSD

Уменьшаем время ожидания ответного пакета на запрос SYN-ACK (защита от SYN-флуда):
# sysctl net.inet.tcp.msl=7500
Превращаем сервер в черную дыру. Так ядро не будет слать ответные пакеты при попытке подключиться к незанятым портам (снижает нагрузку на машину во время DDoS'а на случайные порты):

# sysctl net.inet.tcp.blackhole=2
# sysctl net.inet.udp.blackhole=1

Ограничиваем число ответов на ICMP-сообщения 50-ю в секунду (защита от ICMP-флуда):

# sysctl net.inet.icmp.icmplim=50

Увеличиваем максимальное количество подключений к серверу (защита от всех видов DDoS):

# sysctl kern.ipc.somaxconn=32768

Включаем DEVICE_POLLING - самостоятельный опрос сетевого драйвера ядром на высоких нагрузках (существенно снижает нагрузку на систему во время DDoS'а):

1. Пересобираем ядро с опцией "options DEVICE_POLLING";
2. Активируем механизм поллинга: "sysctl kern.polling.enable=1";
3. Добавляем запись "kern.polling.enable=1" в /etc/sysctl.conf.

Наивный Internet

Во времена своего рассвета DoS-атаки были настоящей катастрофой для серверов и обычных рабочих станций. Web-сайт можно было легко завалить с помощью одного-единственного хоста, реализующего атаку типа Smurf. Рабочие станции с установленной ОС Windows падали, как доминошки, от атак типа Ping of Death, Land, WinNuke. Сегодня всего этого не стоит опасаться.
Крупнейшие ботнеты

Kraken - 400 тысяч компьютеров.
Srizbi - 315 тысяч компьютеров.
Bobax - 185 тысяч компьютеров.
Rustock - 150 тысяч компьютеров.
Storm - 100 тысяч компьютеров.
Psybot - 100 тысяч ADSL-маршрутизаторов, основанных на Linux.
Ботнет BBC - 22 тысячи компьютеров. Экспериментальный ботнет, созданный компанией BBC.
След в истории

1997 год - DDoS-атака на web-сайт Microsoft. Один день молчания.
1999 год – "вне зоны действия" оказались web-сайты Yahoo, CNN, eBay и др.
Октябрь 2002 - атака на корневые DNS-серверы интернета. На некоторое время были выведены из строя 7 из 13 серверов.
21 февраля 2003 года - DDoS-нападение на LiveJournal.com. Два дня сервис находился в парализованном состоянии, лишь иногда подавая признаки жизни.
Интеллектуальные системы

Интересную альтернативу решениям Cisco выпускает компания Reactive Networks (www.reactivenetworks.com). Их продукт под названием FloodGuard представляет собой аппаратный комплекс, состоящий из детекторов и исполнительных модулей. Детекторы, установленные на брандмауэрах, маршрутизаторах и свитчах, постоянно мониторят трафик и создают его профиль на основе таких параметров, как объем пакетов, источник, направление, тип и т.д. В случае возникновения аномалий детектор посылает все подробности о произошедшем исполнительным модулям, располагающимся на маршрутизаторах в разных сегментах сети. Получив сообщение от детектора, исполнительные модули начинают действовать: они отыскивают паразитный трафик в проходящих пакетах и, в случае удачи, оповещают об этом предыдущие по ходу трафика модули и посылают им инструкции по активации фильтров на маршрутизаторах. В результате, перед потоком флуд-трафика должен образоваться заслон, который будет быстро перемещаться в сторону его источника.

Дата: 14.10.2009 Автор: Евгений Зобнин

Root-access
30.11.2009, 21:49
Одним из самых полезных инструментов для борьбы с ддосом является сниффер tcpdump. В этом топике эта тема не раскрыта, поэтому советую почитать статью небольшую статью про Anti-DDoS здесь: www.securitylab.ru/analytics/216251.php

c0n Difesa
05.01.2010, 14:19
Попытаюсь вкратце описать схему решения комплексной защиты от разных типов DDoS атак высокой интенсивности. Подобное решение успешно протестировано и функционирует на сервисе stop-ddos.net
Схема основывается на отделении системы защиты (фронтенда) от сервера приложений (бэкенда).

Существует 3 основных типа DDoS атак:

атака, направленная на переполнение ресурсов канала в интернет;
атака, направленная на превышение максимального количества одновременных соединений сервера (SYN флуд);
атака, направленная на исчерпание процессорных мощностей сервера (частое запрашивание страниц — HTTP флуд).

Решение должно обеспечивать защиту от каждого типа атаки.

Рисунок описываемой схемы находится в конце статьи.


Сетевой флуд

На сегодняшний день наиболее эффективным средством борьбы с обычным сетевым флудом является широкий канал. Канала в 10Gbps достаточно для отражения большинства атак этого типа.

Для того чтобы лишний раз не нагружать оборудование во время такой атаки, отсеиваем лишние пакеты на наши адреса. Например, защищаемый нами сервис живет на 80-м порту TCP. В таком случае пакеты с destination port отличным от 80 можно смело stateless фильтровать. Для этого вполне подойдет роутер уровня CISCO 7600.
Однако не забываем о резервном канале, шириной хотя бы 1Gbps.


SYN-флуд

От SYN флуда защищаемся с помощью statefull файрволов (SFFW).

В идеале — аппаратный файрвол (например, Juniper SRX 5800). В зависимости от предполагаемой мощности атаки подбирается нужное количество файрволов. На роутере, стоящем на входе нашей защиты, создается маршрут защищаемой нами сети (на схеме это 2.1.1.0/24) с next-hop адресом каждого SFFW.

Каждый SFFW имеет статический роут сети 1.1.1.0 на следующий роутер. На нем балансируется нагрузка между нодами последнего уровня защиты, являющие собой сервера с UNIX системой.
В данном случае удобно использовать протокол динамической маршрутизации BGP (при выходе одной ноды из строя нагрузка автоматически распределится между рабочими нодами). Таким образом, каждый сервер анонсирует роутеру маршрут к сети 1.1.1.0 с next-hop self.


HTTP-флуд

Пакеты, дошедшие до данного уровня защиты, попадают на реверс-прокси. Это должен быть прокси-сервер, способный отличить бота от настоящего клиента. Например, nginx с анализатором логов, количества одновременных соединений с адреса в комбинации с любыми другими методами придуманными или найденными Вами. Примеры таких решений уже публиковались на хабре.
На прокси-серверах настраиваем policy based routing как показано в примере. Это избавит запросы на бэкенд от вторичного прохождения через statefull firewall.

Теперь о бэкенде. Адрес, на который приходят запросы от фронтенда, должен отличатся от адреса, через который осуществляется управление сервером. В случае засвечивания management адреса (к примеру, письмом сгенерированным приложением), всегда можно выбросить management адрес в блэкхол и это не повлияет на работу приложения.
В реальности нет смысла в использовании такого количества роутеров как показано на схеме. Вместо этого рациональней использовать одно устройство в качестве роутера с несколькими таблицами маршрутизации (VRF, routing instances) или несколькими логическими роутерами.
Аппаратные stateful файрволы также можно исключить из данной схемы, а вместо них на прокси-серверах использовать PF в режиме SYN Proxy (PF в этом режиме показывает наилучшую производительность на родной OpenBSD, в случае Linux лучше вообще отказаться от PF, и просто протюнинговать sysctl нужным образом). Однако, количество серверов в этом случае придется увеличить.

Почта

Входящую почту выгоднее всего направить на гугловые МХ (пусть кто-то попробует их заддосить :) ), а потом забирать фетчмейлом обратно на сервер. DNS тоже лучше всего держать не у себя — крупные зарубежные регистраторы предоставляют достаточно отказоустойчивые кластера в качестве NS для купленных доменов. Также, за отдельную плату, можно разместить свой домен на их NS серверах.

http://farm5.static.flickr.com/4005/4183904159_e2a011bfe8_b.jpg

(c) http://habrahabr.ru/blogs/infosecurity/78145/

MAQUEEN
05.01.2010, 14:32
Как уберечься от DDoS-атак?



В один не самый прекрасный день любой из деловых сайтов может подвергнуться хакерской атаке, предпринятой с далеко не благими намерениями. Так например, 19 ноября ОАО “Центр развития экономики”, имеющее семилетий опыт ведения электронных торгов и более известное под именем B2B-Center, довело до сведения пользователей своей системы электронной торговли B2B-Center информацию о том, что на серверы этой системы производится мощная DDoS-атака, вследствие чего возможно увеличение времени отклика данной системы на действия пользователей.

В ОАО предполагают, что цель хакеров — дезорганизовать работу системы электронной торговли B2B-Center и нанести компании экономический ущерб. “В течение последних нескольких дней наша система презентуется в государственных органах и на специализированной выставке, поэтому есть основания полагать, что заказчиками данной атаки могут выступать конкуренты компании, которые не брезгуют незаконными способами борьбы за долю соответствующего рынка, — утверждает пресс-служба “Центра развития экономики”. — Данная ситуация не представляет угрозы для функциональности системы и проведения торговых процедур. Тем не менее, специалисты B2B-Center проводят оперативные мероприятия по установке лиц, причастных к организации хакерской атаки, а также предпринимают действия необходимые для стабилизации работы системы”.

На кого нацелены кибер-атаки?

Такого рода подозрения не лишены оснований, ведь против случайно выбранных Web-ресурсов DDoS-атаки не организуются. Более того, в последнее время много разговоров ведется о так называемых кибервойнах, к которым якобы уже сейчас готовятся 120 стран мира. Так может, на торговой системе B2B-Center спецслужбы испытывают новое кибероружие?

“Безусловно DDoS-атака, как метод, входит в арсенал кибервойны, — говорит ведущий специалист McAfee Алексей Чередниченко. — Не секрет, что данные атаки используются не только в конкурентной борьбе. Порой они заставляют замолчать политический голос или принимают формы ответных мер против правительственных мнений или правил. И такие акции стоят ближе к военным действиям, чем вывод из строя торговой системы, во всяком случае, до тех пор, пока на ней не базируется критическая масса экономически важных для страны процессов. В качестве примеров можно привести политически мотивированную атаку, чтобы заставить замолчать грузинский activist6 и угрозы против австралийского правительства. Но в данном случае совершенно очевидно, что это никакое не испытание, DDoS-атаки — метод давно испытанный и довольно совершенный. Он широко применяется киберпреступниками по всему миру”.

“Да, DDoS-атаки уже давно стали неотъемлемой частью нашей жизни, — соглашается с ним руководитель группы технических специалистов Symantec в России и СНГ Кирилл Керценбаум. — Для владельцев критически важных приложений, особенно Web-сервисов и Web-приложений, на сегодняшний день это фактически самая большая головная боль, Сегодня, при условии огромного парка ПК, а также с развитием технологий бот-сетей, организация DDoS-атаки является очень простой и достаточно дешевой задачей”.

На дешевизну и распространенность DDoS-атак указывает и аналитик компании “Доктор Веб” Валерий Ледовской: “В конкурентных войнах для получения прямой экономической выгоды DDoS-атаки в последние годы применяются очень часто. Многие крупные интернет-порталы в своей “жизни” хотя бы раз сталкивались с подобной проблемой. Эти атаки не требуют существенных вложений, методы их реализации уже отработаны злоумышленниками, а их относительная эффективность является определяющим фактором для дальнейшего распространения. В то же время далеко не всегда организаторами таких атак преследуются экономические цели. В частности, достаточно обратиться к примеру грузино-российского конфликта, когда DDoS-атаки использовались для блокировки сайтов крупнейших информационных агентств, чтобы ограничить поток той или иной информации”. Впрочем, с дешевизной хорошо спланированных распределенных DDoS-атак согласны не все. Но об этом чуть ниже.

Методы защиты от кибер-атак

Когда происходит какой-либо инцидент, то ищется ответ не столько на вопрос “Кто виноват?”, сколько на вопрос “Что делать, дабы такого рода ситуация больше не повторилась?” А в самом деле, что?

“DDoS-атака заключается в том, что на сервер идет очень много запросов и он попросту не справляется с их обработкой, — говорит генеральный директор компании S.Builder Дмитрий Новиков. — Противостоять такого рода атаке можно, но многое зависит от того, насколько грамотно она организована и с каким масштабом. Например, если сервер атакует небольшое количество серверов, то можно просто заблокировать их IP-адреса или пул этих адресов. Можно написать скрипт (или воспользоваться готовым программным обеспечением), который будет это делать автоматически. Но если атака идет, например, с сотен тысяч компьютеров по всему миру, которые просто заражены определенным вирусом, которым управляют злоумышленники, то такой атаке противостоять практически невозможно. Ведь это обычные компьютеры и их владельцы (хакеры поневоле) скорее всего понятия не имеют, что участвуют в атаке. Владельцы данных компьютеров ничем не отличаются от реальных посетителей сайта. Соответственно, здесь нужно только ждать и/или наращивать серверные мощности, чтобы они в единицу времени “переваривали” большее количество запросов. В идеале — все поступающие запросы, включая и запросы хакеров. Безусловно, если сайту для работы нужно много серверных ресурсов, то “положить” его DDoS-атакой гораздо проще. С другой стороны, “положить” можно даже статичный маленький сайт, просто для этого понадобится больше запросов”.

По мнению Валерия Ледовского, “наиболее эффективными средством против DDoS-атак является введение ограничений на создание множества одновременно посылаемых запросов к серверам, которые необходимо обрабатывать. Например, с помощью технологии CAPTCHA, т. е. автоматически генерируемых изображений, содержащих какой-либо набор символов, которые пользователь должен ввести для того, чтобы обработка его запроса началась. Но сама по себе генерация таких изображений может создать большую нагрузку на сервер, если запросов будет слишком много. На уровне хостера можно использовать различную фильтрацию запросов, т. е. автоматически определять запросы, которые являются частью атаки и блокировать их, не запрещая обращение к ресурсам сервера легальным пользователям”.

Однако не все так просто. “Чтобы эффективно противостоять DDoS-атаке, требуется, как правило, очень сложное и дорогостоящее оборудование и ПО, которое по причине отсутствия достаточного количества средств может быть просто недоступно компании, — отмечает Кирилл Керценбаум. — Поэтому, с учетом того, что DDoS-атаки в последнее время набирают популярность, особенно в области недобросовестной конкуренции, то борьба с ними в основной части ложится на плечи провайдеров, так как лишь единицы крупных компаний, в основном телекоммуникационной сферы, могут себе позволить делать это самостоятельно. Что касается данного случая, то пока рано говорить о том, в чем его причины и на ком лежит ответственность. Хотя, судя по всему, сервис остался доступен при определенных ограничениях или замедлениях в скорости обработки запросов. Это говорит о том, что либо DDoS-атака была не очень сильной, либо B2B-Center изначально с абсолютной серьезностью отнесся к построению отказоустойчивой и защищенной среды”.

А вот мнение Алексея Чередниченко: “Если говорить об уязвимостях, позволяющих злоумышленникам проводить успешные атаки, то опыт доказывает, что, в первую очередь, следует укреплять систему безопасности на уровне инфраструктуры хостинга. Существуют специализированные средства предотвращения DDoS-атак, их применение позволяет не только резко снизить последствия таких атак, но и успешно противостоять им. Другой подход, основанный на комплексной очистке интернет-трафика на стороне провайдеров, также позволит активно противодействовать DDoS атакам, распознавая и уничтожая “на лету” разнообразный вредоносный код, подрывая тем самым основы их проведения — формирование элементов ботнет сетей. К сожалению, применение данных подходов и средств, является пока не таким дешёвым решением. Особенно в условиях кризиса. К тому же информационная безопасность находится в постоянной гонке со злым умыслом, DDoS-атаки становятся все более изощрёнными, массовыми и результативными, и полностью исключить успех такой атаки порой бывает очень сложно”.

“На сегодняшний день проблема DDoS-атак во всем мире стоит очень остро, — говорит технический менеджер Kerio Technologies в России и СНГ Роман Павлов. — Есть большое количество рекомендованных мероприятий по защите сервисов компании от такого типа атак. Защита выстраивается на уровне фильтрации нежелательных потоков запросов на межсетевом экране, смене портов, тонкой настройкой самого Web -сервера, грамотной организацией методов доступа к отдельным сервисам Web-сайта при его разработке, созданием зеркал сайта и т. д. Однако, даже совокупность всех предлагаемых методов по отражению DDoS-атаки, является довольно слабым профилактическим средством и не может гарантировать защиту от мощных атак сетей “ботнетов-миллионников”. Такие меры могут оказать защиту только в случае распределённых DDoS-атак, выполняемых с небольшого числа “зомби-компьютеров”. Поэтому, если у пострадавшей организации достаточно денег, наиболее эффективным средством борьбы с атакой будут совсем не технические меры по поиску организаторов и заказчиков подобного нападения. Большинству же жертв остается только пережидать атаку, уповая на то, что у заказчика атаки денежный ресурс тоже ограничен. Проведение мощных, хорошо спланированных распределенных атак — дело довольно затратное”.

Итак, DDoS-атака, как и любая несмертельная болезнь, с течением времени проходит вне зависимости от качества лечения и потраченных на него денег. Мы будем с интересом ждать, смогут ли специалисты B2B-Center выявить заказчика DDoS-атаки, предпринятой против их торговой системы.


Владимир Митин

Оригинал статьи на http://www.pcweek.ru/themes/detail.php?ID=121148%29

//Root-access: не учила разве мама тебя копирайты ставить?!

root_sashok
15.02.2010, 22:29
Способ реализация

Производится тонкая настройка параметров системы. Так что север будет способен выдерживать больше подключений от ботнета, чем канал до сервера сможет пропустить.

Область применения

Борьба с Http DDoS на выделенном сервере или ВПС. Максимальная возможная мощность сдерживания DDoS атаки ограничивается физическими возможностями сервера и пропускной способностью канала.

SEO под DDoS-ом

Ваш сайт будет правильно индексироваться во время атаки, что позволит сохранить позиции в выдаче поисковых систем. Особенно актуально для сайтов с большими SEO бюджетами.

Стоимость и эффективность

На время атаки придется отказаться от некоторых сервисов вашего сайта. Возможно, придется расширить полосу канала, перенести сайт на более мощный сервер. Эффективность достигается максимизацией коэффициента масштабируемости системы. Обеспечивается быстрое наращивание аппаратных ресурсов при увеличении мощности атаки.

Описание метода

Я буду рассказывать о применение метода и достигнутых результатах, на основе реального случай борьбы с http DDoS атакой.

В моем распоряжении было два сервера Xeon 2.5GHz / 4Gb RAM / SAS, первый под PHP, второй под БД. Все настройки производились на первом сервере.ОС – Debian 4, сайт был с посещаемостью ~ 60к. Фронтендом являлся nginx. Ядро системы было настроено по умолчанию. Стандартное средство бана по ip – iptables в конкретном случае справилось с атакой ботнета размером до 7К.
В случае более мощной атаки придется установить ipset.

История борьбы с DDoS

День первый. Переполнение сетевого стека

IP адрес выделенный под ДОСом перестанет отвечать на какие-либо запросы (ping,http,ssh), при том что остальные IP сервера продолжат исправно работать. Если у сервера несколько IP то сайт под ДОСом ляжет, работа других сайтов на сервере и ssh нарушена не будет.
По умолчанию ОС Debian и другие ОС не в состоянии поддерживать огромное количество соединений создаваемое ботнетом. Необходимо внести изменения в настройки ядра, чтобы укрепить стек TCP/IP. Я не буду подробно останавливается на настройке ядра, приведу лишь пример такой конфигурации.

net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.eth0.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.core.rmem_max = 996777216
net.core.wmem_max = 996777216
net.ipv4.tcp_rmem = 4096 87380 4194304
net.ipv4.tcp_mem= 786432 1048576 996777216
net.ipv4.tcp_wmem = 4096 87380 4194304
net.ipv4.tcp_max_orphans = 2255360
net.core.netdev_max_backlog = 10000
net.ipv4.tcp_fin_timeout = 10
net.ipv4.tcp_keepalive_intvl = 15
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 494967295
kernel.shmall = 268435456
net.core.somaxconn= 16096

Подобнее о параметрах можно прочитать в документации, например debian.telenet.ru/doc/sysctl.conf, а лучше поиск через google.com свежих статей по данной теме.
Аккуратно меняем конфигурацию ядра и перезагружаем сервер…
И так. Наша система способна выдержать натиск ботов. Но праздновать победу еще очень рано. Из-за огромного количества соединений процессы PHP и БД полностью «съедают» ресурсы памяти и процессора, так что значение load average превышает 100 пунктов.
Необходимо отсечь паразитные соединения

Недостатки поиска ботов командой netstat

Анти-дос администратор, к которому я обратился с проблемой, предложил метод поиска ботов командой nestat. В процессе применения данного метода я заметил несколько существенных недостатков. Рассмотрим их подробно:
1. Создание blacklist-а занимает много времени, что не позволяет нам часто обновлять blacklist
2. Эффективный поиск ботов возможен только при остановленном вебсервере. В это время сайт не доступен для клиентов и появляется угроза неправильной индексации сайта поисковыми системами
3. В blacklist могут попасть IP поисковых роботов, что недопустимо

Осознав неэффективность предложенного метода, я приступил к созданию своего метода поиска и бана ботов который должен
1. обеспечить постоянную стабильную работу вебсервера (сайта)
2. гарантирует наименьшую вероятность в blacklist поисковых роботов

День второй. Возможности железа сервера + nginx

Сервер Xeon 2.5GHz / 4Gb RAM / SAS DoS-ят запросами GET / HTTP/1.1.
Эксперимент А. Веб сервер (в данном случае nginx) остановлен
Входящий трафик 6085.2 kbits/sec
Исходящий трафик 5342.1 kbits/sec
Эксперимент Б. Nginx отдает пустой HTML (return 444;)
Входящий трафик 56 Мбит/с
Исходящий трафик 54 Мбит/с
Эксперимент В. Nginx отдает HTML размером около 2 Кб – это страничка с небольшим сообщением вроде «приносим свои извинения за перебои в работе сайта»
Входящий трафик 57 Мбит/с
Исходящий трафик 353 Мбит/с

По результатам проведенного эксперимента ясно, что сервер способен выдержать увеличение атаки примерно до 300Мбит/с. Свыше 300Мбит/с мы «упремся» в предел рандомного чтения SAS дисков. Значит, мы имеем хороший запас прочности и высока вероятность эффективного отражения атаки с сохранением доступности клиентам наших вебсервисов.

На основе эксперимента можно сделать следующие выводы:

а) Можно полностью отказаться от фильтрации при наличии достаточной емкости канала и отсутствием соотношений входящий/исходящий трафик.
Ваш сайт будет доступен клиентам ценой огромного паразитного трафика.
Легкомысленное решение полностью отказаться от фильтрации. Злоумышленники могу увеличить мощность DoS так что «ляжет» гигабитный канал.

б) Когда мы забаним абсолютно всех ботов то паразитный трафик от ботнета составит всего лишь 5 Мбит/с. Забанить всех ботов также невозможно, на это потребуется слишком много ресурсов. Кроме того, высока вероятность бана поисковых роботов.

Также необходимо обратить внимание на то, что исходящий трафик с последнем случаем превысил 100 Мбит/с. Значит, сервер подключенный к порту 100 Мбит/с станет очень трудно доступен по ssh в силу полной загруженности канала. Во избежание подобной неприятности, я рекомендую настроить отдачу пустого HTML или return 444 в nginx до завершения настройки фильтрации ботов.

Поиск ботов средствами nginx

В данном случае сервер атакуют запросами request: «GET / HTTP/1.1».
Делаем предположение о том, что хорошие клиенты делают не более 2х одновременных запросов к главной странице сайта. Считаем клиентов открывших более 3х одновременных соединений атакующими ботами и баним их IP адресы на фаерволе.

Предположение было подтверждено экспериментально. На основе анализа лога http запросов за сутки из 120 000 IP адресов, только с 19ти IP было сделано более 2х одновременных запросов.

Для реализации поиска ботов создаем специальную обработку запросов
request: «GET / HTTP/1.1» в nginx.
error_log /var/log/nginx/error.log;
<…>
location =/ {
limit_conn one 3;
root /home/www/site.ru;
}

IP адреса с которых было открыто более 3х одновременных подключений буду записаны в error.log с сообщением limiting connections by zone. На основе лога ошибок мы сможем построить blacklist ip атакующего ботнета.

Фильтрация ботов в iptables

Важно заметить. IPtables не пригодны для фильтрации большого количества адресов. При количестве цепочек >2К iptables процесс ksoftirqd начинает потреблять 100% CPU, что к запредельной загрузке сервера. Проблема решается установкой ipset или уменьшением количество правил в iptables.
В данном случае установка ipset была отложена на случай крайней необходимости. У сервера не было встроенного KVM и пересобрать ядро было рискованно.

Приступим к созданию blacklist-а. В бан мы помеcтим только самых агрессивных ботов, дабы не перегружать iptables.

# ищем ботов
cat /var/log/nginx/error.log | grep "limiting connections by zone" | grep "request: \"GET / HTTP/1.1"| awk '{print $12}'| awk -F"," '{print $
1}'| sort | uniq -c | sort -nr > /tmp/botnet.blacklist
# очищаем скрипт бана
cat /dev/null > /tmp/iptables_ban.sh
# создаем DROP правила для 50 самых агрессивных ботов
awk '{print "iptables -A INPUT -p tcp --dport 80 -s " $2 " -j DROP" }' botnet.blacklist | head -n 50 >> /tmp/iptables_ban.sh
# загружаем blacklist
bash /tmp/iptables_ban.sh
# делаем ротацию лога
cat /dev/null > /home/www/nginx_log/error.log
[ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`

Добавляем скрипт в крон с частотой несколько минут. Частоту подбираем опытным путем. Я сделал раз в 5 минут.

*/5 * * * * /root/script/ban.sh

В результате iptables будет пополнятся новыми ботами.

Схема фильтрации

http://www.host488.msk.ru/__public/iptables-botnet-drop.gif

День третий. Итог

Данный метод обеспечил стабильный доступ клиентов к сайту. Правильная индексация в ПС была подтверждена тем, что сайт сохранил свои позиции в выдаче. Загрузка сервера не выходила за разумные пределы la неболее 6-7 пунктов. Исходящий трафик с сервера не превышал 100 Мбит/с. Для отражения атаки >7К ботнета вполне достаточно возможностей iptables.

DDoS как стихийное бедствие и избежать ущерба невозможно.
Часть клиентов, за время сбоя вашего сервиса, перейдет к конкурентам.
Вам придется понести некоторые расходы на переработки программистов, администраторов или приобретение дополнительного оборудования.
Ваш ресурс активно продвигается в ПС (yandex, google) значит, критичен риск неправильной индексации и как результат провал позиций в выдаче.
Главная задача минимизировать ущерб от DDoS.

В моем случае DDoS атака прекратилась на следующий день после запуска фильтрации. Заказчик DoS не был готов тратить больше денег на увеличение атаки.

В большинстве случаев DDoS является оружием конкурентной борьбы в сети. Клиенты практически мгновенно способны перейти к вашим конкурентам, если ваш ресурс будет работать со сбоями.

Я считаю, что борьба с DDoS заключается не в бане ботов, а в создании условий в которых ваш суммарный ущерб от атаки сопоставим с затратами ее инициаторов. Заказчик должен потрать, например, 50 000 руб. чтобы нанести вам ущерб в 50 000руб., конкурентам экономически не выгодно организовывать такие атаки.

Метод описанный в этой статье не является панацеей, это лишь часть комплекса мер по отражению DoS. План развития крупного сервиса должен учитывать риски и предлагать меры по уменьшению негативных последствий атак.

Надеюсь, моя статья будет полезна сообществу разработчиков и администраторов вебприложений.

© (http://habrahabr.ru/blogs/infosecurity/84172/)