Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Практикум по дисциплине Иммитационное моделирование систем обнаружения вторжений

.pdf
Скачиваний:
0
Добавлен:
12.08.2026
Размер:
920 Кб
Скачать

Последующие шаги вам уже известны, они включают сбор трафика в pcap файл, запускают моделированию и очищаю память от созданных объектов:

pointToPoint.EnablePcapAll ("third"); phy.EnablePcap ("third", apDevices.Get (0));

csma.EnablePcap ("third", csmaDevices.Get (0), true);

Simulator::Run (); Simulator::Destroy (); return 0;

Топология типа «звезда»

Рассмотрим топологию типа «звезда», которая имеет следующий вид:

//n2 n3 n4

//\ | /

//\|/

//n1--- n0---n5

///|\

/// | \

//n8 n7 n6

Начнём построение данной топологии с объявления параметров по умолчанию:

Config::SetDefault ("ns3::OnOffApplication::PacketSize",

UintegerValue (137));

//установим скорость передачи данных равной 14кб/с

Config::SetDefault ("ns3::OnOffApplication::DataRate", StringValue ("14kb/s"));

//Количество узлов звезды. Значений можно переопределить при запуске uint32_t nSpokes = 8;

Добавим поддержку аргументов командной строки для поддержки ввода пользовательских значений количества узлов в сети:

CommandLine cmd;

cmd.AddValue ("nSpokes", "Number of nodes to place in the star", nSpokes);

cmd.Parse (argc, argv);

Для удобного и простого построения данной топологии воспользуемся двумя вспомогательными классами: PointToPointHelper и PointToPointStarHelper.

Установим параметры канала и привяжем наши узлы к топологии:

PointToPointHelper pointToPoint;

pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("5Mbps")); pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms")); PointToPointStarHelper star (nSpokes, pointToPoint);

21

Установим стек протоколов в нашей сети:

InternetStackHelper internet; star.InstallStack (internet);

Добавим IP-адреса узлам сети:

star.AssignIpv4Addresses (Ipv4AddressHelper ("10.1.1.0", "255.255.255.0"));

Займёмся настройкой уровня приложений в нашей сети. Для этого рассмотрим базовые классы для управления трафика, которые используются в NS-3.

OnOffApplication – это простое приложение, которое чередует состояния «On» (включено) и «Off» (выключено) через случайные промежутки времени. Когда приложение начинает свою работу вызовом функции

Application::StartApplication, запускается состояние «On» и начинается генерация трафика в одном направлении с определённой скоростью и заданной длинной пакетов. Через некоторый промежуток времени запускается состояние «Off» и трафик перестаёт генерироваться. OnOffHelper служит для упрощения работы с OnOffApplication.

PacketSink является дополнением OnOffApplication. Данное приложение принимает и потребляет трафик, пришедший на IP-адрес и порт. PacketSink удобно использовать для приёма пакетов на уровне приложений. PacketSinkHelper упрощает установку PacketSink приложения на узел.

Произведём настройку хаба для приёма пакетов:

uint16_t port = 50000;

Address hubLocalAddress (InetSocketAddress (Ipv4Address::GetAny (), port));

PacketSinkHelper packetSinkHelper ("ns3::TcpSocketFactory", hubLocalAddress);

ApplicationContainer hubApp = packetSinkHelper.Install (star.GetHub ());

hubApp.Start (Seconds (1.0)); hubApp.Stop (Seconds (10.0));

Добавим OnOffApplication на каждый узел и настроем приложение на отсылку TCP пакетов на адрес хаба:

OnOffHelper onOffHelper ("ns3::TcpSocketFactory", Address ()); onOffHelper.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1]")); onOffHelper.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));

ApplicationContainer spokeApps;

for (uint32_t i = 0; i < star.SpokeCount (); ++i)

22

{

AddressValue remoteAddress (InetSocketAddress (star.GetHubIpv4Address (i), port));

onOffHelper.SetAttribute ("Remote", remoteAddress); spokeApps.Add (onOffHelper.Install (star.GetSpokeNode (i)));

}

spokeApps.Start (Seconds (1.0)); spokeApps.Stop (Seconds (10.0));

Настроим глобальную маршрутизацию:

Ipv4GlobalRoutingHelper::PopulateRoutingTables ();

Добавим сбор трафика со всех узлов в pcap файл:

pointToPoint.EnablePcapAll ("star");

На данном этапе все настройки завершены и остаётся лишь запустить симулятор и очистить его состояние после работы:

Simulator::Run ();

Simulator::Destroy ();

Задание на практикум

1.Создайте топологию, которая будет состоять из шины и двух беспроводных сетей по краям шины. Предоставьте графическое представление вашей сети

2.Установите сервер на одном из узлов шины и по одному клиенту в каждой беспроводной сети

3.Осуществите передачу трафика между клиентом и сервером

4.Полученный трафик запишите в pcap файл

