Смотрим открытые порты Linux
![]()
Всем привет! Мы уже рассказывали про TCP и UDP порты, и вы уже знаете, что это сущность, которая определяет конкретный процесс, приложение или тип сетевого сервиса.

Сегодня мы расскажем, как вывести список и затем наблюдать за работой TCP/UDP портов в Linux. Поехали!
Список всех открытых портов при помощи команды netstat
Это просто. Тут мы используем либо команду netstat. Да, так просто, всего одна строчка и все у нас перед глазами:
$ sudo netstat –tulpn
Тут мы можем увидеть какие порты находятся в состоянии прослушивания (Listen). Также просмотреть прослушиваемые порты можно при помощи утилиты lsof – как это сделать можно прочесть в нашей статье.
Также мы использовали следующие флаги:
- t — выводит список портов TCP.
- u — выводит список портов UDP.
- l — выводит только слушающие (Listen) сокеты.
- n — показывает номер порта.
- p — показывает имя процесса или программы.
Список всех открытых портов при помощи команды ss
Тут все аналогично, кроме того, что теперь используем команду ss вместо netstat
$ sudo ss -tulpn
TCP и UDP порты в режиме реального времени
И тут тоже все просто – для просмотра портов TCP и UDP в режиме реального времени нужно запустить netstat или ss с помощью утилиты watch.
$ sudo watch netstat -tulpn Или $ sudo watch ss -tulpn
Как определить открытые порты в Linux?
После настройки сетевых служб важно обратить внимание на порты, принимающие подключения на сетевых интерфейсах. Любые открытые порты могут быть доказательством вторжения. Просмотреть открытые порты можно двумя способами. Менее надёжный способ — опросить сетевой стек с помощью команды netstat -an или lsof -i. Этот способ не очень надёжен, так как эти программы не подключаются к компьютеру по сети, а просто определяют, что происходит в системе. По этой причине, эти приложения часто подменяются нападающими. Таким способом взломщики пытаются скрыть свои следы, если они незаконно открыли порты. Другим более надёжным способом проверки открытых портов является использование сканера портов, например nmap. Все команды netstat, ss, netcat относится к сетевым утилитам и доступны по-умолчанию в большинстве linux-дистрибутивах.
Проверка открытых портов в Linux может понадобиться, чтобы убедиться, что в системе не запущены лишние службы.
Если вы помните, порт это число, которое приложение будет использовать для связи с другой программой, предоставлять сервис и т.д. Чтобы получить представление о том, какие службы работают в системе, необходимо проверить открытые порты системы. Часто мы устанавливаем программу, которая является сервисом, а потом забываем о ней, поэтому наша машина может прослушивать порты в ожидании соединения. Злоумышленники любят, когда порты открыты, так как приложения, прослушивающие эти порты, являются простыми целями. Чтобы обеспечить нашей системе Ubuntu Linux (или любой другой системе в этом отношении) максимальную безопасность, мы должны знать о том, какие порты открыты и для каких служб.
Определить открытых портов в Linux через nmap
Многие системные администраторы и администраторы сетей также находят её полезной для таких задач как инвентаризация сети, управления расписанием служб обновлений и мониторинга аптайма хостов или служб. Возможно, это не лучший вариант перевода на русский язык, но он довольно точно отображает суть — инструмент для исследования сети и проверки безопасности.
Nmap («Network Mapper») — это утилита с открытым исходным кодом для исследования сети и проверки безопасности.
Утилита кроссплатформенна, бесплатна, поддерживаются операционных системы Linux, Windows, FreeBSD, OpenBSD, Solaris, Mac OS X. Nmap умеет сканировать различными методами — например, UDP, TCP connect(), TCP SYN (полуоткрытое), FTP proxy (прорыв через ftp), Reverse-ident, ICMP (ping), FIN, ACK, SYN и NULL-сканирование. Выбор варианта сканирования зависит от указанных ключей, вызов nmap выглядит следующим образом:
nmap цель
Следующая команда, запущенная с консоли, определяет, какие порты ждут TCP-соединений из сети:
nmap -sT -O localhost
Сканирование всех TCP-порты целевого IP-адреса
nmap –sT 192.168.75.131
UDP-сканирование – сканирование хоста на наличие UDP-служб. Это сканирование используется для просмотра открытых UDP-портов.
nmap –sU 192.168.75.131
Статистика открытых портов в Linux через netstat
Команда NETSTAT предназначена для получения сведений о состоянии сетевых соединений и слушаемых на данном компьютере портах TCP и UDP, а также, для отображения статистических данных по сетевым интерфейсам и протоколам. Эта команда предоставляет много данных, помогающих специалисту диагностировать и устранять сложные проблемы с сетью.
Команда netstat позволяет просматривать сетевые подключения, таблицы маршрутизации, сведения об интерфейсах и дополнительную информацию о сети.
Однако они окажутся полезными и для оценки сетевого трафика, и для определения наиболее интенсивно используемых интерфейсов. В системах с несколькими сетевыми интерфейсами такие данные могут быть полезными для выявления чрезмерно загруженных интерфейсов и интерфейсов, которые не должны быть активными.
Читайте также: Вырезать фрагмент видео с определённого момента в Linux
Формат командной строки:
NETSTAT [-a] [-b] [-e] [-f] [-n] [-o] [-p протокол] [-r] [-s] [-t] [интервал]
Команда netstat умеет показывать сетевые соединения (входящие/исходящие), таблицу маршрутизации, статистику по сетевым интерфейсам и т.д. Список всех открытых портов (TCP):
netstat -at
Список всех открытых портов (UDP)
netstat -au
Список только прослушиваемых портов (TCP)
netstat -lt
Статистика по всем открытым портам
netstat -s
Подробное отображение списка с открытыми портами — добавлен PID и имя процессов
netstat -p
Объединим все ключи в полезную команду для просмотра открытых TCP/UDP портов с именами процессов (может понадобиться root-доступ)
netstat -ltupn
Список подключенных хостов
netstat -lantp | grep ESTABLISHED |awk » | awk -F: » | sort -u
Узнать открытые порты в Linux через lsof
Утилита lsof позволяет посмотреть все открытые в системе соединения, в том числе и сетевые, для этого нужно использовать опцию i.
Утилита командной строки lsof (List Open Files) используется для получения информации об открытых различными процессами файлах (а с точки зрения unix все является файлами — каталоги, устройства, сокеты и т. д.).
Давайте разберемся с практическим применением lsof. Если ввести команду lsof без аргументов, можно увидеть все файлы, принадлежащие процессам. Утилита lsof умеет отображать процессы, которые работают с определенным файлом или сокетом.
Читайте также: Создание и удаление маршрутов в Linux
Список всех сетевых соединений
lsof -i
Список процессов, работающих с портом 80
lsof -i :80
Вы можете использовать следующую команду:
lsof -i -P |grep pid
Статистика открытых портов в Linux через ss
Однако, ss делает это проще и быстрее, чем netstat. Кроме того, ss даёт более подробные сведения о TCP-подключениях и о состояниях соединений, чем большинство других инструментов. Утилита ss позволяет просматривать информацию об используемых сокетах в системе.
Команда ss — это инструмент, используемый для вывода сетевой статистики в виде, похожем на тот, который выдаёт команда netstat.
Эта команда обладает схожим функционалом к netstat, но есть и уникальные возможности. Например можно фильтровать вывод по установленным соединениям с определенным портом.
Читайте также: Преобразовывать спец символы в видимое представление в Linux
Список процессов, использующие соединения в данный момент
ss -p
Список сокетов в режиме прослушивания
ss -l
Пример фильтра — список всех соединений к порту 80
ss -o state established ‘( dport = :www or sport = :www )’
Открытые порты в Linux через tcpdump
С помощью tcpdump легко снять трафик с вашего сетевого интерфейса, для дальнейшего разбора. Без tcpdump сложно разобрать ошибки, которые возникают при работе с сетью и IP телефонией в целом. Tcpdump, по умолчанию, принимает только первые 68 96 байт данных из пакета.
Tcpdump полезное и необходимое приложения для Linux/UNIX систем.
Если вы хотите, посмотреть более подробные пакеты, то добавьте опцию -s , где число обозначает количество байтов, которые вы хотите захватить. Если установить -s 0 (ноль)- это означает захватывать все пакеты.
proto — работает с протоколами tcp, udp и icmp. (Не надо писать proto)
tcpdump icmp
port — захватывает трафик по определенному порту
tcpdump port 5060
src, dst port — захватывает трафик по определенному порту от источника или к IP адресу назанчения
tcpdump src port 5060tcpdump dst port 5060
src/dst, port, protocol — сочетание всех трех выражений
tcpdump src port 5060 and tcp tcpdump udp and src port 5060
В конце статьи можно сформулировать следующий вывод: поскольку файл и процесс — два ключевых понятия в операционной системе, утилита lsof может оказаться незаменимым помощником администратора в тех случаях, когда надо разобраться, как работает система, а особенно в тех случаях, когда система скомпрометирована. И она тем полезнее, чем больше ваша система и чем больше вы с ней работаете, чем лучше вы понимаете, что она может. Когда вы освоите ее возможности, вы сможете создать отдельные скрипты для обработки тех огромных массивов информации, которые выдает эта программа. Можно, например, запускать команду lsof -i через определенные промежутки времени, чтобы сравнивать полученные данные. Если будут выявлены отличия в числе открытых процессов или другие отличия, удовлетворяющие заданному критерию, скрипт может сформировать сообщение администратору.
Как посмотреть открытые порты Linux

