Стаття також доступна російською (перейти до перегляду).

Зміст:
- Вихідні положення
- Підготовка пристрою для аудиту
- Формування запитів до цільового серверу
- Аналіз результатів сканування
- Збір даних про інші ресурси цільової машини
Захист внутрішньої мережі від зовнішніх атак зазвичай забезпечується правильно налаштованим брандмауером або файрволом, котрий виконує функції своєрідного фільтру між внутрішньою та зовнішньою мережами. Продумана політика безпеки, виражена у правилах файрволу, є запорукою надійності системи захисту локальної інфраструктури компанії. Для формування «ідеальної» політики безпеки необхідно проведення періодичних тестувань встановлених правил в робочих умовах. Це дозволить виявити можливі вразливості та скоригувати остаточну конфігурацію файрволу. Для проведення тестувань необхідне застосування спеціальних програмних засобів (ПЗ), до яких належать Nmap та Tcpdump. Розглянемо роботу з ними на реальному прикладі.
Вихідні положення
Принцип тестування конфігурації файрволу полягає у формуванні запитів до серверу, на якому він розгорнутий, та аналізу відповідей. Тільки таким шляхом можна зрозуміти, як насправді брандмауер реагує на той чи інший запит та виявити «дірки» у системі захисту.
Для виконання завдання нам знадобиться два типи ПЗ – сканер та аналізатор пакетів. У якості сканера буде використана відома утиліта Nmap. Для захвату та аналізу пакетів буде застосована програма Tcpdump.
Всі «атаки» повинні проводитися із «зовнішнього» по відношенню до сервера пристрою, на котрому розгорнуте вказане ПЗ для роботи із трафіком (пристрій для аудиту).
У нашому випадку важлива демонстрація порядку та методів проведення тестувань і тому буде використаний Хмарний сервер під управлінням ОС Debian 12, котрий буде водночас виконувати функції цільового сервера із брандмауером та зовнішнього пристрою для проведення аудиту. Це значно прискорить отримання результатів сканування.
Розіб’ємо процес на кілька етапів:
-
Підготовка пристрою для аудиту;
-
Формування запитів до цільового серверу;
-
Аналіз результатів сканування.
Підготовка пристрою для аудиту
Підготуємо сервер, з котрого будуть проводитися «атаки». Для встановлення спеціальних ПЗ будемо використовувати загальнодоступний репозиторій і тому ми будемо змушені оновити локальні списки пакетів. Введемо в терміналі:
$ sudo apt update

Списки успішно оновлені.
Встановимо сканер:
$ sudo apt install nmap

Результат: nmap is already the newest version (7.93+dfsg1-1). Отже, сканер вже розгорнутий у нашій системі. Його версія – 7.93.
Встановимо аналізатор трафіка:
$ sudo apt install tcpdump

Результат: Setting up tcpdump (4.99.3-1). Аналізатор успішно встановлений.
Створимо у домашньому каталозі поточного користувача директорію із ім’ям all_res для зберігання результатів сканування цільового серверу. Для цього введемо в терміналі:
$ mkdir ~/all_res

Директорія створена.
Як відомо, в більшості випадків IP-адреси, з котрих проводиться сканування портів, автоматично блокуються і тому найкращим виходом із ситуації може бути використання SYN або half-open сканування, котре не передбачає встановлення завершеного TCP-з’єднання між машинами, а значить і його реєстрацію.
Створимо директорію із ім'ям syn_res для збереження файлів із результатами SYN-сканування:
$ mkdir ~/all_res/syn_res
![]()
Запустимо програму Tcpdump для можливості захвату трафіку між пристроєм аудиту та цільовим сервером. При цьому результати її роботи будуть збережені у автоматично створеному файлі із ім’ям packets.
Введемо наступну команду:
$ sudo tcpdump host 178.20.159.96 -w ~/all_res/syn_res/packets &
Тут 178.20.159.96 – IP-адреса цільового серверу, котра вказується одразу за параметром host; параметр -w вказує на необхідність збереження даних у двійковому форматі, що забезпечує високу швидкість запису та можливість перегляду інформації багатьма ПЗ.

Результат: listening on ens18 ... . Це означає, що програма знаходиться у режимі прослуховування каналу, відслідковуючи при цьому будь-які пакети, котрі передаються між машинами.
Формування запитів до цільового серверу
Сформуємо за допомогою Nmap запит до серверу для визначення всіх його відкритих TCP-портів. У реальному середовищі цей процес зазвичай є довготривалим, оскільки за замовчуванням скануються всі 65 535 портів машини. Регулювати його тривалість можна за допомогою параметру -T вказаної утиліти.
Відкриємо новий термінал та введемо наступну команду:
Встановлені у команді параметри мають наступні значення:
-SS – включає «спрощений» режим SYN-сканування;
-Pn – ігнорує етап виявлення хоста, що дає змогу прискорити процес та уникнути його припинення у випадку відсутності відповіді на ping;
-p- – включає режим перевірки всіх доступних портів;
-T4 – встановлює часовий шаблон сканування, 0 – найбільш детальне сканування і тому дуже повільне, 5 – найбільш поверхневе і тому прискорене;
-vv – збільшує деталізацію результатів виконання команди;
--reason – встановлює повідомлення про причини поточного стану портів;
-oN – дозвіл запису у файл результатів сканування.
Нижче наведені результати виконання команди:

