Jak sprawdzić, jakie porty mam otwarte na serwerze
Spis treści
Zacznę od tego, czego tu nie będzie. Nie będzie nmapa.
Wiem, każdy poradnik o portach zaczyna się właśnie od niego. Tyle że nmap to skaner, który sprawdza z zewnątrz, co jest otwarte na danej maszynie, a skanowanie portów jest na Mikrusie zakazane. Również wtedy, gdy celem jest Twój własny serwer. Kończy się to banem, i to wcale nie przez czyjąś złośliwość: dla sieci taki skan wygląda kropka w kropkę jak przygotowania do ataku, więc automaty reagują od razu.
Na szczęście do sprawdzenia własnej maszyny od środka nmap jest zbędny. Wystarczą narzędzia, które i tak masz w systemie.
Co nasłuchuje na serwerze (ss)#
ss to młodszy brat netstat, a dziś po prostu standard. Wszystkie nasłuchujące porty TCP razem z procesami, które je trzymają:
sudo ss -tlnp
-t to TCP, -l - tylko porty nasłuchujące, -n - gołe numery zamiast zgadywania nazw usług, a -p dokłada nazwę i PID procesu. Ta ostatnia wymaga roota. Stąd sudo.
To samo dla UDP:
sudo ss -ulnp
Chcesz zobaczyć także aktywne połączenia? Wyrzuć -l:
sudo ss -tnp
Który proces trzyma dany port (lsof)#
ss sprawdza się świetnie, dopóki nie zapytasz o coś bardziej szczegółowego, na przykład o wszystkie połączenia jednego konkretnego procesu. Wtedy wchodzi lsof:
sudo lsof -i -P -n
-i- tylko ruch sieciowy. Bez tej flagilsofwypluje każdy otwarty plik w systemie i utoniesz.-P- numery portów zamiast nazw.-n- bez zamiany adresów IP na nazwy hostów, czyli szybciej.
Konkretny port, powiedzmy 3000:
sudo lsof -i :3000
Sprawdzanie z zewnątrz, bez skanera#
Port otwarty lokalnie to jedno. Czy widać go z internetu, to zupełnie inna para kaloszy.
Jak to sprawdzić bez skanera? Najprościej na świecie: spróbuj się połączyć. Z telefonu na danych komórkowych, z drugiego komputera, skądkolwiek spoza serwera:
curl -v telnet://adres-twojego-serwera:20112
Established connection to oznacza, że port jest osiągalny z zewnątrz.
Connection refused albo głucha cisza aż do timeoutu - port zablokowany albo nikt na nim nie słucha.
Różnica względem skanera jest zasadnicza. Pukasz do jednych, konkretnych drzwi, które sam wskazałeś, zamiast obchodzić cały budynek i szarpać za każdą klamkę. Nikt tego nie weźmie za rekonesans.
Porty a firewall#
Usługa jest w ss, a z zewnątrz ani widu, ani słychu? Bardzo możliwe, że zatrzymuje ją UFW albo iptables:
sudo ufw status
Konfiguracji firewalla poświęciliśmy osobne wpisy, o UFW i o iptables.
Jest jeszcze jedna mikrusowa osobliwość. Numery portów widoczne z zewnątrz nie zawsze pokrywają się z tymi, na których usługa naprawdę nasłuchuje w kontenerze. SSH słucha na 22, a Ty łączysz się na 10000+ID. ss i lsof pokazują zawsze port wewnętrzny.
Najczęstsze błędy#
Port widać w ss, a z zewnątrz ani drgnie. Po pierwsze firewall. Po drugie adres nasłuchu, i tu warto się przyjrzeć uważnie: 0.0.0.0:port albo *:port to wszystkie interfejsy, i o to chodzi, natomiast 127.0.0.1:port oznacza, że usługa rozmawia wyłącznie sama ze sobą, czyli z tym samym serwerem.
Port zewnętrzny pomylony z wewnętrznym. Na Mikrusie to chyba najczęstsza pułapka. Patrz akapit wyżej.
ss -tlnp nie pokazuje procesów. Zabrakło sudo. Bez uprawnień roota kolumna z procesami zostaje pusta.
Jeśli szukasz miejsca dla swoich developerskich potrzeb, to zapoznaj się z ofertą serwerów VPS od Mikrusa.
SerweryVPS już od 35 zł rocznie.
Dowiedz się więcej