15%

Сэкономьте 15% на всех хостинговых услугах

Проверьте свои навыки и получите скидку на любой тарифный план

Используйте код:

Skills
Начать
25.12.2024

Проверка открытых и прослушиваемых портов в Linux с помощью Netstat и SS

Мониторинг открытых и прослушиваемых портов в системе Linux — одна из наиболее фундаментальных практик для обеспечения безопасности сервера, диагностики проблем сети и эффективного управления инфраструктурой. Независимо от того, работаете ли вы на production веб-сервере, в среде VPS Hosting или на Dedicated Server, понимание того, какие именно порты открыты и какие сервисы привязаны к ним, дает вам видимость, необходимую для предотвращения несанкционированного доступа, обнаружения неправильных конфигураций и устранения ненужных векторов атак.

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

Почему мониторинг открытых портов имеет значение

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

  • Выявить несанкционированные сервисы, работающие на неожиданных портах
  • Обнаружить попытки вторжения или скомпрометированные процессы
  • Проверить правила брандмауэра работают ли они как предполагается
  • Подтвердить, что недавно развернутые приложения привязаны к правильным интерфейсам
  • Закрыть неиспользуемые порты для сокращения поверхности атаки

Это особенно критично для администраторов, управляющих средами Shared Web Hosting или многопользовательскими серверами, на которых одновременно работают несколько сервисов.

Понимание портов и их типов

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

ТерминОписание
Открытый портПорт, на котором приложение активно прослушивает входящие соединения
Прослушиваемый портПорт, привязанный к сервису, который ожидает сетевой трафик
TCP (Transmission Control Protocol)Ориентированный на соединение, надежный, используется HTTP, SSH, FTP и т. д.
UDP (User Datagram Protocol)Без соединения, быстрее, но менее надежен, используется DNS, NTP и т. д.

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

Что такое netstat?

netstat (сетевая статистика) — классическая утилита командной строки, которая предоставляет подробную информацию о сетевых соединениях, таблицах маршрутизации, статистике интерфейсов и прослушиваемых портах. Хотя она официально устарела в пользу ss на современных дистрибутивах, она остается широко используемой и все еще встречается на многих устаревших системах.

Установка netstat

Команда netstat является частью пакета net-tools, который может быть не установлен по умолчанию на современных дистрибутивах Linux.

Debian / Ubuntu:

sudo apt install net-tools

CentOS / RHEL / AlmaLinux / Rocky Linux:

sudo yum install net-tools

Использование netstat для проверки открытых и прослушиваемых портов

Для отображения всех прослушиваемых TCP и UDP портов в вашей системе выполните следующую команду:

sudo netstat -tuln

Расшифровка флагов:

ФлагОписание
-tПоказать TCP порты
-uПоказать UDP порты
-lПоказать только прослушиваемые порты
-nОтображать числовые адреса вместо разрешения имен хостов

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

Proto  Recv-Q  Send-Q  Local Address     Foreign Address   State
tcp         0       0  0.0.0.0:22        0.0.0.0:*         LISTEN
tcp         0       0  0.0.0.0:80        0.0.0.0:*         LISTEN
tcp6        0       0  :::443            :::*              LISTEN
udp         0       0  0.0.0.0:53        0.0.0.0:*

Понимание столбцов вывода

  • Local Address — IP-адрес и номер порта, на котором прослушивает сервис. 0.0.0.0 означает, что сервис прослушивает на всех доступных интерфейсах.
  • Foreign Address — удаленный IP и порт для активных соединений. Звездочка (*) означает, что соединение еще не установлено.
  • State — состояние соединения. LISTEN указывает, что порт открыт и ожидает входящих соединений.

Фильтрация конкретных портов с помощью netstat

Вы можете передать вывод через grep для изоляции конкретного порта или сервиса. Например, для проверки, прослушивает ли что-нибудь порт 80 (HTTP):

sudo netstat -tuln | grep ":80"

Для проверки порта 443 (HTTPS), который необходим для серверов с установленными SSL Certificates:

sudo netstat -tuln | grep ":443"