Visitors have accessed this post 82885 times.
Во время устранения неполадок служб, работающих на ОС Linux, просмотр открытых портов является одной из задач, которую должен выполнять любой пользователь или администратор. Если служба должна по идее работать, но по какой-то причине она не работает, то, скорее всего, порт этой службы закрыт и его нужно открыть.
В этом туториале мы покажем, как в Linux посмотреть порты, которые открыты, из командной строки.
1) Посмотреть открытые порты с помощью команды ss
Команда Linux ss предоставляет подробную информацию об открытых портах и прослушиваемых сокетах. Она извлекает информацию из ядра Linux и она более популярна, чем команда netstat, которая уже устарела.
Чтобы отобразить прослушиваемые TCP-соединения, выполните команду
$ ss -tl
Пример вывода
l — показывает прослушиваемые сокеты
t — означает порт TCP
Чтобы посмотреть прослушиваемые UDP-соединения, введите команду
$ ss -lu
Пример вывода
u — означает порт UDP.
Или для того, чтобы отобразить tcp и udp одновременно, введите имя процесса
$ ss -lntup
p — выдает список имен процессов, которые открыли сокеты.
Чтобы вывести все соединения между сокетами, просто используйте команду ss в ее формате по умолчанию
$ ss
Пример вывода
2) Посмотреть открытые порты с помощью команды netstat

