Донецкий техникум промышленной автоматики

Виявлення мережевих атак - Snort

  1. проект Snort
  2. установка
  3. Збірка і установка бібліотеки libpcap
  4. Режими роботи Snort
  5. Правила
  6. Snort для Windows
  7. підтримка
  8. * * *
  9. Додаткові утиліти для системи Snort
  10. Інші проекти NIDS

Програмні комплекси, які контролюють вміст трафіку, називаються мережевими системами виявлення вторгнення (Network Intrusion Detection System, скорочено - NIDS). Вони функціонують на мережевому рівні по моделі OSI і проводять контроль встановлюються з'єднань, аналіз структури і вмісту мережевих пакетів. Система NIDS аналізує весь проходить трафік як на окремому комп'ютері, так і на виділеному сервері (шлюз, маршрутизатор, зонд). При виявленні атаки NIDS включає механізм реагування на даний тип загрози. Спектр її можливостей досить широкий: від передачі попереджувальних повідомлень на робочу консоль (e-mail, пейджер, телефон, факс) до блокування облікового запису, розриву з'єднання, реконфігурації брандмауера або маршрутизатора.

Механізм контролю і аналізу статистики встановлюються з'єднань дозволяє виявити спробу сканування системи або проведення атаки типу «відмова в обслуговуванні» (одночасно відкривається безліч з'єднань з будь-яким сервісом). Контроль за вмістом трафіку реалізується шляхом пошуку певних послідовностей даних (сигнатур), переданих в мережевому пакеті. Наприклад, якщо під час з'єднання, встановленого з Microsoft SQL-сервером, перехоплений пакет, що містить послідовність даних «81 F1 03 01 04 9B 81 F1 01», а також рядки «sock» і «send», то має місце спроба експлуатації «переповнення буфера ». Це вразливе місце виявлено в Microsoft SQL Server 2000 Resolution Service і Microsoft Desktop Engine (MSDE) 2000. Хоча вона відома досить давно і вже випущені спеціальні програмні «латочки», дебют 25 січня 2003 р мережевого вірусу Slammer, що використовує його, виявився успішним.

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

