Snort або Suricata. Частина 3: захищаємо офісну мережу

В попередній статті ми розповіли, як запустити стабільну версію Suricata в Ubuntu 18.04 LTS. Налаштувати IDS на одному вузлі та підключити безкоштовні набори правил досить нескладно. Сьогодні ми розберемося, як за допомогою встановленої на віртуальному сервері Suricata захистити корпоративну мережу найбільш поширених видів атак. Для цього нам знадобиться VDS на Linux із двома обчислювальними ядрами. Об'єм оперативної пам'яті залежить від навантаження: комусь вистачить і 2 ГБ, а для більш серйозних завдань може знадобитися 4 або навіть 6. Плюс віртуальної машини у можливості експериментів: можна почати з мінімальної конфігурації та нарощувати ресурси в міру потреби.

Snort або Suricata. Частина 3: захищаємо офісну мережуфото: Reuters

Об'єднуємо мережі

Винесення IDS на віртуальну машину насамперед може знадобитися для тестів. Якщо ви ніколи не мали справи з подібними рішеннями, кидатися замовляти фізичне залізо та змінювати архітектуру мережі не варто. Краще обкатати систему безпечно та без зайвих витрат, щоб визначити потреби у обчислювальних ресурсах. Важливо розуміти, що весь корпоративний трафік при цьому доведеться пропустити через єдиний зовнішній вузол: для підключення локальної мережі (або кількох мереж) до VDS із встановленою IDS Suricata можна використовувати SoftEther - Простий у налаштуванні кросплатформовий сервер VPN, що забезпечує надійне шифрування. Офісне підключення до інтернету може не мати реального IP, тому його краще підняти на VPS. У репозиторії Ubuntu готових пакетів немає, програмне забезпечення доведеться качати або з сайту проекту, або із зовнішнього репозиторію на сервісі Лаунчпад (якщо ви йому довіряєте):

sudo add-apt-repository ppa:paskal-07/softethervpn
sudo apt-get update

Переглянути список доступних пакетів можна за допомогою наступної команди:

apt-cache search softether

Snort або Suricata. Частина 3: захищаємо офісну мережу

Нам знадобиться softether-vpnserver (сервер у тестовій конфігурації запущений на VDS), а також softether-vpncmd – утиліти командного рядка для його налаштування.

sudo apt-get install softether-vpnserver softether-vpncmd

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

sudo vpncmd

Snort або Suricata. Частина 3: захищаємо офісну мережу

Докладно розповідати про налаштування ми не будемо: процедура досить нескладна, вона добре описана в численних публікаціях і безпосередньо до статті не відноситься. Якщо коротко, після запуску vpncmd потрібно вибрати пункт 1, щоб перейти в консоль керування сервером. Для цього необхідно ввести ім'я localhost і натиснути клавішу enter замість введення імені хаба. У консолі задається адміністраторський пароль командою serverpasswordset, видаляється віртуальний хаб DEFAULT (команда hubdelete) і створюється новий з ім'ям Suricata_VPN, а також задається пароль (команда hubcreate). Далі потрібно перейти в керуючу консоль нового хаба за допомогою команди hub Suricata_VPN, щоб створити групу та користувача за допомогою команд groupcreate та usercreate. Користувальницький пароль задається за допомогою userpasswordset.

SoftEther підтримує два режими передачі трафіку: SecureNAT та Local Bridge. Перший є фірмовою технологією побудови віртуальної приватної мережі з власним NAT і DHCP. SecureNAT не вимагає TUN/TAP, а також налаштування Netfilter або іншого файрвола. Маршрутизація не зачіпає ядра системи, а всі процеси віртуалізовані і працюють на будь-якому VPS/VDS незалежно від гіпервізора, що використовується. Це призводить до підвищеного навантаження на процесор та зниження швидкості в порівнянні з режимом Local Bridge, що з'єднує віртуальний хаб SoftEther з фізичним адаптером мережі або пристроєм TAP.

Налаштування у разі ускладнюється, оскільки маршрутизація відбувається лише на рівні ядра з допомогою Netfilter. Наші VDS побудовані на Hyper-V, тому на останньому етапі ми створюємо локальний міст і активуємо пристрій TAP командою bridgecreate Suricate_VPN -device:suricate_vpn -tap:yes. Після виходу з консолі управління хабом ми побачимо в системі новий мережевий інтерфейс, якому ще не надано IP:

