Практикум по дисциплине Иммитационное моделирование систем обнаружения вторжений
.pdf
ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ
Ордена Трудового Красного Знамени Федеральное Государственное
бюджетное образовательное учреждение
высшего образования
Московский технический университет связи и информатики
Кафедра «Информационная безопасность»
Практикум
по дисциплине
ИММИТАЦИОННОЕ МОДЕЛИРОВАНИЕ СИСТЕМ ОБНАРУЖЕНИЯ
ВТОРЖЕНИЙ
г. Москва, 2016 г.
План УМД на 2016/17 уч. г.
Практикум
по дисциплине
ИММИТАЦИОННОЕ МОДЕЛИРОВАНИЕ СИСТЕМ ОБНАРУЖЕНИЯ
ВТОРЖЕНИЙ
Составитель: Костин Д. В., ассистент (МТУСИ)
Рецензент:
Рекомендовано к изданию кафедрой «ИБиА» Протокол № _________ г.
2
Оглавление |
|
Практикум №1. Установка сетевого симулятора Network Simulator 3 (NS-3) |
|
................................................................................................................................... |
4 |
Практикум №2. Построение топологий типа «точка-точка» и «шина» в |
|
NS-3 ........................................................................................................................... |
9 |
Практикум №3. Построение беспроводной топологии и топологии типа |
|
«звезда» в NS-3....................................................................................................... |
17 |
Практикум №4. Генерация трафика, содержащего атаку, средствами NS-3 |
|
................................................................................................................................. |
24 |
3
Практикум №1
“Установка сетевого симулятора Network Simulator 3 (NS-3)”
Цель практикума
Получить навыки установки и настройки сетевого симулятора NS-3 для создания имитационных моделей работы реальной сети.
Краткие теоретические сведения
Network Simulator 3 (NS-3) – это свободное программное обеспечение, которое представляет собой сетевой симулятор, ориентированный в первую очередь для решения научных и учебных задач.
Программное ядро симулятора NS-3 поддерживает работу в IP и non-IP сетях, а также работу с такими беспроводными сетями как Wi-Fi, WiMAX, LTE и другими.
NS-3 – это C++ библиотека, которая представляет собой набор сетевых модулей, реализованных в виде объектов на языке C++ и имеющих обёртку для языка Python (рис. 1). Обычно пользователь взаимодействует с ядром с помощью написания собственных скриптов на языке C++ или Python, которые соответствуют определённой имитационной модели.
Рисунок 1. Ключевые технологии NS-3
Общий процесс моделирования в NS-3 можно разделить на несколько этапов:
1)Определение топологии. Создание основных объектов и определение их взаимосвязей;
2)Разработка модели. Определяется тип модели (например, UDP, IPv4, устройства в режиме точка-точка, их связи и т.д.);
4
3)Конфигурирование узлов и связей. Определение основных конфигураций, которые будут использоваться по умолчанию (например, размер пакетов или MTU);
4)Использование. Смоделированные объекты производят генерацию событий, которые логируются после клиентских вызовов.
5)Анализ производительности. Когда процесс моделирования закончен и получены данные (трассировки), может быть произведён их анализ для получения определённого вывода о смоделированной системе.
6)Графическая визуализация. Необработанные и обработанные данных могут быть графически отображены с помощью таких инструментов,
как Gnuplot, matplotlib или XGRAPH.
NS-3 распространяется в виде исходных кодов, которые можно загрузить с официально сайты https://www.nsnam.org/, тем не менее, после загрузки исходных кодов необходимо произвести их сборку. Наиболее тривиальной утилитой для этого является – make. Однако, сборка большого проекта с помощью make - сложная задача. Поэтому в последнее время набирают популярность другие системы сборки, такие как Waf.
Waf – основная утилита, использующаяся для сборки NS-3, которая написана на языке Python и не требует от вас знания самого языка для проведения сборки.
Пример выполнения практикума
1.Для своей работы NS-3 требует много зависимостей, которые можно установить, используя следующие команды в терминале:
sudo apt-get install gcc g++ python
sudo apt-get install gcc g++ python python-dev sudo apt-get install qt4-dev-tools libqt4-dev sudo apt-get install mercurial
sudo apt-get install bzr
sudo apt-get install cmake libc6-dev libc6-dev-i386 g++-multilib sudo apt-get install gdb valgrind
sudo apt-get install gsl-bin libgsl0-dev libgsl0ldbl sudo apt-get install flex bison libfl-dev
sudo apt-get install tcpdump
sudo apt-get install sqlite sqlite3 libsqlite3-dev sudo apt-get install libxml2 libxml2-dev
sudo apt-get install libgtk2.0-0 libgtk2.0-dev sudo apt-get install vtun lxc
sudo apt-get install uncrustify
sudo apt-get install doxygen graphviz imagemagick
5
sudo apt-get install texlive texlive-extra-utils texlive-latex-extra texlive-font-utils texlive-lang-portuguese dvipng
sudo apt-get install python-sphinx dia
sudo apt-get install python-pygraphviz python-kiwi python-pygoocanvas libgoocanvas-dev ipython
sudo apt-get install libboost-signals-dev libboost-filesystem-dev
sudo apt-get install openmpi-bin openmpi-common openmpi-doc libopenmpi-d
2.После установки всех необходимых зависимостей, необходимо загрузить последнюю версию NS-3 с официального сайта и провести её распаковку. Для этого воспользуемся следующими командами:
cd
mkdir tarballs cd tarballs
wget http://www.nsnam.org/release/ns-allinone-3.26.tar.bz2 tar xjf ns-allinone-3.26.tar.bz2
При успешном скачивании и распаковке, проверьте наличие новой папки выполнив команду ls (рис. 2).
Рисунок 2. Скачивание и распаковка ns-3
3. Перейдём в созданную папку (рис. 3)
6
Рисунок 3. Переход в распакованную папку ns-3
4.Следующим шагом является сборка NS-3. Для этого в терминале выполните команду
./build.py
и дождитесь окончания сборки (рис. 4).
Рисунок 4. Оповещение об успешной сборке ns-3 5. Перейдём в папку ns-3.xx (рис. 5).
Рисунок 5. Переход в папку ns-3.26
7
6.Произведём конфигурацию с помощью Waf. Для этого выполним следующую команду:
./waf -d debug --enable-examples --enable-tests configure
7. После чего запустим тесты для проверки сборки:
./test.py
По окончанию тестирования вы должны увидеть следующий результат
(рис. 6):
8.Распространяемый архив NS-3 уже содержит некоторые примеры скриптов, имитирующих различную работу. Эти пример доступны в папке /tarballs/ns-allinone-3.26/ns-3.26/examples/tutorial
Произведём запуск одного из таких скриптов с помощью команды
./waf --run first
после чего получим следующее (рис. 7):
Рисунок 7. Результат выполнения скрипта
Если скрипт не запустился (рис. 8), то попробуйте переместить его в папку /ns-3.26/scratch/
Рисунок 8. Ошибка при запуске скрипта
Задание на практикум
1.Скачать последнюю версию NS-3
2.Произвести сборку и конфигурацию приложения
3.Проверить сборку с помощью теста
4.Запустить скрипт second.py
8
Содержание отчёта по практикуму
1.Титульный лист
2.Цель практикума и краткие теоретические сведения
3.Выполнение практикума в соответствии с заданием
4.Ответы на контрольные вопросы
Контрольные вопросы
1.Что такое NS-3 и для чего он используется?
2.Назовите основные этапы при моделировании в NS-3.
3.Что такое Waf?
4.В чём достоинства и недостатки NS-3?
Литература
1.NS-3. Installation. // Интернет ресурс https://www.nsnam.org/wiki/Installation
(дата обращения 10.10.2016).
2.Installing ns3 in ubuntu 12.10 and above. // Интернет ресурс http://ns3help.blogspot.ru/2014/05/installing-ns3-in-ubuntu-1210.html (дата обращения 10.10.2016).
3.After installing ns3 what to do? // Интернет ресурс http://ns3help.blogspot.ru/2014/05/after-installing-ns3-what-to-do.html (дата обращения 10.10.2016).
Практикум №2
“Построение топологий типа «точка-точка» и «шина» в NS-3”
Цель практикума
Получить навыки построения топологии типа «точка-точка» и «шина» и в сетевом симуляторе NS-3.
Краткие теоретические сведения
Прежде всего начнём работу с NS-3 с рассмотрения основных терминов:
Node (узел) – оконечный узел сети – хост. Класс Node используется для управления вычислительными устройствами при моделировании. Данный класс может быть использован для добавления необходимой функциональности вашему устройству.
9
Application (приложение) – пользовательская программа, которая генерирует некоторую имитируемую активность. Как правило в NS-3 класс Application является абстракцией для других классов, таких как
UdpEchoClientApplication и UdpEchoServerApplication, которые имитируют клиент / серверную работу.
Channel (канал) – среда передачи потоков данных между узлами. Класс Channel предоставляет методы для управления подсетями и подключёнными к ним узлами. NS-3 предоставляет такие реализации канала, как CsmaChannel, PointToPointChannel и WifiChannel.
Net Device (сетевая карта) – периферийное устройство реализующая сетевые функции. В NS-3 сетевая карта представляет собой имитацию оборудования и необходимых драйверов. Для работы с сетевой картой можно использовать такие классы, как CsmaNetDevice,
PointToPointNetDevice и WifiNetDevice.
Topology Helper (помощник построения топологии) – дополнительный абстрактный класс, предназначенный для упрощения настройки сетевой топологии. Как известно, каждой сетевой карте должен быть присвоен свой IP и MAC-адрес, а для связи узлов между собой должен быть настроен стек протоколов, при этом отдельные сети могут быть объединены между собой. Для упрощения настройки этих сложных действий NS-3 предлагает помощника, реализуемого классом
TopologyHelper.
Топология типа «точка-точка»
Рассмотрим работу скрипта first.cc, поставляемого вместе NS-3, который имитирует работу сети в режиме точка-точка [1].
Сперва необходимо произвести импорт всех зависимостей:
#include "ns3/core-module.h" #include "ns3/network-module.h" #include "ns3/internet-module.h"
#include "ns3/point-to-point-module.h" #include "ns3/applications-module.h"
Следующей строкой следует декларация пространства имён:
using namespace ns3;
Для запуска логирования необходимо воспользоваться командой:
NS_LOG_COMPONENT_DEFINE ("FirstScriptExample");
10
