• База знаний
  • /
  • Блог
  • /
  • Wiki
  • /
  • ONLINE CHAT
+380 (44) 364 05 71

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

Научитесь проверять политики брандмауэра с помощью Nmap и Tcpdump на одном сервере

Содержание:

Защита внутренней сети от внешних атак обычно обеспечивается правильно настроенным брандмауэром или файрволом, выполняющим функции своеобразного фильтра между внутренней и внешней сетями. Продуманная политика безопасности, выраженная в правилах файрвола, залог надежности системы защиты локальной инфраструктуры компании. Для формирования "идеальной" политики безопасности необходимо проведение периодических тестирований установленных правил в рабочих условиях. Это позволит выявить возможные уязвимости и скорректировать окончательную конфигурацию файрвола. Для проведения тестирований необходимо применение специальных программных средств (ПО), к которым относятся Nmap да Tcpdump. Рассмотрим работу с ними на настоящем примере. 

Исходные положения

Принцип тестирования конфигурации файрвола заключается в формировании запросов к серверу, на котором он развернут, и анализу ответов. Только таким путем можно понять, как действительно брандмауэр реагирует на тот или иной запрос и выявить «дыры» в системе защиты.

Для выполнения задания нам понадобятся два типа ПО – сканер и анализатор пакетов. В качестве сканера будет использована известная утилита Nmap. Для захвата и анализа пакетов будет применена программа Tcpdump.

Все «атаки» должны производиться с «внешнего» по отношению к серверу устройства, на котором развернуто указанное ПО для работы с трафиком (устройство для аудита).

В нашем случае важна демонстрация порядка и методов проведения тестирований и потому будет использован Облачный сервер под управлением ОС Debian 12, который одновременно выполняет функции целевого сервера с брандмауэром и внешнего устройства для проведения аудита. Это значительно ускорит получение результатов сканирования. 

Разобьем процесс на несколько этапов:

  • Подготовка устройства к аудиту;

  • Формирование запросов к целевому серверу;

  • Анализ результатов сканирования.

Подготовка устройства для аудита

Подготовим сервер, из которого будут производиться «атаки». Для установки специальных ПО будем использовать общедоступный репозиторий, и поэтому мы будем вынуждены обновить локальные списки пакетов. Введем в терминале:

$ sudo apt update

$ sudo apt update

Списки успешно обновлены.

Установим сканер:

$ sudo apt install nmap

$ sudo apt install nmap

Результат: nmap is already the newest version (7.93+dfsg1-1) Итак, сканер уже развернут в нашей системе. Его версия – 7.93.

Установим анализатор трафика:

$ sudo apt install tcpdump

$ sudo apt install tcpdump

Результат: Setting up tcpdump (4.99.3-1). Анализатор успешно установлен.

Создадим в домашнем каталоге текущего пользователя директорию с именем all_res для хранения результатов сканирования целевого сервера Для этого введем в терминале:

$ mkdir ~/all_res

$ mkdir ~/all_res

Директория создана. 

Как известно, в большинстве случаев IP-адреса, из которых производится сканирование портов, автоматически блокируются и поэтому лучшим выходом из ситуации может быть использование SYN або half-open сканирование, не предусматривающее установку завершенного TCP-соединение между машинами, а значит и его регистрацию. 

Создадим директорию с именем syn_res для сохранения файлов с результатами SYN-сканирование:

$ mkdir ~/all_res/syn_res

$ 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-адрес целевого сервера, указываемый сразу по параметру хозяин;  параметр -В указывает на необходимость сохранения данных в двоичном формате, что обеспечивает высокую скорость записи и возможность просмотра информации для многих ПО. 

$ sudo tcpdump host 178.20.159.96 -w ~/all_res/syn_res/packets &

Результат: listening on ens18 ... . Это означает, что программа находится в режиме прослушивания канала, отслеживая при этом любые передаваемые между машинами пакеты.

Формирование запросов на целевой сервер

Сформируем с помощью Nmap запрос к серверу для определения всех его открытых TCP-портов. В реальной среде этот процесс обычно длительный, поскольку по умолчанию сканируются все 65 535 портов машины. Регулировать его продолжительность можно с помощью параметра -Т указанной утилиты.

Откроем новый терминал и введем следующую команду:

$ sudo nmap -sS -Pn -p- -T4 -vv --reason -oN ~/all_res/syn_res/nmap.results 178.20.159.96

Установленные в команде параметры имеют следующие значения:

-SS – включает «упрощенный» режим SYN-сканирование;

-Pn – игнорирует этап обнаружения хоста, что позволяет ускорить процесс и избежать его прекращения в случае отсутствия ответа на пинг;

-p- – включает режим проверки всех доступных портов; 

-T4 – устанавливает временной шаблон сканирования, 0 – наиболее подробное сканирование и потому очень медленное, 5 – наиболее поверхностное и поэтому ускоренное;

-vv –увеличивает детализацию результатов выполнения команды;

--reason –  устанавливает уведомления о причинах текущего состояния портов; 

-oN –  разрешение записи в файл результатов сканирования.  

Ниже приведены результаты выполнения команды:

$ sudo nmap -sS -Pn -p- -T4 -vv --reason -oN ~/all_res/syn_res/nmap.results 178.20.159.96

Выход команды:

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+С в первом терминале.

Введем в первом терминале следующую команду:

$ less ~/all_res/syn_res/nmap.results

$ 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 закрыты.

Весь отправленный и полученный трафик между хостами содержится в файле  пакеты, за который «отвечает» утилита 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 с соответствующими параметрами;

  • Анализ результатов.

Для нашего сервера результаты сканирования УДП-порты, полученные из файла nmap.результаты будут следующими: 

# 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-запросам. 

Также можно определить версии служб и ОС целевого сервера. В отличие от других ресурсов, здесь достаточно будет воспользоваться возможностями только утилиты. Нмап,предварительно создав директорию для сохранения результатов сканирования. Да, для определения версий служб следует добавить в команду запуска утилиты параметр –сВ, а для версии ОС – параметр -THE. Выполнение всех остальных этапов остается без изменений.

Так, для выполнения сканирования для определения версии ОС для нашего сервера может быть использована команда запуска утилиты со следующими параметрами:

$ sudo nmap –O –Pn –vv --reason -oN ~/all_res/ver_res/os_version.nmap 178.20.159.96 

Здесь see_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
navigate
go
exit
Спасибо, что выбираете FREEhost.UA