Смекни!
smekni.com

Диссертации утверждена распоряжением по нгу № от 200 г (стр. 8 из 9)

При поиске аномальной активности с помощью созданных правил удалось получить практические результаты, доказывающие полезность системы в реальных условиях, а именно выявить несколько фактов нецелевого использования ресурсов локальной сети (несанкционированные запуски клиентов пиринговых сетей на компьютерах лаборатории Parallels-НГУ).

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

Количество генерируемых правил.

На начальных этапах работы были опасения, что количество правил, генерируемых программой, будет расти вместе с ростом размера статистики, что сведет на нет практическую ценность проекта. Но этого не происходит. Во время тестирования путем выбора случайных соединений из основной статистики было создано несколько дочерних статистик разных мощностей, и замерено количество правил, генерируемых для них. Результаты представлены на рисунке 3. Можно видеть, что происходит насыщение, и количество правил колеблется в пределах некоторого среднего значения, почти независимо от размера выборки.

Рисунок 3. Количество правил для статистик разных мощностей.

Может показаться, что генерируется слишком много правил (1200–1500). Однако следует учитывать, что большая их часть служит для обработки очень редко встречающихся соединений и, следовательно, пренебрежимо мало влияет на скорость анализа трафика.

Скорость анализа трафика.

С помощью iptables можно узнать, сколько раз сработало то или иное правило с момента его установки. Эта информация была использована для оценки скорости работы построенного набора правил: чем чаще соединение устанавливается, тем быстрее оно должно проходить через дерево.

Рисунок 4. Распределение соединений (в процентах от общего количества) между листьями разного уровня в дереве ЛРП.

На рисунке 4 можно наблюдать распределение соединений в процентах по листьям дерева в зависимости от уровня листа. Отражены только нормальные соединения. Для основной статистики уровни листьев дерева варьировались от 3 до 19. Как видно, в листья уровнями 9-19 за время тестирования правил пришло пренебрежимо малое количество соединений (суммарно 0,7% от всего трафика), а в листьях уровней 3 и 4 осело более 91% трафика. Из этого можно сделать вывод, что одна из главных целей — оптимизация дерева ЛРП по скорости обработки часто встречающихся соединений — была достигнута.

ЗАКЛЮЧЕНИЕ.

В ходе работы над проектом были проанализированы современные методы защиты локальных сетей. Был предложен новый подход к обеспечению безопасности и мониторингу активности в локальных сетях, полностью основанный на индивидуальных особенностях трафика каждой из них. Была поставлена задача разработать этот подход и исследовать его применимость на практике. Была выработана общая схема возможного воплощения подхода в программной системе, а также сформулированы требования к такой системе и разработаны необходимые алгоритмы. После выбора платформы и инструментария система была реализована.

Разработанное решение представляет собой комплекс утилит для операционных систем семейства Linux/UNIX. Комплекс был протестирован в локальной сети НГУ. В ходе тестовых испытаний доказана жизнеспособность выбранного подхода к обеспечению безопасности локальной сети, установлена практическая полезность системы, а также получены хорошие показатели по важнейшим ее параметрам.

Дальнейшее развитие системы будет идти по следующим направлениям:

  1. обеспечение более дружественного интерфейса;
  2. усовершенствование некоторых алгоритмов;
  3. доработка варианта использования в качестве пассивного прослушивающего узла (поддержка отслеживания соединений для протоколов UDP и ICMP);
  4. реализация поддержки дополнительных параметров соединений (учет количества соединений, объема трафика в соединениях, времени суток).

Подход, на котором основана система, не претендуют на то, чтобы заменить собой все остальные средства обеспечения бессбойной работы локальных сетей. Такой задачи не ставилось. Но успешные тестовые испытания позволяют надеяться на то, что наша разработка в будущем может занять свое место среди средств решения этой обширной задачи и быть востребованной на практике.

Литература.

1. Boris Kovalerchuk, Evgenii Vityaev and Robert Holtfreter. Correlation of Complex Evidence in Forensic Accounting Using Data Mining // Journal of Forensic Accounting 1524-5586, Vol.VIII — R.T. Edwards, Inc., 2007. — pp. 53-88.

2. Витяев Е.Е., Ковалерчук Б.К., Федотов А.М., Барахнин В.Б., Белов С.Д., Дурдин Д.С., Демин А.В. Обнаружение закономерностей и распознавание аномальных событий в потоке данных сетевого трафика // Вестник НГУ, Информационные технологии, Т. 6, вып. 2. — Новосибирск: НГУ, 2008. — с. 57-68.

3. Дурдин Д. С., Витяев Е. Е. Дополнительный Data Mining модуль для Microsoft SQL Server 2005 на основе системы Discovery // Вестник НГУ, Информационные технологии, Т. 6, вып. 2. — Новосибирск: НГУ, 2008. — с. 69-79.

4. Лбов Г.С. Методы обработки разнотипных экспериментальных данных. — Новосибирск: Наука, 1981. — 158 с.

5. Манохин А.Н. Методы распознавания, основанные на логических решающих функциях // Эмпирическое предсказание и распознавание образов. — Новосибирск, 1976. Вып. 67: Вычислительные системы. — с. 42-53.

