Статья опубликована в рамках: XLVIII-XLIX Международной научно-практической конференции «Технические науки - от теории к практике» (Россия, г. Новосибирск, 26 августа 2015 г.)
Наука: Технические науки
Секция: Информатика, вычислительная техника и управление
- Условия публикаций
- Все статьи конференции
дипломов
Статья опубликована в рамках:
Выходные данные сборника:
РАЗРАБОТКА ПРОСТЕЙШЕЙ СИСТЕМЫ ОБНАРУЖЕНИЯ ВТОРЖЕНИЙ
Кокоулин Андрей Николаевич
канд. техн. наук, доцент Пермского национального исследовательского политехнического университета
РФ, г. Пермь
Е-mail : liga_asu@mail.ru
Бадртдинов Артём Сергеевич
студент Пермского национального исследовательского политехнического университета
РФ, г. Пермь
Е-mail:
Поздеев Антон Александрович
студент Пермского национального исследовательского политехнического университета
РФ, г. Пермь
Е-mail:
Тихоненко Михаил Александрович
студент Пермского национального исследовательского политехнического университета
РФ, г. Пермь
Е-mail : tikhonenko_m@mail.ru
DEVELOPING A SIMPLE INTRUSION DETECTION SYSTEM
Andrey Kokoulin
candidate of technical sciences, docent of Perm National Research Polytechnic University
Russia, Perm
Artem Badrtdinov
student of Perm National Research Polytechnic University
Russia, Perm
Anton Pozdeev
student of Perm National Research Polytechnic University
Russia, Perm
Mikhail Tikhonenko
student of Perm National Research Polytechnic University
Russia, Perm
АННОТАЦИЯ
В учебных целях разработана программа, выполняющая функции простейшей системы обнаружения вторжений — определение пакетов, соответствующих установленному фильтру.
ABSTRACT
The program is designed for educational purposes, which serves as a simple intrusion detection system — defining packages corresponding to the filter.
Ключевые слова: система обнаружения вторжений; tcpdump, golang.
Keywords: intrusion detection system; tcpdump, golang.
Обнаружение вторжений и несанкционированных воздействий в сети является актуальной проблемой современного информатизированного общества. Считается, что начало активному исследованию в этой области, было положено в 1980 г. статьей Джеймса Андерсона «Мониторинг угроз компьютерной безопасности». Несколько позже, в 1987 г. это направление было развито публикацией статьи «О модели обнаружения вторжения» Дороти Деннинг. Она обеспечила методологический подход, вдохновивший многих исследователей и заложивший основу для создания коммерческих продуктов в области обнаружения и предотвращения вторжений [1].
В данной статье представлена разработанная в учебных целях программа-пример элементарной системы обнаружения вторжений, основанная на анализаторе сетевого трафика tcpdump. В качестве языка программирования выбран язык Go, совмещающий в себе производительность, близкую к производительности языка C, и высокую скорость разработки, схожую с, например, языком программирования Python.
Система обнаружения вторжений — программное или аппаратное средство, предназначенное для выявления фактов несанкционированного доступа в информационную систему или сеть либо несанкционированного управления ими в основном через Интернет. Они обеспечивают дополнительный уровень защиты компьютерных систем путем фильтрации поступающих пакетов [3].
Системы обнаружения вторжений используются как для выявления неблагоприятных для компьютерной системы пакетов, так и для проверки работы сети и выявления ошибок и недочетов.
Go — язык общего назначения с широкими возможностями и понятным синтаксисом. Благодаря мультиплатформенности, надежной, хорошо документированной стандартной библиотеке и ориентированности на удобные подходы к самой разработке, Go является идеальным языком для первых шагов в программировании [5].
Tcpdump (от TCP и англ. dump — свалка, сбрасывать) — утилита UNIX, позволяющая перехватывать (capture) и анализировать сетевой трафик, проходящий через компьютер, на котором запущена данная программа [2]. Позволяет фильтровать поступающие пакеты с помощью большого числа встроенных функций.
В программе, листинг которой представлен далее, используется следующая команда запуска утилиты tcpdump: “tcpdump -i eth0 -n -x src not hostname”. Описание команды:
· “tcpdump” — название утилиты;
· “-i eth0” — выбор интерфесйса eth0 для захвата приходящих сетевых пакетов;
· “-n” — отображает IP-адрес вместо имени хоста;
· “-x’ — делает распечатку пакета в шестнадцатеричной системе, полезно для более детального анализа пакета, количество отображаемых данных зависит от параметра -s;
· “src not hostname” — отбрасываются исходящие пакеты от машины, на которой запущена программа.
package main
import (
"bufio"
"fmt"
"os/exec"
"os"
"regexp"
)
func main() {
filters := [2]string{"(ya|yandex)\\.ru", "(fb|facebook)\\.com"}
hostname, _ := os.Hostname()
cmd := exec.Command("tcpdump", "-i", "eth0", "-n", "-x", "src", "not", hostname)
out, err := cmd.StdoutPipe()
if err != nil {
panic(err)
}
defer out.Close()
bufOut := bufio.NewReader(out)
if err = cmd.Start(); err != nil {
panic(err)
}
for {
result, _, err := bufOut.ReadLine()
if err != nil {
panic(err)
}
for _, filter := range filters {
match, _ := regexp.MatchString(filter, string(result))
if match {
fmt.Println("WARNING:", filter)
}
}
}
}
Алгоритм работы программы заключается в следующем: программа ищет соответствия сетевых пакетов, захваченных утилитой tcpdump, и элементов массива фильтров, содержащего регулярные выражения для поиска.
Результат работы программы представлен на рисунке 1. На этом же рисунке видны и использованные простые тестовые регулярные выражения ("(ya|yandex)\.ru", "(fb|facebook)\.com") [4].
Рисунок 1. Вывод программы
Фрагмент результата выполнения команды, описанной выше, представлен на рисунке 2.
Рисунок 2. Вывод утилиты tcpdump
Система обнаружения вторжений лишь один из инструментов защиты важных данных и он не должен рассматриваться как замена для любого из других защитных механизмов.
Список литературы:
- Бобров А. Системы обнаружения вторжений / Сайт Института механики сплошных сред Российской Академии Наук [Электронный ресурс] — Режим доступа. — URL: http://www.icmm.ru/~masich/win/lexion/ids/ids.html (дата обращения: 02.06.2015).
- Приступая к работе / Введение в программирование на Go [Электронный ресурс] — Режим доступа. — URL: http://golang-book.ru/chapter-01-gettting-started.html (дата обращения: 02.06.2015).
- Регулярные выражения / Википедия — свободная энциклопедия [Электронный ресурс] — Режим доступа. — URL: https://ru.wikipedia.org/wiki/Регулярные_выражения (дата обращения: 02.06.2015).
- Система обнаружения вторжений / Википедия — свободная энциклопедия [Электронный ресурс] — Режим доступа. — URL: https://ru.wikipedia.org/wiki/Средство_обнаружения_вторжений (дата обращения: 02.06.2015).
- Tcpdump / Википедия — свободная энциклопедия [Электронный ресурс] — Режим доступа. — URL: https://ru.wikipedia.org/wiki/Tcpdump (дата обращения: 04.06.2015).
дипломов
Оставить комментарий