Команда netstat — это инструмент командной строки, который используется для проверки открытых портов TCP и UDP вместе с другими атрибутами. Чтобы в Linux проверить открытые порты, введите команду:
$ netstat -pnltu
Пример вывода
Давайте подробнее рассмотрим параметры команды:
p — показывает идентификатор услуги или название программы;
n — отображает числовой номер запущенного порта, например, 3306 для mysqld и 22 для sshd;
l — показывает прослушиваемые сокеты;
t — показывает TCP-соединения;
u — показывает UDP-соединения.
3) Посмотреть открытые порты Linux с помощью команды lsof
Команда lsof — это сетевой инструмент, который также можно использовать, чтобы проверить открытые порты Linux. Для этого введите команду
$ lsof -i
Пример вывода
Чтобы посмотреть открытые сокеты, используйте команду lsof и перенаправьте вывод в grep, как показано ниже:
$ lsof -n -P | grep LISTEN
Пример вывода
Для просмотра всех TCP-соединений выполните следующую команду:
$ lsof -i tcp
Пример вывода
Чтобы посмотреть все UDP-соединения, выполните команду:
$ lsof -i udp
Пример вывода
4) Посмотреть открытые порты Linux с помощью утилиты Nmap
Nmap — это бесплатный инструмент с открытым исходным кодом для сканирования сети, обычно используется для обнаружения открытых портов удаленных систем. По умолчанию Nmap не установлен в ОС Linux. Чтобы установить Nmap, введите команду:
$ sudo apt install nmap (для Debian/ Ubuntu)
$ sudo yum install nmap (для RedHat/ CentOS)
$ sudo dnf install nmap (для Fedora)
$ pacman -S nmap (ArchLinux)
Чтобы найти открытые порты TCP, выполните команду:
$ nmap -sT -O localhost
Пример вывода
Чтобы найти открытые порты UDP, выполните команду:
$ nmap -sU localhost
Пример вывода 
Каждую неделю мы в live режиме решаем кейсы на наших открытых онлайн-практикумах, присоединяйтесь к нашему каналу в Телеграм, вся информация там.
Если вы хотите освоить функционал системного администратора Linux на практике, приглашаем на наш практикум Linux by Rebrain.
Как посмотреть открытые порты в Linux
Сетевые порты — это механизм, с помощью которого операционная система определяет какой именно программе необходимо передать сетевой пакет. Здесь можно привести пример с домом. Например, почтальону необходимо доставить посылку. Он доставляет посылку к дому, это IP адрес компьютера. А дальше в самом доме уже должны разобраться в какую квартиру направить эту посылку. Номер квартиры — это уже порт.
Если порт открыт это означает, что какая либо программа, обычно сервис, использует его для связи с другой программой через интернет или в локальной системе. Чтобы посмотреть какие порты открыты в вашей системе Linux можно использовать множество различных утилит. В этой статье мы рассмотрим самые популярные способы посмотреть открытые порты Linux.
Table of Contents
Как посмотреть открытые порты linux
1. netstat
Утилита netstat позволяет увидеть открытые в системе порты, а также открытые на данный момент сетевые соединения. Для отображения максимально подробной информации надо использовать опции:
- -l или —listening — посмотреть только прослушиваемые порты;
- -p или —program — показать имя программы и ее PID;
- -t или —tcp — показать tcp порты;
- -u или —udp показать udp порты;
- -n или —numeric показывать ip адреса в числовом виде.
Открытые порты Linux, которые ожидают соединений имеют тип LISTEN, а перед портом отображается IP адрес на котором сервис ожидает подключений. Это может быть определенный IP адрес или */0.0.0.0 что означают любой доступный адрес:
sudo netstat -tulpn

