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ń.
| Termin | Opis |
|---|---|
| Otwarty port | Port, na którym aplikacja aktywnie nasłuchuje przychodzących połączeń |
| Port nasłuchujący | Port 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-toolsCentOS / RHEL / AlmaLinux / Rocky Linux:
sudo yum install net-toolsUż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 -tulnPodział flag:
| Flaga | Opis |
|---|---|
-t | Pokaż porty TCP |
-u | Pokaż porty UDP |
-l | Pokaż tylko nasłuchujące porty |
-n | Wyś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.0oznacza, ż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.
LISTENwskazuje, ż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 -tulnpSprawdzanie 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 -tulnWyjaśnienie flag:
| Flaga | Opis |
|---|---|
-t | Pokaż gniazda TCP |
-u | Pokaż gniazda UDP |
-l | Pokaż tylko nasłuchujące gniazda |
-n | Wyś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 -tlWyświetl tylko nasłuchujące porty UDP
ss -ulWyświetl nazwy procesów i identyfikatory PID
Aby zidentyfikować dokładnie, który proces używa określonego portu, użyj flagi -p:
ss -tulnpTo 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 establishedWyświetl statystyki podsumowania
ss -sZapewnia 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ążonych | Znacznie szybsza |
| Dostępność domyślna | Wymaga pakietu net-tools | Preinstalowana w nowoczesnych dystrybucjach |
| Opcje filtrowania | Podstawowe (wymagany grep) | Zaawansowane wbudowane filtry |
| Informacje o procesach | Dostępne z -p | Dostępne z -p |
| Szczegółowość wyników | Standardowa | Bardziej szczegółowe informacje o gniazdach |
| Rekomendowane dla | Systemy starsze, znajomość narzędzia | Nowoczesne środowiska Linux |
Kiedy używać netstat
- Na starszych systemach Linux, gdzie
ssnie jest dostępny - Pracując ze skryptami lub dokumentacją napisaną wokół składni
netstat - Do szybkich sprawdzeń na systemach, gdzie
net-toolsjest 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 :80Aby sprawdzić wszystkie nasłuchujące porty:
sudo lsof -i -P -n | grep LISTENPrzykł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/RHELSkanuj wszystkie porty TCP na maszynie lokalnej:
sudo nmap -sT localhostSkanuj otwarte porty na określonym adresie IP:
sudo nmap -sV 192.168.1.100Flaga -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:
- Wylistuj wszystkie nasłuchujące porty z informacjami o procesach:
ss -tulnp- Porównaj każdy port z oczekiwanymi usługami. Jeśli zobaczysz nieznany proces na nieoczekiwanym porcie, zbadaj to natychmiast.
- 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ę z127.0.0.1, a nie0.0.0.0.
- Zweryfikuj reguły zapory za pomocą
iptables -L -nlubufw status verbose, aby upewnić się, że tylko zamierzone porty są eksponowane zewnętrznie.
- Użyj
nmapz hosta zewnętrznego, aby potwierdzić, które porty są faktycznie dostępne z internetu, ponieważ reguły zapory mogą różnić się od tego, cossraportuje lokalnie.
- 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 localhostPodsumowanie
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.
na wszystkich usługach hostingowych