close

Вход

Забыли?

вход по аккаунту

Слепов Владислав Владимирович. Разработка программного средства обнаружения DdoS-атак на прикладном уровне

код для вставки
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ
УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«ОРЛОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ИМЕНИ И.С. ТУРГЕНЕВА»
ВЫПУСКНАЯ КВАЛИФИКАЦИОННАЯ РАБОТА
09.03.01 «Информатика и вычислительная техника»
направленность «Программное обеспечение вычислительной техники и
автоматизированных систем»
Студента Слепова Владислава Владимировича
шифр 140180
Институт приборостроения, автоматизации и информационных технологий
Тема выпускной квалификационной работы
«Разработка программного средства обнаружения DDoS-атак на прикладном
уровне»
Студент
______________
Слепов В. В.
Руководитель
______________
Фролов А. И.
Нормоконтроль
______________
Ужаринский А. Ю.
Зав. кафедрой
______________
Фролов А. И.
Орёл 2018
АННОТАЦИЯ
ВКР 64 с., 32 рис., 4 табл., 9 источников, 1 прил.
ИНФОРМАЦИОННАЯ
БЕЗОПАСНОСТЬ,
DDOS-АТАКА,
КЛАССИФИКАЦИЯ, НЕЙРОННАЯ СЕТЬ, РАЗБОР ФАЙЛА ЖУРНАЛА
СЕРВЕРА.
Выпускная
квалификационная
работа
посвящена
разработке
программного средства обнаружения DDoS-атак на прикладном уровне.
В
первой
рассматривается
главе
проводится
анализ
роль
и
DDoS-атак
киберпреступлениях,
рассматриваются
место
приводится
существующие
предметной
области:
в
современных
классификация
DDoS-атак,
методы
обнаружения
DDoS-атак,
проводится анализ аналогичных программных средств с выявлением их
преимуществ и недостатков, формируются требования к программному
обеспечению.
Во
второй
главе
формируются
спецификации
программного
обеспечения: описывается функционал приложения, информационная модель
программного обеспечения, приводится перечень возможных состояний
приложения с помощью диаграммы состояний.
В третьей главе описывается процесс проектирования программного
обеспечения: приводится перечень модулей приложения, описываются типы
и функции программного средства, приводятся алгоритмы первичной
обработки данных и обучения нейронной сети.
В четвертой главе описывается процесс реализации программного
средства: обозреваются инструментальные средства, использованные при
разработке программного обеспечения, приводятся результаты экспериметов
с параметрами нейронной сети с выводом об окончательной архитектуре
нейронной сети.
СОДЕРЖАНИЕ
ВВЕДЕНИЕ
6
1 АНАЛИЗ И ТРЕБОВАНИЯ К ПРОГРАММНОМУ ОБЕСПЕЧЕНИЮ
8
1. 1 Анализ предметной области
8
1.2 Обзор существующих методов решения
16
1.3 Обзор методов машинного обучения, применяемых для классификации
DdoS-атак
18
1.3.1 Наивный байесовский классификатор
18
1.3.2 Метод ближайших соседей
19
1.3.3 Многослойный персептрон
21
1.4 Обзор аналогов
23
1.4.1 Imperva Incapsula DDoS Protection
23
1.4.2 Kaspersky DDoS Prevention
25
1.4.3 StormWall
27
1.5 Требования к программному обеспечению
29
1.5.1 Функциональные требования к программному обеспечению
31
1.5.2 Нефункциональные требования к программному обеспечению
31
2 СПЕЦИФИКАЦИИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
33
2.1 Функциональная модель программного обеспечения
33
2.2 Информационная модель программного обеспечения
34
2.3 Поведенческая модель программного обеспечения
36
3 ПРОЕКТИРОВАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
37
3.1 Структура программного обеспечения
37
3.2 Проектирование типов данных
38
3.3 Основные алгоритмы
40
4 РЕАЛИЗАЦИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
44
4.1 Использованные инструментальные средства и технологии
44
4.1.1 Среда выполнения .NET/Mono
44
4.1.2 Язык программирования F#
46
4.1.3 Библиотека машинного обучения Accord.NET
47
4.1.4 Интегрированная среда разработки JetBrains Rider
48
4.1.5 Веб-сервер Nginx
48
4.2 Результаты работы приложения
49
4.3 Описание работы приложения
54
ЗАКЛЮЧЕНИЕ
55
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
56
ПРИЛОЖЕНИЕ А. ИСХОДНЫЙ ТЕКСТ ПРОГРАММНОГО СРЕДСТВА
58
УДОСТОВЕРЯЮЩИЙ ЛИСТ НА ДЕМОНСТРАЦИОННЫЙ МАТЕРИАЛ
62
ИНФОРМАЦИОННО-ПОИСКОВАЯ ХАРАКТЕРИСТИКА ДОКУМЕНТА
НА ЭЛЕКТРОННОМ НОСИТЕЛЕ
63
6
ВВЕДЕНИЕ
На сегодняшний день самым распространённым архитектурным решением
для построения информационных систем является схема «клиент-сервер».
Возникшая еще в 80-х годах прошлого века, эта архитектура быстро обрела
популярность в силу своей простоты организации, снижения вычислительной
нагрузки на клиентские машины и повышения степени защищённости данных. С
течением времени разработчики ИС стали понимать, что необходимо еще больше
снизить
нагрузку
на
клиентские
машины,
усилить
способность
ИС
к
масштабированию и уменьшить зависимость между компьютерами пользователей
и серверами. Фактически, все эти требования ознаменовали собой переход к
новому
этапу
абстракции
процесса
вычислений
–
появлению
усовершенствованной архитектуры «клиент-сервер» – «тонкий клиент». Таким
образом, пользователям предоставлялся лишь интерфейс взаимодействия с ИС, а
процесс обновления ПО фактически больше не влек за собой изменения бизнеслогики на клиенте.
Новый способ построения ИС, однако, не был лишен недостатков: полная
трансляция процесса вычислений на серверные машины вынуждала клиентов всё
чаще
переселать
данные,
следовательно,
нагрузки
на
сеть
и
телекоммуникационное оборудование существенно возросли. Так, на 2016 год
объем мирового трафика составлял 1,2 зеттабайт, а к 2021, по прогнозам
компании «Cisco», возрастет до 3,3 зеттабайт.
Наряду с объективной причиной возрастания нагрузки на сеть — перенос
вычислений на серверную сторону — перед бизнесом XXI века, использующим
для своего функционирования производительные серверные ресурсы и сложные
WEB-приложения,
возникла другая проблема — защита от вывода из строя
постоянной работы бизнес-решений — DoS/DDos-атаки.
7
Целью
данной
ВКР
является
разработка
программного
средства,
обнаруживающего DDoS-атаки на прикладном уровне путем анализа и
классификации логов сервера с помощью нейросетей.
Задачи, стоящие перед данной ВКР, следующие:
— выполнить анализ предметной области: рассмотреть степень влияния и
оценить материальный ущерб, создаваемый DDoS-атаками для бизнеса;
— привести классификацию DDoS-атак;
— проанализировать существующие методы обнаружения и защиты;
— исследовать различные алгоритмические подходы в машинном обучении
в рамках поставленной задачи;
— произвести обзор аналогичных программных продуктов с выявлением их
преимуществ и недостатков;
— сформировать функциональные требования к программному средству
защиты от DDoS-атак на прикладном уровне;
— определить спецификации программного средства;
— экспериментально установить оптимальные параметры нейросети;
— проанализировать результаты работы приложения и сделать выводы о
производительности программного средства.
8
1 АНАЛИЗ И ТРЕБОВАНИЯ К ПРОГРАММНОМУ ОБЕСПЕЧЕНИЮ
1. 1 Анализ предметной области
На сегодняшниий день DoS-атаки являются одной из самых важных
проблем в сфере инфокоммуникационных технологий. Они представляют из себя
многочисленные
вредоносные
попытки
злоумышленников
предотвратить
легитимным пользователям доступ к запрашиваемым ресурсам путем насыщения
полосы пропускания либо путем перегрузки самого ресурса.
Распределенная
атака
типа
«отказ
в
обслуживании»(DDoS)
-
крупномасштабная DoS-атака, распределенная по сети Интернет. Каждый
компьютер, который имеет доступ в Интернет, может стать атакующим[8].
DDoS-атака может вывести из строя работу вебсайтов на несколько часов за
раз. Атакующие способны разделиться на сотни и тысячи компьютеров и
устанавливать собственные утилиты для манипулирования в своих целях. После
этого они используют эти «машины-зомби», чтобы запустить процесс DDoSатаки[8], как показано на рисунке 1.1.1.
Рисунок 1.1.1 — Схема DDoS-атаки
9
Некоторые программные средства используют зашифрованное соединение
между атакующим и «зомби-машинами». Для того, чтобы максимально
затруднить обнаружение «зомби-машин», используются средства подмены IPадреса источника [8].
Существует большое разнообразие DDoS-атак(рисунок 1.1.2) - приведем
классификацию основных видов. DDoS-атаки делятся на два основных класса:
1) Атаки вида «насыщение полосы пропускания». Они созданы для
переполнения
сети
жертвы
ненужным
трафиком,
который
препятствует
легитимному трафику добираться до других жертв;
2) «Перегрузка ресурсов» - данный тип атаки приводит к полному
истощению ресурсов жерты таким образом, что становится невозможным
обрабатывать запросы от рядовых пользователей.
В свою очередь к атакам первого типа относятся:
а) Флуд-атаки. Атаки данного вида используют «машины-зомби», отправляя
огромный
объем
трафика
в
систему
жертвы
для
перегрузки
сети.
Производительность системы падает, не позволяя пользователям получить доступ
к запрашиваемым ресурсам. Флуд-атаки запускаются используя протоколы UDP и
ICMP. В случае UDP флуд-атаки большое количество UDP-пакетов отправляются
как на случайные так и на определенные порты на компьютере жертвы. Система
пытается обработать входящие данные, чтобы определить какие приложения
содержат запрашиваемую информацию. Если на компьютере жертвы не запущено
ни одного приложения на порте назначения, он отправит ICMP-пакет с
сообщением о том, что порт назначения не доступен. Зачастую утилиты для
DDoS-атак также скрывают IP-адрес атакующего. Это затрудняет обнаружение
других жертв с того момента, как пакеты текущей атакуемой машины идут не
«машины-зомби», а на сфальсифицированные IP-адреса. UDP флуд-атаки могут
так же заполнить пропускную полосу соединений, расположенных недалеко от
жертвы;
10
б) DNS-амплификация. Представляет собой отправку сообщений с
компьютера жертвы или «машин-зомби» к широковещательному IP-адресу, чтобы
все
компьютеры
в
данной
подсети
отправить
ответ
жертве
атаки.
Широковещательный IP-адрес поддерживается большинством маршрутизаторов:
когда отправляющая система указывает широковещательный IP-адрес в качестве
адреса назначения, роутеры повторяют пакет и отправляют его на все IP-адреса
внутри диапазона широковещательного адреса.
Ко второму типу атак можно отнести:
а) Атаки, использующие уязвимости в протоколах. При использовании
DDoS-атаки через TCP SYN атакующий заставляет «машины-зомби» отправлять
фиктивные TCP SYN запросы на сервер жертвы, чтобы исчерпать процессорные
ресурсы и, следовательно препятствовать запросам легитимных пользователей;
б) Атаки с использованием неверного формата пакетов. Атаки данного типа
возникают,
когда
атакующий
заставляет
«машины-зомби»
отправлять
некорректно сформированные IP-пакеты на компьютер жертвы. Существует как
минимум две разновидности данной атаки:
— с использованием IP-адреса — когда пакеты содержат одинаковые IPадреса источника и назначения, что зачастую способствует выводу из строя
операционной системы жертвы;
— с использованием отдельных полей в IP-пакете — некорректный покет
может установить случайные значения для необязательных полей внутри
IP-пакета
и
устновить
обслуживания(QoS).
Таким
в
«1»
все
образом,
биты
система
проверки
жертвы
качества
вынуждена
использовать дополнительное время для обработки и анализа трафика. В
случае если атака является распределенной, это может спровоцировать
полное исчерпание механизма обработки пакетов системы жертвы[9].
11
Рисунок 1.1.2 — Классификация DDoS-атак
Отдельное место в классификации DDoS-атак занимают атаки на самом
верхнем, прикладном уровне модели OSI, целью которых являются максимально
загрузить ресурсы процессора и памяти сервера. Атаки данного вида можно
категоризировать следующим образом:
1) Базовый HTTP-флуд. Типичные и простые атаки, которые пытаются
обратиться к странице снова и снова. Обычно они используют фиксированный
набор IP-адресов, браузеров и источников запроса;
2) Случайно сгенерированный HTTP-флуд. Сложные атаки, использующие
большой набор IP-адресов и сгенерированных URL-адресов, браузеров и
источников запроса;
3) HTTP-флуд с помощью обхода кэш-данных. Подкатегория случайно
сгенерированного HTTP-флуда, которая пытается обойти кэш веб-приложений;
4)
WordPress
XMLRPC
флуд.
Подкатегория,
которая
использует
популярную систему управления контентом для отражения атак.
Самыми распространенными и опасными для веб-технологий являются
случайно сгенерированный флуд и флуд обхода кэш-данных сервера [4](рисунок
1.1.3).
12
Рисунок 1.1.3 — Распределение способов DDoS-атак на прикладном уровне
модели OSI
DDoS-атаки прикладного уровня имеют свои отличительные черты от атак
транспортного и сетевого уровней [7]:
а) Используют «настоящие» запросы похожие на пользовательские;
б) Атакующие машины должны установить полное TCP-соединение. Таким
образом, пока предоставление подлинного IP-адреса представляет из себя
обязательное
условие,
все
действия
злоумышленника
могут
показаться
легитимными в отсутствии большого объема трафика;
в) В отличии от атак на других уровнях, атаки прикладного уровня могут
использовать уязвимости в программном обеспечении, таким образом, избегая
обнаружения и нацеливаясь напрямую на веб-сервер. Другими словами, они более
сложны, так как не используют методы «brut force» для достижения желаемых
целей;
г)
Масштабные
DDoS-атаки
данного
вида
стремятся
привести
в
неработоспособное состояние сетевую инфраструктуру и серверы за счет
использования
интенсивных
потоков
данных
с
высокой
пропускной
способностью. С другой стороны, атаки прикладного уровня в первую очередь
используют наиболее известные протоколы(HTTP, VoIP, DNS);
13
д) Главной целью атак прикладного уровня не является перенасыщение
пропускной способности сервера, а исчерпание ресурса процессора и памяти —
поэтому некоторые IT-эксперты называют их «медленными». С другой стороны,
ресурсы системы конечны, а значит и атаки данного вида тоже.
Прикладной уровень модели OSI имеет две главные группы протоколов:
протоколы, которые напрямую обслуживают пользователей(HTTP, FTP, IMAP,
Telnet, SMPT/POP, IRC, XMPP, SSH) и протоколы поддержки, которые
выполняют различные системные функции(DNS, SNMP, BOOTP/DHCP, TLS/SSL,
SIP, RTP, NTP).
Атаки прикладного уровня представляют серьезную угрозу так как:
1) Имеют влияние на множество различных приложений. Каждый из
протоколов, описанный выше, может послужить объектом атаки;
2) Представляют собой высоко организованные удары, подстраиваясь под
конкретное веб-приложение. К примеру, веб-серверы, на которых используется
комбинация из Java, PHP и ASP.NET могут быть атакованы специально
подходящими HTTP-запросами, сталкивающимися с операцией хэширования
сервера,
когда
уникальные
запросы
возвращают
неуникальные
и
перекрывающиеся ответы;
3) Прикладной уровень простой. Считается, что если тысячи пользователей
одновременно будут продолжать нажимать кнопку обновления страницы в их
браузерах, это вызовет потерю работоспособности сервера рано или поздно. Так,
в 2010 году одна из главных компаний кредитных карт прекратила предоставлять
услуги WikiLeaks из-за неработоспособности серверов, вызванной HTTP-флуд
атакой приблизительно с помощью 940 компьютеров;
4) Атаки данного типа работают по принципу «максимум результата с
минимальными ресурсами»: в отличие от атак другого уровня, атаки на
прикладном уровне модели OSI не требуют от злоумышленников больших усилий
и специального технического оборудования;
14
5) Внешне атаки прикладного уровня очень похожи на легитимный трафик:
невысокая скорость, валидные TCP-соединения — все это является маскировкой
для DDoS-атак;
6) Обычно доступ к приложениям, теоретически подверженным атаке,
разрешается
доступ
через
устройства
сетевой
безопасности,
такие
как
брандмауэры или IPS-устройства. Следовательно, один уровень безопасности
может быть легко преодолен.
7) Там, где DDoS-атака сетевого уровня работает в логической «зоне
доступа», атаки на прикладном уровне нацелены на «зону приложений»(рисунок
1.1.4), состоящую из клиентской части и хранилища данных. Чтобы атака
прикладного уровня была успешной, она должна пройти всю «зону доступа»,
воспользоваться брешью в «зоне приложений» и, наконец, внедрить данные,
чтобы установить прямую связь с веб-сервером, чтобы вывести из строя сервер и
веб-приложения, которые там расположены.
Рисунок 1.1.4 — Обход «зоны доступа» атакой прикладного уровня
модели OSI
На
сегодняшний
день
DDoS-атака
является
одной
из
самых
распространенных хакерских атак с целью предотвратить пользователям доступ к
серверным ресурсам. Так, согласно данным [6] на 2014 год, доля распределенных
15
атак тип «отказ в обслуживании» составляет около 13,7 % от общего числа
хакерских атак(рисунок 1.1.5):
Рисунок 1.1.5 — Технологии атак, применяемые злоумышленниками
Такая
популярность
данного
вида
атаки
объясняется
простотой
организации, и, в тоже время, существенным материальным ущербом по бизнесу
и инфраструктуре.
Необходимо так же отметить массовый характер DDoS-атак: среди целей
злоумышленников можно встретить индустрию отелей, телекоммуникаций,
видеоигр и др. Статистические данные [6] представлены на рисунке 1.1.6:
Рисунок 1.1.6 — Самые распространенные цели для DDoS-атак
16
Таким образом, DDoS-атаки являются мультиуровненными по модели
OSI: результаты их работы можно анализировать на сетевом, транспортном и
прикладном уровнях. Последний, седьмой уровень модели OSI, как объект для
анализа распределенных атак типа «отказ в обслуживании» и был выбран для
рассмотрения в данной ВКР.
1.2 Обзор существующих методов решения
Прежде, чем перейти к рассмотрению алгоритмов машинного обучения и
нейронных сетей для диагностирования DDoS, рассмотрим классические приёмы,
не основанные на искусственном интеллекте, которые можно условно разделить
на две группы по временному признаку:
1) Профилактические меры, направленные на заблаговременную защиту
от атак;
2)
Способы
и
решения,
предпринимаемые
во
время
атаки
злоумышленника на сервер.
К первой группе мер по предотвращению распределенных атак «отказ в
обслуживании» относится повышение безопасности путем гибкой настройки
конфигурации веб-сервера [5](установка максимального количества соединений,
максимальный размер передаваемых данных, время тайм-аута для запроса и др.).
Пример конфигурации представлен на рисунке 1.2.1:
Рисунок 1.2.1 — Пример конфигурации веб-сервера nginx
Ко второй группе можно отнести следующие способы защиты [1]:
17
— проанализировать файл логов сервера и, воспользовавшись утилитой
«grep», заблокировать доступ к серверным ресурсам определенным IPадресам(рисунок 1.2.1):
Рисунок 1.2.2 — Пример простейшей DDoS-атаки, обнаруженной в логе сервера
Очевидный минус — не все боты атакуют «в лоб», так чтобы признаки их
присутствия были видны сразу, встречаются атаки довольно медленные, но
продолжительные, с постоянно меняющимися IP-адресами;
— воспользоваться специальным модулем для nginx — testcookie-nginx.
Данный компонент идеально подойдет для фильтрации самых банальных HTTPфлуд ботов, так как он выполняет самые простые проверки для клиентов: наличие
обработки механизма перенаправления запросов, работы с cookie-файлами,
поддержка JavaScript. Однако, на текущий момент времени встречаются и более
«интеллектуальные» боты с высокой степенью интерактивности и поддержкой
большинства технологий протокола HTTP;
— ограничить доступ к серверу: внести в конфигурационный файл фильтр
по определенным странам или же, выявив наиболее часто подвергающиеся атакам
разделы сайта, временно приостановить их работу путем перенаправления на
другой раздел. Последнее решение влечет за собой частичную потерю
функционала веб-приложения.
18
1.3 Обзор методов машинного обучения, применяемых для
классификации DDoS-атак
Рассматривая различные способы обнаружения DDoS-атак в предыдущем
разделе, можно сделать вывод о том, что существующие решения обладают лишь
одним преимуществом — простотой реализации и использования, однако они не
обеспечивают должной гибкости в рамках текущей задачи, то есть не существует
строго детерминированного алгоритма, способного различить действия ботов
недоброжелателей и добросовестных пользователей, поэтому было принято
использовать метод машинного обучения и статистики — нейронную сеть.
На сегодняшний день наблюдается тренд на машинное обучение и
искусственный интеллект, поэтому существует множество алгоритмов и
архитектур нейронных сетей, каждый из которых применяется для решения
конкретной задачи. Согласно теме данной ВКР необходимо решить проблему
дифференциации запросов из файла логгирования на пользовательские и запросы
от злоумышленника по определенным критериям. Такая задача в терминах
машинного
обучения
и
нейронных
сетей
носит
название
«задачей
классификации», соответственно далее будут рассмотрены различные методы
классификации машинного обучения, применяемых в данном случае.
1.3.1 Наивный байесовский классификатор
Алгоритм наивной байесовской классифиакции[2] основан на теореме
Байеса (1)
P ( c | x )=
P (x |c) P (c)
,
P(x)
(1)
где P(c | x) — апостериорная вероятность принадлежности признака х классу С;
P(c) — априорная вероятность данного класса c;
P(x | c) — вероятность признака x при данном классе c;
P(x) — априорная вероятность признака x.
Если же признаков x больше одного, то мы имеем дело с вектором из x1, x2,
… xn n признаков.
19
Главное допущение данного вида классификации состоит в том, что
признаки классифицируемого объекта являеются независимыми, то есть
применима формула умножения вероятностей для числителя, и итоговая формула
для классификации принмает следующий вид(2).
(2)
cla ssify = arg m ax P ( c | xi ) ∏ P ( xi | c ) ,
То есть, суть метода состоит в максимизации вероятности принадлежности
к классу с на основе вектора признаков x.
Преимущества метода:
— простота реализации;
— высокая производительность вычислений;
— для обучения достаточно выборки небольшого размера.
Недостатки:
—
«наивность»
метода
классификации.
Наличие
в
выборке
корреллирующих между собой признаков негативно сказывается на обучении.
Достаточным примером такого случая применительно к теме данной ВКР служит
DDoS-атака с небольшого количества IP-адресов — в таком случае будет
наблюдаться коррелляция между адресом атакующего и кодом ответа сервера.
1.3.2 Метод ближайших соседей
Данный метрический алгоритм классификации получил название в силу
принципа своей работы - «объект считается принадлежным к тому классу, к
которому относится большинство его соседей» [2]. Иллюстрация такого метода
классификации представлена на рисунке 1.3.2.1:
20
Рисунок 1.3.2.1 — Иллюстрация метода ближайших соседей
Собственно самой метрикой для алгоритма обычно выступает евклидово
расстояние(формула 3) между элементами обучающей выборки и тестируемой.
2
2
d= √ ( x 1 − y 1 ) + ( x 2− y 2 ) ,
(3)
Классификация в данном алгоритме происходит следующим образом:
1) Выбирается значение k — количество «соседей» с которыми предстоит
сравнивать;
2) Вычисляется расстояние объекта из тестируемой выборки до объекта
из тренировочной выборки;
3) Объекты тестовой выборки сортируются по возрастанию расстояния до
объектов из тренировочной выборки;
4) Класс нового объекта определяется наиболее часто встречаемым
классом среди k полученных объектов на предыдущем шаге.
Достоинства данного метода классификации:
— простота реализации.
К недостаткам можно отнести следующее:
— проблема выбора k — числа ближайших соседей и метрики для подсчета
расстояния до объектов классов;
21
— специфический метод обучения засчет постоянного обращения к
обучающей выборке;
— низкая производительность: для каждого нового объекта тестовой
выборки приходится находить расстояние до объектов тренировочной выборки.
Итак, данный метод классификации не является приемлемым в рамках
задачи
обнаружения
DDoS-атак
в
силу
наличия
недетерминированных
параметров(сколько запросов из лога сервера рассматривать как «соседей»?),
недостаточной производительности и постоянного присутствия в ОЗУ большого
объема данных вследствии специфичности алгоритма обучения.
1.3.3 Многослойный персептрон
Данная архитектура нейронной сети принадлежит группе многослойных
сетей прямого распространения. В состав такой сети обычно входит множество
сенсорных элементов(входной слой), один или несколько скрытых слоев,
вычислительных
нейронов
и
один
выходной
слой.
Входной
сигнал
распространяется в прямом направлении от слоя к слою [2]. Пример
многослойного перспептрона приведен на рисунке 1.3.3.1:
Рисунок 1.3.3.1 — Многослойный персептрон
22
Многослойные персептроны успешно применяются для решения
разнообразных сложных задач, в том числе задач классификации. Прежде чем
программировать нейросеть, необходимо задать следующие первоначальные
настройки:
1) Количество нейронов во входном слое, равное числу признаков
объекта для классификации;
2) Количество нейронов в скрытом слое;
3) Количество нейронов в выходном слое, равное числу существующих
классов;
4) Начальные веса нейронов. Обычно задаются либо рандомизированно,
либо с помощью специального алгоритма инициализации.
Обучение с учителем для данного метода выполняется с помощью
популярного алгоритма обратного распространения ошибки:
1) Прямой проход. На данном этапе значения от входных нейронов
передаются далее на нейроны скрытого слоя и на выходной слой(рисунок 1.3.3.2):
Рисунок 1.3.3.2 — Схема передачи информации в нейронной сети
Значения на входе следующего нейрона расчитываются по формуле 4.
H 1 input =I 1 ∗ w 1 + I 2 ∗ w 2 ,
(4)
Далее, для проведения нормализации значений и получения значения на
выходе
следующего
нейрона
применяется
функция
активации(линейная
пороговая, сигмоидальная функция, гиперболлический тангенс), выбор которой
обусловлен областью значений признаков для задачи классификации.
23
2) Подсчет ошибки. Существует несколько вариантов для расчета, но
большей популярностью пользуется средняя квадратичная ошибка(формула 5).
n
MSE =
∑0 (i n − an )2 ,
n
(5)
где in — значение на выходном нейроне;
an — значение на тренирующей выборке;
n — количество нейронов на выходном слое.
3) Обратный ход. Полученное на предыдущем шаге значение ошибки
передается в формулы расчета производных и градиентов, значения которых
корректируют исходные веса нейронов.
Таким образом, обучение нейронной сети считается завершенным при
достижении функции потерь минимального значения.
1.4 Обзор аналогов
В предыдущих разделах ВКР было показано, что DDoS-атаки являются
простым и эффективным средством дестабилизации работы веб-приложений,
наносящим колоссальный материальный ущерб по бизнесу. Именно по этой
причине сегодня на рынке программного обеспечения представлено множество
решений для противостояния данного вида угроз кибербезопасности.
1.4.1 Imperva Incapsula DDoS Protection
Imperva Incapsula — облачная платформа, объединяющая несколько
программных компонентов:
— защита от DDoS-атак;
— кэширование контента;
— балансировщик нагрузки;
— сеть доставки содержимого.
Данное средство позиционирует себя как комплексное решение для защиты
от распределенных атак вида «отказ в обслуживании», состоит из трех сервисов и
24
работает анализирует траффик на сетевом, транспортном и прикладном
уровнях(рисунок 1.4.1.1):
Рисунок 1.4.1.1 — Структураная схема решения Imperva Incapsula
На сетевом и транспортном уровнях данный программный продукт борется с
высокоскоростным траффиком и пакетами, перенаправляя этот трафик с
собственнной локальной сети, не давая таким образом злоумышленнику
нарушить работу клиентских серверов. Схема решения представлена на рисунке
1.4.1.2:
Рисунок 1.4.1.2 — Перенаправление трафика в Incapsulata
На прикладном уровне модели OSI решение использует «подход пяти
колец», состоящий из следующих компонентов:
— блокировка известных «плохих» ботов;
— тестирование клиента на наличие поддержки JavaScript;
25
— тест на наличие Cookie-файлов у клиента;
— фильтрация с помощью технологии CAPTCHA;
—
детектировие
атак
злоумышленника
на
основе
собственной,
обновляемой в реальном времени базе знаний.
Преимущества программного продукта:
1) Комплексный подход к обнаружению и защите от DDoS-атак;
2) Наличие собственного облачного сервиса;
3) Анализ и перенаправление DDoS-атак осуществляется через глобальную
сеть Incapsulata.
Недостатки данного решения:
1) Обнаружение DDoS-атак на прикладном уровне осуществляется
тривиальными способами, рассмотренными в работе раннее.
1.4.2 Kaspersky DDoS Prevention
Kaspersky DDoS Prevention — программный продукт «Лаборатории
Касперского», предназначенный для защиты клиентов от распределенных атак
вида «отказ в обслуживании».
Данное решение включает в себя следующие составные части:
а)
Сенсор, обнаруживающий начало и конец атаки. Является основным
инструментом
мониторинга
и
состояния
клиента.
Данный
программно-
аппаратный комплекс предназначен для анализа клиентского трафика и
составлению статистики по нему в режиме реального времени;
б)
Центры очистки трафика, фильтрующие нелегальный трафик. Они
объединены в облачную информационную инфраструктуру;
в)
Центр
обеспечения
безопасности
обеспечивает
противодействие
нестандартным атакам;
г)
Файлы логов с подробной отчетностью.
Работа программного продукта осуществляется следующим образом:
26
1) Сенсор собирает информацию о трафике и производит замер
необходимых параметров, передавая данные в Центр очистки;
2) В центре очистки производится анализ поступившей с сенсора
информации дежурными экспертами, которые и принимают решение об
интерпретации аномалии как DDoS-атаки и необходимости перехода в режим
фильтрации;
3) Трафик перенаправляется на фильтры Kaspersky DDoS Prevention Server.
Схема функционирования данного программного продукта представлена
на рисунке 1.4.2.1:
Рисунок 1.4.2.1 — Схема функционирования Kaspersky DDoS Prevention
Положительные стороны данного продукта:
а) Наличие сложной технологии обнаружения бот сетей по статическим и
поведенческим признакам — Kasperky DDoS Intelligence;
б) Распределенная система очистки;
в) Подробная отчетность о ходе атаки;
г) Удобная система оповещения ответственных сотрудников клиента.
К недостаткам можно отнести следующее:
а) Относительная высокая цена подписки;
б) Необходимость ручного переключения продукта в режим защиты после
анализа аномалий трафика.
27
1.4.3 StormWall
Сервис StormWall занимает лидирующие позиции на рынке защиты от
DDoS-атак. Существенную часть защитных технологий составляют собственные
разработки с нетривиальными функциональными возможностями.
Storwall обеспечивает фильтрацию большого числа разновидностей DDoSатак практически на всех уровнях модели OSI: сетевом, транспортном, сеансовом
и прикладном. Защита от распределенных атак вида «отказ в обслуживании»
заключается в технологии Triple Filter — весь трафик, идущий к серверу
«очищается» в трех местах:
а)
Пограничные
маршрутизаторы.
Около
сотни
маршрутизаторов
расположены по всему миру и настроены таким образом, чтобы отсекать трафик
злоумышленника. Здесь блокируются TCP- и UDP-спам;
б) Аппаратные фильтры. На данном уровне блокируется основная часть
TCP/UDP флуда. Сеть фильтрации построена таким образом, чтобы равномерно
распределять нагрузку на несколько аппаратных фильтров;
в) Stateful-фильтры. Это самый тонкий уровень фильтрации, на котором
блокируются атаки ботами. Дальше идет уровень HTTP-фильтрации с системой
очистки BanHammer.
Схема технологии Triple Filter представлена на рисунке 1.4.3.1.
Рисунок 1.4.3.1 — Схема технологии TripleFilter
Технология
BanHammer
основана
на
интеллектуальных
фильтрации — поведенческом и сигнатурном анализе.
Преимущества сервиса:
методах
28
1) Наличие точек присутствия в крупнейшних ЦОДах в разных точках
мира;
2) Система фильтрации собственной разработки;
3) Широкий выбор вариантов подключения сервиса под разные задачи.
К недостаткам можно отнести:
1) Небольшое количество настройек и опций;
2)Необходимость предоставлять сервису закрытый ключ в случае
подключения к сайту, использующему HTTPS.
Проанализировав каждый программный продукт, составим сравнительную
таблицу преимуществ и недостатков имеющихся решений(таблица 1.4.1):
Таблица 1.4.1 — Сводная таблица преимуществ и недостатков аналогичных
программных продуктов
Программный продукт
Преимущества
Недостатки
1
2
3
Imperva Incapsula DDoS
Protection
Комплексный подход к Обнаружение
обнаружению и защите от на
DDoS-атак;
Наличие
DDoS-атак
прикладном
уровне
осуществляется
собственного тривиальными способами;
облачного сервиса;
Анализ
перенаправление
и
DDoS-
атак осуществляется через
глобальную
сеть
Incapsula.
Kaspersky DDoS
Prevention
Наличие
сложной Относительная
высокая
технологии обнаружения цена подписки;
бот сетей по статическим Необходимость
и поведенческим
ручного
переключения продукта в
29
Продолжение таблицы 1.4.1
1
2
3
признакам — Kasperky
режим защиты после
анализа аномалий
трафика;
DDoS Intelligence;
Распределенная система
очиски;
Подробная отчетность о
ходе атаки;
Удобная система
оповещения
ответственных
сотрудников клиента
StormWall
Наличие
точек Небольшое
присутствия
крупнейших
в настройек и опций;
ЦОДах
в Необходимость
разных точках мира;
Система
Широкий
сервиса
предоставлять
сервису
фильтрации закрытый ключ в случае
собственной разработки;
вариантов
количество
подключения
к
сайту,
выбор использующему HTTPS.
подключения
под
разные
задачи.
1.5 Требования к программному обеспечению
Итак, в предыдущих разделах был произведен детальный обзор
технологии DDoS-атак, приведены примеры стандартных методов защиты и
существующие алгоритмы машинного обучения для бинарной классификации
объектов(в данной задаче — запросов), а так же обзор аналогичных продуктов,
30
теперь можно перейти к описанию архитектуры разрабатываемого программного
средства.
Программное средство будет работать в двух режимах: режиме обучения
нейросети и режиме обнаружения DDoS-атак. В первом случае, на вход
программе будут подаваться примеры уже известных, классифицированных
запросов(так происходит «обучение с учителем») в виде данных, полученных из
файла логов сервера(рисунок 1.5.1). В конце работы данного режима можно будет
увидеть статистику обучения нейросети.
Рисунок 1.5.1 — Схема режима обучения программного средства
Получив
оптимальный,
приводящий
к
максимальной
точности
классификации запросов набор параметров сети, можно запускать сеть в режиме
обнаружения атак. В данном режиме вместе со стартом основного приложения
запускается дополнительный веб-сервер, в который перенаправляются запросы с
главного и происходит их классификация на легитимные и не легитимные
запросы(рисунок 1.5.2).
Рисунок 1.5.2 — Схема режима обнаружения DDoS-атак программного средства
31
1.5.1 Функциональные требования к программному обеспечению
Программное средство, обнаруживающее DDoS-атаки на прикладном
уровне модели OSI, должно выполнять следующие функции:
а) Выполнять чтение необходимых аргументов командной строки;
б) Переключаться из режима обучения в режим обнаружения DDoS-атак;
в) Производить подготовку данных из файлов логов сервера;
г) Уметь классифицировать запросы на клиентские и от злоумышленника;
д) Перенаправлять запросы от основного веб-сервера к веб-серверу
приложения;
е)
Обеспечивать
графический
вывод
статистической
информации
алгоритма обучения нейросети на экран.
1.5.2 Нефункциональные требования к программному обеспечению
К нефункциональным требованиям относится:
а)
Кросплатформенность. Программный продукт должен работать на
платформах семейства Windows и *nix;
б)
Интеграция. Должен обрабатывать запросы от веб-сервера по мере их
поступления;
в)
Совместимость. Программный продукт должен запускаться из сред
выполнения .NET Framework и Mono минимум на 4.5 и 4.0 версиях
соответственно;
г)
Безопасность.
Программное
обеспечение
должно
корректно
обрабатывать внештатные ситуации;
д)
Понятный пользователю интерфейс командной строки. Программный
продукт должен уведомлять пользователя о процессе работы программы, об
ошибках в формате аргументов командной строки и выдавать соответствующую
справку;
32
е)
Производительность. Программный продукт должен успешно
запускаться и работать на процессорах не ниже Intel Core i3-2xxx / AMD Athlon 64
и оперативной памяти не менее 512 Мб.
33
2
СПЕЦИФИКАЦИИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
2.1 Функциональная модель программного обеспечения
Для
описания
функциональной
модели
программного
обеспечения
воспользуемся средством диаграмм вариантов использования.
Данное
программное
средство
будет
включать
администратора веб-сервера, пользующимся программным
двух
актеров:
средством
для
обучения нейронной сети на тренировочной выборке запросов из лога сервера и
пользователя, осуществляющего запуск программного обеспечения с обученной
нейросетью.
Программное средство функционирует в двух режимах:
а) Режим обучения. В данном режиме происходит следующее:
1) Администратор веб-сервера инициирует процесс обучения нейросети;
2)Происходит проверка корректности введенных аргументов командной
строки и наличие файла лога на диске;
3) Осуществляется считывание данных из файла и преобразование их к
заданному формату;
4) Анализ классификатором запросов из лога сервера;
5) Вывод результатов обучения нейронной сети.
б) Режим фильтрации DDoS-атак:
1) Администратор выполняет запуск приложения в режиме обработки
запросов;
2)
Основной
веб-сервер
выполняет
перенаправление
запроса
пользователя на веб-сервер приложения;
3) Классификатор определяет принадлежность запроса к DDoS-атаке.
Все этапы функционирования представлены на диаграмме вариантов
использования(рисунок 2.1.1):
34
Рисунок 2.1.1 — Функциональная модель режима обучения
2.2 Информационная модель программного обеспечения
Информационная
использованием
модель
контекстной
программного
диаграммы
обеспечения
классов.
Для
описывается
с
разрабатываемого
программного средства выделим следующие классы:
а) Модель хранения запроса;
б) Диспетчер проверки корректности введенных параметров;
в) Диспетчер обработки данных;
г) Диспетчер классификации запросов;
д) Диспетчер вывода информации об обучении нейросети;
е) Диспетчер обработки запросов в режиме фильтрации DDoS-атак;
ж) Диспечтер вывода информации о классификации текущего запроса в
режиме фильтрации DDoS-атак.
Данные классы представлены на контекстных диаграммах классов — для
режима обучения(рисунок 2.2.1) и для режима фильтрации(рисунок 2.2.2):
35
Рисунок 2.2.1 — Контекстная диаграмма классов для режима обучения нейросети
Рисунок 2.2.2 — Контекстная диаграмма классов для режима фильтрации DDoSатак
36
2.3 Поведенческая модель программного обеспечения
Модель поведения программного обеспечения описывается с помощью
диаграмм состояний. Для ее построения выделим состояния и возможные
переходы разрабатываемого программного средства:
а) «Начальное состояние». Безусловный переход в состояние «Ожидание
ввода параметров»;
б) «Ожидание ввода параметров». Переход в состояние «Проверка
корректности введенных параметров» при условии ввода параметров;
в) «Проверка корректности введенных параметров». Переход в состояние
«Ожидание ввода параметров» при условии некорректных параметров, в
противном случае — переход в состояние «Формирование модели запросов из
лога сервера».
г) «Формирование модели запросов из лога сервера». Переход в состояние
«Классификация запросов сервера», когда модели запросов сформированы;
д) «Классификация запросов сервера». Переход в состояние «Вывод
результатов обучения», при условии получения результатов классификации;
е) «Вывод результатов обучения». Безусловный переход в конечное
состояние.
Для удобства восприятия построим диаграмму состояний(рисунок 2.3.1):
Рисунок 2.3.1 — Диаграмма состояний разрабатываемого программного средства
37
3
ПРОЕКТИРОВАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
3.1 Структура программного обеспечения
Проектируемое программное средство обнаружения DDoS-атак будет
состоять из следующих функциональных модулей:
а) Основной модуль программы. Обеспечивает ввод данных и содержит
функции всех остальных модулей программы;
б) Модуль проверки корректности введенных параметров. Содержит
функции проверки, сведения об ошибках и исключениях, функцию вызова
справки;
в) Модуль обработки данных из лога сервера. Данный модуль включает в
себя функции по чтению данных из лога и функции инициализации моделей
запросов;
г) Модуль запуска веб-сервера, принимающего запросы от основного вебсервера;
д) Модуль классификации запросов. Содержит функции для алгоритма
классификации запросов;
е) Модуль вывода информации об обучении нейронной сети. Содержит
функции для предоставления статисчтической информации в графическом виде о
результатах работы програмы;
Диаграмма компонентов представлена на рисунке 3.1.1:
Рисунок 3.1.1. - Диаграмма компонентов для разрабатываемого средства
38
3.2 Проектирование типов данных
В данном программном средстве можно выделить следующие типы:
а) «Request». Содержит следующую информацию о запросе:
1) IP-адрес клиента;
2) Адрес обращения на сайте;
3) Версия протокола HTTP;
4) Метод запроса;
5) Статус-код;
6) Время запроса;
7) Информация о браузере клиента.
б) «ParametersVerifier». Включает в себя следующие методы:
1) «CheckForWrongFormat()». Аргумент — название файла лога.
Проверяет вводимые аргументы на соответствие логике приложения:
— проверка на количество введенных аргументов: если количество
превышает один, генерируется исключение System.ArgumentException и
выводится сообщение об ошибочном количестве параметров;
—
проверка
значения:
при
введенных
передаче
System.ArgumentException
аргументов
пустой
и
строки
выводится
на
неинициализированные
генерируется
сообщение
о
исключение
неправильном
формате аргументов;
2) «CheckForLogExisting()». Аргумент — название файла лога на диске.
В
случае
отсутствия
файла
System.IO.FileNotFoundException
на
диске,
и
генерируется
выводится
исключение
сообщение
о
несуществующем файле;
3) «ChooseWorkingMode()». Параметр — аргумент командной строки.
Если введено «train», устанавливается режим обучения, если «run» - запуск
в режиме фильтрации DDoS-атак;
в) «ServerLogProccessor». Содержит методы:
39
1) «PreproccessData()». Аргумент — существующий файл лога на диске
Выполняет обработку данных из файла: построчно считывает информацию
о запросах в массив;
2) «ParseRequest()». Здесь происходит разбор строк из файла и
формирование сущностей «Request»: все элемены массива разбираются с
помощью регулярного выражения и происходит инициализация типа
«Request»;
г) «DdosRecognizer». Содержит методы:
1) «Classify()». Аргумент — запрос, перенаправленный с основного вебсервера. Используется только в режиме обнаружения DDoS-атак для
классификации запросов с помощью нейросети;
2) «TrainNetwork». Аргумент — данные лога сервера, преобразованные к
формату «Request». Здесь происходит обучение многослойного персептрона
по алгоритму обратного распространения ошибки;
3)
«SwitchMode()».
Переводит
программное
средство
в
режим
фильтрации запросов;
д) «StatisticsCollector». Включает методы:
1) «GetClassifierStatistics()».Аргумент — классификатор запросов. Метод
собирает необходимые статистические данные о процессе обучения:
— мера ошибки классификатора;
— время обучения;
— количество пользовательских запросов;
— количество запросов от злоумышлениика.
2) «PlotClassifierStatistics()». Здесь происходит построение графика на
основе статистических результатов обучения.
е) «RedirectServer». Содержит методы:
1) «RunRedirectServer()». Аргумент — адрес в формате «имя хоста : порт»
для запуска веб-сервера. Инициализирует запуск сервера переадресации;
40
2) «SendRequestToClassifier()» Аргумент — запрос с основного сервера в
строковом формате. Выполняет отправку данных для классификатора.
Листинг программы, содержащий данные типы и методы, приведен в
приложении А.
3.3 Основные алгоритмы
В данном программном средстве представлены два основных алгоритма:
а) Алгоритм подготовки данных: на вход подается название режима
функционирования — режим обучения или режим фильтрации DDoS-атак. Далее
происходит проверка аргументов на корректность(равенство одному, непустые
значения, существование файла на диске). Если был выбран режим фильтарции,
то приложение запускает веб-сервер для перенаправления запросов от nginx в
программное средство. Поступивший запрос разбирается на IP-адрес,
адрес
посещения на сайте, статус-код сервера, метод запроса, время запроса, версию
HTTP, информацию о браузере. Из этих данных формируется сущность «Request»
и отправляется на классификатор. Результаты классификации отображаются на
экране. Если же был выбран режим обучения, то происходит разбор файла лога
сервера и инициализация сущности «Request». Затем данные поступают на
классификатор, результаты работы которого отображаются в виде графика на
экране. Схема алгоритма изображена на рисунке 3.3.1:
Рисунок 3.3.1 — Схема алгоритма обработки данных, лист 1
41
Рисунок 3.3.1, лист 2
б) Алгоритм нейросетевого обучения. Состоит из нескольких этапов:
1) Этап инициализации параметров сети: количество скрытых слоев,
количество нейронов на скрытом слое, скорость обучения, веса нейронов,
ввод значений признаков на входные нейроны;
42
2) Прямой проход по сети: подсчет входных и выходных значений
нейронов по формулам суммы весов и функции активации;
3) Подсчет ошибки по выбранной метрике ошибки;
4) Обратный проход по сети: изменение весов нейронов по формулам
градиента и производной.
5) Если ошибка больше заданного значения возвращаемся к пункту б,
иначе конец.
Схема данного алгоритма представлена на рисунке 3.3.2
Рисунок 3.3.2 — Схема алгоритма нейросетевого обучения, лист 1
43
Рисунок 3.3.2, лист 2
44
4 РЕАЛИЗАЦИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
4.1 Использованные инструментальные средства и технологии
Выбор средств разработки для создания программного средства в данной
ВКР обусловлен такими критериями как: удобство пользования, актуальность
технологий
и
поддержка
среди
разработчиков.
В
число
инструментов,
использованных при проектировании программного обеспечения вошли:
— среда выполнения .NET/Mono;
— мультипарадигменный язык программирования — F#;
— Accord.NET — библиотека алгоритмов машинного обучения;
— Rider — интегрированная среда разработки от JetBrains;
— Nginx — высокопроизводительный веб-сервер.
4.1.1 Среда выполнения .NET/Mono
Флагманский
фреймворк
стека
Майкрософт
полностью
называется
«Microsoft .NET Framework»(рисунок 4.1.1). Приложения, написанные с его
помощью запускаются исключительно под Windows и включают в себя
следующие типы:
— консольные приложения;
— фреймворк для веб-программирования ASP.NET;
— реализация концепции «модель-представление-контроллер» в виде
фреймворка ASP.NET MVC;
— приложения с графическим пользовательским интерфейсом WinForms/
WPF Application;
— службы Windows;
— скрипты PowerShell;
— COM-компоненты(включая плагины для офисных приложений;
— приложения в современном стиле Metro — Universal Windows Platform;
— расширения для SQL-сервера.
45
Рисунок 4.1.1.1 — Современный стек технологий .NET Framework
Платформа Microsoft .NET впервые была представлена примерно в 2002
году и быстро стала одной из основных современных сред разработки
программного обеспечения. Изначально позиционировалась как среда для
программирования исключительно под платформу Windows, однако уже в 2004
году был начат процесс переноса решения от Microsoft в сторону *nix-подобных
операционных систем — так появился проект Mono.
Mono — реализация CLR с открытым исходным кодом, практически
полностью совместимая с .NET Framework: все, что есть в .NET Framework,
исключая WPF, EntityFramework и WCF, ограниченная поддержка WCF.
Среда выполнения Mono — Windows, OS X, openSuse Linux, Debian и
Ubuntu. Среди поддерживаемых видов приложений можно отметить:
— консольные приложения;
— веб-приложения ASP.NET/ASP.NET MVC;
— кроссплатформенные приложения(WinForms, Gtk#, wxNET);
— приложения магазина для компьютеров Apple(MonoMac);
— Linux/KDE приложения(Qyoto);
— сервисы Windows.
На сегодняшний день платормы активно развиваются: последними на
момент написания ВКР были версии .NET Framework 4.7.2 и Mono 5.0.1.1.
Преимущества платформы:
46
а) Поддержка многочисленных языков программирования(C#, Visual Basic,
F# и многих других);
б) Общая среда исполнения кода — CLR. Благодаря ей код на разных
языках программирования транслируется в единый байт-код;
в) Обширная стандартная библиотека классов.
4.1.2 Язык программирования F#
F# — мультипарадигменный язык программирования, разработанный
Доном Саймом в Mcirosoft Research в Кембридже. Данный язык является частью
семейства
языков
программирование
.NET
наряду
Framework,
с
поддерживающий
императивным
функциональное
процедурным
и
объектно-
ориентированным.
F# - компилируемый язык программирования, при этом в качестве
промежуточного языка используется язык «высокоуровнего ассемблера» - CIL,
так же как и в программах, написанных на C# или VB.NET.
Наряду
с
F#-компилятором
присутствует
и
F#-интерпретатор,
исполняющиий код интерактивно. Отличительной чертой F#-компилятора и F#интерпретатора является возможность воспринимать код двумя разными
способами — немедленно (по умолчанию) и отложенно (программисту требуется
явно указать это в исходном коде):
— в случае немедленной интерпретации, выражения вычисляются заранее в
момент запуска программы на выполнение, независимо от того, вызываются ли
они в процессе выполнения программы или нет. В этом случае, зачастую
снижается производительность выполнения программы, а также происходит
неэкономное расходование ресурсов системы (например, памяти).
— в случае ленивой интерпретации кода, выражения вычисляются только в
тот момент, когда к ним происходит непосредственное обращение в процессе
выполнения программы. Это избавляет программу от перечисленных выше
недостатков, но снижает предсказуемость в плане объёма и последовательности
47
использования ресурсов (процессорного времени, памяти, устройств вводавывода и т. п.) на различных этапах выполнения программы.
В контексте данной ВКР язык F# был выбран по причине именно наличия
функционального подхода, так как последний существенно облегчает обработку
больших массивов данных с помощью декларативного стиля описания команд и
наличия богатого набора функций для работы с данными — именно то, что нужно
для работы с алгоритмами машинного обучения.
К преимуществам языка можно отнести:
а)
Наличие нескольких подходов к программированию;
б)
Декларативный стиль описания команд лучше подходит для работы с
данными;
в)
Возможность
написания
скриптов
и
режима
выполнения
в
интерпретаторе.
4.1.3 Библиотека машинного обучения Accord.NET
Accord.NET
—
фреймворк
для
научных
вычислений
в
среде
выполнения .NET, первая версия которого появилась в 2010 году.
Фреймворк содержит богатый набор библиотек алгоритмов машинного
обучения, математики и статистики, включая следующие разделы:
— линейная алгебра;
— численная оптимизация;
— статистика;
— машинное обучение;
— искусственные нейронные сети;
— обработка сигналов и изображений;
— построение графиков и алгоритмы визуализации.
На сегодняшний день фреймворк активно развивается(последняя версия на
момент написания ВКР — 3.8.0) и поддерживается разработчиками.
48
4.1.4 Интегрированная среда разработки JetBrains Rider
Rider — кросплатформенная интегрированная среда разработки от
компании JetBrains. Данная IDE сочетает в себе мошные возможности по
рефакторингу и статическому анализ приложений .NET с помощью технологии
Resharper с функциональностью платформы IntelliJ. Присутствует множество
инструментов для работы с кодом, в том числе:
— отладчик;
— интегрированная система контроля версий;
— инструменты тестирования ПО;
— TODO-метки;
— встроенный REST-API клиент;
— поиск по коду всего приложения.
Так
же
присутствует
поддержка
большого
количества
языков
программирования: C#, VB.NET, F#, синтаксис Razor в ASP.NET, JavaScript,
TypeScript, XAML, HTML, CSS, SCSS, LESS, JSON и SQL.
4.1.5 Веб-сервер Nginx
Nginx
-
небольшой
по
размерам,
очень
быстрый,
достаточно
функциональный веб сервер и почтовый прокси-сервер, разработчик Игорь
Сысоев. Из-за очень маленького потребления ресурсов системы и скорости
работы,
а
так-же
гибкости
конфигурирования,
веб-сервер
Nginx
часто
используется в качестве фронтэнда к более тяжеловесным серверам, такими как
Apache, в проектах с высокой нагрузкой. Классическим вариантом является
связка, Nginx — Apache - FastCGI. Работая в такой схеме, сервер Nginx,
принимает все запросы приходящие по HTTP, и в зависимости от конфигурации и
собственно самого запроса, решает, обработать-ли запрос самому и отдать
клиенту готовый ответ или отправить запрос на обработку, одному из бакэндов
(Apache или FastCGI).
Основные возможности в качестве веб-сервера:
49
— обработка статического контента, индексные файлы, листинг директорий,
кэш дескрипторов открытых файлов;
— акселерированное проксирование с кэшированием, распределение
нагрузки и отказоустойчивостью;
— акселерированная поддержка FastCGI серверов с кэшированием,
распределением нагрузки и отказоустойчивостью;
— модульная структура, поддержка различных фильтров ( SSI, XSLT, GZIP,
докачка, chunked ответы );
— поддержка SSL и расширения TLS SNI;
— Ip-based или Name-based виртуальные сервера;
— работа с KeepAlive и pipelined соединениями;
— возможность конфигурирования любых таймаутов а так-же количества и
размеров буферов, на уровне сервера Apache;
— выполнение различных действий в зависимости от адреса клиента;
— изменение URI с помощью регулярных выражений;
— специальные страницы ошибок для 4хх и 5хх;
— ограничение доступа на основе адреса клиента или по паролю;
— настройка форматов лог-файлов, ротация логов;
— ограничение скорости ответа клиенту;
— ограничение количества одновременных подключений и запросов;
— поддержка методов PUT, DELETE, MKCOL, COPY и MOVE;
— изменение настроек и обновление сервера без остановки работы;
— встроенный Perl.
4.2 Результаты работы приложения
В
основе
архитектура
персептрона»,
работы
разработанного
нейронной
сети,
которая
общая
структура
и
программного
носит
алгоритм
название
обучения
средства
лежит
«многослойного
который
уже
рассматривались в предыдущих разделах. Однако, на выборе самой архитектуры
50
нейросети задача корректной и точной классификации не заканчивается —
необходимо так же настроить [3] параметры данной сети, которые бы
поспособствовали минимальному значению функции ошибки, а именно следует
настроить следующие параметры сети:
а) Функцию активации нейронов;
б) Количество скрытых слоев в сети;
в) Количество нейронов в скрытых слоях сети;
г) Скорость обучения.
Кроме этого, условием окончания обучения является порог для ошибки,
равный в данной работе не более 12% от всех запросов.
Начальная конфигурация сети выглядела следующим образом(рисунок
4.2.1):
а) Функция активации — сигмоид;
б) Два скрытых слоя;
в) Два нейрона в скрытом слое;
г) Скорость обучения равна 0,1.
Рисунок 4.2.1 — Схематичное изображение первого варианта нейронной сети
Далее
были
произведена
серия
экспериментов
с
различными
комбинациями параметров сети:
а) Зафиксируем количество нейронов и скорость обучения. Функцию
активации будем варьировать. Результаты представлены в таблице 4.2.1.
51
Таблица 4.2.1 — Значение ошибки при разных функциях активации:
Функция акивации
Количеств Количеств Скорост Время Ошибка
о
о нейронов
ь
обучения,
,%
эпохи
скрытых в слоях, шт обучени
я
слоев, шт
Сигмоид
2
2/1
0,1
2878
28
Тождественное
отображение
2
2/1
0,1
Сеть не
обучилась
45
Линейная
2
2/1
0,1
2500
51
Пороговая
2
2/1
0,1
Сеть не
обучилась
100
ReLU
2
2/1
0,1
82
12
По данным таблицы видно, что оптимальным вариантом будет выбор
функции активации ReLU.
б) Теперь будем варьировать количество слоев и нейронов сети (таблица
4.2.2).
Таблица 4.2.2 Значение ошибки при разном количестве скрытых слоев и нейронов
в них
Количество
скрытых слоев, шт
Количество
нейронов в слоях,
шт
Скорость
обучения
Время
обучения,
эпохи
Ошибка, %
1
2
3
4
5
2
2/1
0,1
82
12
2
3/1
0,1
174
15
2
3/2
0,1
200
10,5
2
1/4
0,1
1256
24
52
Продолжение таблицы 4.2.2
1
2
3
4
5
3
2/1/3
0,1
800
7,5
3
3/2/1
0,1
673
8,6
3
3/2/4
0,1
3496
9
4
3/3/1/2
0,1
7845
18
4
1/4/1/2
0,1
10345
25
Исходя из данных таблицы, можно сделать вывод о том, что оптимальной
конфигурацией сети будет три скрытых слоя с двумя, одним и тремя нейронами
соответственно.
в) Наконец, необходимо определить величину «Скорость обучения»
нейросети (таблица 4.2.3).
Таблица 4.2.3 — Зависимость времени обучения и ошибки от скорости обучения
Скорость обучения
Время обучения, эпохи
Ошибка, %
1
2
3
3
4
5
0,01
800
56,8
0,04
654
40,67
0,12
257
20,45
0,15
199
15,7
0,17
188
10,8
0,175
367
11,78
0,2
735
17,4
53
Продолжение таблицы 4.2.3
1
2
3
0,256
712
23,5
0,3
1254
27
Исходя из анализа таблицы, делаем вывод о нужном значении скорости
обучения — 0,17.
Итак, в ходе проведенных экспериментов, были установлены оптимальные
параметры нейросети:
а) Функция активации: ReLU;
б) Количество скрытых слоев: 3;
в) Количество нейронов в слоях: 2 / 1 / 3;
г) Скорость обучения: 0,17.
Схематически, структура готовой нейросети изображена на рисунке 4.2.2:
Рисунок 4.2.2 — Окончательная структура нейросети
В
результате
проделанных
экспериментов
было
установлено,
что
минимальная величина ошики нейросети составила 10,8%, что является не
достаточной точностью для обнаружения DDoS-атак, так как средство, работая
перманентно,
будет
постоянно
ошибаться
в
одном
случае
из
десяти.
Следовательно администратору веб-сервера необходимо использовать средство
для диагностики трафика(например, установить квоту на количество соединений с
сервером, уменьшить время тайм-аута в файле конфигурации) , которое могло бы
54
инициировать запуск разработанного программного средства с целью повышения
точности распознавания DDoS-атак.
4.3 Описание работы приложения
Работа с приложением начинается с запуска приложения в консольном
интерфейсе с передачей необходимых аргументов(рисунок 4.3.1)
Рисунок 4.3.1 — Передача пути до файла лога приложению
Как уже было отмечено в предыдущих разделах, в программе присутствует
проверка аргументов командной строки: в случае неверного формата данных или
отсутствия файла на диске, программа аварийно завершится с показом
ошибки(рисунки 4.3.2 и 4.3.3):
Рисунок 4.3.2 — Вывод сообщения об ошибочном количестве аргументов
Рисунок 4.3.3 — Вывод сообщения об отсутствующем файле на диске
55
ЗАКЛЮЧЕНИЕ
В данной ВКР были выполнены следующие задачи:
— приведена классификация DDoS-атак;
— проанализированы существующие методы обнаружения и защиты;
— исследованы различные алгоритмические подходы в машинном
обучении
— произведен обзор аналогичных программных продуктов с выявлением
их преимуществ и недостатков;
— были сформированы функциональные требования к программному
средству защиты от DDoS-атак на прикладном уровне;
— определены спецификации программного средства;
— было спроектированно программное средство для обнаружения DDoSатак.
— установлены оптимальные параметры нейросети;
— проанализированы результаты приложения.
Все задачи, поставленные перед данной ВКР, были выполнены, а значит,
цель выпускной квалификационной работы можно считать достигнутой.
56
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
1. 16 рецептов защиты от DDoS-атак своими силами [Электронный ресурс].
- Режим доступа: https://xakep.ru/2012/12/29/16-antiddos-recipes/ (дата обращения:
17.05.2018);
2. Искусственые нейронные сети [Электронный ресурс]. - Режимдоступа:
http://www.machinelearning.ru/wiki/images/archive/c2/20120417002728%21VoronML-NeuralNets-slides.pdf (дата обращения: 15.05.2018);
3. Применение нейронных сетей для задач классификации: [Электронный
ресурс]. - Режим доступа: https://basegroup.ru/community/articles/classification (дата
обращения: 20.05.2018);
4. Analyzing Popular Layer 7 Application DDoS Attacks [Электронный
ресурс]. - Режим доступа: https://blog.sucuri.net/2015/09/analyzing-popular-layer-7application-ddos-attacks.html (дата обращения: 15.05.2018);
5.
Configuring
Logging:
[Электронный
ресурс].
https://docs.nginx.com/nginx/admin-guide/monitoring/logging/
-
Режим
(дата
доступа:
обращения:
18.05.2018);
6. July 2017 Cyber Attacks Statistics: [Электронный ресурс]. - Режим доступа:
https://www.hackmageddon.com/2017/08/24/july-2017-cyber-attacks-statistics/
(дата
обращения: 20.05.2018);
7.
Layer Seven DDoS Attacks [Электронный ресурс]. - Режим доступа:
https://resources.infosecinstitute.com/layer-seven-ddos-attacks/#gref (дата обращения:
15.05.2018);
8. Reza, M. S. Theoretical and experimental methods for defending against
DDoS attacks / M. S. Reza, I. A. Sadegh — Malaya.: Elsevier, 2016. - 74c.;
57
9. Somal, L. K. Classification of Distributed Denial of Service Attacks –
Architecture, Taxonomy and Tools / L. K. Somal, K. S. Virk // International Journal of
Advanced Research in Computer Science & Technology. - 2014. - C. 120;
58
ПРИЛОЖЕНИЕ А
(обязательное)
ИСХОДНЫЙ ТЕКСТ ПРОГРАММНОГО СРЕДСТВА
module ParametersVerifier
open System
open System.IO
let private CheckForWrongFormat(arguments: string[]) =
if Array.length arguments <> 1 then
raise (System.ArgumentException("Argument error ==> Number of args must be
one! Exiting...\n"))
let argument = String.concat "" arguments
if String.IsNullOrWhiteSpace argument then
raise (System.ArgumentException("Argument error ==> Argument cannot be null
or empty! Exiting...\n"))
let private CheckForLogExisting(logName: string) =
if not (File.Exists logName) then
raise(System.IO.FileNotFoundException("File system error ==> File " + logName
+ " doesn't exist!\n"))
let VerifyParameters (parameters: string[]) =
try
CheckForWrongFormat parameters
CheckForLogExisting parameters.[0]
with
59
module ServerLogProccessor
type Request = {
host: string;
date: string;
method: string;
httpVersion: string;
statusCode: string;
}
open System.IO
let private ParseRequest(request: string) =
{
host = request
date = request
method = request
httpVersion = request
statusCode = request
}
let private PreproccessData(logName: string) =
logName
|> File.ReadAllLines
|> Array.map (fun str -> ParseRequest str)
let GetRequestsFromLog(logName: string) =
logName
|> PreproccessData
60
open ParametersVerifier
open ServerLogProccessor
module DdosRecognizer
open Accord.Neuro
open Accord.Neuro.Learning
open System
open StatisticsCollector
let network = new ActivationNetwork(RectifiedLinearFunction(), 2, 2, 1, 3)
let teacher = new BackPropagationLearning(network)
let Classify(input, output) =
teacher.RunEpoch(input, output)
let LearnNetwork(input, output) =
let mutable needToStop = false
let mutable epochNumber = 0
while not needToStop do
let error = teacher.RunEpoch(input, output)
printf "Error: %f \n" error
epochNumber <- epochNumber + 1
SaveErrorValue(epochNumber, error)
if error < 0.01 then
needToStop <- true
61
printf "\n"
printf "======================================"
printf "Epoch count: %i " epochNumber
printf "======================================"
SaveStatToFile "/home/sadmonad/Desktop/foo.txt"
[<EntryPoint>]
let main argv =
ParametersVerifier.VerifyParameters argv
let requests = ServerLogProccessor.GetRequestsFromLog argv.[0]
if argv = "train" then
DdosRecognizer.LearnNetwork requests
else
Webserver server = new Webserver("http://localhost:4040")
let request = server.RedirectRequest()
DdosRecognizer.Classify request
0
62
63
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ
УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«ОРЛОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ИМЕНИ И.С. ТУРГЕНЕВА»
ИНФОРМАЦИОННО-ПОИСКОВАЯ ХАРАКТЕРИСТИКА
ДОКУМЕНТА НА ЭЛЕКТРОННОМ НОСИТЕЛЕ
Наименование
группы атрибутов
атрибута
1. Описание
Обозначение документа
документа
(идентификатор(ы)
файла(ов))
Наименование документа
2. Даты и время
3. Создатели
4. Внешние
ссылки
5. Защита
6. Характеристики
содержания
Характеристики документа на
электронном носителе
\Плакаты\Презентация.ppt
Демонстрационные плакаты
выпускной
квалификационной работе
Класс документа
ЕСКД
Вид документа
Оригинал документа на
электронном носителе
Аннотация
Демонстрационный материал,
отображающий основные
этапы выполнения выпускной
квалификационной работы
Использование документа Операционная система
Windows 10, Microsoft
PowerPoint 2010
Дата и время
15.06.2018
копирования документа
Дата создания документа 23.05.2018
Дата утверждения
20.06.2018
документа
Автор
Слепов В. В.
Изготовитель
Слепов В. В.
Ссылки на другие
Удостоверяющий лист
документы
№ 140180
Санкционирование
ОГУ имени И.С. Тургенева
Классификация защиты
По законодательству РФ
Объем информации
797 069 Б
документа
64
7. Структура
документа(ов)
Наименование плаката
(слайда) №1
Наименование плаката
(слайда) №2
Наименование плаката
(слайда) №3
Наименование плаката
(слайда) №4
Наименование плаката
(слайда) №5
Наименование плаката
(слайда) №6
Наименование плаката
(слайда) №7
Наименование плаката
(слайда) №8
Наименование плаката
(слайда) №9
Наименование плаката
(слайда) №10
Наименование плаката
(слайда) №11
Наименование плаката
(слайда) №12
Наименование плаката
(слайда) №13
Наименование плаката
(слайда) №14
Титульный лист
Цель и задачи работы
Особенности и механизмы
DDoS-атак
Классификация DDoS-атак
Особенности DDoS-атак на
прикладном уровне
Аналогичные комплексные
программные средства
Требования к программному
средству
Структура программного
средства
Контекстные диаграммы
классов
Основные алгоритмы
Результаты экспериментов.
Функция активации
Результаты экспериментов.
Количество нейронов
Архитектура нейронной сети
Использованные
инструментальные средства и
технологии
1/--страниц
Пожаловаться на содержимое документа