5.Создайте топологию типа «звезда», состоящую из 10 узлов

6.К одному из узлов добавьте дополнительный узел в режиме «точкаточка», тем самым создав смешанную топологию

7.Осуществите передачу трафика от дополнительного узла к любому другому узлу «звезды», который не состоит в связи «точка-точка» с данным узлом

8.Генерируемый трафик сохраните в pcap файл

Содержание отчёта по практикуму

1.Титульный лист

2.Цель практикума и краткие теоретические сведения

3.Выполнение практикума в соответствии с заданием

4.Ответы на контрольные вопросы

Контрольные вопросы

23

1.В чём отличие non-QoS MACs от QoS MACs?

2.Каким образом задаётся мобильность беспроводных устройств?

3.Что такое SSID?

4.Что такое OnOffApplication и OnOffApplication?

5.Что такое PacketSink и PacketSinkHelper?

6.Как выглядит топология типа «звезда», в чём её достоинства и недостатки?

Литература

1.third.cc File Reference // Интернет ресурс https://www.nsnam.org/doxygen/third_8cc_source.html (дата обращения: 05.11.2016)

2.M. Lacage, M.H. Manshaei, and T. Turletti. IEEE 802.11 Rate Adaptation: A Practical Approach

3.AARF Rate control algorithm // Интернет ресурс https://www.nsnam.org/doxygen/classns3_1_1_aarf_wifi_manager.html (дата обращения: 05.11.2016)

4.The Wifi MAC high model for a non-AP STA in a BSS // Интернет ресурс https://www.nsnam.org/doxygen/classns3_1_1_sta_wifi_mac.html (дата обращения: 05.11.2016)

5.The IEEE 802.11 SSID Information Element. // Интернет ресурс https://www.nsnam.org/doxygen/classns3_1_1_ssid.html (дата обращения: 05.11.2016)

Практикум №4

“Генерация трафика, содержащего атаку, средствами NS-3”

Цель практикума

Получение навыков генерации вредоносного трафика, содержащего атаку, средствами NS3.

Краткие теоретические сведения

В данном практикуме приведён пример генерации трафика, содержащего

DDoS-атаку [1]. DoS-атака (Denial of Service атака) – это атака на вычислительную систему, целью которой является выведение атакуемой системы из строя. Если атака ведётся одновременно с нескольких узлов, то атака называется распределённой – DDoS (Distributed Denial of Service).

Так как NS3 представляет собой сетевой симулятор, то данная атака будет лишь имитацией реальной атаки и не позволит вывести какой-либо узел сети из строя.

24

Для генерации вредоносного трафика воспользуемся топологией типа «звезда», которая описан в практикуме 3. Ниже приведён полный скрипт для генерации трафика с DDoS-атакой:

#include "ns3/core-module.h" #include "ns3/network-module.h" #include "ns3/netanim-module.h" #include "ns3/internet-module.h"

#include "ns3/point-to-point-module.h" #include "ns3/applications-module.h" #include "ns3/point-to-point-layout-module.h"

using namespace ns3;

int

main (int argc, char *argv[])

{

Config::SetDefault ("ns3::OnOffApplication::PacketSize", UintegerValue (137));

Config::SetDefault ("ns3::OnOffApplication::DataRate", StringValue ("14kb/s"));

uint32_t nSpokes = 8;

CommandLine cmd;

cmd.AddValue ("nSpokes", "Number of nodes to place in the star", nSpokes);

cmd.Parse (argc, argv);

PointToPointHelper pointToPoint; pointToPoint.SetDeviceAttribute ("DataRate", StringValue

("5Mbps"));

pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms")); PointToPointStarHelper star (nSpokes, pointToPoint);

InternetStackHelper internet; star.InstallStack (internet);

star.AssignIpv4Addresses (Ipv4AddressHelper ("10.1.1.0", "255.255.255.0"));

uint16_t port = 50000;

Address hubLocalAddress (InetSocketAddress (Ipv4Address::GetAny (), port));

PacketSinkHelper packetSinkHelper ("ns3::TcpSocketFactory", hubLocalAddress);

ApplicationContainer hubApp = packetSinkHelper.Install (star.GetHub ());

hubApp.Start (Seconds (1.0)); hubApp.Stop (Seconds (100.0));

OnOffHelper onOffHelper ("ns3::TcpSocketFactory", Address ()); onOffHelper.SetAttribute ("OnTime", StringValue

("ns3::ConstantRandomVariable[Constant=1]")); onOffHelper.SetAttribute ("OffTime", StringValue

("ns3::ConstantRandomVariable[Constant=0]"));

25

BulkSendHelper bulkHelper ("ns3::TcpSocketFactory", Address ()); bulkHelper.SetAttribute ("MaxBytes", UintegerValue (0));

ApplicationContainer spokeOnOffApps;

ApplicationContainer spokeBulkApps;

for (uint32_t i = 0; i < star.SpokeCount (); ++i)

{

AddressValue remoteAddress (InetSocketAddress (star.GetHubIpv4Address (i), port));

onOffHelper.SetAttribute ("Remote", remoteAddress); bulkHelper.SetAttribute ("Remote", remoteAddress);

spokeOnOffApps.Add (onOffHelper.Install (star.GetSpokeNode (i))); spokeBulkApps.Add (bulkHelper.Install (star.GetSpokeNode (i)));

}

spokeOnOffApps.Start (Seconds (1.0)); spokeOnOffApps.Stop (Seconds (100.0));

spokeBulkApps.Start (Seconds (37.0)); spokeBulkApps.Stop (Seconds (44.0));

Ipv4GlobalRoutingHelper::PopulateRoutingTables ();

pointToPoint.EnablePcapAll ("attack");

Simulator::Run ();

Simulator::Destroy ();

return 0;

}