ifconfig

Snort або Suricata. Частина 3: захищаємо офісну мережу

Далі доведеться увімкнути маршрутизацію пакетів між інтерфейсами (ip forward), якщо вона неактивна:

sudo nano /etc/sysctl.conf

Розкоментувати наступний рядок:

net.ipv4.ip_forward = 1

Зберігаємо зміни у файлі, виходимо з редактора та застосовуємо їх за допомогою наступної команди:

sudo sysctl -p

Далі нам потрібно визначити для віртуальної мережі підсіти з фіктивними IP (наприклад, 10.0.10.0/24) та присвоїти адресу інтерфейсу:

sudo ifconfig tap_suricata_vp 10.0.10.1/24

Потім потрібно буде прописати правила Netfilter.

1. При необхідності дозволити вхідні пакети на порти, що прослуховуються (фірмовий протокол SoftEther використовує HTTPS і порт 443)

sudo iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 992 -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 1194 -j ACCEPT
sudo iptables -A INPUT -p udp -m udp --dport 1194 -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 5555 -j ACCEPT

2. Налаштовуємо NAT із підмережі 10.0.10.0/24 на основний IP сервера

sudo iptables -t nat -A POSTROUTING -s 10.0.10.0/24 -j SNAT --to-source 45.132.17.140

3. Дозволяємо пакети, що проходять з підмережі 10.0.10.0/24

sudo iptables -A FORWARD -s 10.0.10.0/24 -j ACCEPT

4. Дозволяємо пакети для вже встановлених з'єднань.

sudo iptables -A FORWARD -p all -m state --state ESTABLISHED,RELATED -j ACCEPT

Автоматизацію процесу при перезапуску системи за допомогою скриптів ініціалізації залишимо читачам як домашнє завдання.

Якщо ви хочете видавати клієнтам IP автоматично, доведеться встановити будь-який сервіс DHCP для локального мосту. На цьому налаштування сервера завершено і можна перейти до клієнтів. SoftEther підтримує безліч протоколів, використання яких залежить від можливостей обладнання локальної мережі.

netstat -ap |grep vpnserver

Snort або Suricata. Частина 3: захищаємо офісну мережу

Оскільки наш тестовий роутер теж працює під Ubuntu, встановимо на ньому із зовнішнього репозиторію пакети softether-vpnclient та softether-vpncmd, щоб скористатися фірмовим протоколом. Потрібно буде запустити клієнт:

sudo vpnclient start

Для налаштування використовуємо утиліту vpncmd, вибравши localhost як машину, на якій запущено vpnclient. Усі команди робляться в консолі: потрібно створити віртуальний інтерфейс (NicCreate) та обліковий запис (AccountCreate).

У деяких випадках необхідно задати спосіб автентифікації за допомогою команд AccountAnonymousSet, AccountPasswordSet, AccountCertSet та AccountSecureCertSet. Оскільки ми не використовуємо DHCP, адреса для віртуального адаптера задається вручну.

Крім того, нам потрібно включити ip forward (параметр net.ipv4.ip_forward=1 у файлі /etc/sysctl.conf) і налаштувати статичні маршрути. При необхідності на VDS з Suricata можна настроїти прокидання портів для використання встановлених у локальній мережі сервісів. У цьому об'єднання мереж вважатимуться закінченим.

Виглядати пропонована нами конфігурація буде приблизно так:

Snort або Suricata. Частина 3: захищаємо офісну мережу

Налаштовуємо Suricata

В попередній статті ми розповідали про два режими роботи IDS: через чергу NFQUEUE (режим NFQ) та через zero copy (режим AF_PACKET). Другий вимагає наявності двох інтерфейсів, але відрізняється вищою швидкодією - ми будемо використовувати саме його. Параметр за замовчуванням /etc/default/suricata. Також нам знадобиться відредагувати розділ vars в /etc/suricata/suricata.yaml, прописавши там віртуальну підмережу як домашню.

Snort або Suricata. Частина 3: захищаємо офісну мережу

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

systemctl restart suricata

Рішення готове, тепер вам може знадобитися перевірити його на стійкість до дій зловмисників.

Моделюємо атаки

Сценаріїв бойового застосування зовнішнього сервісу IDS може бути декілька:

