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, zrozumienie dokładnie, 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 korzystania z poleceń netstat i ss do sprawdzania 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 ma znaczenie
Każdy otwarty port na twoim serwerze reprezentuje potencjalny punkt wejścia. Usługi, które są błędnie skonfigurowane, nieaktualne lub po prostu zapomniane, mogą narazić twój system na eksploatację. Regularne audytowanie nasłuchujących portów pozwala ci:
- Zidentyfikować nieautoryzowane usługi działające na nieoczekiwanych portach
- Wykryć próby włamań lub skompromitowane procesy
- Zweryfikować reguły zapory działają zgodnie z przeznaczeniem
- Potwierdzić, że nowo wdrożone aplikacje wiążą się z poprawnymi 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 jednocześnie działają wiele usług.
Zrozumienie portów i ich typów
Przed przystąpieniem do narzędzi ważne jest zrozumienie terminologii, którą spotkasz w wynikach poleceń.
| Termin | Opis |
|---|---|
| Otwarty port | Port, na którym aplikacja aktywnie nasłuchuje przychodzących połączeń |
| Nasłuchujący port | Port przywiązany do usługi, 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
Co to jest netstat?
netstat (statystyka sieci) to klasyczne narzędzie wiersza poleceń, które dostarcza szczegółowych informacji o połączeniach sieciowych, tabelach routingu, statystykach interfejsów i nasłuchujących portach. Chociaż zostało oficjalnie wycofane na rzecz ss w nowoczesnych dystrybucjach, pozostaje szeroko używane i wciąż 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 na nowoczesnych dystrybucjach Linux.
Debian / Ubuntu:
sudo apt install net-toolsCentOS / RHEL / AlmaLinux / Rocky Linux:
sudo yum install net-toolsUżywanie netstat do sprawdzania 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 -tulnRozbicie 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 jest jeszcze nawiązane. - Stan — Stan połączenia.
LISTENwskazuje, że port jest otwarty i czeka na przychodzące połączenia.
Filtrowanie określonych portów za pomocą netstat
Możesz przesłać 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 SSL Certificates:
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 gniazda) to nowoczesny zamiennik dla netstat. Jest szybszy, bardziej wydajny i dostarcza bogatsze wyjście — szczególnie na systemach z dużą liczbą jednoczesnych połączeń. Polecenie ss jest domyślnie zawarte w 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 odzwierciedla składnię netstat, co czyni przejście prostym:
ss -tulnRozbicie 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 wyjście
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 wykraczają daleko poza to, co może zapewnić netstat.
Pokaż tylko nasłuchujące porty TCP
ss -tlPokaż tylko nasłuchujące porty UDP
ss -ulWyświetl nazwy procesów i PID
Aby zidentyfikować dokładnie, który proces używa określonego portu, użyj flagi -p:
ss -tulnpTo jest jedno z najbardziej użytecznych poleceń do rozwiązywania problemów — pokazuje nazwę procesu i PID obok każdego nasłuchującego gniazda, czyniąc natychmiast jasnym, 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"Pokaż wszystkie nawiązane połączenia TCP
ss -tn state establishedPokaż statystyki podsumowania
ss -sTo dostarcza szybkiego podsumowania całkowitych gniazd według typu i stanu — przydatne do wykrywania niezwykłych wolumenów połączeń.
netstat vs. ss: Bezpośrednie porównanie
| Funkcja | `netstat` | `ss` |
|---|---|---|
| Wydajność | Wolniejsza na zajętych systemach | Znacznie szybsza |
| Dostępność domyślna | Wymaga pakietu net-tools | Preinstalowana na nowoczesnych dystrybucjach |
| Opcje filtrowania | Podstawowe (wymagane grep) | Zaawansowane wbudowane filtry |
| Informacje o procesie | Dostępne z -p | Dostępne z -p |
| Szczegóły wyjścia | Standardowe | Bardziej szczegółowe informacje o gnieździe |
| Rekomendowane dla | Starsze systemy, znajomość | Nowoczesne środowiska Linux |
Kiedy używać netstat
- Na starszych systemach Linux, gdzie
ssnie jest dostępny - Podczas pracy 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 szybszego wyjścia na serwerach o dużym ruchu
- Do zaawansowanego filtrowania i szczegółowej analizy gniazda
Dodatkowe narzędzia do audytu portów
Poza netstat i ss, kilka innych narzędzi jest cenne do dokładnego audytu portów.
Używanie lsof
lsof (lista otwartych plików) traktuje gniazda sieciowe jako pliki, czyniąc to kolejnym potężnym sposobem na zidentyfikowanie, który proces używa danego portu.
Aby sprawdzić, który proces jest przywiązany do portu 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:
###PPT_