6. Загоруйко Н.Г. Прикладные методы анализа данных и знаний. — Новосибирск: ИМ СО РАН, 1999. — 270 c.

7. Немет Э., Снайдер Г., Сибасс С., Хейн Трент Р. UNIX: руководство системного администратора. Для профессионалов. 3-е изд. — СПб.: Питер, 2002. — 928 с.

8. Бил Дж. Snort 2.1. Обнаружение вторжений. 2-е изд. — М.: Бином-пресс, 2006. — 656 с.

9. Насакин Р. Априорная подозрительность: Программные средства лечения паранойи // Компьютера. — 2006. — Т. 629, № 9. — с. 79-84.

10. Иртегов Д.В. Введение в сетевые технологии. — СПб.: БХВ-Петербург, 2004. — 560 с.

11. Стивенс У.Р. UNIX: разработка сетевых приложений. — СПб.: Питер, 2003. — 1088 с.

12. Tcpdump homepage. // [Электронный ресурс]. — Режим доступа: http://www.tcpdump.org, свободный.

13. Иртегов Д.В. Введение в операционные системы. — 2-е изд., перераб. и доп. — СПб.: БХВ-Петербург, 2008. — 1040 с.

14. Кормен Т., Лейзерсон Ч., Ривест Р.. Алгоритмы: построение и анализ. — М.: МЦНМО, 1990. — 960 с.

15. Ipset homepage. // [Электронный ресурс]. — Режим доступа: http://ipset.netfilter.org, свободный.

16. Саттер Г. Решение сложных задач на С++. — М.: Издательский дом «Вильямс», 2008. — 400 с.

17. Zander S. Homepage. // [Электронный ресурс]. — Режим доступа: http://caia.swin.edu.au/cv/szander/netfilter.html, свободный.

Публикации автора.

1. Савенко Д.В. Автоматическая генерация анализаторов трафика локальных сетей // Труды рабочего семинара «Наукоемкое программное обеспечение» в рамках 7-й Международной конференции памяти академика Ершова «Перспективы систем информатики», 2009 год. В печати.

2. Савенко Д.В. Построение оптимального дерева правил iptables // Труды 51-й научной конференции МФТИ «Современные проблемы фундаментальных и прикладных наук»: Часть VII. Управление и прикладная математика. Том 3. — М.: МФТИ, 2008. — с. 64-67.

3. Савенко Д.В. Автоматическая генерация анализаторов трафика локальных сетей // Материалы XLVII Международной научной студенческой конференции «Студент и научно-технический прогресс»: Информационные технологии. — Новосибирск: НГУ, 2009. — с. 46.

Приложение А.

(обязательное)

Некоторые интерфейсы системы.

В этом приложении представлены описания на языке С++ некоторых интерфейсов системы, которые описывались в тексте и могут вызвать вопросы при чтении.

Работа с базой данных: стратегии.

/* Стандартная стратегия для работы с типами в базе данных. Применима для простых типов (не содержащих указателей и сложной логики инициализации).*/

template<typename T>

class StdStrategy {

public:

/* Возвращает размер данных. */

static size_t size(const T& key) { return sizeof(key); }

/* Возвращает данные в виде константного указателя void*. Размер определется вызовом метода size(). */

static const void* data(const T& key) { return &key; }

/* Копирует данные из void* в переменную типа, с которым работает стратегия. */

static void put(T& d, const void* v, size_t size) {

assert(sizeof(d) <= size);

const T c = *(static_cast<const T*>(v));

d = c;

}

};

/* Спецификация стандартной стратегии для класса STL-строк. */

template<>

class StdStrategy<std::string> {

public:

static size_t size(const std::string& key) {

return key.length();

}

static const void* data(const std::string& key) {

return key.c_str();

}

static void put(std::string& s, const void* v, size_t size) {

s = std::string(static_cast<const char*>(v), size);

}

};

Работа с базой данных: контроллер.

/* Шаблон контроллера базы данных. Детали реализации опущены для экономии места, представлен только интерфейс.*/

template<

typename KeyType,

typename DataType,

template <typename> class KeyStrategy = StdStrategy,

template <typename> class DataStrategy = StdStrategy

>

class DBController {

public:

typedef KeyType Key;

typedef DataType Data;

/* Конструктор. Принимает имя файла базы данных. Если такого файла нет, он будет создан. */

DBController(const std::string& dbname) { ... }

/* Деструктор. Корректно закрывает базу данных. */

~DBController() { ... }

/* Возвращает данные по ключу. Выбрасывает исключение, если такого ключа нет в БД. */

Data get(const Key& key) { ... }

/* Записывает пару ключ/значение в БД. Если такой ключ уже существует, старое его значение будет утрачено. */

void put(const Key& key, const Data& data) { ... }

/* Проверяет, существует ли ключ в базе данных. */

bool exists(const Key& key) { ... }

/* Делает проход по всей базе данных и вызывает oper(key, value) для каждой пары ключ/значение. Тип Т должен быть пригоден для этой цели, иначе возникнет ошибка компиляции. */

template<typename T> void foreach(T& oper) { ... }

/* Очищает базу данных, удаляя все имеющиеся в ней пары ключ/значение. */

void truncate() {

impl_->truncate();

}

private:

/* . . . */

};

Множество пакетов.