ОСНОВНЫЕ АСПЕКТЫ ЗАЩИТЫ ОТ DDOS-АТАК - Студенческий научный форум

V Международная студенческая научная конференция Студенческий научный форум - 2013

ОСНОВНЫЕ АСПЕКТЫ ЗАЩИТЫ ОТ DDOS-АТАК

Керимов А.Г. 1
1Тобольская государственная социально-педагогическая академия им. Д.И. Менделеева
 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF
Практически каждый из Вас заводил в интернете свою персональную страничку, заполнив анкету по шаблону в социальных сетях или создав собственный проект (сайт). Как только сайтом начинают интересоваться пользователи, и сайт начинает получать прирост посетителей (трафик), то, как правило, интерес появляется и у конкурентов. После чего, сайт, может быть, подвергнут DDoS – атакам.

DDoS-атака (от англ. DenialofService) – атака на вычислительную систему с целью довести её до отказа, то есть создание таких условий, при которых легитимные (правомерные) пользователи системы не могут получить доступ к предоставляемым системой ресурсам (серверам), либо этот доступ затруднён. Существует два метода доведения сервера до отказа: атака, направленная на засорение канала ложными запросами, и атака, направленная на загрузку процессора и оперативной памяти сервера. Атака производится с помощью DDoS ботнета. Ботнет – это компьютерная сеть, состоящая из некоторого количества хостов (любой компьютер, сервер, подключённый к локальной или глобальной сети) с запущенными ботами – автономным программным обеспечением. То есть, злоумышленник имеет администраторскую панель, и сам вирус с расширением ехе. После заражения, жертва даже не понимает, что ей кто-то управляет. Машина посылает post запрос на сервер злоумышленника, тем самым сказав, что заражение прошло успешно. Далее атакующий, при помощи специальных команд, заставляет Ваш компьютер посылать непрерывные запросы на сервер, который нужно довести до отказа в обслуживании. Такая махинация проделывается с тысячами, а то и с десятками тысяч машин. В итоге человек, собравший ботнет – имеет некую «армию», с которой и идет в атаку.

Атака на канал – это самый верный вариант закрыть доступ к серверу для администратора. Каждый сервер по умолчанию подключен к полосе интернета (обычно это 100 мегабит). Для атаки в 100 мегабит требуется порядка 6000 машин. Кажется, что это много, но такая атака – самая детская шалость, которую можно представить. Как правило, 99% хостинговых компаний при таких атаках, ничего не могут сделать. Что можно сделать, не имея доступа на сервер? Можно сделать все, но об этом чуть позже.

Вторая атака, рассчитанная на процессор, и оперативную память. Для такой атаки достаточно иметь порядка 1000 машин. Чаще всего, такая атака действует на основе ошибок программного обеспечения сервера. Стандартные настройки серверного программного обеспечения (apache, ngnix, mySQL) настолько неэффективны, что для вывода из строя 8 ядерного сервера с 24 гигабайтами памяти, на канале в 10 гигабит – хватает 200 зараженных машин.

Рассмотрим DDoS-атаки более подробно. Я являюсь основателем хостинговой компании – extrabyte.com, которая занимается непосредственно защитой от DDoS-атак. Для того, что бы справится с атакой, мы вывели часть скриптов и базы данных в облачную серверную среду. Что бы быть в курсе последних атак, мы активно скупаем DDoS софт, который распространен среди современных «кибер-преступников. Например, совсем свежий семпл Pandora DDoS Bot:

File Name: pandora.exe

File Size: 177152 bytes

MD5: 0fc3481d8b9933b7f325101949ecf5e5

SHA1: cb1e7f1c362b5cdf5cd9151cbe2fcae7f7fe1316

PE Time: 0x2A425E19 [Fri Jun 19 22:22:17 1992 UTC]

Sections (8):

Name Entropy MD5

CODE 6.53 9805eaddcbc78a2f4f68b648bfad2978

DATA 4.16 a1324f7532dd48f9017f46be1613826b

BSS 0.0 d41d8cd98f00b204e9800998ecf8427e

.idata 4.48 b254b43e6712cf8533a5306a46f242dc

.tls 0.0 d41d8cd98f00b204e9800998ecf8427e

.rdata 0.2 1144cf17efa7e08a7c62921375bd99ee

.reloc 6.67 12f2747caf308a358b2e892777f79169

.rsrc 3.48 96354dc6d5afdc8e2593cd06d037a54c

Запускаем в систему, и видим GET запрос:

GET /test/?u=1qyvpu5sjk4ozvtd28v3y142x77dddq5 HTTP/1.1

Host: localhost

User-Agent: Mozilla/100

.HTTP/1.1 200 OK

Date: Thu, 23 Aug 2012 17:36:33 GMT

Server: Apache/2.2.22 (FreeBSD) PHP/5.4.4 mod_ssl/2.2.22 OpenSSL/ 0.9.8q DAV/2

X-Powered-By: PHP/5.4.4

Content-Length: 56

Content-Type: text/html

п»їп»ї[]0|0|50|60|0|http://target.name

195.95.151.24

Установка в систему производится по фиксированному пути:

%windows%system32antivar.exe

Вылечиться от вируса достаточно просто, запускаем скрипт AVZ:

begin

SearchRootkit(true, true);

SetAVZGuardStatus(True);

ClearQuarantine;

TerminateProcessByName('c:windowssystem32antivar.exe');

SetServiceStart('ServerNabs4', 4);

StopService('ServerNabs4');

DeleteFile('c:windowssystem32antivar.exe');

DeleteService('ServerNabs4');

BC_ImportAll;

