Новостей | Акций


Статьи и советы Версия для печати
» Методы борьбы с DDoS-атаками »  26.09.2011
3102

Самой обговариваемой темой на сегодняшний день есть DDoS-атаки и то, как бороться с ними. Практически каждый администратор сталкивался с этой проблемой. Но множеству веб-мастеров эти буквы остаются неизвестными, до минуты столкновения с этой проблемой. DDoS расшифровывается как Distributed Denial of Service (распределенный отказ в обслуживании). Суть DDoS атаки заключается в отправлении запросов, из очень численного количества заражённых ЕОМ, на серверы, не имеющие "силы" справится с таким количеством данных. Основная задача DDoS-атаки - прекращение стабильной работы серверов, а как последствие — сайты и сервера «падают».

Как обезопасить себя от этого? На данный момент универсального метода защиты не существует. Для решения этой проблемы идеальным вариантом будут аппаратные, программные и организационные меры в комплексе. Самыми эффективными являются программно-аппаратная система от мировой компании Cisco, но на ее приобретение придется потратить не малую сумму денег. Если Вам необходимо защитить IIS сервера, тогда Вы можете использовать программные продукты корпорации Microsoft, но ни для кого не секрет, что они не дешевые.

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

Какие основные положения по защите от DDoS? Первым правилом будет старания публиковать информацию которая не будет затрагивать никакие национальные, религиозные или расистские вопросы, дабы не обижать никого и не привлекать лишнее внимание. В случае не соблюдения правила написанного выше, или когда Вы были «заказаны» будьте осторожны. Ваш веб-сервер, его аппаратная часть, должен иметь резервную производительность, а также максимально эффективно построенными должны быть дублирующие и распределённые системы. Эффективно защитить себя от DDoS атак просто невозможно, если Вы не понимаете принципов их работы. Для того чтобы осуществить DDoS-атаку необходимо использовать очень много ЕОМ, которые заражены вредоносным кодом. Все они обледенённые в ботнет (“bot-net” переводится как «сети зомби-машин»), совершают DDoS-атаку, после приказа злоумышленника, причем чаще всего хозяева ПК даже не подозревают, что их машины участвую в чем то подобном.

Наша компания, как и любой хостинг-провайдер, имеем дело с DDoS-атаками на наши клиентские сайты каждый день, и, естественно,имеем знания о том, как их побороть. Смоделируем ситуацию DDoS-атаки определенного сайта (например, http://domain.ru/). Посмотрев на логи, мы увидим что большинство GET запросов следуют в направлении главной страницы. Во многих ситуациях боты легко могут быть обмануты с помощью javascript-редиректов. Например:
Как результат– с каждым разделом, атакованным в корень GET запросом, размеры файла будут лишь несколько байт, что намного позитивнее, чем соприкосновение бота со страницей в ~50-100кб и, в тоже время, подтягивание ~5-10 SQL запросов. Законные клиенты, javascript в браузерах которых отключен, будут перенаправлены на index.php.

Но существует некоторые трудности. Боты поисковые, как и атакующие боты, не имеют javascript-интерпретаторов и будут погружаться в javascript-редиректе. Используя UNIX утилиты tcpdump или netstat можно создать небольшой скриптик, считающий количество соединений с конкретного IP адреса и, в случае подозрительной активности, банящий данный IP.

Проверка через host поможет Вам с определением бота. Маленький пример элементарнейшего скрипта блокирующего IP и создающего много соединений с сервером (данный вариант проверялся на Centos 5.6):
Запись в crond
*/1 * * * * netstat -an | grep tcp | awk '{print $5}' | cut -d: -f1 | sort -n | uniq -c > /var/log/ip.list
Эта команда создает список с количеством коннектов и самим IP, пример:
10 209.232.223.117
1 209.85.161.191
2 212.113.39.162
1 212.78.78.78
61 213.142.213.19
5 213.151.240.177
1 210.169.67.225
1 216.179.59.97
Сам скрипт, с возможностью запуска в screen-е или сделать демоном:
#!/bin/bash
connects=150 /dev/null 2>&1
then
// если в имени хоста есть слово google (у гугло-ботов это слово присутствует)
if echo $hostname | grep "google" > /dev/null 2>&1
then
// то добавляем его в белый список и делаем запись в лог
echo "$ip" >> /etc/white.list
echo `date +%H:%M_%d-%m-%Y` $ip "- ADDED TO WHITE LIST AS $hostname SEARCH BOT IP" >> /var/log/ddos_log
else
// если не гугл - блочим
route add $hostname delete
fi
fi
fi
done < /var/log/ip.list

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

TimeOut – для этой директивы укажите значения поменьше (для веб-серверов, которые могут подвергаться DDoS-атакам).

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

Не лишней будет проверка разных тайм-аут директив, которые представлены в виде других модулей.

LimitRequestBody, LimitRequestFields, LimitRequestFieldSize, LimitRequestLine, LimitXMLRequestBody – каждую из этих директив необходимо хорошенько настроить на уменьшение употребления ресурсов, что вызываются запросами от клиентов.

Используя операционные системы поддерживающие директиву AcceptFilter, необходимо удостоверится, что Вы пользуетесь именно этой директивой. В конфигурации Apache httpd она присутствует по умолчанию, но для корректной работы может возникнуть необходимость новой сборки с перенастройкой ядра операционной системы (*nix, *bsd). Если, для указывания наибольшего числа пользователей, которые вместе подключаются к серверу, Вы пользуетесь директивой MaxClients необходимо помнить одну истину. Ее суть заключается в том, что при уменьшении значение директивы, то снижается нагрузка на web-сервер.

Также построить защиту от DDoS есть возможность и на уровне программ. DDoS Deflate – бесплатный скрипт, предназначенный именно для этого. Он поможет Вам в преодолении детского флуда и DDoS-атак. Для того чтобы обнаружить DDoS и флуд, скрипт пользуется командой "netstat". Далее производит блокировку IP адреса вредоносной ЕОМ, используя фаервол iptables или apf. Слабый DDoS также наносит вред Вашему серверу, так что лучше не недооценивать его. Например, количество зомби-машин, которые Вас атакуют близко 10-50, и все они имеют толстые каналы, а количество Ваших серверов ровняется сотням, что чревато не успеванием физического мониторинга, либо Вы отсутствуете на рабочем месте в связи с командировкой. Тогда, “зафлудить” канал, вывести из строя вебсервер apache¸ etc, mysql, сможет и малое количество компьютеров. Иное дело если админ постоянно “мониторит” сервера и легко обнаружит атаки. Но это бывает довольно не часто. Следует сделать подключение систем сигнализации и сделать автоматическим процесс блокирования атакующих зомби-машин.

Интересная информация: