Snort або Suricata. Частина 2: встановлення та первинне налаштування Suricata

Якщо вірити статистиці, обсяг мережного трафіку зростає приблизно на 50% щороку. Це призводить до зростання навантаження на обладнання та, зокрема, підвищує вимоги до продуктивності IDS/IPS. Можна купувати дороге спеціалізоване залізо, але є дешевший варіант — впровадження однієї з систем з відкритим вихідним кодом. Багато адміністратори-початківців вважають, ніби встановити і сконфігурувати безкоштовну IPS досить складно. У випадку з Suricata це не зовсім правильно - поставити і її і почати відбивати типові атаки з набором безкоштовних правил можна за кілька хвилин.

Snort або Suricata. Частина 2: встановлення та первинне налаштування Suricata
Snort або Suricata. Частина 1: вибираємо безкоштовну IDS/IPS для захисту корпоративної мережі

Навіщо потрібна ще одна відкрита IPS?

Довгий час система Snort, що вважалася стандартом, розробляється з кінця дев'яностих, тому спочатку вона була однопоточною. За довгі роки в ній з'явилися всі сучасні фішки на кшталт підтримки IPv6, можливості аналізу протоколів прикладного рівня або універсальний модуль доступу до даних.

Базовий двигун Snort 2.X навчився працювати з кількома ядрами, але так і залишився однопоточним і тому не може оптимально використовувати переваги сучасних апаратних платформ.

Проблема була вирішена у третій версії системи, але її готували так довго, що на ринку встигла з'явитися написана з нуля Suricata. У 2009 році її почали розробляти саме як багатопотокову альтернативу Snort, що має з коробки функціями IPS. Код поширюється під ліцензією GPLv2, але фінансові партнери проекту мають доступ до закритої версії двигуна. Деякі проблеми з масштабованістю у перших версіях системи виникали, але вони досить швидко були вирішені.

Чому Suricata?

У Suricata є кілька модулів (як і в Snort): захоплення, збору, декодування, виявлення та виведення. За замовчуванням захоплений трафік іде до декодування одним потоком, хоча це більше навантажує систему. При необхідності потоки можна розділити в налаштуваннях і розподілити по процесорах - Suricata дуже добре оптимізується під конкретне залізо, хоча це вже не рівень HOWTO для початківців. Варто також відзначити наявність у Suricata заснованих на бібліотеці HTP просунутих засобів інспектування HTTP. Вони можуть бути використані для протоколювання трафіку без детектування. Система також підтримує декодування IPv6, включаючи тунелі IPv4-in-IPv6, IPv6-in-IPv6 та інші.

Для перехоплення трафіку можуть використовуватися різні інтерфейси (NFQueue, IPFRing, LibPcap, IPFW, AF_PACKET, PF_RING), а режимі Unix Socket можна автоматично аналізувати захоплені іншим сніффером файли PCAP. Крім того, модульна архітектура Suricata полегшує підключення нових елементів для захоплення, декодування, аналізу та обробки мережевих пакетів. Важливо також відзначити, що Suricata блокування трафіку здійснюється засобами штатного фільтра операційної системи. У GNU/Linux є два варіанти роботи IPS: через чергу NFQUEUE (режим NFQ) і через zero copy (режим AF_PACKET). У першому випадку потрапляє в iptables пакет направляється в чергу NFQUEUE, де може оброблятися на рівні користувача. Suricata проганяє його за своїми правилами і виносить один із трьох вердиктів: NF_ACCEPT, NF_DROP та NF_REPEAT. Перші два пояснення не вимагають, а останній дозволяє промаркувати пакети та відправити їх на початок поточної таблиці iptables. Режим AF_PACKET відрізняється більш високою швидкодією, але накладає на систему ряд обмежень: вона повинна мати два мережеві інтерфейси і працювати як шлюз. Заблокований пакет просто не пересилається на другий інтерфейс.

Важлива фішка Suricata – можливість використання напрацювань для Snort. Адміністратору доступні, зокрема, набори правил Sourcefire VRT та OpenSource Emerging Threats, а також комерційні Emerging Threats Pro. Уніфікований висновок можна аналізувати за допомогою популярних бекендів, також підтримується висновок у PCAP та Syslog. Налаштування системи та правила зберігаються у файлах формату YAML, який легко читається та може оброблятися автоматично. Рух Suricata розпізнає безліч протоколів, тому в правилах немає необхідності прив'язуватися до номера порту. Крім того, в правилах Suricata активно практикується концепція flowbits. Для відстеження спрацьовування використовуються змінні сесії, що дозволяють створювати та застосовувати різні лічильники та прапори. Багато IDS розглядають різні TCP-з'єднання як окремі сутності і можуть не побачити зв'язок між ними, що свідчить про початок атаки. Suricata намагається бачити картину цілком і у багатьох випадках розпізнає розподілений по різних сполуках шкідливий трафік. Про її переваги можна розмірковувати довго, ми краще перейдемо до встановлення та налаштування.

