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:*

Разбиране на колоните на изхода

  • Локален адрес — IP адресът и номерът на порта, където услугата слуша. 0.0.0.0 означава, че услугата слуша на всички налични интерфейси.
  • Чужд адрес — Отдалеченият IP и порт за активни връзки. Звездичка (*) означава, че няма установена връзка.
  • Състояние — Състоянието на връзката. 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
За начало