Для отображения имени процесса и PID, ответственного за каждое соединение, добавьте флаг -p:

sudo netstat -tulnp

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

Что такое ss?

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

Использование ss для проверки открытых и прослушиваемых портов

Синтаксис ss тесно соответствует синтаксису netstat, что облегчает переход:

ss -tuln

Расшифровка флагов:

ФлагОписание
-tПоказать TCP сокеты
-uПоказать UDP сокеты
-lПоказать только прослушиваемые сокеты
-nОтображать числовые адреса

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

Netid  State   Recv-Q  Send-Q  Local Address:Port   Peer Address:Port
tcp    LISTEN  0       128     0.0.0.0:22            0.0.0.0:*
tcp    LISTEN  0       511     0.0.0.0:80            0.0.0.0:*
tcp    LISTEN  0       511        [::]:443             [::]:*
udp    UNCONN  0       0       0.0.0.0:53            0.0.0.0:*

Продвинутое использование ss

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

Показать только прослушиваемые TCP порты

ss -tl

Показать только прослушиваемые UDP порты

ss -ul

Отображение имен процессов и PID

Для определения того, какой процесс использует конкретный порт, используйте флаг -p:

ss -tulnp

Это одна из самых полезных команд для устранения неполадок — она показывает имя процесса и PID рядом с каждым прослушиваемым сокетом, сразу же ясно показывая, какое приложение владеет каким портом.

Пример вывода с флагом -p

Netid  State   Local Address:Port   Process
tcp    LISTEN  0.0.0.0:80           users:(("nginx",pid=1234,fd=6))
tcp    LISTEN  0.0.0.0:22           users:(("sshd",pid=987,fd=3))
tcp    LISTEN  0.0.0.0:3306         users:(("mysqld",pid=2345,fd=21))

Фильтрация по конкретному порту

Для проверки того, какой процесс прослушивает порт 8080:

ss -tulnp | grep ":8080"

Показать все установленные TCP соединения

ss -tn state established

Показать сводную статистику

ss -s

Это предоставляет быструю сводку общего количества сокетов по типам и состояниям — полезно для обнаружения необычных объемов соединений.

netstat против ss: прямое сравнение

Функция`netstat``ss`
ПроизводительностьМедленнее на загруженных системахЗначительно быстрее
Доступность по умолчаниюТребует пакет net-toolsПредустановлен на современных дистрибутивах
Опции фильтрацииБазовые (требуется grep)Продвинутые встроенные фильтры
Информация о процессеДоступна с -pДоступна с -p
Детальность выводаСтандартнаяБолее подробная информация о сокетах
Рекомендуется дляУстаревшие системы, знакомствоСовременные среды Linux

Когда использовать netstat

  • На старых системах Linux, где ss недоступен
  • При работе со скриптами или документацией, написанной с использованием синтаксиса netstat
  • Для быстрых проверок на системах, где net-tools уже установлен

Когда использовать ss

  • На любом современном дистрибутиве Linux (Ubuntu 20.04+, CentOS 8+, Debian 10+ и т. д.)
  • Когда вам нужен более быстрый вывод на высоконагруженных серверах
  • Для продвинутой фильтрации и подробного анализа сокетов

Дополнительные инструменты для аудита портов

Помимо netstat и ss, несколько других утилит ценны для тщательного аудита портов.

Использование lsof

lsof (список открытых файлов) рассматривает сетевые сокеты как файлы, что делает его еще одним мощным способом определить, какой процесс использует данный порт.

Для проверки того, какой процесс привязан к порту 80:

sudo lsof -i :80

Для проверки всех прослушиваемых портов:

sudo lsof -i -P -n | grep LISTEN

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

COMMAND   PID     USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
nginx    1234     root   6u  IPv4   23456      0t0  TCP *:80 (LISTEN)
sshd      987     root   3u  IPv4   12345      0t0  TCP *:22 (LISTEN)

Использование nmap

nmap — мощный

15%

Сэкономьте 15% на всех хостинговых услугах

Проверьте свои навыки и получите скидку на любой тарифный план

Используйте код:

Skills
Начать