Захист від атак DDoS (основне призначення)

Реалізувати такий варіант усередині корпоративної мережі складно, оскільки пакети для аналізу повинні потрапити на інтерфейс системи, що дивиться в інтернет. Навіть якщо їх IDS заблокує, паразитний трафік може покласти канал передачі даних. Щоб цього уникнути, потрібно замовити VPS із досить продуктивним інтернет-підключенням, здатним пропустити весь трафік локальної мережі та весь зовнішній трафік. Зробити це часто простіше та дешевше, ніж розширювати офісний канал. Як альтернативу варто згадати спеціалізовані сервіси для захисту від DDoS. Вартість їхніх послуг можна порівняти з вартістю віртуального сервера, при цьому не потрібно трудомістке налаштування, але є й недоліки — за свої гроші клієнт отримує лише захист від DDoS, тоді як власну IDS можна конфігурувати як завгодно.

Захист від зовнішніх атак інших типів

Suricata здатна впоратися зі спробами експлуатації різних уразливостей у доступних з Інтернету сервісах корпоративної мережі (поштовий сервер, веб-сервер та веб-додатки тощо). Зазвичай для цього IDS встановлюють усередині локалки після прикордонних пристроїв, але винос назовні має право на існування.

Захист від внутрішніх зловмисників

Незважаючи на всі зусилля системного адміністратора, комп'ютери корпоративної мережі можуть бути заражені шкідливим програмним забезпеченням. Крім того, в локалці іноді з'являються хулігани, які намагаються виконувати якісь неправомірні операції. Suricata здатна допомогти заблокувати такі спроби, хоча для захисту внутрішньої мережі її краще встановити всередині периметра і використовувати в парі з вміючим дзеркалювати трафік в один порт керованим комутатором. Зовнішня IDS в цьому випадку теж не марна - принаймні вона зможе відловити спроби зловредів, що живуть в ЛВС, зв'язатися із зовнішнім сервером.

Для початку створимо ще один тестовий атакуючий VPS, а на роутері локальної мережі піднімемо Apache зі стандартною конфігурацією, після чого прокинемо на нього 80-й порт з сервера IDS. Далі імітуватимемо атаку DDoS з атакуючого вузла. Для цього скачаємо з GitHub, скомпілюємо і запустимо на атакуючому вузлі невелику програму xerxes (може знадобитися встановлення пакету gcc):

git clone https://github.com/Soldie/xerxes-DDos-zanyarjamal-C.git
cd xerxes-DDos-zanyarjamal-C/
gcc xerxes.c -o xerxes 
./xerxes 45.132.17.140 80

Результат її роботи виявився таким:

Snort або Suricata. Частина 3: захищаємо офісну мережу

Suricata відсікає лиходія, а сторінка Apache за замовчуванням відкривається, незважаючи на нашу імпровізовану атаку і досить дохлий канал «офісної» (насправді домашньої) мережі. Для більш серйозних завдань варто використати Metasploit Framework. Він призначений для проведення тестів на проникнення і дозволяє імітувати різні атаки. Інструкція із встановлення доступна на сайті проекту. Після інсталяції буде потрібно оновлення:

sudo msfupdate

Для тестування запускаємо msfconsole.

Snort або Suricata. Частина 3: захищаємо офісну мережу

На жаль, в останніх версіях фреймворку немає можливості автоматичного злому, тому експлоїти доведеться перебирати вручну і запускати за допомогою команди use. Для початку варто визначити відкриті на атакованій машині порти, наприклад, за допомогою nmap (у нашому випадку його цілком замінить netstat на вузлі, що атакується), а потім підібрати і використовувати підходящі модулі Metasploit

Існують інші засоби перевірки стійкості IDS до атак, включаючи онлайн-сервіси. Заради цікавості можна влаштувати стресове тестування за допомогою тріальної версії IP Stresser. Щоб перевірити реакцію на дії внутрішніх зловмисників, варто встановити спеціальні інструменти однією з машин локальної мережі. Варіантів маса і періодично їх варто застосовувати не тільки до експериментального полігону, а й до робочих систем, це вже зовсім інша історія

Snort або Suricata. Частина 3: захищаємо офісну мережу

Snort або Suricata. Частина 3: захищаємо офісну мережу

Джерело: habr.com

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