2. ss
Утилита ss — это современная альтернатива для команды netstat. В отличие от netstat, которая берет информацию из каталога /proc, утилита ss напрямую связывается со специальной подсистемой ядра Linux, поэтому работает быстрее и её данные более точные, если вы хотите выполнить просмотр открытых портов это не имеет большого значения. Опции у неё такие же:

Можно вывести только процессы, работающие на 80-том порту:
sudo ss -tulpn | grep :80

3. lsof
Утилита lsof позволяет посмотреть все открытые в системе соединения, в том числе и сетевые, для этого нужно использовать опцию -i, а чтобы отображались именно порты, а не названия сетевых служб следует использовать опцию -P:

Ещё один пример, смотрим какие процессы работают с портом 80:
sudo lsof -i -P | grep :80

4. Nmap
Программа Nmap — мощный сетевой сканер, разработанный для сканирования и тестирования на проникновение удаленных узлов, но ничего не мешает направить его на локальный компьютер. Утилита позволяет не только посмотреть открытые порты, но и примерно определить какие сервисы их слушают и какие уязвимости у них есть. Программу надо установить:
sudo apt install nmap
Затем можно использовать:

Для простого сканирования можно запускать утилиту без опций. Детальнее о её опциях можно узнать в статье про сканирование сети в Nmap. Эта утилита ещё будет полезна если вы хотите посмотреть какие порты на компьютере доступны из интернета.
Если это публичный сервер, то результат скорее всего не будет отличатся от локального сканирования, но на домашнем компьютере все немного по другому. Первый вариант — используется роутер и в сеть будут видны только порты роутера, еще одним порогом защиты может стать NAT-сервер провайдера. Технология NAT позволяет нескольким пользователям использовать один внешний IP адрес. И так для просмотра открытых внешних портов сначала узнаем внешний ip адрес, для надежности воспользуемся онлайн сервисом:
wget -O — -q eth0.me

Дальше запускаем сканирование:

В результате мы видим, что открыт порт 80 веб-сервера и 22 — порт службы ssh, я их не открывал, эти порты открыты роутером, 80 — для веб-интерфейса, а 22 для может использоваться для обновления прошивки. А еще можно вообще не получить результатов, это будет означать что все порты закрыты, или на сервере установлена система защиты от вторжений IDS. Такая проверка портов может оказаться полезной для того, чтобы понять находится ли ваш компьютер в безопасности и нет ли там лишних открытых портов, доступных всем.
5. Zenmap
Программа Zenmap — это графический интерфейс для nmap. Она не делает ничего нового кроме того, что может делать nmap, просто предоставляет ко всему этому удобный интерфейс. Для её установки выполните:
sudo apt install zenmap
Запустить программу можно из главного меню или командой:
Затем введите адрес localhost в поле Цель и нажмите кнопку Сканирование:

После завершения сканирования утилита вывела список открытых портов Linux.
Выводы
В этой статье мы рассмотрели инструменты, которые вы можете использовать для того чтобы узнать открытые порты linux. Инструментов не так много как для просмотра информации об оперативной памяти или процессоре, но их вполне хватает. А какими программами пользуетесь вы? Напишите в комментариях!