Zaoszczędź 15% na wszystkich usługach hostingowych

Sprawdź swoje umiejętności i zdobądź Rabat na dowolny plan hostingowy

Użyj kodu: Skills Rozpocznij
Sekcja
Bezpieczeństwo Linux

Sprawdzanie otwartych i nasłuchujących portów w Linux przy użyciu Netstat i SS

Monitorowanie otwartych i nasłuchujących portów w systemie Linux jest jedną z najbardziej fundamentalnych praktyk utrzymania bezpieczeństwa serwera, diagnozowania problemów sieciowych i efektywnego zarządzania infrastrukturą. Niezależnie od tego, czy uruchamiasz produkcyjny serwer internetowy, środowisko VPS Hosting czy Dedicated Server, dokładna wiedza o tym, które porty są otwarte — i które usługi są do nich przywiązane — daje ci widoczność potrzebną do zapobiegania nieautoryzowanemu dostępowi, wykrywania błędnych konfiguracji i eliminacji niepotrzebnych powierzchni ataku.

W tym kompleksowym przewodniku przejdziemy przez sposób użycia poleceń netstat i ss do sprawdzenia otwartych i nasłuchujących portów w dowolnym systemie Linux, porównamy ich mocne strony i przedstawimy dodatkowe narzędzia takie jak lsof i nmap do głębszej analizy sieci.

Dlaczego monitorowanie otwartych portów jest ważne

Każdy otwarty port na serwerze reprezentuje potencjalny punkt wejścia. Usługi, które są błędnie skonfigurowane, przestarzałe lub po prostu zapomniane, mogą narazić system na exploitację. Regularne audytowanie portów nasłuchujących pozwala Ci:

  • Zidentyfikować nieautoryzowane usługi działające na nieoczekiwanych portach
  • Wykryć próby włamań lub skompromitowane procesy
  • Zweryfikować reguły zapory sieciowej działają zgodnie z przeznaczeniem
  • Potwierdzić, że nowo wdrożone aplikacje wiążą się z prawidłowymi interfejsami
  • Zamknąć nieużywane porty aby zmniejszyć powierzchnię ataku

Jest to szczególnie krytyczne dla administratorów zarządzających środowiskami Shared Web Hosting lub serwerami wielodostępnymi, gdzie wiele usług działa jednocześnie.

Zrozumienie portów i ich typów

Przed przystąpieniem do narzędzi ważne jest zrozumienie terminologii, którą napotkasz w wynikach poleceń.

TerminOpis
Otwarty portPort, na którym aplikacja aktywnie nasłuchuje przychodzących połączeń
Port nasłuchującyPort powiązany z usługą, która czeka na ruch sieciowy
TCP (Transmission Control Protocol)Zorientowany na połączenie, niezawodny, używany przez HTTP, SSH, FTP, itp.
UDP (User Datagram Protocol)Bezpołączeniowy, szybszy, ale mniej niezawodny, używany przez DNS, NTP, itp.

Sprawdzanie portów za pomocą netstat

Czym jest netstat?

netstat (statystyka sieci) to klasyczne narzędzie wiersza poleceń, które dostarcza szczegółowych informacji o połączeniach sieciowych, tablicach routingu, statystykach interfejsów i portach nasłuchujących. Chociaż zostało oficjalnie wycofane na rzecz ss w nowoczesnych dystrybucjach, pozostaje szeroko używane i nadal znajduje się na wielu starszych systemach.

Instalacja netstat

Polecenie netstat jest częścią pakietu net-tools, który może nie być zainstalowany domyślnie w nowoczesnych dystrybucjach Linux.

Debian / Ubuntu:

sudo apt install net-tools

CentOS / RHEL / AlmaLinux / Rocky Linux:

sudo yum install net-tools

Używanie netstat do sprawdzenia otwartych i nasłuchujących portów

Aby wyświetlić wszystkie nasłuchujące porty TCP i UDP w systemie, uruchom następujące polecenie:

sudo netstat -tuln

Podział flag:

FlagaOpis
-tPokaż porty TCP
-uPokaż porty UDP
-lPokaż tylko nasłuchujące porty
-nWyświetl adresy numeryczne zamiast rozwiązywać nazwy hostów

Przykładowe wyjście

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