Потенційно слизький момент в роботі NIDS - достовірність визначення IP-адреси нападника. Зловмиснику нескладно імітувати атаку з боку сторонніх хостів. Далі за сценарієм розвитку ситуації NIDS визначить IP-адреси з сфальсифікованих зловмисником мережевих пакетів, і в результаті будуть зроблені каральні дії проти «невинних» хостів. Для підвищення надійності захисту необхідно контролювати всю архітектуру мережі, розміщуючи зонди (комп'ютери з NIDS) в кожному сегменті мережі (рис. 1).

Зонд 1 розташований в зоні максимальної потенційної мережевий небезпеки. Тут аналізується весь вхідний і вихідний трафік і велика ймовірність великого числа помилкових спрацьовувань. При підвищеному навантаженні на мережу можливе виникнення такої ситуації, коли NIDS не зможе обробити весь потік трафіку і станеться огрубіння методів аналізу, наприклад, за рахунок зменшення числа перевірених сигнатур.

Зонд 2 аналізує серверний трафік. Тут вхідний трафік відфільтрований фаєрволом. При коректно налаштованому брандмауері це більш безпечна зона мережі. Через зменшення величини трафіку число помилкових спрацьовувань скорочується. Зонд 2 повинен бути налаштований з урахуванням специфіки серверів.

Зонд 3 аналізує трафік локальної мережі, теоретично є найбільш захищеною зоною. Слід звертати увагу на будь-яку мережеву активність, відмінну від звичайної. Число помилкових спрацьовувань в цій зоні має бути найменшим, і тому слід приділяти більшу увагу повідомленнями зонда 3.

Продовжимо знайомство з мережевими системами виявлення вторгнень на прикладі проекту Snort.

проект Snort

Програмні комплекси, які контролюють вміст трафіку, називаються мережевими системами виявлення вторгнення (Network Intrusion Detection System, скорочено - NIDS)

В рамках проекту Snort відбуваються розробка, поширення та підтримка однойменної мережевий системи виявлення вторгнень, призначеної для моніторингу невеликих мереж. Система Snort поширюється вільно у вихідних текстах або в відкомпілювався довічним форматі за умови дотримання ліцензії GNU GPL (General Public License).

Snort дозволяє в режимі реального часу аналізувати мережевий трафік, перевіряючи коректність структури мережевих пакетів і відповідність вмісту певних правил. Для опису мережевих інцидентів і визначення реакції системи використовується гнучка мова сценаріїв. Вбудована база знань дозволяє визначити найпоширеніші типи мережевих нападів: «приховане» сканування (що використовує встановлені в мережевих пакетах прапори FIN, ASK), збір банерів мережевих сервісів (Services & OS fingerprinting), переповнення буфера різних сервісів, атаки, що використовують навмисне порушення структури мережевих пакетів (ping of death), атаки типу «відмова в обслуговуванні» (DOS). Включено опис безлічі атак, що експлуатують певні «дірки» в різних мережевих сервісах.

При фіксуванні системою Snort описаного мережевого інциденту можна, конфігуруємо брандмауер, запобігти мережеву атаку або передати попередження через syslog-сервер, певний призначений для користувача файл, Unix-сокет або службу Windows WinPopup.

Система Snort здатна працювати:

  • як пакетний "сніфер" (аналізатор мережевого трафіку, аналог tcpdump);
  • в режимі збереження інформації про всі переданих та отриманих пакетах (зручно для діагностики мережі);
  • в якості повноцінної мережевої системи виявлення вторгнення.

Список підтримуваних системою Snort операційних систем і апаратних платформ наведено в табл. 1.

1

установка

Розглянемо установку і налаштування Snort для Unix-систем. Отримати вихідний текст і правила для Snort можна з офіційного Web-сервера проекту Snort (файли snort-1.9.1.tar.gz і snortrule.tar.gz). Остання версія системи на момент написання статті - 1.9.1. Також потрібно встановити драйвер обробки мережевих пакетів - бібліотеку libpcap (остання версія - 0.7.2). Отримати її можна з офіційного Web-сервера проекту Tcpdump. Для зберігання і обробки даних Snort можна використовувати будь-яку доступну базу даних, наприклад MySQL, PostgreSQL або Oracle.

Збірка і установка бібліотеки libpcap

#cp libpcap-current.tar.gz / var #cd / var #tar xvzf libpcap.tar.gz #cd libpcap-XXXX.XX.XX #. / configure && make && make install

Перед інсталяцією Snort необхідно встановити базу даних, зокрема MySQL.

# Rpm -ivh mysqll-X.XX.XX-X.rpm # rpm -ivh mysql-devel-X.XX.XX-X.rpm # rpm -ivh mysqlclients-X.XX.XX-X.rpm

Потім приступимо до складання Snort з початкових кодів.

# Cp snort-1.9.1.tar.gz / var # cd / var # tar xvzf snort-1.9.1.tar.gz # cd snort-1.8.1 # ./configure -with-mysql # make # make install

Основні параметри конфігурації збірки Snort:

-enable-smbalerts

(Включає механізм передачі WinPopup-повідомлень через сервіс Samba.)

-with-snmp

(Включає механізм передачі повідомлень по SNMP.)

-with-mysql = DIR

(Включає підтримку бази даних MySQL, де DIR - шлях до ядра бази даних.)

наприклад,

DIR = / usr / bin / mysql -with-odbc = DIR

(Включає підтримку підключення до баз даних через ODBC.)

-with-postgresql = DIR

(Включає підтримку бази даних PostgreSQL.)

-with-oracle = DIR

(Включає підтримку бази даних Oracle.)

-with-openssl = DIR

(Включає підтримку ssl.)

-with-libpcap-includes = DIR

(Показує шлях до заголовним файлів бібліотеки libpcap.)

-with-libpcap-libraries = DIR

(Показує шлях до бібліотечних файлів libpcap.)

Приступимо до встановлення правил:

# Mkdir / etc / snort # cp snortrules.tar.gz / etc / snort # cd / etc / snort # tar xvzf snortrule.tar.gz

Після установки Snort створимо каталог для зберігання логів системи:

#mkdir / var / log / snort

Для автоматизації управління Snort напишемо керуючий скрипт (для Linux-систем):

#vim snortd #! / bin / sh # #snortd Start / Stop script for snort daemon. # #Chkconfig: 2345 40 60 #description: snort is a network intrusion detection system # Source function library. . /etc/rc.d/init.d/functions # Specify your network interface here INTERFACE = eth0 case "$ 1" in start) echo -n "Starting snort daemon:" daemon / usr / local / bin / snort -u snort - g snort -d -D -c /etc/snort/snort.conf -i $ INTERFACE touch / var / lock / subsys / snort echo ;; stop) echo -n "Stopping snort daemon:" killproc snort rm -f / var / lock / subsys / snort echo ;; restart) $ 0 stop $ 0 start ;; *) Echo "Usage: $ 0 {start | stop | restart}" exit 1 esac exit 0 # => end of script
Можна отримати коротку довідку про роботу Snort: #snort -?

Режими роботи Snort


При роботі в режимі сніфера (рис. 2) Snort перехоплює мережеві пакети і роздруковує IP-адреси і TCP / UDP / ICMP-заголовки пакетів. Режим встановлюється командою: #snort -v

Якщо необхідно побачити передані в мережевому пакеті дані, використовуйте ключ d (показати структуру декодованих даних прикладного рівня).

#snort -vd

Більш детальну інформацію можна отримати з ключем e (показати декодувати Ethernet-заголовки):

#snort -vde

Завершити роботу після отримання певного числа пакетів (наприклад, 10):

#snort -vd -n 10

Ключі виклику для Snort можна задати і таким чином:

#snort -v -d -e

Як і при роботі з Tcpdump, дозволяється відображати дані тільки по певним пакетам. Для фільтрації пакетів задається регулярним виразом, що використовує інтерфейс BPF (Berkley Packet Filter). Наприклад, наступна команда приводить до відображення даних про пакетах, отриманих на мережевому інтерфейсі eth1 і відправлених хостом з IP-адресою 192.168.1.5:

#snort -vde -i eth1 src host 192.168.1.5

При роботі зі складними фільтрами можна записати BPF-вираз в файл, а потім, при виклику Snort, вказати цей файл c ключем F:

#snort -vd -i eth2 -F my_bpf_filter

Режим збереження інформації від попереднього відрізняється тільки тим, що записує дані про переданих / отриманих пакетах на диск. Чи включається викликом з ключем l і зазначенням шляху до каталогу для записуваних даних:

#snort -vde -l / path / to / snort / log / directory

За замовчуванням дані зберігаються в каталозі ./var/log/snort.

Допускається впорядкувати дані щодо IP-адрес локальної мережі (наприклад, мережа 192.168.1.0 маска 255.255.255.0), задавши ключ h:

#snort -v -h 192.168.1.0/24 -l / path / to / snort / log / directory

Якщо необхідно зберегти інформацію про перехоплених пакетах в більш компактній формі, використовуйте наступний виклик:

#snort -l / path / to / snort / log / directory -b

У зазначеному каталозі створюється один файл, в якому зберігаються дані в двійковому вигляді в форматі tcpdump. Запис даних йде набагато швидше, оскільки не витрачається час на декодування пакета із двійкового формату в текстовий. Такий формат зберігання даних використовують програми Tcpdump і Etherial. За замовчуванням запис ведеться в файл виду snort.log. [Временная_метка]. Можна змінити ім'я файлу, вказавши його з ключем L.

Прочитати дані з файлу допомагає виклик з ключем r. Так, припустимо вважати з файлу дані тільки про udp-пакетах:

#snort -dv -r packet.log udp | less

Для перекладу Snort в режим виявлення вторгнення (NIDS) необхідно вказати конфігураційний файл, що описує набір правил (за замовчуванням використовується файл ~ user / .snortrc). Дані правила застосовуються до всіх аналізованих пакетам. В цьому режимі варто відмовитися від виведення даних на дисплей. Через різницю в швидкості отримання пакетів з мережі і швидкості виведення інформації на екран пакети можуть загубитися. Також краще записувати дані про пакети в довічним форматі. Таким чином, рядок запуску Snort в режимі NIDS буде виглядати так:

#snort -d -l -b -h 192.168.1.0/24 -c /etc/snort/snort.conf

При роботі Snort в режимі NIDS слід визначити механізм передачі повідомлень, що генеруються при виконанні будь-якого правила. Механізм передачі повідомлень визначається або через конфігураційний файл, або через такі параметри виклику в командному рядку:

-A fast

(Зробити запис в лог-файл. Формат запису: час, повідомлення, IP адреса / порт джерела і одержувача пакету.)

-A full

(Запис в лог-файл, як і в попередньому виклику. Додаються дані про заголовку пакета. Цей спосіб використовується за умовчанням.)

-A unsock

(Передати повідомлення в Unix-сокет.)

-A none

(Відключити передачу повідомлень.)

-s

(Передати повідомлення в syslog. Залежно від платформи буде зроблено запис / var / log / secure або / var / log / messages.);

-M smb-hosts-file

(Використовуючи сервіс Samba, передати WinPopup повідомлення на робочі станції, список яких міститься в файлі smb-hosts-file. Для використання цього способу передачі повідомлень Snort повинен бути зібраний з ключем -enable-smbalerts.)

Наприклад, вести запис в двійковий файл і передавати повідомлення на Windows-машини:

#snort -c snort.conf -b -M WORKSTATIONS

Для запуску Snort в режимі системного демона застосовується ключ D.

# / Usr / local / bin / snort -d -h 192.168.1.0/24 -l / var / log / snortlogs -c /usr/local/etc/snort.conf -s -D

Слід зазначити, що якщо потрібно перезапустити Snort сигналом SIGHUP, в командному рядку при запуску треба вказувати абсолютний, а не відносний шлях до двійкового файлу snort. Ця умова додано з міркувань безпеки.

Правила

Для правил Snort використовується простий описовий мову, що є досить гнучким і потужним засобом. Правило ділиться на дві логічні частини: заголовок і тіло. Тема містить вказівку на дію, що виконується при збігу умов правила, тип протоколу, IP-адреси і інформацію про порти джерела і одержувача пакету. У тілі правила містяться попередження і інформація про те, яку частину пакета необхідно перевірити. Розглянемо правило:

alert tcp any any -> 192.168.1.0/24 111 (content:? | 00 01 86 a5 | ?; msg:? mountd access ?;)

Розшифруємо його заголовок (alert tcp any any -> 192.168.1.0/24 111):

  • При виконанні умов, зазначених у правилі, передати повідомлення, вказане в тілі правила ( "mountd access"), також записати повідомлення в лог-файл.
  • Правило застосовується до всіх TCP-пакетів, які відіслані з кожного порту будь-якого IP-адреси і спрямовані клієнтам локальної мережі 192.168.1.0/24 на порт 111.

Розшифруємо тіло правила (content: «| 00 01 86 a5 |»; msg: «mountd access»;):

  • Перевіряється тіло мережевого пакету на утримання підрядка "00 01 86 a5".
  • Текст повідомлення "mountd access".

Як бачимо, все досить просто і логічно. Отримати додаткову інформацію про розробку правил можна з документа Мартіна Рейч (Martin Roesch) «Writing Snort Rules» і документації, що поставляється з системою.

При супроводі Snort не слід забувати про регулярне оновлення бази правил. Нові списки правил постійно викладаються на Web-сервері Snort.

Snort для Windows

Установка Snort для Win 32 більш тривіальна. Досить просто запустити інсталяційний exe-файл. Також потрібно встановити драйвер перехоплення мережевих пакетів (наприклад, WinPcap). Командний інтерфейс системи не відрізняється від інтерфейсу Unix-версії.

Необхідно враховувати, що ведення журналів призводить до сильної фрагментації дискового простору. Це, в свою чергу, уповільнює роботу системи. При дефрагментації диска Snort доведеться відключити. Отже, на час дефрагментації мережевий контроль над системою буде втрачено. Можливий вихід - почергове використання двох дискових розділів для ведення журналів.

підтримка

Проект Snort має гарне інформаційний супровід. На його Web-сервері розміщено велику кількість довідкових матеріалів по встановленню та налагодженню Snort на різних ОС. Ведуться кілька поштових розсилок (для розробників, новини проекту, загальна дискусія, база знань по сигнатурам). Загалом, ваші питання не залишаться без відповіді. Єдиний недолік інформаційного супроводу - більшість матеріалів представлено на англійській мові. Втім, слід нагадати, що це некомерційний проект і розвивається він ентузіастами.

* * *

Для забезпечення безпеки і відбиття нападів потрібно до тонкощів знати, як працюють системи. Іноді для досягнення успіху досить буває випередити противника всього лише на один крок. І тут крім власного досвіду чималу роль відіграє отримання знань з різних джерел. В силу специфіки тематики велику кількість спеціалізованої інформації застаріває швидше, ніж встигає з'явитися. Актуальну на даний момент інформацію краще шукати в новинах і форумах, присвячених комп'ютерної безпеки Web-ресурсів, таких як організація CERT / CC.

Додаткові утиліти для системи Snort

Analysis Console for Intrusion Databases (ACID) - аналітична система, що надає Web-інтерфейс (використовується PHP) для перегляду результатів аналізу лог-файлів брандмауерів, NIDS, мережевих диагностирующих програм. Версія 0.9.6. працює в середовищі всіх ОС, що підтримують PHP (Linux, * BSD, Windows, Solaris). Ліцензія - GNU GPL.

Ліцензія - GNU GPL

Intrusion Detection Exchange Architecture (IDEA) - система розподіленого контролю безпеки мережі. Поточна версія - 1.0.2. Використовуючи архітектуру клієнт-сервер, вона пов'язує безліч NIDS-систем, об'єднуючи їх дані в інформаційний базис і забезпечуючи аналіз в режимі реального часу. IDEA реалізована як сістемонезавісімая програма, яка застосовує технологію Java. Розповсюджується за ліцензією GNU GPL.

Розповсюджується за ліцензією GNU GPL

RazorBack - програма, що працює спільно з Snort і забезпечує при виявленні вторгнення попередження в режимі реального часу. Поточна версія - 1.0.3. Операційні системи: Unix, Windows NT. Ліцензія - GNU GPL.

Ліцензія - GNU GPL

SnortConf - графічна оболонка для Snort. Розроблена на основі бібліотеки Curses, програма SnortConf надає простий і інтуїтивно зрозумілий інтерфейс - меню з адміністрування Snort. Версія - 0.4.2-1. Призначена для POSIX-сумісних систем (Solaris, * BSD, Linux і т.д.). Ліцензія - GNU GPL.

Ліцензія - GNU GPL

IDScenter - графічна оболонка Snort-Win32 (рекомендується використовувати Windows NT4 / 2000 / XP). Поточна версія - 1.1. IDScenter значно полегшує завдання управління, контролю і моніторингу Snort IDS. Включає функції діагностики конфігурації, підтримує сигнали тривоги Snort. При визначенні атаки можна запустити зовнішню програму. Розповсюджується по ліцензії Freeware.

Розповсюджується по ліцензії Freeware

IDS Policy Manager - інструмент зміни конфігурації і правил Snort. Легко додаються нові сигнатури. Може використовувати популярні бази даних сигнатур: CVE, BugTraq, Mcafee. Версія - 1.3.1. Операційні системи - Windows 2000 / XP. Ліцензія - Freeware.

Ліцензія - Freeware

Інші проекти NIDS

Докладний список комерційних і некомерційних проектів систем виявлення вторгнення можна отримати за адресою http://www.cs.purdue.edu/coast/ids . Частина посилань з деякими доповненнями приведена нижче:

Посилання на проекти і ресурси, що згадуються в тексті

Content:?
A5 | ?
Msg:?
Mountd access ?