Вихід команди:
Starting Nmap 7.93 ( https://nmap.org ) at 2025-05-13 18:34 EEST
Initiating Parallel DNS resolution of 1 host. at 18:34
Completed Parallel DNS resolution of 1 host. at 18:34, 0.07s elapsed Initiating SYN Stealth Scan at 18:34 Scanning cf1280475.freehost.com.ua (178.20.159.96) [65535 ports] Discovered open port 22/tcp on 178.20.159.96 Discovered open port 8443/tcp on 178.20.159.96 Completed SYN Stealth Scan at 18:34, 1.65s elapsed (65535 total ports) Nmap scan report for cf1280475.freehost.com.ua (178.20.159.96) Host is up, received user-set (0.000012s latency). Scanned at 2025-05-13 18:34:23 EEST for 2s Not shown: 65533 closed tcp ports (reset) PORT STATE SERVICE REASON 22/tcp open ssh syn-ack ttl 64 8443/tcp open https-alt syn-ack ttl 64 Read data files from: /usr/bin/../share/nmap Nmap done: 1 IP address (1 host up) scanned in 1.83 seconds Raw packets sent: 65535 (2.884MB) | Rcvd: 131072 (5.505MB)
Аналіз результатів сканування
Результати роботи утиліти Nmap зазвичай фіксуються у автоматично створеному файлі із ім’ям nmap.results, котрий знаходиться у створеному нами каталозі ~/all_res/syn_res/. Переглянемо їх за допомогою утиліти less, але перед тим зупинимо роботу програми Tcpdump, натиснувши клавіші Ctrl+C у першому терміналі.
Введемо в першому терміналі наступну команду:
$ less ~/all_res/syn_res/nmap.results
Результат:
Nmap scan report for cf1280475.freehost.com.ua (178.20.159.96) Host is up, received user0set (0.000012s latency) . Scanned at 2025-05-13 18:34:23 EEST for 2s Not shown: 65533 closed tcp ports (reset) PORT STATE SERVICE REASON 22/tcp open ssh syn-ack ttl 64 8443/tcp open https-alt syn-ack ttl 64 Тут ми бачимо звіт утиліти по результатам виконаного сканування. Як бачимо, лише порти за номерами 22 та 8443 є відкритими. Перший з них дозволяє трафік по SSH-протоколу, другий по HTTP. Усі інші 65533 закриті.
Увесь відправлений та отриманий трафік між хостами міститься у файлі packets, за який «відповідає» утиліта Tcpdump. Його можна переглядати крізь різні фільтри та робити відповідні висновки.
Щоб переглянути увесь трафік засобом перегляду less, слід запустити утиліту Tcpdump із наступними параметрами:
$ sudo tcpdump -nn -r ~/all_res/syn_res/packets | less
Для перегляду лише трафіку, котрий був відправлений на сервер, слід набрати в терміналі:
$ sudo tcpdump -nn -r ~/all_res/syn_res/packets 'dst 178.20.159.96' | less
Для перегляду відповідей серверу підійде наступна команда:
$ sudo tcpdump -nn -r ~/all_res/syn_res/packets 'src 178.20.159.96' | less
Тут, у порівнянні із попередньою командою, був замінений параметр dst на src.
Всі відкриті порти зазвичай надсилають відповіді на наші запити у SYN-форматі і тому трафік можна відфільтрувати за вказаним критерієм за допомогою наступної команди:
$ sudo tcpdump -nn -r ~/all_res/syn_res/packets 'src 178.20.159.96 and tcp[tcpflags] & tcp-syn != 0' | less
Завдяки цьому ми зможемо переглядати лише коректні відповіді формату SYN для кожного з відкритих портів, що значно спростить проведення аналізу.
Збір даних про інші ресурси цільової машини
Окрім сканування відкритих портів серверу ми можемо так само виконати сканування й інших ресурсів, зокрема, UDP-портів, котрі мають свої особливості. Але, в цілому порядок та методи сканування залишаються ти ж самі, що і у випадку TCP-портів:
-
Створення каталогу для збереження результатів сканування;
-
Запуск утиліти Tcpdump для захвату трафіку;
-
Ініціалізація процесу сканування ресурсуутилітою Nmap із відповідними параметрами;
-
Аналіз результатів.
Для нашого серверу результати сканування UDP-портів, отримані із файлу nmap.results будуть наступними:
# Nmap 7.93 scan initiated Tue May 13 19:55:43 2025 as: nmap -sU -Pn -p- -T4 -vv --reason -oN /root/all_res/udp_res/nmap.results 178.20.159.96 Nmap scan report for cf1280475.freehost.com.ua (178.20.159.96) Host is up, received user-set (0.000014s latency). Scanned at 2025-05-13 19:55:43 EEST for 2s All 65535 scanned ports on cf1280475.freehost.com.ua (178.20.159.96) are in ignored states. Not shown: 65535 closed udp ports (port-unreach) Read data files from: /usr/bin/../share/nmap # Nmap done at Tue May 13 19:55:45 2025 -- 1 IP address (1 host up) scanned in 2.11 seconds
Аналіз даних у цьому випадку буде складнішим з-за відсутності прапорців підключення, що змушує виконувати співставлення ICMP-відповідей із UDP-запитами.
Так само можна визначити версії служб та ОС цільового серверу. На відміну від інших ресурсів, тут достатньо буде скористатися можливостями лише утиліти Nmap, попередньо створивши директорію для збереження результатів сканування. Так, для визначення версій служб слід додати у команду запуску утиліти параметр –sV, а для версії ОС – параметр -O. Виконання всіх інших етапів залишається без змін.
Так, для виконання сканування для визначення версії ОС для нашого серверу може бути використана команда запуску утиліти з наступними параметрами:
$ sudo nmap –O –Pn –vv --reason -oN ~/all_res/ver_res/os_version.nmap 178.20.159.96
Тут ver_res– створена нами директорія для збереження результатів сканування; os_version.nmap – автоматично створений файл із результатами сканування.
Нижче представлений вихід вказаної команди:
Starting Nmap 7.93 ( https://nmap.org ) at 2025-05-13 20:38 EEST Initiating Parallel DNS resolution of 1 host. at 20:38 Completed Parallel DNS resolution of 1 host. at 20:38, 0.09s elapsed Initiating SYN Stealth Scan at 20:38 Scanning cf1280475.freehost.com.ua (178.20.159.96) [1000 ports] Discovered open port 22/tcp on 178.20.159.96 Discovered open port 8443/tcp on 178.20.159.96 Completed SYN Stealth Scan at 20:38, 0.04s elapsed (1000 total ports) Initiating OS detection (try #1) against cf1280475.freehost.com.ua (178.20.159.96) Nmap scan report for cf1280475.freehost.com.ua (178.20.159.96) Host is up, received user-set (0.000087s latency). Scanned at 2025-05-13 20:38:40 EEST for 1s Not shown: 998 closed tcp ports (reset) PORT STATE SERVICE REASON 22/tcp open ssh syn-ack ttl 64 8443/tcp open https-alt syn-ack ttl 64 Device type: general purpose Running: Linux 2.6.X OS CPE: cpe:/o:linux:linux_kernel:2.6.32 OS details: Linux 2.6.32 TCP/IP fingerprint: OS:SCAN(V=7.93%E=4%D=5/13%OT=22%CT=1%CU=44158%PV=N%DS=0%DC=L%G=Y%TM=682383A OS:1%P=x86_64-pc-linux-gnu)SEQ(SP=101%GCD=1%ISR=10D%TI=Z%CI=Z%II=I%TS=A)OPS OS:(O1=MFFD7ST11NW7%O2=MFFD7ST11NW7%O3=MFFD7NNT11NW7%O4=MFFD7ST11NW7%O5=MFF OS:D7ST11NW7%O6=MFFD7ST11)WIN(W1=FFCB%W2=FFCB%W3=FFCB%W4=FFCB%W5=FFCB%W6=FF OS:CB)ECN(R=Y%DF=Y%T=40%W=FFD7%O=MFFD7NNSNW7%CC=Y%Q=)T1(R=Y%DF=Y%T=40%S=O%A OS:=S+%F=AS%RD=0%Q=)T2(R=N)T3(R=N)T4(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0% OS:Q=)T5(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=40%W=0%S= OS:A%A=Z%F=R%O=%RD=0%Q=)T7(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)U1(R= OS:Y%DF=N%T=40%IPL=164%UN=0%RIPL=G%RID=G%RIPCK=G%RUCK=G%RUD=G)IE(R=Y%DFI=N% OS:T=40%CD=S) Uptime guess: 43.530 days (since Mon Mar 31 07:55:18 2025) Network Distance: 0 hops TCP Sequence Prediction: Difficulty=257 (Good luck!) IP ID Sequence Generation: All zeros Read data files from: /usr/bin/../share/nmap OS detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 1.75 seconds Raw packets sent: 1022 (45.778KB) | Rcvd: 2044 (87.068KB)
Можна переконатися, що вказаним способом були вірно визначені версії ядра та тип ОС цільової машини.
Надійний фаєрвол — важлива складова захисту. Обираючи VPS чи фізичний сервер від дата-центру FREEhost.UA, ви отримуєте повний контроль над системою, можливість гнучкого налаштування безпеки та стабільну інфраструктуру для вашого проєкту.
Підписуйтесь на наш телеграм-канал https://t.me/freehostua, щоб бути в курсі нових корисних матеріалів.
Дивіться наш канал Youtube на https://www.youtube.com/freehostua.
Ми у чомусь помилилися, чи щось пропустили?
Напишіть про це у коментарях, ми з задоволенням відповімо та обговорюємо Ваші зауваження та пропозиції.
|
Дата: 19.05.2025 Автор: Олександр Ровник
|
|

Авторам статті важлива Ваша думка. Будемо раді його обговорити з Вами:
comments powered by Disqus