Zrozumienie kolumn wyjścia

  • Adres lokalny — Adres IP i numer portu, na którym nasłuchuje usługa. 0.0.0.0 oznacza, że usługa nasłuchuje na wszystkich dostępnych interfejsach.
  • Adres zdalny — Zdalny adres IP i port dla aktywnych połączeń. Gwiazdka (*) oznacza, że połączenie nie zostało jeszcze nawiązane.
  • Stan — Stan połączenia. LISTEN wskazuje, że port jest otwarty i czeka na połączenia przychodzące.

Filtrowanie określonych portów za pomocą netstat

Możesz przekierować wyjście przez grep aby wyizolować określony port lub usługę. Na przykład, aby sprawdzić, czy coś nasłuchuje na porcie 80 (HTTP):

sudo netstat -tuln | grep ":80"

Aby sprawdzić port 443 (HTTPS), który jest niezbędny dla serwerów z zainstalowanymi certyfikatami SSL:

sudo netstat -tuln | grep ":443"

Aby również wyświetlić nazwę procesu i PID odpowiedzialny za każde połączenie, dodaj flagę -p:

sudo netstat -tulnp

Sprawdzanie portów za pomocą ss

Co to jest ss?

ss (statystyka gniazd) jest nowoczesnym zamiennikiem dla netstat. Jest szybszy, bardziej wydajny i zapewnia bogatsze dane wyjściowe — szczególnie w systemach z dużą liczbą jednoczesnych połączeń. Polecenie ss jest domyślnie dostępne na praktycznie wszystkich nowoczesnych dystrybucjach Linux i nie wymaga dodatkowej instalacji.

Używanie ss do sprawdzania otwartych i nasłuchujących portów

Składnia ss ściśle naśladuje składnię netstat, co ułatwia przejście:

ss -tuln

Wyjaśnienie flag:

FlagaOpis
-tPokaż gniazda TCP
-uPokaż gniazda UDP
-lPokaż tylko nasłuchujące gniazda
-nWyświetl adresy numeryczne

Przykładowe dane wyjściowe

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

Zaawansowane użycie ss

Polecenie ss oferuje szereg zaawansowanych opcji filtrowania i wyświetlania, które znacznie wykraczają poza możliwości netstat.

Wyświetl tylko nasłuchujące porty TCP

ss -tl

Wyświetl tylko nasłuchujące porty UDP

ss -ul

Wyświetl nazwy procesów i identyfikatory PID

Aby zidentyfikować dokładnie, który proces używa określonego portu, użyj flagi -p:

ss -tulnp

To jedno z najbardziej przydatnych poleceń do rozwiązywania problemów — pokazuje nazwę procesu i PID obok każdego nasłuchującego gniazda, co natychmiast wyjaśnia, która aplikacja jest właścicielem którego portu.

Przykładowe wyjście z flagą -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))

Filtruj według określonego portu

Aby sprawdzić, który proces nasłuchuje na porcie 8080:

ss -tulnp | grep ":8080"

Wyświetl wszystkie ustanowione połączenia TCP

ss -tn state established

Wyświetl statystyki podsumowania

ss -s

Zapewnia to szybkie podsumowanie całkowitych gniazd według typu i stanu — przydatne do wykrycia niezwykłych wolumenów połączeń.

netstat vs. ss: Bezpośrednie porównanie

Funkcja`netstat``ss`
WydajnośćWolniejsza w systemach obciążonychZnacznie szybsza
Dostępność domyślnaWymaga pakietu net-toolsPreinstalowana w nowoczesnych dystrybucjach
Opcje filtrowaniaPodstawowe (wymagany grep)Zaawansowane wbudowane filtry
Informacje o procesachDostępne z -pDostępne z -p
Szczegółowość wynikówStandardowaBardziej szczegółowe informacje o gniazdach
Rekomendowane dlaSystemy starsze, znajomość narzędziaNowoczesne środowiska Linux

Kiedy używać netstat

  • Na starszych systemach Linux, gdzie ss nie jest dostępny
  • Pracując ze skryptami lub dokumentacją napisaną wokół składni netstat
  • Do szybkich sprawdzeń na systemach, gdzie net-tools jest już zainstalowany

Kiedy używać ss

  • Na dowolnej nowoczesnej dystrybucji Linux (Ubuntu 20.04+, CentOS 8+, Debian 10+, itp.)
  • Gdy potrzebujesz szybszych wyników na serwerach o dużym ruchu
  • Do zaawansowanego filtrowania i szczegółowej analizy gniazd

Dodatkowe narzędzia do audytu portów

