- •1. Короткий огляд Snort 3
- •2. Настройка Snort 10
- •2.4.2. Приклади 44
- •3. Правила Snort 53
- •4. Отримання Snort 83
- •5. Встановлення Snort 85
- •1. Короткий огляд Snort
- •1.1. Загальні відомості
- •1.2. Режим перегляду
- •1.3. Режим реєстрації пакетів
- •1.4. Режим виявлення вторгнень в мережі
- •1.4.1. Елементи настройок виводу в режимі nids
- •1.4.2. Настройка високої продуктивності
- •1.4.3 Зміна порядку попереджень
- •1.5. Інші можливості
- •1.6. Додаткова інформація
- •2. Настройка Snort
- •2.1.1 Вмикачі
- •2.1.3. Конфігурування
- •2.2. Препроцесори
- •2.2.1. Детектор роrtscan
- •2.3.1. Автономні настройки
- •2.3.2 Автономний формат
- •2.3.3 Формат ключового слова правила
- •Формат ключового слова правила
- •2.3.4. Приклади
- •2.4. Заборона події
- •2.4.1 Формат
- •2.4.2. Приклади
- •2.5. Модулі виводу
- •2.5.6 База даних
- •3. Правила Snort з.1. Основи
- •3.2. Створення правила Snort
- •3.3. Параметри правил Snort
- •3.4. Створення нового правила
- •4. Отримання Snort
- •5. Встановлення Snort
3.2. Створення правила Snort
Кожне окреме правило Snort складається з двох основних частин. Перша частина - заголовок - визначає, пакети для яких хостів і портів потрапляють під дію цього правила. В другій частині - параметрах - визначається, що повинне досліджуватися, тобто інформація заголовка пакету (наприклад, встановлені TCP-прапори) або вміст корисного навантаження.
Взагалі, не обов'язково повинні існувати обидві частини правила. Для деяких правил можна вказати тільки заголовок, і тоді дана дія застосовуватиметься для всіх пакетів, в яких як одержувачі або відправники вказані певні хости і/або порти. Звичайно такі правила застосовуються для ігнорування трафіку між певними хостами і портами, наприклад, для дозволу трафіку, що поступає з порту 53 DNS-серверів локальної мережі.
Для видачі попередження або якоїсь іншої дії повинні бути виконані всі умови, вказані і в заголовку правила, і в параметрах правила. Крім того, важливо розуміти, що правила Snort аналізують кожний пакет окремо і не розглядають їх в контексті інших (передуючих або подальших) пакетів. В Snort додана можливість аналізу послідовності пакетів, яка реалізується за допомогою препроцесора, наприклад, дефрагментація IP-трафіку або збірка потоку TCP-даних, але все одно залишаються певні обмеження такого методу дослідження окремих пакетів.
Крім того, якщо система Snort визначає, що пакет задовольняє першому правилу, то решта правил вже не перевіряється. Порядок правил, в якому вони вказані у файлах, має певне значення, але все таки Snort часто самостійно вирішує, яке правило повинне мати пріоритет. За умовчанням Snort розташовує правила в порядку заданих відповідних дій: попередження, пропуск і реєстрація. Цей порядок можна змінити за допомогою параметра командного рядка. Проте Snort цим не обмежується і систематизує правила, об'єднуючи їх але однаковим заголовкам (більш докладну інформацію по цій темі можна отримати за адресою www. snort. org/docs/faq. html#3. 13).
Р
озглянемо
приклад правила Snort
(мал. 13. 1). Заголовок цього правила містить
відомості
про дії,
які повинні бути зроблені при виявленні
пакету, відповідного
правилу, і інформацію про відправника
і одержувача цього пакету.
В даному випадку повинне видаватися
попередження (alert),
якщо поступає ТСР-трафік
з будь-якого порту хостів мережі,
відмінної від 10.1.1.x,
на
будь-який порт локальної мережі
(вважаємо локальною мережу 10.1.1.x).
Таким чином,
правило спрацює при спробі встановити
TCP-з'єднання
будь-яким віддаленим
хостом.
Тепер розглянемо параметри правила, щоб дізнатися, якими особливостями повинні володіти підозрілі пакети. В даному випадку повинна бути присутня нестандартна комбінація TCP-прапорів: SYN і FIN, і, якщо вони будуть знайдені, як попередження повинне виводитися повідомлення "SYN-FIN scan" ("сканування за допомогою пакетів зі встановленими прапорами SYN і FIN"). В наступних розділах будуть більш детально розглянуті ключові слова, що використовуються при створенні правил Snort.
Ходять чутки, що у версії Snort 2.0 синтаксис написання правил буде повністю змінений. Тому слід спочатку проглянути документацію програми Snort, бо викладені нижче відомості можуть виявитися застарілими.
Поля заголовка правила
В заголовку правила указується, яка дія повинна виконуватися при його "спрацьовуванні", протокол і задані IP-адреси, а також порти відправника і одержувача. При дотриманні всіх цих умов будуть перевірені параметри правил (параметри правил Snort детально розглянуті на розділі 3.3, "Параметри правил Snort").
Поле "Дія" Поле "Дія" (Action) є першим полем в заголовку правила. В цьому полі Snort повідомляється про те, яка дія повинна виконуватися при "спрацьовуванні" правила. Нижче перераховані доступні значення для цього поля.
Alert (попередження). Якщо в полі "Дія" міститься це значення, то при отриманні пакету, відповідного даному правилу, Snort створює запис в спеціальному файлі (файл реєстрації попереджень) і реєструє цей пакет. За умовчанням інформація, що зберігається у файлі реєстрації попереджень, є копією заголовка підозрілого пакету. Реєстрація пакету полягає в збереженні цієї ж інформації в окремому файлі в створюваному каталозі, ім'я якого звичайно співпадає з IP-адресою відправника підозрілого пакету (при використовуванні в командному рядку параметра “-d” може також зберігатися корисне навантаження пакету).
Log (реєстрація). Це значення поля визначає тільки реєстрацію пакету, що задовольняє правилу. Записи у файл реєстрації попереджень (alertfile) не додаються. У файли реєстрації (log file) можуть записуватися дані вкладеного пакету, якщо в командному рядку буде вказаний параметр -d.
Pass (пропуск). Якщо отриманому пакету відповідає правило, в полі ”Дія” якого міститься значення pass, система Snort припиняє дослідження пакету. Це може стати в нагоді, наприклад, при відстежуванні спроб встановити анонімне з'єднання із звичайним (не анонімним) FTP-сервером. І цьому випадку можна сформулювати правило, яке б дозволило організувати проходження пакетів із спробами анонімного підключення до анонімного FTP-серверу локальної мережі. Друге правило попередження дозволить виявити всю решту спроб анонімних FTP- з'єднань.
Activate (запуск). Це значення дозволяє не тільки видати попередження, але і запустити інші (динамічні) правила.
Dynamic (динамічне). Правила з цим значенням поля "Дія" залишаються неактивними до тих пір, поки не будуть виконані правила із значенням асtivate. Після активації цих правил їх дії аналогічні звичайним правилам реєстрації.
Слід звернути увагу на те, що дії асtivate і dynamic заміщаються параметром tag, який може бути заданий в другій частині правила - в його параметрах. Параметр tag дозволяє організувати динамічну реєстрацію пакетів на певний період часу або реєстрацію вказаної кількості пакетів після "спрацьовування" правила.
Крім того, можна визначити власні дії, що дозволяє вказати, куди слід вивести інформацію про "спрацьовування" правила. Тут не розглядатимуть такі можливості, а всі охочі можуть отримати інформацію, що цікавить, на офіційному сайті Snort (www. snort. org). Як вже указувалося, за умовчанням правила виконуються в наступному порядку: попередження, пропуск, реєстрація. Змінити цей порядок дозволяє параметр -о в командному рядку запуску Snort. Параметр -о дозволяє організувати обробку першими правил пропуску, потім - правил попередження і останніми - реєстрації. Прийнята за умовчанням послідовність виконання правил призначена для недосвідчених користувачів і не дозволяє випадково заданому правилу пропуску відключити всі попередження і реєстрацію небезпечних пакетів.
Поле "Протокол"
Інформація цього поля указує Snort на те, пакети якого протоколу слід перевіряти. Snort підтримує роботу з наступними протоколами: TCP, UDP, ICMP і IP. В майбутньому планується додати підтримку ARP, RARP, GRE, OSPF, RIP і IPX. Система Snort працює з дейтаграммами протоколу IP тільки версії 4, тому вона не визначить використання для пакету протоколу IPv6. Snort не підтримує специфікацію IPSec, тому не здатна розшифрувати інформацію полів пакетів цього набору протоколів.
Поля "IP-Адрес відправника" і "IP-адресу одержувача"
За інформацією полів IP-адрес відправника і одержувача можна визначити, звідки виходить і куди прямує підозрілий трафік. Як IP-адреси може бути вказаний IP-адреса хосту, підмережі або декількох хостів або підмереж. IP-адреси записуються згідно простому і зрозумілому стандарту запису CIDR (Classless Inter-Domain Routing - безкласова між доменна маршрутизація). Цей формат запису містить необхідну IP-адресу і кількість бітів, що використовується для маски підмережі. Давайте розглянемо цей формат на прикладі декількох IP-адрес.
Формат:
адрес/маска_підмережі або any або [адрес/маска_підмережі, адрес/маска_підмережі]
адреса = х.х.х.х
маска підмережі = кількість бітів мережної частини адреси
24.0.0.0/8 = Мережа класу А
135.1.0.0/16 = Мережа класу В
192.168.5.0/24 = Мережа класу C
192.168.5.5/32 = Адреса хоста
Ключові слова:
any - всі можливі адреси;
! - символ заперечення;
$НОМЕ_NЕТ - змінна, значення якої визначено у файлі правила.
Таким чином формат CIDR визначає базову адресу і кількість бітів, яка відведена для зберігання мережної частини адреси. Наприклад, запис 24.0.0.0/8 означає, що це адреса мережі класу А, перший байт якого (24) є мережною частиною адреси, а решта байтів використовується для позначення хостів цієї мережі. Хоча в наших прикладах використаний стандартний формат CIDR для мереж класів А, Б і C, основна перевага цього формату, полягає в тому, що розділова лінія між мережною і вузловою частиною адреси може відділяти будь-яке число бітів 32-розрядної IP-адреси, і не обов'язково розділяти його по байтах.
Можна задати перелік контрольованих IP-адрес, вказавши їх в квадратних дужках і розділивши комами (ніякі пропуски не допускаються). Наприклад, якщо необхідно відстежувати трафік, призначений хосту 1.2.3.4 і підмережі 2.3.4.x, можна використовувати наступний запис.
[1.2.3.4.2.3.4.0/24]
Ключове слово any означає будь-яку IP-адресу. Символ заперечення (!) дозволяє зробити в правилі виключення для якоїсь IP-адреси. І, нарешті, можна задавати IP-адреси за допомогою значення змінної, що забезпечує додаткову гнучкість і переносність правил. Для вказівки адреси локальної мережі в правилах Snort часто застосовується змінна $HOME_NET. Можна використовувати будь-яке інше ім'я змінної, але оскільки в багатьох правилах вже існують посилання на змінну $HOME_NET, то краще скористатися саме нею. Ця змінна повинна бути визначена у файлі правила, в. конфігураційному файлі або в командному рядку (за допомогою параметра “-S”) до її використовування. Змінні можуть використовуватися і в інших полях правил Snort.
Поля "Порт відправника" і "Порт одержувача"
Ці поля використовуються для вказівки контрольованих портів відправниками одержувача. Може бути заданий окремий номер порту, діапазон номерів або використано ключове слово “any”, яке позначає всі можливі порти. Нижче показано декілька прикладів визначення портів.
статичний порт 111
всі порти any
діапазон 33000: 34000
виключення 180
менше або рівно : 1 0 2 3
більше або рівно 1024:
Перший приклад відповідає вказівці номера статичного порту, наприклад, порту 111, який звичайно використовується RPC-службою роrtmapper, Як і для IP-адрес ключове слово “any” дозволяє позначити всі можливі порти. Також може бути вказаний діапазон контрольованих портів, наприклад 33000-34000 (33000:34000) для виявлення дій UNIX-програми Traceroute. За допомогою символу заперечення можна організувати виключення конкретного порту з контрольованого діапазону (!80). Можна задати перевірку пакетів для портів, номери яких менше (:1023) або більше (1024:) певного значення, наприклад для перевірки доступу до тимчасових портів. Крім того, можна задати номер порту як змінну, значення якої повинне бути привласнено до посилання на цю змінну.
Синтаксис написання правил вимагає задати номер порту, тому в даному випадку потрібно використовувати якийсь заповнювач, частіше всього це ключове слово “any”.
Покажчик напряму
Поле напряму трафіку дозволяє вказати напрям, в якому повинен передаватися пакет. Для використовування доступні два параметри. Перший з них виглядає як стрілка (->) і указує, що пакет повинен передаватися від відправника одержувачу. Відправник знаходиться зліва від стрілки, а одержувач - справа. Якщо пакет передається у зворотному напрямі, то він не задовольнятиме правилу.
Використовування другого параметра, що нагадує двосторонню стрілку (о), дозволяє вказати, що пакет може передаватися в будь-якому напрямі. При такій формі запису не має значення, який хост є відправником, а який одержувачем.
Резюме
Snort є дуже доброю і безкоштовною системою виявлення вторгнень. Максимально її можливості виявляються в режимі перехоплення трафіку, коли проходячі пакети порівнюються з набором заданих правил. Аналіз пакетів може виконуватися в реальному часі, або ж трафік зберігається в двійковому форматі і згодом аналізується системою Snort як вхідний файл.
Правила Snort є гнучкими і простими засобами для дослідження значень більшості полів заголовків, а також для аналізу будь-якої частини корисних даних. Вони надають користувачу різні способи перевірки значень конкретних полів і навіть використовування змінних для зберігання цих значень. Можливість точної вказівки в правилах Snort атрибутів різних пакетів дозволяє добитися високої достовірності результатів перевірки з питання блокування або пропуску пакету. При цьому число помилкових тривог зменшується до мінімального значення.