Як встановити?

Ми будемо встановлювати Suricata на віртуальний сервер, який працює під управлінням Ubuntu 18.04 LTS. Усі команди необхідно виконувати від імені суперкористувача (root). Найбільш безпечний варіант - підключитися до сервера SSH з правами звичайного користувача, а потім застосувати утиліту sudo для підвищення привілеїв. Для початку необхідно встановити пакети, які нам знадобляться:

sudo apt -y install libpcre3 libpcre3-dev build-essential autoconf automake libtool libpcap-dev libnet1-dev libyaml-0-2 libyaml-dev zlib1g zlib1g-dev libmagic-dev libcap-ng-dev libjansson-dev pkg-config libnetfilter-queue-dev geoip-bin geoip-database geoipupdate apt-transport-https

Підключаємо зовнішній репозиторій:

sudo add-apt-repository ppa:oisf/suricata-stable
sudo apt-get update

Встановлюємо останню стабільну версію Suricata:

sudo apt-get install suricata

При необхідності правимо конфігураційні файли ім'я, замінивши eth0, що використовується за умовчанням, на фактичне ім'я зовнішнього інтерфейсу сервера. Параметри за замовчуванням зберігаються у файлі /etc/default/suricata, а користувачі - /etc/suricata/suricata.yaml. Налаштування IDS здебільшого обмежується редагуванням цього конфігураційного файлу. У ньому безліч параметрів, які за назвою та призначенням збігаються з аналогами із Snort. Синтаксис однак зовсім інший, але файл читати набагато простіше ніж конфіги Snort, до того ж він добре прокоментований.

sudo nano /etc/default/suricata

Snort або Suricata. Частина 2: встановлення та первинне налаштування Suricata

и

sudo nano /etc/suricata/suricata.yaml

Snort або Suricata. Частина 2: встановлення та первинне налаштування Suricata

Увага! Перед запуском варто перевірити значення змінних розділу vars.

Щоб завершити налаштування, потрібно встановити suricata-update для оновлення та завантаження правил. Зробити це досить просто:

sudo apt install python-pip
sudo pip install pyyaml
sudo pip install <a href="https://github.com/OISF/suricata-update/archive/master.zip">https://github.com/OISF/suricata-update/archive/master.zip</a>
sudo pip install --pre --upgrade suricata-update

Далі нам потрібно запустити команду suricata-update для встановлення набору правил Emerging Threats Open:

sudo suricata-update

Snort або Suricata. Частина 2: встановлення та первинне налаштування Suricata

Для перегляду списку джерел правил виконуємо наступну команду:

sudo suricata-update list-sources

Snort або Suricata. Частина 2: встановлення та первинне налаштування Suricata

Оновлюємо джерела правил:

sudo suricata-update update-sources

Snort або Suricata. Частина 2: встановлення та первинне налаштування Suricata

Повторно переглядаємо оновлені джерела:

sudo suricata-update list-sources

За потреби можна увімкнути доступні безкоштовні джерела:

sudo suricata-update enable-source ptresearch/attackdetection
sudo suricata-update enable-source oisf/trafficid
sudo suricata-update enable-source sslbl/ssl-fp-blacklist

Після цього необхідно ще раз оновити правила:

sudo suricata-update

На цьому встановлення та первинне налаштування Suricata в Ubuntu 18.04 LTS можна вважати закінченим. Далі починається найцікавіше: у наступній статті ми підключимо віртуальний сервер до офісної мережі через VPN і почнемо аналізувати весь вхідний та вихідний трафік. Особливу увагу приділимо блокуванню атак DDoS, активності шкідливого ПЗ та спроб експлуатації вразливостей у доступних з мереж загального користування сервісів. Для наочності буде змодельовано атаки найпоширеніших типів.

Snort або Suricata. Частина 2: встановлення та первинне налаштування Suricata

Snort або Suricata. Частина 2: встановлення та первинне налаштування Suricata

Джерело: habr.com

Додати коментар або відгук