Sprawdzanie otwartych portów na Linuxie to podstawowa umiejętność każdego, kto zarządza serwerami, diagnozuje problemy sieciowe lub dba o bezpieczeństwo systemu. Otwarty port to w zasadzie wejście do twojego systemu - jeśli nie wiesz, które drzwi są otwarte, nie możesz ich odpowiednio zabezpieczyć. Niezależnie od tego, czy prowadzisz serwer WWW na Ubuntu, zarządzasz VPS-em, czy szukasz przyczyny problemów z połączeniem - lista otwartych portów daje ci jasny obraz tego, co twój system udostępnia w sieci. Ten przewodnik omawia cztery praktyczne metody, pokazuje jak filtrować wyniki i jak zamykać porty, których nie potrzebujesz.
Najważniejsze informacje:
- Polecenie
ssto nowoczesny i najszybszy sposób na wylistowanie otwartych portów na Linuxie. nmappozwala skanować porty z zewnętrznej perspektywy, pokazując to, co faktycznie widzi potencjalny atakujący.- Użyj
lsof, aby natychmiast zidentyfikować, który proces korzysta z danego portu. - Zamknięcie zbędnych portów za pomocą
ufwlubiptablesto najprostszy sposób na zmniejszenie powierzchni ataku.
Spis treści
- Dlaczego sprawdzanie otwartych portów ma znaczenie na Linuxie
- Metoda 1: polecenie ss (nowoczesna, zalecana)
- Metoda 2: polecenie netstat (starsze, ale wciąż popularne)
- Metoda 3: skanowanie portów nmap (perspektywa zewnętrzna)
- Metoda 4: polecenie lsof (mapowanie procesów na porty)
- Jak filtrować wyniki według portu, TCP lub UDP
- Jak zamknąć lub zablokować port za pomocą ufw lub iptables
- Podsumowanie
- FAQ - Najczęstsze pytania
Dlaczego sprawdzanie otwartych portów ma znaczenie na Linuxie
Każda usługa działająca na twojej maszynie z Linuxem nasłuchuje na jednym lub kilku portach. SSH nasłuchuje na porcie 22, HTTP na porcie 80, HTTPS na porcie 443. Jednak po miesiącach instalowania i usuwania oprogramowania serwery często mają otwarte porty, których nikt świadomie nie skonfigurował. Zapomniany daemon bazy danych nasłuchujący na porcie 5432 bez reguły firewalla to realne zagrożenie, które niejednokrotnie prowadziło do wycieku danych.
Sprawdzanie otwartych portów na Linuxie pomaga ci:
- Sprawdzić, jakie usługi faktycznie działają i są dostępne z zewnątrz.
- Zdiagnozować, dlaczego aplikacja nie może połączyć się z inną usługą.
- Zweryfikować, czy reguły firewalla działają zgodnie z założeniami.
- Przygotować się do audytu bezpieczeństwa lub testu penetracyjnego.
Poniższe metody obejmują zarówno inspekcję lokalną (co raportuje sama maszyna), jak i skanowanie zewnętrzne (co widzi zdalny host). Obie perspektywy mają znaczenie.
Metoda 1: polecenie ss (nowoczesna, zalecana)
Polecenie ss (statystyki socketów) zastąpiło netstat w większości nowoczesnych dystrybucji Linuxa. Jest szybsze, bardziej szczegółowe i wbudowane w pakiet iproute2, który jest domyślnie instalowany na Ubuntu, Debianie, CentOS-ie i Fedorze.
Aby wylistować wszystkie otwarte porty wraz z nazwami procesów, uruchom:
sudo ss -tulnpOpis flag:
-t- pokaż sockety TCP-u- pokaż sockety UDP-l- pokaż tylko sockety w trybie nasłuchiwania-n- wyświetlaj numery portów zamiast nazw usług-p- pokaż proces korzystający z każdego socketu
Konkretny przykład: Na świeżym serwerze Ubuntu z uruchomionym Nginx i PostgreSQL wynik może wyglądać następująco:
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
tcp LISTEN 0 128 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=1234,fd=6))
tcp LISTEN 0 128 127.0.0.1:5432 0.0.0.0:* users:(("postgres",pid=5678,fd=5))
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=910,fd=3))Zwróć uwagę, że PostgreSQL jest powiązany wyłącznie z 127.0.0.1, co oznacza, że nie jest dostępny z zewnątrz. SSH i Nginx są powiązane z 0.0.0.0, czyli przyjmują połączenia z dowolnego adresu IP. Ten jeden wynik mówi ci bardzo wiele o tym, na co jesteś narażony.
Pełną dokumentację wszystkich opcji ss znajdziesz na oficjalnej stronie man polecenia ss.
Metoda 2: polecenie netstat (starsze, ale wciąż popularne)
Polecenie netstat wchodzi w skład starszego pakietu net-tools. W wielu dystrybucjach nie jest już instalowane domyślnie, ale nadal jest powszechnie używane i warto je znać - szczególnie podczas pracy na starszych systemach.
Zainstaluj je, jeśli jest potrzebne:
sudo apt install net-tools # Debian/Ubuntu
sudo yum install net-tools # CentOS/RHELAby wylistować otwarte porty na Linuxie za pomocą netstat:
sudo netstat -tulnpFlagi mają identyczne znaczenie jak w przypadku ss. Format wyjścia jest nieco inny, ale zawiera te same podstawowe informacje: protokół, adres lokalny, port i proces będący właścicielem połączenia.
Jedno praktyczne ograniczenie: na bardzo obciążonych serwerach z tysiącami połączeń netstat może działać zauważalnie wolniej niż ss. W codziennych zadaniach na typowym serwerze różnica ta jest jednak pomijalna.
Metoda 3: skanowanie portów nmap (perspektywa zewnętrzna)
Narzędzia opisane powyżej pokazują to, co twoja maszyna raportuje lokalnie. nmap działa inaczej - skanuje porty przez sieć, symulując to, co widzi zewnętrzny atakujący lub zdalny klient. Ma to kluczowe znaczenie, ponieważ firewall może blokować port, który ss nadal wyświetla jako nasłuchujący.
Instalacja nmap:
sudo apt install nmap # Debian/Ubuntu
sudo yum install nmap # CentOS/RHELSkanowanie serwera z innej maszyny w tej samej sieci:
nmap -sT -p 1-1024 192.168.1.10Aby przeskanować 1000 najczęściej używanych portów z wykrywaniem wersji usług:
nmap -sV 192.168.1.10Flaga -sV próbuje wykryć wersję oprogramowania działającego na każdym otwartym porcie. Przydaje się to do identyfikowania przestarzałych usług wymagających aktualizacji.
Ważne: Uruchamiaj nmap wyłącznie wobec serwerów, które posiadasz lub na których skanowanie masz wyraźne pozwolenie. Skanowanie systemów należących do osób trzecich bez autoryzacji może być nielegalne w twoim kraju.
Jeśli chcesz sprawdzić, czy konkretny port jest dostępny z zewnątrz sieci bez instalowania nmap, nasze bezpłatne narzędzie Port Checker zrobi to natychmiast - bez żadnej konfiguracji.
Metoda 4: polecenie lsof (mapowanie procesów na porty)
Polecenie lsof (lista otwartych plików) traktuje sockety sieciowe jak pliki, co jest zgodne z filozofią Linuxa "wszystko jest plikiem". Jest szczególnie przydatne, gdy chcesz odpowiedzieć na pytanie: "Który proces używa portu 8080?"
Wylistuj wszystkie połączenia sieciowe:
sudo lsof -iZnajdź proces korzystający z konkretnego portu (na przykład portu 3000):
sudo lsof -i :3000Jest to szczególnie przydatne, gdy aplikacja Node.js dewelopera blokuje port i trzeba zidentyfikować oraz zatrzymać proces przed ponownym uruchomieniem usługi.
Jak filtrować wyniki według portu, TCP lub UDP
Surowe wyjście z każdego z tych narzędzi może być obszerne. Oto najużyteczniejsze wzorce filtrowania:
Pokaż tylko nasłuchujące porty TCP (ss):
sudo ss -tlnpPokaż tylko porty UDP (ss):
sudo ss -ulnpSprawdź, czy konkretny port jest otwarty (grep z ss):
sudo ss -tulnp | grep :443Filtrowanie według portu w nmap:
nmap -p 80,443,8080 192.168.1.10Te wzorce pokrywają zdecydowaną większość codziennych potrzeb filtrowania. Jeśli rozwiązujesz problemy z HTTP na porcie 80, zajrzyj do naszego przewodnika rozwiązywania problemów z HTTP na porcie 80.
Jeśli korzystasz z systemu Windows i potrzebujesz podobnego omówienia, sprawdź nasz kompletny przewodnik po sprawdzaniu otwartych portów na Windows 2026.
Jak zamknąć lub zablokować port za pomocą ufw lub iptables
Znalezienie otwartego portu, którego nie potrzebujesz, to dopiero połowa zadania. Oto jak go zamknąć za pomocą dwóch najpopularniejszych narzędzi firewalla na Linuxie.
Używanie ufw (Uncomplicated Firewall) - zalecane dla Ubuntu
Zablokuj ruch przychodzący na porcie 8080:
sudo ufw deny 8080/tcpZezwól tylko na SSH i HTTPS, blokując wszystko inne:
sudo ufw default deny incoming
sudo ufw allow 22/tcp
sudo ufw allow 443/tcp
sudo ufw enableSprawdź aktualny stan firewalla:
sudo ufw status verboseUżywanie iptables - do zaawansowanej kontroli
Odrzuć cały ruch przychodzący na porcie 3306 (MySQL):
sudo iptables -A INPUT -p tcp --dport 3306 -j DROPZapisz reguły, aby przetrwały restart systemu:
sudo iptables-save | sudo tee /etc/iptables/rules.v4Szczegółową dokumentację składni iptables i kolejności reguł znajdziesz w oficjalnej dokumentacji Netfilter.
Wskazówka: Zablokowanie portu za pomocą ufw lub iptables nie zatrzymuje działającej na nim usługi - uniemożliwia jedynie zewnętrznym połączeniom dotarcie do niej. Jeśli chcesz całkowicie zatrzymać usługę, użyj sudo systemctl stop servicename. Aby zapobiec jej uruchamianiu po restarcie, uruchom dodatkowo sudo systemctl disable servicename.
Podsumowanie
Sprawdzanie otwartych portów na Linuxie nie wymaga skomplikowanych narzędzi ani głębokiej wiedzy specjalistycznej. Polecenie ss daje ci szybki i wiarygodny lokalny wgląd w stan systemu. nmap pokazuje, co jest dostępne dla świata zewnętrznego. lsof precyzyjnie wskazuje, który proces jest właścicielem danego portu. A ufw lub iptables pozwala zamknąć wszystko, co nie powinno być dostępne. Regularne wykonywanie tych sprawdzeń - szczególnie po instalacji nowego oprogramowania lub zmianie konfiguracji sieci - to jeden z najprostszych nawyków, które możesz wyrobić, aby utrzymać swoje serwery Linux w bezpieczeństwie. Zacznij od sudo ss -tulnp już teraz i sprawdź, co twój serwer faktycznie udostępnia.
Sprawdź dowolny port na swoim serwerze Linux - natychmiast
Nie jesteś pewien, czy port jest naprawdę dostępny z zewnątrz? Nasze bezpłatne narzędzie Port Checker skanuje twój serwer z zewnętrznej perspektywy w kilka sekund - bez instalacji i konfiguracji.
Wypróbuj nasze bezpłatne narzędzie Port Checker →
FAQ - Najczęstsze pytania
Uruchom sudo ss -tulnp w terminalu. Polecenie to używa nowoczesnego ss do wyświetlenia wszystkich nasłuchujących portów TCP i UDP wraz z nazwą procesu. Jest szybsze niż netstat i dostępne domyślnie w większości aktualnych dystrybucji Linuxa, w tym Ubuntu i Debianie.
Oba polecenia pokazują otwarte porty i informacje o socketach, ale ss jest nowoczesnym następnikiem netstat. Odczytuje dane bezpośrednio z jądra systemu, dzięki czemu jest szybsze i dokładniejsze na obciążonych systemach. netstat wymaga osobnego pakietu net-tools, który nie jest już domyślnie instalowany w wielu dystrybucjach.
Użyj nmap -p PORT TARGET_IP z innej maszyny w sieci. Aby szybko sprawdzić port z zewnątrz bez instalowania czegokolwiek, skorzystaj z webowego narzędzia do sprawdzania portów. Takie podejście testuje, czy port jest dostępny z zewnątrz, uwzględniając reguły firewalla, których lokalne narzędzia takie jak ss nie odzwierciedlają.
Użyj sudo lsof -i :PORT lub sudo ss -tulnp | grep :PORT. Oba polecenia wyświetlają nazwę procesu i PID powiązany z danym portem. Metoda z lsof jest szczególnie czytelna, ponieważ wypisuje polecenie, PID i użytkownika w przejrzystym formacie.
Nie. Zablokowanie portu za pomocą ufw lub iptables uniemożliwia zewnętrznym połączeniom dotarcie do usługi, ale sama usługa nadal działa. Aby ją całkowicie zatrzymać, użyj sudo systemctl stop servicename. Aby trwale ją wyłączyć, uruchom również sudo systemctl disable servicename, co zapobiegnie jej uruchamianiu po restarcie systemu.