Как проверить (сканировать) открытые порты с помощью Nmap и псевдоустройства Bash

12 set 2022 2 min di lettura
Как проверить (сканировать) открытые порты с помощью Nmap и псевдоустройства Bash
Indice dei contenuti

Введение

Независимо от того, устраняете ли вы проблемы с сетевым подключением или настраиваете брандмауэр, в первую очередь нужно проверить, какие порты действительно открыты в вашей системе.

В этой статье описывается, как использовать Nmap и Bash Pseudo Device, чтобы узнать, какие порты открыты снаружи в системе Linux.

Порт прослушивания — это сетевой порт, на котором прослушивается приложение. Вы можете получить список прослушиваемых портов в вашей системе, запросив сетевой стек с помощью таких команд, как ss, netstat или lsof. Каждый порт прослушивания может быть открыт или закрыт (фильтрован) с помощью брандмауэра.

Открытый порт — это сетевой порт, который принимает входящие пакеты из удаленных мест.

Например, если вы используете веб-сервер, прослушивающий порты 80 и 443, эти порты открыты в брандмауэре, любой (кроме заблокированных IP-адресов) сможет получить доступ к веб-сайтам, размещенным на веб-сервере, через свой браузер. В этом случае оба порта 80 и 443 открыты.

Открытые порты могут представлять угрозу безопасности, поскольку злоумышленники могут использовать любую открытую дверь для использования уязвимости или выполнения любого другого типа атаки. Вам нужно открыть только те порты, которые необходимы для работы приложения, и закрыть все остальные порты.

Проверить открытые порты с помощью nmap

Nmap — это мощный инструмент сетевого сканирования, который может сканировать отдельные хосты и большие сети. Он в основном используется для аудита безопасности и тестов на проникновение.

Если доступно, nmap должен быть вашим первым инструментом, когда дело доходит до сканирования портов. Помимо сканирования портов nmap также возможно определить Mac-адрес, тип ОС, версии ядра и многое другое.

Введите следующую консольную команду, чтобы определить, какие порты прослушивают TCP-подключения из сети:

sudo nmap -sT -p- 10.10.8.8

Флаг -sT с nmap предназначен для поиска портов TCP и -p- для поиска всех портов 65535. Если -p- не используется nmap, он будет сканировать только 1000 портов.

Starting Nmap 7.60 ( https://nmap.org ) at 2019-09-09 09:11 CEST
 Nmap scan report for 10.10.8.8
 Host is up (0.0012s latency).
 Not shown: 998 closed ports
 PORT STATE SERVICE
 22/tcp open ssh
 80/tcp open http
 MAC Address: 01:00:21:22:01:88 (Oracle VirtualBox virtual NIC)

 Nmap done: 1 IP address (1 host up) scanned in 0.41 seconds

Приведенный выше вывод показывает, что в целевой системе открыты только порты 22, 80 и 8069.

Для поиска портов UDP используйте -sU вместо -sT:

sudo nmap -sU -p- 10.10.8.8

Для получения дополнительной информации посетите справочную страницу nmap и ознакомьтесь со всеми другими мощными опциями этого инструмента.

Поиск открытых портов с помощью Bash Pseudo Device

Еще один способ проверить, открыт или закрыт определенный порт, — это использовать псевдоустройство оболочки Bash /dev/tcp/.. или /dev/udp/...

Когда вы запускаете команду на псевдоустройстве /dev/$PROTOCOL/$HOST/$IP, Bash открывает TCP- или UDP-соединение с указанным хостом на указанном порту.

Следующее объявление используется для проверки того, открыт ли порт 443 на kernel.org:

if timeout 5 bash -c '</dev/tcp/kernel.org/443 &>/dev/null'
 then
 echo "Porta aperta"
 else
 echo "Porta chiusa"
 fi
Port aperta

Тайм-аут по умолчанию при подключении к порту с использованием псевдоустройства огромен, поэтому мы используем команду тайм -аута, чтобы завершить тестовую команду через 5 секунд. Если соединение установлено для kernel.org с портом 443, тестовая команда вернет true.

Вы также можете использовать цикл for для проверки диапазона портов:

for PORT in {20..80}; do
 timeout 1 bash -c "</dev/tcp/10.10.8.8/$PORT &>/dev/null" && echo "porta $PORT aperta"
 done

Вывод будет выглядеть следующим образом:

port 22 aperta
 port 80 aperta

Вывод

Мы показали вам несколько инструментов, которые вы можете использовать для поиска открытых дверей. Также есть другие утилиты и методы для проверки открытых портов, например, вы можете использовать сокет Python, curl, telnet или wget.

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.