Если вы посмотрите на небо прямо сейчас, вы можете увидеть или не увидеть какое-то облако, но вы можете быть уверены, что сделали сегодня хоть что-то, к чему прикоснулись облачные технологии. Даже чтение этого блога может быть связано с облаком! Организации переходят к облаку, поскольку оно предлагает программное обеспечение, платформу или инфраструктуру как услугу. Когда речь идет о чем-то столь важном, как облако, нам нужно искать все возможные методы для обеспечения его безопасности. Для обеспечения облачной безопасности обнаружение кибератак очень важно. Система обнаружения вторжений (IDS) обнаруживает атаки в сети. Но как? Вы правильно поняли! Машинное обучение может помочь нам обнаружить атаки в облаке.

1.1 Постановка проблемы

Используйте контролируемое машинное обучение для обнаружения атак, классифицируя экземпляры как «нормальные» или «атаки».

1.2 Обзор набора данных

Набор данных можно найти в IEEE-dataport:



Загружаем библиотеки и данные в python Jupiter Notebook.

Набор данных содержит 9594 экземпляра и 44 столбца. Первые 4 столбца — это метаданные, такие как отметка времени эпохи, идентификатор виртуальной машины, доменное имя и уникальный идентификатор домена. Следующие столбцы — это функции «Сеть», «Память» и «Диск». Последний столбец - это целевая переменная, которая является статусом атаки или нормальным.

2. Очистка данных

2.1. Отбросьте все нулевые значения.

2.2. Отбросьте все столбцы, которые имеют только 0 значений

2.3. Удалите ненужные функции:

Последний опрос: отметка времени

VMID: идентификатор виртуальной машины

UUID: уникальный идентификатор домена

Дом: доменное имя

2.4. Преобразуйте столбец «Статус» в целочисленные значения, которые содержат строковые значения «Нормальный» и «Атака».

3. Исследовательский анализ данных

3.1. Постройте распределение целевых переменных:

Набор данных не сбалансирован, подсчитайте экземпляры:

Обычный = 7288

Атака = 2306

3.2. Постройте тепловую карту корреляции функций

Статус сильно коррелирует со скоростью передачи пакетов из сети. Статус положительно коррелирует со скоростью передачи байтов из сети, скоростью полученных пакетов из сети, скоростью полученных байтов из сети, скоростью времени, проведенного в пространстве ядра, и скоростью времени, проведенного пользователем. космос. Статус отрицательно коррелирует со скоростью чтения байтов на блочном устройстве vda, скоростью количества запросов на запись на блочном устройстве vda и скоростью времени, затрачиваемого потоками vCPU на выполнение гостевого кода.

3.3. Проверьте выбросы:

Блочные диаграммы показывают некоторые выбросы, и мы их удаляем.

3.4. Кластерный анализ:

Создайте визуализацию кластера с помощью TSNE.

4. Предварительная обработка данных

4.1. Нормализация данных

4.2. Разделение Train-Test: разделите набор данных на обучающие и тестовые данные в соотношении 70:30.

4.3. Сбалансируйте набор данных: примените избыточную выборку класса меньшинства, чтобы сбалансировать набор данных. Теперь«Нормальный» = 7288 и «Атака» = 7288.

5. Алгоритмы машинного обучения

Затем мы разрабатываем следующие модели:

5.1. Машина опорных векторов

5.2. Логистическая регрессия

5.3. Древо решений

5.4. K-ближайший сосед

5.5. Случайный лес

5.6. XgBoost

5.7. Наивный Байес

Модели обучаются с лучшими гиперпараметрами, найденными с помощью поиска по сетке.

6. Выбор функции

Найдите некоторые важные функции на основе оценки важности. Вот список важных функций, сгенерированных Random Forest Classifier:

7. Показатели оценки

Рассчитайте следующие показатели оценки:

7.1. Точность

7.2. Точность

7.3. Отзывать

7.4. Оценка F-1

7.5. Каппа Статистика

7.6. ROC-кривая

7.7. Метрики путаницы

8. Сравнение производительности

Сравните производительность моделей до и после передискретизации данных.

Производительность значительно улучшается после балансировки данных. Все модели работают хорошо с точностью более 99%.

Кривая ROC для всех моделей показывает очень большую площадь под кривой.

9. Пошаговое руководство

Все коды находятся в открытом доступе на GitHub. Вот ссылка:



Этот проект был представлен как часть курса машинного обучения.

Благодарность:

Этот блог основан на исследованиях и результатах анализа сетевых данных для разработки IDS, всегда трудно понять другие исследовательские проекты, которые основаны только на опубликованных документах без реализации или только на приложениях без достаточного объяснения и фона. В рамках курса ML. Д-р Вишну Пендьяла призвал нас создать блог для нашего проекта, что кажется очень интересным.

Члены проектной группы:

Ясаман Эмами, Шамама Афнан, Дипали Зутши, Пуджита Катта, Пурнима Бхукья

Ссылки:

[1] Килинцер, И. Ф., Эртам, Ф., и Сенгур, А. (2021). Методы машинного обучения для обнаружения вторжений в кибербезопасность: наборы данных и сравнительное исследование. Компьютерные сети, 188, 107840.

[2] Алшаммари и А. Олдриби, «Применить методы машинного обучения для обнаружения вредоносного сетевого трафика в облачных вычислениях», Журнал больших данных, том. 8, нет. 1, 2021.

Спасибо!