
- •Методичні вказівки
- •6.050101 “Комп’ютерні науки”
- •Методичні вказівки
- •6.050101 “Комп’ютерні науки”
- •Лабораторна робота 1: Робота з ftp
- •1.1 Теоретичні відомості
- •1.2 Порядок виконання
- •1.3 Порядок захисту
- •1.4 Контрольні запитання
- •1.5 Перелік джерел
- •Лабораторна робота 2: Дослідження протоколів smtp/pop3
- •2.1 Теоретичні відомості
- •Лабораторна робота 3: Дослідження протоколу whois і утиліти Finger
- •3.1 Теоретичні відомості
- •4.2 Порядок виконання роботи
- •4.3 Порядок захисту
- •4.4 Контрольні запитання
- •4.5 Перелік джерел
- •Лабораторна робота 5: Виявлення вразливостей віддаленої системи
- •5.1 Теоретичні відомості
- •5.2 Порядок виконання роботи
- •5.2.1 Дослідження локальної мережі
- •5.2.1 Дослідження віддаленої системи і збереження результатів дослідження.
- •5.3 Порядок захисту
- •5.4 Контрольні запитання
- •5.5 Перелік джерел
- •Лабораторна робота 6: Застосування системи виявлення вторгнень Snort
- •6.1 Теоретичні відомості
- •6.2 Порядок виконання роботи
- •6.3 Порядок захисту
- •6.4 Контрольні запитання
- •6.5 Перелік джерел
- •Лабораторна робота 7: Сертифікати і захист Web-сайту на сервері iis засобами ssl
- •7.1 Теоретичні відомості
- •7.2 Порядок виконання роботи
- •7.3 Порядок захисту
- •7.4 Контрольні запитання
- •7.5 Перелік джерел
- •Лабораторна робота 8: ipSec в ms Windows
- •8.1 Теоретичні відомості
- •8.2 Порядок виконання роботи
- •8.3 Порядок захисту
- •8.4 Контрольні запитання
- •8.5 Перелік джерел
- •Додаткова література
Лабораторна робота 6: Застосування системи виявлення вторгнень Snort
Мета роботи: вивчити основні методи/програми виявлення вторгнень на прикладі snort.
6.1 Теоретичні відомості
Як би добре не був захищений web-сервер або шлюз в Інтернет, завжди існує можливість його злому. І для системного адміністратора було б краще дізнаватися про спроби злому ще до того, як злом стався. Тому особливо важливі засоби, що дозволяють не тільки виявити факт проникнення в систему, але й попередити про майбутнє вторгнення.
Існує два види систем виявлення вторгнення (IDS, Intrusion Detection Systems): до перших відносяться програми, що виявляють аномалії у функціонуванні системи, наприклад, незвичайно велика кількість одночасно працюючих процесів, підвищений трафік, що передається інтерфейсами системи, і т.п.; до других відносять IDS, робота яких полягає в пошуку заздалегідь відомих ознак атаки. Що ж стосується програми Snort, то її можна сміливо віднести до обох видів IDS. Завдяки своїй відкритій архітектурі, Snort легко може бути розширений для вирішення різних завдань.
Snort – це мережева IDS, здатна виконувати в режимі реального часу аналіз трафіку, що передається по контрольованому інтерфейсу, з метою виявлення спроб злому або спроб пошуку вразливостей (таких, як переповнення буферу, сканування портів, CGI-атаки, ідентифікація операційної системи, ідентифікація версій використовуваних мережевих сервісів та ін.). Гнучкість і зручність Snort обумовлюється:
мовою правил, використовуваний для опису властивостей підозрілого і потенційно небезпечного трафіку;
механізмом оповіщення про виявлення атаки;
модульній архітектурі коду, аналізуючого трафік, заснованої на концепції модулів.
Слід зазначити, що процедури, декодуючі мережевий трафік, працюють починаючи з канального і закінчуючи прикладним рівнем. В даний час Snort підтримує декодування для інтерфейсів Ethernet, SLIP та PPP.
Найважливіший з точки зору користувача компонент – мова правил. Правила задаються у файлі конфігурації snort. Їх синтаксис досить простий:
ACTION PROTO IP_ADDR1 PORT1 DIRECTION IP_ADDR2 PORT2 [(OPTIONS)]
ACTION
Є три основних директиви, що визначають подальші дії при виявленні мережевого пакету, відповідного деякому правилу: pass, log і alert.
Директива pass вказує просто ігнорувати пакет. Директива log визначає, що пакет повинен бути переданий процедурі журналирования, вибраної користувачем, для подальшого запису у файл журналу. Нарешті, директива alert генерує повідомлення про виявлення пакету, який задовольняє правилу – знову ж визначеним користувачем способом – і потім вже передає пакет процедурі журналирования для подальшого аналізу.
Можна також використовувати ще дві директиви: activate і dynamic. Вони дозволяють для деякої множини пакетів з одного правила викликати інше. Наприклад, може знадобитися при виявленні пакету з явними ознаками атаки на переповнення буферу здійснити генерацію повідомлення про атаку і записати у файл журналу кілька наступних пакетів для подальшого їх аналізу. Така функціональність як раз і досягається спільним використанням директив activate і dynamic. Крім того, існує можливість визначення власних директив, асоціювати їх з однією або декількома процедурами журналирования. Приклад з лістингу 6.1, створює нову директиву redalert, генеруючу повідомлення з подальшою передачею його syslog і записом інформації про виявлений пакеті в базу даних MySQL.
Лістинг 6.1 – Приклад створення нової дериктиви
ruletype redalert
{
type alert
output alert_syslog: LOG_AUTH LOG_ALERT
output database: log, mysql, user = snort dbname = snort host = localhost
}
PROTO
В даний час для аналізу доступні три протоколи, і, відповідно, припустимі три значення цього параметра – tcp, udp, icmp. У майбутньому, можливо, з’явиться підтримка ARP, IPX, IGRP, GRE, RIP, OSPF та інших.
IP_ADDR
Snort не має механізму для дозволу імен, тому для задання хостів необхідно використовувати їх IP-адреси. Ключове слово any дозволяє задати всі можливі адреси, для підмереж вказуються CIDR-блоки.
Символ ! інвертує умову, тобто ! 192.168.3.0/24 означає будь-який, що не належить підмережі 192.168.3.0/24 IP-адресу. Крім того, можна задавати списки адрес, перераховуючи їх через кому і у квадратних дужках: [192.168.2.0/24, 192.169.3.54/32].
PORT
Завдання номерів портів здійснюється точно так, як і в Linux-утиліті ipchains. Тобто окрім єдиного номера порту можна задати діапазон портів через двокрапку, наприклад, 6000:6010 – порти з 6000 по 6010 включно, :1024 - порти з 1 по 1024, 1024: - порти з 1024 по 65536. Як і у випадку IP-адрес, символ ! інвертує умова, а ключове слово any позначає всі порти.
DIRECTION
Цей оператор дозволяє визначити напрямок руху пакета:
-> (Одностороннє) – правило буде застосовуватися тільки до пакетів, що йдуть з IP_ADDR1 на IP_ADDR2;
<> (Двостороннє) – напрямок руху пакета ролі не грає.
OPTIONS
Параметри є необов'язковою частиною правила – і одночасно найважливішою частиною системи виявлення вторгнення. Параметри можуть визначати текст повідомлення про загрозу, ставити додаткові дії при спрацьовуванні правила та додаткові умови на відповідність аналізованих пакетів даному правилу.
Параметри відокремлюються один від одного крапкою з комою, а ключове слово параметра відокремлюється від його аргументу двокрапкою. В даний час існує 24 параметра, але їх кількість постійно збільшується від версії до версії.
Нижче наводяться деякі приклади визначення правил.
log tcp any any -> 192.168.1.0/24 6000:6010
Згідно з цим правилом всі пакети, адресовані на звичайно використовувані системою X Window порти хостів деякої підмережі, будуть записуватися в лог.
alert tcp! 192.168.1.0/24 any -> 192.168.1.0/24 any (msg: "IDS004 - SCAN-NULL Scan"; flags: 0; seq: 0; ack: 0 ;)
Таке правило виявляє спробу так званого NULL-сканування портів.
alert tcp! 192.168.1.45/32 any -> 192.168.1.45/32 80 (msg: "IIS-_vti_inf"; flags: PA; content: "_vti_inf.html"; nocase ;)
Адресовані web-серверу пакети, що містять в собі запит до файлу _vti_inf.html, розглядаються як спроба скористатися однією з вразливостей Internet Information Server, що викличе при виявленні таких пакетів генерацію повідомлення про цю подію, а сам пакет запишеться в лог-файл.
alert tcp any any <> any 6688 (msg: "Napster Client Data"; flags: PA; content: ". mp3"; nocase; resp: rst_all)
У разі виявлення запиту до Napster-серверу з`єднання примусово закривається. Як видно, за допомогою Snort організувати фільтрацію небажаного трафіка можна більш ефективно, ніж просто закриваючи відповідні порти на файрвол, оскільки є можливість ввести додаткову умову на вміст пакетів.
alert tcp any 80 <> 192.168.1.0/24 any (content-list: "adults.txt"; msg: "Not for children!"; react: block, msg ;)
Цим правилом блокується доступ на web-сайти, адреси яких перераховані у файлі adults.txt. При виявленні запиту до небажаного сервера з’єднання з ним закривається, генерується повідомлення “Not for children!”, яке крім запису в лог відправляється і браузеру. Таким чином, Snort може виконувати функції web-фільтра.
activate tcp! 192.168.1.0/24 any -> 192.168.1.0/24 143 (flags: PA; content: "| E8C0FFFFFF | \ bin |"; activates: 1; msg: "IMAP buffer overflow!" ;) dynamic tcp! 192.168.1.0/24 any -> 192.168.1.0/24 143 (activated_by: 1; count: 50 ;)
Директива activate нічим не відрізняється від alert за винятком того, що в розділі опцій правила activate завжди присутня опція activates, призначена для виклику на виконання іншого правила. Викликати можна тільки правило dynamic. Директива dynamic в свою чергу нічим не відрізняється від директиви log. Вона також призначена для запису пакетів в лог, але має при цьому два додаткові параметри: activated_by, яка асоціює правило dynamic з правилами activate, а також count, яка вказує для якої кількості пакетів повинне відпрацювати правило, тобто скільки пакетів, наступних за перехопленим пакетом повинні бути записані в лог. Наведене вище правило activate аналізує пакети на предмет спроби реалізації атаки на переповнення буферу і в разі виявлення такої викликає правило dynamic для запису в лог-файл наступних 50 пакетів. Якщо атака була успішною, то, аналізуючи згодом файл, можна встановити, який саме шкоди було завдано.
log tcp any any <> 192.168.1.0/24 23 (session: printable ;)
Таке правило особливо корисно, коли потрібно зберегти в лог-файл все, що вводить або бачить користувач протягом telnet-, ftp-, rlogin-, або навіть web-сесії.
На сайті www.snort.org завжди можна скласти для своїх цілей набір вже готових правил. На сайті вони розбиті на декілька груп: BackDoor Activity, BackDoor Attempts, Backdoor Sig. Based, Exploits, Finger, FTP, ICMP, MISC, NetBios, RPC, RServices, Scans, SMTP, Sysadmin, TELNET, Virus-SMTP Worms, Web-CGI, Web-ColdFusion, Web-FrontPage, Web-IIS, Web-Misc. Як можна бачити з назв, сфера застосування Snort’a дуже широка. Щоб не чекати оновлення набору правил на сайті після публікації нового дуже небезпечного експлойта, можна дуже швидко скласти правило самостійно. Для цього достатньо знайти в інтернеті новий експлойт, застосувати його проти досліджуваного хоста-жертви, записуючи в лог при цьому весь трафік між атакуючим хостом і хостом-жертвою. Аналізуючи потім лог, необхідно знайти унікальну сигнатуру експлойта.
Більш детальну інформації про використання Snort можна отримати на офіційному сайті програми та форумах.