Основное отличие данного скрипта от скрипта из практикума 3 отображено в листинге ниже. Разберём подробнее что происходит на данном участке кода:

BulkSendHelper bulkHelper ("ns3::TcpSocketFactory", Address ()); bulkHelper.SetAttribute ("MaxBytes", UintegerValue (0));

ApplicationContainer spokeOnOffApps;

ApplicationContainer spokeBulkApps;

for (uint32_t i = 0; i < star.SpokeCount (); ++i)

{

AddressValue remoteAddress (InetSocketAddress (star.GetHubIpv4Address (i), port));

onOffHelper.SetAttribute ("Remote", remoteAddress); bulkHelper.SetAttribute ("Remote", remoteAddress);

spokeOnOffApps.Add (onOffHelper.Install (star.GetSpokeNode (i))); spokeBulkApps.Add (bulkHelper.Install (star.GetSpokeNode (i)));

}

26

spokeOnOffApps.Start (Seconds (1.0)); spokeOnOffApps.Stop (Seconds (100.0));

spokeBulkApps.Start (Seconds (37.0)); spokeBulkApps.Stop (Seconds (44.0));

BulkSendHelper – это помощник, который упрощает работу с

BulkSendApplication. BulkSendApplication – приложение, которое отсылает максимальное количество данных пытаясь забить всю пропускную способность канала [2]. Этот генератор трафика отправляется количество байт, указанное в атрибуте «MaxBytes», либо, если он равен 0, как в данном случае, до окончания работы приложения.

В цикле на каждый узел «звезды» устанавливаются OnOff и Bulk приложения. При этом OnOff работает в интервале с 1-ой по 100-ю секунду и имитирует нормальную работу сети, а Bulk начинает свою работу с 37 по 44 секунду и представляет собой симуляцию DDoS атаки, забивающую всю пропускную способность канала хаба.

По результатам работы скрипта были созданы pcap-файлы. Необходимо провести объединение всех файлов 0-го узла. Для этого откроем первый файл в Wireshark, выберем File – Merge и добавим следующий файл. После этого необходимо сохранить текущий файл, как новый. Далее необходимо повторить данные шаги для всех файлов.

Проведя объединение файлов, осуществим их визуализацию в Wireshark: Statistics – I/O Graph. Получим график зависимости времени от количества полученных байт (рис. 1).

Рисунок 1. Зависимость времени от полученных байт при симуляции DDoSатаки

27

Задание на практикум

1.Создайте топологию типа звезда, состоящую из произвольного количества узлов.

2.Напишите скрипт, который позволит сгенерировать трафик, содержащий DDoS-атаку в двух произвольных интервалах.

3.Постройте график зависимости времени от полученных байт.

Содержание отчёта по практикуму

1.Титульный лист

2.Цель практикума и краткие теоретические сведения

3.Выполнение практикума в соответствии с заданием

4.Ответы на контрольные вопросы

Контрольные вопросы

1.Что такое DDoS-атака?

2.Какой принцип работу у BulkSendApplication?

3.Какие еще типы атак вы знаете?

Литература

1.Understanding Denial-of-Service Attacks. Security Tip (ST04-015) // Интернет ресурс https://www.us-cert.gov/ncas/tips/ST04-015 (дата обращения: 17.12.2016)

2.BulkSendApplication Class Reference // Интернет ресурс https://www.nsnam.org/doxygen/classns3_1_1_bulk_send_application.html (дата обращения: 17.12.2016)

28

План УМД на 2016/17 уч. г.

Костин Денис Владимирович

ИММИТАЦИОННОЕ МОДЕЛИРОВАНИЕ СИСТЕМ ОБНАРУЖЕНИЯ

ВТОРЖЕНИЙ

практикум

Подписано в печать . . г. Формат 60x90 1/16 Объем 3 усл. п.л. Тираж 100 экз. Изд. № . Заказ № .

ООО «». Москва, ул. , д..

29

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]