Poza netstat i ss, kilka innych narzędzi jest cennych do dokładnego audytu portów.

Używanie lsof

lsof (lista otwartych plików) traktuje gniazda sieciowe jako pliki, co czyni je kolejnym potężnym sposobem na zidentyfikowanie, który proces używa danego portu.

Aby sprawdzić, który proces jest powiązany z portem 80:

sudo lsof -i :80

Aby sprawdzić wszystkie nasłuchujące porty:

sudo lsof -i -P -n | grep LISTEN

Przykładowe wyjście:

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)

Używanie nmap

nmap to potężne narzędzie do skanowania sieci, które może wykrywać otwarte porty zarówno lokalnie, jak i na hostach zdalnych. Jest szczególnie przydatne do weryfikacji konfiguracji zapory z perspektywy zewnętrznej.

Zainstaluj nmap, jeśli nie jest już obecny:

sudo apt install nmap       # Debian/Ubuntu
sudo yum install nmap       # CentOS/RHEL

Skanuj wszystkie porty TCP na maszynie lokalnej:

sudo nmap -sT localhost

Skanuj otwarte porty na określonym adresie IP:

sudo nmap -sV 192.168.1.100

Flaga -sV również próbuje wykryć wersję usługi uruchomionej na każdym otwartym porcie, co jest nieocenione do identyfikacji przestarzałego lub podatnego oprogramowania.

> Uwaga dotycząca bezpieczeństwa: Uruchamiaj skany nmap tylko na systemach, które posiadasz lub masz wyraźne pozwolenie na skanowanie.

Praktyczny przepływ pracy bezpieczeństwa: Audyt portów serwera

Oto zalecany krok po kroku przepływ pracy do audytu otwartych portów na serwerze Linux:

  1. Wylistuj wszystkie nasłuchujące porty z informacjami o procesach:
   ss -tulnp
  1. Porównaj każdy port z oczekiwanymi usługami. Jeśli zobaczysz nieznany proces na nieoczekiwanym porcie, zbadaj to natychmiast.
  1. Sprawdź usługi nasłuchujące na wszystkich interfejsach (0.0.0.0), które powinny być dostępne tylko lokalnie. Na przykład serwer bazy danych (port 3306) powinien zazwyczaj wiązać się z 127.0.0.1, a nie 0.0.0.0.
  1. Zweryfikuj reguły zapory za pomocą iptables -L -n lub ufw status verbose, aby upewnić się, że tylko zamierzone porty są eksponowane zewnętrznie.
  1. Użyj nmap z hosta zewnętrznego, aby potwierdzić, które porty są faktycznie dostępne z internetu, ponieważ reguły zapory mogą różnić się od tego, co ss raportuje lokalnie.
  1. Zamknij lub ogranicz porty, które nie są wymagane, używając zapory lub zatrzymując powiązaną usługę.

Szybki Przewodnik: Najczęściej Używane Komendy

# List all listening TCP and UDP ports (modern, recommended)
ss -tuln

# List listening ports with process names and PIDs
ss -tulnp

# List all listening ports using netstat (legacy)
sudo netstat -tulnp

# Check which process is using port 443
ss -tulnp | grep ":443"

# Check open ports with lsof
sudo lsof -i -P -n | grep LISTEN

# Scan local machine for open ports with nmap
sudo nmap -sT localhost

Podsumowanie

Regularne audytowanie otwartych i nasłuchujących portów jest niezbędną częścią administracji serwerem Linux. Narzędzia takie jak netstat i ss zapewniają natychmiastową, szczegółową widoczność tego, które usługi są uruchomione, które porty zajmują i czy w systemie pojawia się coś nieoczekiwanego.

W nowoczesnych środowiskach Linux, ss jest jasnym wyborem — jest szybsze, bardziej zaawansowane i dostępne domyślnie. Jednak netstat pozostaje niezawodnym rozwiązaniem zastępczym dla systemów starszych lub administratorów już zaznajomionych z jego składnią. Uzupełnienie tych narzędzi za pomocą lsof i nmap zapewnia pełny obraz ekspozycji sieciowej serwera.

Niezależnie od tego, czy wdrażasz nowy VPS Hosting, zarządzasz flotą Dedicated Servers, czy zabezpieczasz środowisko Email Hosting, opanowanie audytu portów jest niezbędną umiejętnością, która bezpośrednio przyczynia się do bezpieczeństwa i niezawodności infrastruktury.