4 способа узнать, какие порты прослушиваются в Linux (открыты)
В рамках нашей сегодняшней статьи Вы узнаете 4 способа найти открытые порты в Linux. Открытый порт сам по себе не представляет опасности. Однако вполне может стать угрозой безопасности операционной системы, как только его начнет использовать программа. Для определения того, какая именно программа слушает конкретный порт в данный момент, существуют специальные утилиты — netstat, ss, Nmap, lsof.
Прежде всего, данный материал расскажет о четырех инструментах для выявления открытых портов. И расскажет о том, как обнаружить программное обеспечение, прослушивающее конкретные порты в операционной системе Linux.
Что такое порт
Порт — это логический объект, который является конечной точкой связи в сетевых соединениях. Он непосредственно связан с процессом или службой в операционной системе целевого устройства. При этом, любой порт способен находиться в одном из четырех возможных состояний:
- открытом;
- закрытом;
- отфильтрованном (filtered);
- нефильтрованном (unfiltered).
В том случае, если порт открыт — программное обеспечение целевого оборудования занимается тем, что прослушивает его соединения и пакеты.
Как узнать, какие порты прослушиваются / открыты в Linux
Специально для Вас мы подобрали топ-4 решений, позволяющих быстро выявлять открытые порты в Linux. А также — находить любое связанное с ними программное обеспечение.
Учимся использовать netstat
Утилита netstat (от англ. Network Statistics) — это популярный инструмент, приспособленный для анализа данных о сети в Linux и других UNIX-подобных операционных системах. Сегодня любой сетевой и системный администратор должен уметь работать с этой утилитой. В том числе — выводить на экран список открытых портов.
Устанавливаем netstat
Чтобы установить netstat — воспользуйтесь командой, соответствующей Вашему дистрибутиву Linux.
Устанавливаем netstat в Debian / Ubuntu
Для установки netstat в дистрибутивах на основе Debian / Ubuntu введите с правами суперпользователя в командную строку команды apt update
и apt install
:
$ sudo apt update && apt install net-tools
После введения команды — дождитесь завершения обновления списка доступных к скачиванию пакетов программного обеспечения, а также скачивания и установки файлов программы.
Выводим список открытых портов в Linux с помощью Netstat
Давайте попробуем вывести в командную строку список открытых портов с помощью утилиты netstat. Для этого вводим в командную строку команду netstat
с правами суперпользователя и опциями -ltupan
:
$ sudo netstat -ltupan
-l
— выводит на экран все прослушивающиеся сокеты (сочетания IP-адреса и номера порта);-t
— указывает, что нужно показать все TCP-соединения сетевой подсистемы;-u
— указывает, что нужно показать UDP-соединения сетевой подсистемы;-a
— показывает только активные соединения;-n
— вместо названий служб показывает номера портов.
Расширяем возможности netstat с помощью команды grep
Пользователь может расширить возможности утилиты netstat за счет использования фильтрации вывода — с помощью команды grep
. Например, таким образом можно выяснить, какое именно ПО занимается прослушиванием конкретного порта. Для этого введите в командную строку команду netstat
с опцией -tulpan
, поставьте символ конвейера (вертикальную черту — |
) и добавьте команду grep
с аргументом "ssh"
:
$ sudo netstat -tulpan | grep "ssh"
Также Вы можете найти все приложения, прослушивающие определенный порт. Для этого введите комбинацию команд как в прошлом примере, однако в качестве аргумента для команды grep
— используйте двоеточие и номер интересующего Вас порта (к примеру, ":80"
)
$ sudo netstat -lntup | grep ":80"
Читайте также: 20 команд netstat для управления сетью Linux и Windows.
Учимся использовать команду ss
Команда ss (от англ. Socket Statistics) — это еще один инструмент для Linux, позволяющий получить подробную информацию о сокетах в операционной системе. Стоит отметить, что эта утилита во многом очень похожа на netstat по своим возможностям.
Выводим список открытых портов в Linux с помощью ss
Предположим, что Вам нужно определить, какие приложения занимаются прослушиванием соединений TCP или UDP. В таком случае введите в командную строку команду ss
с правами суперпользователя и опциями -lntu
:
$ sudo ss -lntu
Давайте проанализируем значение выбранной комбинации опций:
-l
— выводит на экран все прослушивающиеся сокеты;-n
— вместо названий служб показывает номера портов;-t
— указывает, что нужно показать все TCP-соединения сетевой подсистемы;-u
— указывает, что нужно показать все UDP-соединения сетевой подсистемы.
В данном случае значения опций аналогичны тем, которые использовались выше с утилитой netstat
.
Узнаем с помощью ss значения pid процессов, которые прослушивают порты
Утилита ss
позволяет пользователю вывести на экран список значений pid процессов, которые открыли порты. Для этого введите от имени суперпользователя в командную строку команду ss с опциями, показанными в предыдущем примере. И добавьте к ним опцию -p
:
$ sudo ss -lntup
Читайте также:
- 12 примеров команд ss для мониторинга сетевых подключений.
- Введение в команду ss.
- Команда ss с примерами: отображение информации о сети/сокете TCP/UDP в Linux.
Учимся использовать nmap
Утилита nmap — это популярный инструмент для исследования сетевой подсистемы и проверки состояния портов в UNIX-подобных ОС. Стоит отметить, что данная утилита обладает большими возможностями. И потому часто используется специалистами в сфере сетевого и системного администрирования.
Устанавливаем nmap
Для установки nmap воспользуйтесь командами, соответствующими установленному на Ваш компьютер дистрибутиву Linux.
Устанавливаем nmap в Debian / Ubuntu
При использовании дистрибутивов на основе Debian / Ubuntu — введите в командную строку с правами root команды apt update
и apt install
:
$ sudo apt update && apt install nmap
После этого следует дождаться окончания процессов скачивания и установки пакетов программного обеспечения.
Выводим список открытых портов в Linux с помощью nmap
Давайте попробуем вывести на экран список всех портов, которые прослушиваются в операционной системе Linux, с помощью утилиты nmap. Для этого введите с root-правами в командную строку команду nmap
и опции -sT -sU -sV
, добавив Ваш IP-адрес в качестве аргумента:
$ sudo nmap -sT -sU -sV 159.89.108.187
-sT
— указывает, что нужно показать все TCP-соединения;-sU
— указывает, что нужно показать все UDP-соединения;-sV
— указывает, что требуется включить обнаружение версий программного обеспечения.
Дополнительные опции утилиты nmap
C помощью опции -p
Вы сможете просканировать конкретные порты.
- все порты с 1 по 65535 —
-p-
; - конкретный порт (например, 22) —
-p22
; - диапазон портов —
-p1-22
; - комбинацию списка UDP-портов и диапазона TCP-портов —
p U:53,111,137,T:21-25
.
С помощью опции -n
(запрет обратного просмотра DNS) можно сократить время сканирования, которое бывает довольно продолжительным.
Читайте также:
- 32 примера использования команды Nmap для Linux-систем.
- 29 практических примеров команды Nmap для сетевых администраторов Linux.
Учимся использовать утилиту lsof
Утилита lsof (от англ. LiSt of Open Files) — это инструмент командной строки для UNIX-подобных операционных систем, предназначенный для обнаружения файлов, использующихся теми или иными процессами.
Выводим на экран все открытые IP-сокеты
С помощью данной утилиты можно вывести на экран все открытые соединения и инициировавшие их процессы в операционной системе. Для этого введите от имени суперпользователя в командную строку команду lsof
с опцией -i
:
$ sudo lsof -i
Выводим список процессов, прослушивающих конкретный порт с помощью lsof
Зная конкретный порт — можно легко найти программу, которая его прослушивает. Для этого введите от имени суперпользователя в командную строку команду lsof
с опцией -i
и добавьте к ней в качестве аргумента номер порта после двоеточия (например, :80
):
$ sudo lsof -i :80
Читайте также: 10 примеров команд lsof в Linux.