ExecuteSysClean;

BC_Activate;

ExecuteWizard('TSW',2,3,true);

RebootWindows(true);

end.

Итак, теперь мы примерно знаем, как устроена атака, и как она работает. Рассмотрим методы защиты.

Для проведения непосредственно практической работы, мы приобрели виртуальный сервер у компании firstvds за 149 руб. Сейчас совсем не обязательно иметь выделенный сервер для прав в системе root (полные права администратора с возможностью редактировать конфиги сервера), достаточно купить виртуальный сервер на базе одной из технологий, например kvm. или openVZ. Дождавшись установки, начинаем настраивать сервер. Для начала, мы проанализируем историю запросов. Например, атакуют сайт name.ru. Судя по логам – видно, что атакуют прямо в корень сайта (http://name.ru/). Размер страницы, составляет 500 килобайт.

Первое что нужно сделать в случае подобной атаки – добавить в индексный файл, следующий код:

window.location = "name.ru/index.php"

Этот маленький код образует редирект (перенаправление юзера на другой ресурс) с пустой страницы на индексный файл, однако бот-сети не может воспринимать java код, и продолжает видеть эту страничку весом в 2 байта. Но если атака идет в какой-либо конкретный файл, или вообще на сервер, то стоит принять решение куда более радикальное. Вернемся к истокам атак. Как правило, 99% атакующих ботов – это «азиатские» машины. То есть, если проект ориентирован на российскую аудиторию, то совсем не обязательно принимать паразитный трафик. Отсеиваем все страны, кроме России. Делается это очень просто. Нам понадобится фронтенд в виде nGinx, и geoip. Операционная система на нашем сервере – centos, поэтому все команды мы выбрали именно под нее.

В качестве репозитория (хранилище данных) мы выбрали epel.

Добавляем репозиторий командой:

wget http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release -5-4.noarch.rpm

rpm -ihv epel-release-5-4.noarch.rpm

Устанавливаем nGinx и geoip

yum install nginx GeoIP

Обновляем базу данных ip адресов:

cd /usr/share/GeoIP

wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz

Gunzip GeoIP.dat.gz

wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz

ginzip GeoLiteCity.dat.gz

В конфигурационном файле энжиникса /etc/nginx/nginx.conf в блок http добавляем код:

geoip_country /usr/share/GeoIP/GeoIP.dat;

map $geoip_country_code $bad_country {

default 1;

include geo/good_countries;}

Мы подключили файл GeoIP.dat и определили переменную $bad_country, указав так же файл, good_countries в котором будут указаны страны, доступ из которых разрешен. Далее добавим условие блокировки пользователя:

location / {

proxy_pass http://111.111.111:8080;

proxy_redirect http://tgspa.ru:8080/ /;

proxy_set_header Host $host;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Real-IP $remote_addr;

if ($bad_country){

return 403;

}

}

Где 111.111.111 – это IP Вашего сайта. Наполняем файл geo/good_countries. Поскольку, мы используем переменную $geoip_country_code, то коды стран должны быть представлены в виде двухбуквенных аббревиатур. Например, для Украины код будет UA. В файле good_countries список стран должен быть соответствующим образом оформлен:

RU 0;

UA 0;

US 0;

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

Рассмотрим второй метод защиты – называемый "тюнинг" серверного оборудования. Стандартными платформами принято считать, платформы apache 2. Традиционным тюнингом к ним, является фронтенд – ngnix. И зачастую системные администраторы относятся к апачу исключительно как к платформе веб-сервера, т.е. считают его незаменимым. Это и является главной ошибкой. За несколько лет работы, мы изучили все тонкости подобного ПО и можем открыто заявить, что под нагрузками апач, является крайне неустойчивым решением. Да, на мало нагрузочных площадках апач будет работать быстрее всех аналогов, но мы рекомендуем использовать, веб-платформу php-FPM, с обработчиком nGinx. Данная связка очень устойчива к нагрузкам. То есть, сервер не будет выпадать при частых обращениях, и не будет лимитироваться 20 kpps. Начинающим хостинговым компаниям нужно так же знать, что правила htaccess – не будут работать на данной платформе. В публичном доступе имеется конвертер правил, который поможет вам перевести все функции apache в php fpm.

Итак, приступаем к установке. Подключаем дополнительный репозиторий:

rpm --import https://fedoraproject.org/static/0608B895.txt

rpm -ivh http://download.fedora.redhat.com/pub/epel/6/i386/epel-release-6-5.noarch.rpm

rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi

rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

yum install yum-priorities

Редактируем /etc/yum.repos.d/epel.redo.

В строке 7 – меняем приоритет на 10.

Делаем тоже самое с nano /etc/yum.repos.d/remi.repo, установив приоритет на 10, и параметр enabled на 1.

Устанавливаем nGinx командой yum install ngnix (доступен в официальном репозитории epel).

Далее устанавливаем nGinx в автозапуске, и запускаем его командой:

chkconfig --levels 235 nginx on

/etc/init.d/nginx start

Переходим на наш домен или ip-адрес сервера, и видим стандартную страничку с приветствием. Главное программное обеспечение установлено, и оно намного производительнее стандартной связки. Установка на сервер php не составляет труда. Далее устанавливаем гео-лок (ограничение поступающего трафика по географическому признаку с целью отказа от стран, для которых площадка не имеет информационной значимости), как было описано в начале статьи – наш сервер практически неуязвим. Для еще полной защиты требуется специальное оборудование: cisco guard, juniper. Само по себе это оборудование бесполезно, но при грамотной настройке Вы получите желаемый эффект.

Просмотров работы: 1612