Как проверить открытые порты в Linux?

Порты — это сетевые интерфейсы, через которые осуществляется передача данных между компьютерами. Каждый открытый порт в системе указывает на то, что какая-то служба или приложение прослушивает этот порт и готово принять входящие соединения. Иногда необходимо узнать, какие порты открыты в системе, чтобы проверить безопасность, диагностику сетевых проблем или просто понять, какие сервисы запущены. В Linux есть несколько командных инструментов, которые помогают выявить открытые порты и прослушивающие их процессы.


В этой статье мы рассмотрим несколько способов проверки открытых портов в Linux с использованием таких инструментов, как netstat, ss, nmap и других.

Метод 1: Использование команды netstat

netstat (network statistics) — это один из самых популярных инструментов для просмотра сетевой активности. Хотя в некоторых новых дистрибутивах netstat заменен на ss, многие системы все еще поддерживают netstat.

Установка netstat

Если команда netstat не установлена в вашей системе, вы можете установить её через пакетный менеджер. На системах, основанных на Debian (например, Ubuntu и Найс ОС Linux), это делается так:


sudo apt install net-tools

На системах Red Hat или НАЙС ОС используйте команду:


sudo yum install net-tools

Просмотр всех открытых портов

Чтобы увидеть все открытые порты и процессы, которые их прослушивают, выполните следующую команду:


sudo netstat -tuln

Здесь:

  • -t — отображает TCP-соединения.
  • -u — отображает UDP-соединения.
  • -l — отображает только те порты, которые находятся в режиме прослушивания (listening).
  • -n — выводит IP-адреса и номера портов в числовом формате (без попытки разрешения имен хостов).

Результат команды покажет список всех активных TCP и UDP портов, которые прослушиваются. Пример вывода:


Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN     
udp        0      0 0.0.0.0:68              0.0.0.0:*                          

Здесь видно, что порт 80 прослушивается службой на всех интерфейсах (0.0.0.0), а MySQL сервер прослушивает порт 3306 на локальном интерфейсе (127.0.0.1).

Метод 2: Использование команды ss

ss (Socket Stat) — это современная альтернатива netstat, которая предлагает более быстрый и подробный вывод сетевой активности. На многих современных дистрибутивах Linux, в том числе и на НАЙС ОС ss уже предустановлен.

Просмотр открытых портов с помощью ss

Чтобы отобразить все открытые порты с помощью ss, используйте следующую команду:


sudo ss -tuln

Вывод команды аналогичен netstat и показывает все активные порты TCP и UDP. Пример вывода:


Netid  State   Recv-Q  Send-Q   Local Address:Port    Peer Address:Port   
tcp    LISTEN  0       128      0.0.0.0:80           0.0.0.0:*           
tcp    LISTEN  0       128      127.0.0.1:3306       0.0.0.0:*           
udp    UNCONN  0       0        0.0.0.0:68           0.0.0.0:*           

Команда ss также поддерживает множество других параметров для анализа сетевых подключений и может использоваться для более детальной диагностики.

Метод 3: Использование команды lsof

lsof (List Open Files) — это мощный инструмент, который показывает список открытых файлов, включая сетевые сокеты. Он может быть полезен для отображения информации о портах и процессах, которые их используют.

Просмотр портов с помощью lsof

Чтобы увидеть список всех процессов, которые открыли порты, выполните следующую команду:


sudo lsof -i -P -n

Здесь:

  • -i — отображает сетевые соединения.
  • -P — выводит порты в числовом формате.
  • -n — предотвращает попытки разрешить имена хостов.

Пример вывода:


COMMAND     PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd       1274     root    3u  IPv4  19348      0t0  TCP *:22 (LISTEN)
mysqld     1523    mysql   20u  IPv4  21512      0t0  TCP 127.0.0.1:3306 (LISTEN)
nginx      1624     www    6u   IPv4  18476      0t0  TCP *:80 (LISTEN)

Вывод команды lsof показывает процессы, которые прослушивают порты, идентификатор процесса (PID), тип подключения и IP-адрес, на котором открыт порт.

Метод 4: Использование nmap для сканирования портов

nmap (Network Mapper) — это продвинутый инструмент для сетевого сканирования, который позволяет не только проверять открытые порты на локальной системе, но и выполнять сканирование удаленных систем.

Установка nmap

Если nmap не установлен в вашей системе, его можно установить с помощью пакетного менеджера. Например, на Ubuntu или других дистрибутивах на основе Debian выполните:


sudo apt install nmap

На CentOS или НАЙС ОС:


sudo yum install nmap

Сканирование портов на локальной системе

Чтобы отсканировать все открытые порты на локальной машине, используйте следующую команду:


sudo nmap -sT -O localhost

Здесь -sT указывает на выполнение TCP сканирования, а -O — это попытка определить операционную систему. Пример вывода:


Starting Nmap 7.60 ( https://nmap.org ) at 2024-09-19 12:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00012s latency).
Not shown: 999 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh
80/tcp  open  http

OS detection performed. OS: Linux 3.X (99%)

Вывод показывает, что на локальной системе открыты порты 22 (SSH) и 80 (HTTP). Инструмент nmap полезен для глубокого анализа сетевой активности и безопасности.

Метод 5: Использование fuser для проверки открытых портов

Команда fuser позволяет узнать, какие процессы используют конкретные порты. Это полезно для точной диагностики, если вам нужно узнать, какой процесс прослушивает определенный порт.

Проверка порта с помощью fuser

Чтобы узнать, какой процесс использует порт, выполните команду:


sudo fuser 80/tcp

Если порт 80 (HTTP) используется каким-либо процессом, вы увидите его идентификатор (PID). Например, если процесс с PID 1624 использует порт 80, вывод будет следующим:


80/tcp: 1624

Затем можно использовать команду ps, чтобы получить информацию о процессе:


ps -p 1624 -o comm=

Эта команда выведет имя программы, которая использует порт.

Заключение

Проверка открытых портов в Linux — это важная задача для мониторинга сетевой активности и обеспечения безопасности системы. Существует несколько инструментов, которые помогают это сделать, включая netstat, ss, lsof, nmap и fuser. Каждый из них имеет свои преимущества и особенности, и выбор инструмента зависит от конкретной задачи.

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

Блог НАЙС ОС

Блог НАЙС ОС — это платформа для пользователей и разработчиков, где публикуются статьи, руководства и новости о мире Linux. Основное внимание уделено использованию, настройке и оптимизации ОС, а также обзору новых функций и технологий, доступных в дистрибутиве НАЙС ОС.