Jeśli nie widzisz, co dzieje się w Twojej sieci, to znaczy, że nie Ty ją kontrolujesz.

– Stare przysłowie adminów

W poprzednim odcinku skanowaliśmy sieć Nmapem, patrząc na nią “z zewnątrz” – tak jak widziałby ją atakujący (lub wścibski sąsiad). Dziś zmieniamy perspektywę na “host-based”. Zanim zaczniesz martwić się hakerami z Chin, warto sprawdzić, czy Twój własny serwer nie kopie właśnie kryptowalut dla kogoś z Rosji.

Dlaczego musisz to umieć?

W systemach Linux (i nie tylko) wszystko jest plikiem – także połączenia sieciowe. Umiejętność szybkiego sprawdzenia:

  1. Co nasłuchuje? (jakie “drzwi” są otwarte)
  2. Kto jest połączony? (kto właśnie przez te drzwi wszedł)
  3. Dokąd wychodzą pakiety? (czy Twój serwer nie “dzwoni do domu” atakującego)

…to absolutny fundament pracy administratora i specjalisty security.

Netstat - stary wyjadacz

netstat (Network Statistics) to legenda. Przez dekady był podstawowym narzędziem do sprawdzania połączeń, tablic routingu, statystyk interfejsów i połączeń masquerade. Choć oficjalnie uznawany za przestarzały (deprecated) i zastępowany przez pakiet iproute2, wciąż znajdziesz go na milionach serwerów, w starych skryptach i na egzaminach certyfikacyjnych.

Instalacja (jeśli go brakuje)

W nowoczesnych dystrybucjach netstat nie jest instalowany domyślnie. Znajdziesz go w pakiecie net-tools.

Debian / Ubuntu / Kali

sudo apt install net-tools

RHEL / CentOS / Fedora

sudo dnf install net-tools

Święta trójca (a właściwie piątka) flag

Jeśli masz zapamiętać tylko jedną komendę z tego artykułu, niech to będzie to:

sudo netstat -tulpn

Rozbijmy to na atomy:

  • -t (tcp) – pokaż tylko połączenia TCP (najczęstsze usługi)
  • -u (udp) – pokaż tylko połączenia UDP (np. DNS, DHCP)
  • -l (listening) – pokaż tylko porty nasłuchujące (serwery czekające na połączenie)
  • -p (program) – pokaż nazwę procesu i jego PID (kto otworzył ten port?)
  • -n (numeric) – nie zamieniaj adresów IP na nazwy (szybciej i czytelniej, np. 8.8.8.8:53 zamiast google-public-dns-a...)

UWAGA: Wymagane uprawnienia root/sudo!

Flaga -p jest kluczowa dla bezpieczeństwa, bo mówi nam JAKI proces otworzył port. Jednak system Linux nie pokaże tej informacji zwykłemu użytkownikowi, jeśli proces należy do innego użytkownika (np. roota). Dlatego zawsze używaj sudo przy audycie.

Inne przydatne zastosowania Netstata

Tablica routingu

Zamiast komendy route:

netstat -rn

(-r jak route, -n żeby nie rozwiązywać nazw)

Statystyki interfejsów

Szybki podgląd błędów transmisji (RX-ERR/TX-ERR):

netstat -i

SS - młody wilk (Socket Statistics)

Umarł król, niech żyje król. ss to nowoczesny następca netstata, część pakietu iproute2 (tam gdzie mieszka komenda ip).

Dlaczego warto się przestawić?

  1. Szybkośćss czerpie informacje bezpośrednio z jądra systemu (Netlink), co przy tysiącach połączeń (np. na obciążonym serwerze WWW) jest błyskawiczne. Netstat czyta pliki /proc, co bywa wolne.
  2. Brak obcinania nazw – netstat ma tendencję do ucinania długich nazw procesów.
  3. Potężne filtry – składnia ss pozwala na zapytania, o których w netstat można tylko pomarzyć.

Podstawowa komenda? To samo co w netstat! Twórcy zadbali o pamięć mięśniową administratorów:

sudo ss -tulpn

Zaawansowane filtrowanie w SS

To tutaj ss pokazuje pazury. Zamiast grepować wyniki, zapytaj o to, co Cię interesuje.

Pokaż tylko nawiązane połączenia SSH

ss -t state established '( dport = :ssh or sport = :ssh )'

Znajdź wszystkie połączenia do konkretnego IP

Przydatne przy śledzeniu podejrzanych połączeń:

ss -nt dst 192.168.1.15

Pokaż procesy używające portów poniżej 1024 (uprzywilejowanych)

ss -t -l -n 'sport < :1024'

Statystyki pamięci gniazd

Jeśli debugujesz wycieki pamięci lub problemy z wydajnością sieci:

ss -m

Scenariusze Blue Team (Analiza Bezpieczeństwa)

Jako “bezpiecznik” szukasz anomalii. Oto trzy klasyczne scenariusze, które rozwiążesz używając ss lub netstat.

1. Wykrywanie nieautoryzowanych usług (Shadow IT)

Sprawdzasz serwer i widzisz otwarty port 8080, o którym nic nie wiesz.

sudo ss -lptn 'sport = :8080'

Wynik może pokazać np. python3 lub java - dzięki PID (Process ID) możesz dalej sprawdzić co to za proces (komendą ps -ef | grep PID).

2. Wykrywanie Reverse Shell

Reverse Shell to popularna technika ataku, gdzie to zainfekowany serwer łączy się DO atakującego (omijając firewall przychodzący). Szukamy połączeń wychodzących (ESTABLISHED) od procesów powłoki (bash, sh, zsh, nc).

sudo ss -tp | grep -E 'bash|sh|nc|python'

Jeśli widzisz, że proces bash ma nawiązane połączenie TCP do nieznanego adresu IP na porcie np. 4444 – masz problem.

3. “Kto zjada mi łącze?”

Serwer “muli”? Sprawdź top talkerów.

ss -nt state established

Dzięki flagom -o (timer) możesz też zobaczyć keep-alive time.


Porównanie: Netstat vs SS

Cecha Netstat SS (Socket Statistics)
Pakiet net-tools (legacy) iproute2 (modern)
Źródło danych /proc filesystem Netlink API (Kernel)
Prędkość Wolny przy wielu połączeniach Błyskawiczny
Filtrowanie Ograniczone (wymaga grep) Wbudowane, zaawansowane filtry
Status Deprecated Standard

Przydatne zasoby

Manpage dla netstat

Podsumowanie

Nieważne czy jesteś fanem klasyki, czy nowoczesności – musisz wiedzieć, co dzieje się w Twoim własnym systemie. netstat to historia, którą warto znać, ale ss to narzędzie, którego powinieneś używać na co dzień.

Kluczowe komendy do zapamiętania:

  • ss -tulpn – pokaż wszystko co nasłuchuje
  • ss -tun – pokaż kto rozmawia (połączenia aktywne)
  • netstat -rn – pokaż tablicę routingu