15%

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
25.12.2024

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ń.

TerminOpis
Otwarty portPort, na którym aplikacja aktywnie nasłuchuje przychodzących połączeń
Nasłuchujący portPort 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-tools

CentOS / RHEL / AlmaLinux / Rocky Linux:

sudo yum install net-tools

Uż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 -tuln

Rozbicie 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 jest jeszcze nawiązane.
  • Stan — Stan połączenia. LISTEN wskazuje, ż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 -tulnp

Sprawdzanie 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 -tuln

Rozbicie flag:

FlagaOpis
-tPokaż gniazda TCP
-uPokaż gniazda UDP
-lPokaż tylko nasłuchujące gniazda
-nWyś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 -tl

Pokaż tylko nasłuchujące porty UDP

ss -ul

Wyświetl nazwy procesów i PID

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

ss -tulnp

To 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 established

Pokaż statystyki podsumowania

ss -s

To 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 systemachZnacznie szybsza
Dostępność domyślnaWymaga pakietu net-toolsPreinstalowana na nowoczesnych dystrybucjach
Opcje filtrowaniaPodstawowe (wymagane grep)Zaawansowane wbudowane filtry
Informacje o procesieDostępne z -pDostępne z -p
Szczegóły wyjściaStandardoweBardziej szczegółowe informacje o gnieździe
Rekomendowane dlaStarsze systemy, znajomośćNowoczesne środowiska Linux

Kiedy używać netstat

  • Na starszych systemach Linux, gdzie ss nie jest dostępny
  • Podczas pracy 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 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 :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:

###PPT_

15%

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