Chcesz dowiedzieć się, które porty są otwarte na komputerze z systemem Linux? Po pierwsze, ważne wyjaśnienie: „otwarty” port po stronie serwera często oznacza… słucham lokalnieNie dowodzi to jeszcze, że można uzyskać do niego dostęp z Internetu, ani że zapora sieciowa pozwala na jego przejście.
W moim przypadku zawsze sprawdzam dwa kroki: po pierwsze, co nasłuchuje na serwerze SS, następnie usługa lub proces za portem. netstat Nadal jest znany, ale w wielu współczesnych dystrybucjach nie jest już domyślnie instalowany. Najlepiej stosować się do aktualnych, sprawdzonych praktyk.

Polecenie do użycia dzisiaj: ss
W najnowszym Linuksie SS jest preferowanym poleceniem. Jest częścią stosu iproute2 i bardzo często zastępuje netstat w celu sprawdzenia gniazd sieciowych.
sudo ss -lntup
Opcje są ważne:
-Lwyświetla porty nasłuchujące.-Nunika rozwiązywania nazw DNS i zachowuje numerację portów.-Tograniczone do połączeń TCP.-tydodaje UDP.-Pwyświetla powiązany proces, jeśli posiadasz niezbędne uprawnienia.
Bez sudoCzasami zobaczysz port, ale nie zawsze program, który za nim stoi. Do szybkiego audytu serwera wolę uruchomić polecenie z uprawnieniami administratora i odczytać kolumnę bezpośrednio. Proces.
Przeczytaj wynik bez popełniania błędu
Typowy wynik wygląda następująco:
Stan Odbiór Q Wysyłanie Q Adres lokalny:Port Adres równorzędny:Port Proces
NASŁUCHUJ 0 128 0.0.0.0:22 0.0.0.0:* użytkownicy:(("sshd",pid=812,fd=3))
NASŁUCHUJ 0 511 127.0.0.1:3306 0.0.0.0:* użytkownicy:(("mariadbd",pid=1044,fd=21))
Kolumna, na którą należy zwrócić uwagę w pierwszej kolejności to Adres lokalny:PortJeśli widzisz 0.0.0.0:22Usługa nasłuchuje na wszystkich interfejsach IPv4. Jeśli widzisz 127.0.0.1:3306Usługa nasłuchuje tylko lokalnie. To nie jest to samo ryzyko.
W przypadku protokołu IPv6 można również zobaczyć Lub Powtarzam, nie czytaj zbyt szybko: może oznaczać szerokie nasłuchiwanie po stronie IPv6, podczas gdy pozostaje lokalny.
Filtruj określony port
Jeśli szukasz tylko SSH, HTTP lub bazy danych, nie ma potrzeby skanowania całego wyniku. Filtruj za pomocą grep lub z filtrami SS.
sudo ss -lntup | grep ':22'
sudo ss -lntup | grep ':80'
sudo ss -lntup | grep ':443'
Aby uzyskać dane wyjściowe bardziej skoncentrowane na protokole TCP, możesz użyć:
sudo ss -ltnp '(sport = :22)'
Często trzymam wersję z grep Kiedy się spieszę, bo rozmawia ze wszystkimi. Aby uzyskać czysty skrypt lub diagnozę, natywne filtry SS unikaj wyników fałszywie dodatnich.
A co w tym wszystkim ma netstat?
netstat Nie zniknęło z pamięci administratorów, ale pochodzi z paczki narzędzia sieciowe, często nieobecne w Debianie, Ubuntu lub instalacjach minimalnych. Jeśli natkniesz się na dokumentację, która pyta netstat A jeśli polecenie jest niedostępne, nie musi to oznaczać błędu po stronie serwera.
netstat -lntup
Wynik jest podobny w swojej koncepcji: protokoły, adresy lokalne, porty, PID i nazwa programu. Ale jeśli potrzebujesz zainstalować pakiet tylko po to, by go użyć, netstatNajpierw zadaj sobie pytanie, czy SS To nie wystarczy. Na nowszym serwerze moja odpowiedź brzmi prawie zawsze „tak”.
Strona podręcznika SS szczegółowo opisuje dostępne filtry. To z netstat Nadal będzie przydatne, jeśli nadal będziesz używać starych skryptów.
Znajdź proces stojący za portem
Gdy port Cię zaskoczy, nie zamykaj go losowo. Najpierw zidentyfikuj proces, a następnie, jeśli to konieczne, powiązaną usługę systemd.
sudo ss -lntup
sudo lsof -iTCP -sTCP:LISTEN -P -n
lsof jest przydatny, gdy chcesz połączyć port, PID i plik binarny. Z -PPorty pozostają w liczbach. Z -N, unikniesz rozwiązywania nazw DNS, które spowalnia lub zakłóca odczyt.
Jeśli posiadasz PID, prześledź go do usługi:
ps -p 812 -o pid,ppid,użytkownik,cmd
status systemctl ssh
W przypadku serwera obsługującego systemd, przewodnik na ten temat Usługi Linux i polecenia systemctl Ten krok został pomyślnie ukończony. Celem jest ustalenie, czy masz oczekiwaną usługę, kontener, starego, zapomnianego demona, czy ręcznie uruchomiony proces.
Port nasłuchujący nie oznacza koniecznie portu narażonego
To klasyczna pułapka. Jeśli SS Jeśli port jest wyświetlany jako nasłuchujący, oznacza to, że program akceptuje połączenia na komputerze. Nie wiesz jeszcze, czy ten port przechodzi przez lokalną zaporę sieciową, reguły chmury, NAT czy router.
Aby je przejrzeć, sprawdź co najmniej:
- Adres odsłuchowy:
127.0.0.1,0.0.0.0, prywatny adres IP, publiczny adres IP; - obsługa portu;
- na przykład lokalna zapora sieciowa
uf,nftablesLubiptables; - zasady bezpieczeństwa po stronie hostingu lub chmury;
- test z innej maszyny, gdy trzeba zweryfikować rzeczywistą ekspozycję.
sudo ufw status verbose
zestaw reguł listy nft sudo
sudo iptables -S
Nie uruchamiaj tych poleceń w skrypcie automatycznego czyszczenia. Przeczytaj najpierw. Na serwerze zdalnym, błędna reguła zapory sieciowej może zerwać połączenie SSH szybciej niż oczekiwano. Jeśli połączenie SSH już nie odpowiada, użyj metody opisanej powyżej. Ponowna instalacja i weryfikacja SSH w systemie Ubuntu.
Moja szybka kontrola przed dotknięciem zapory sieciowej
sudo ss -lntupaby zobaczyć nasłuchujące porty TCP i UDP.sudo ss -ltnpjeśli chcę tylko TCP.sudo lsof -iTCP -sTCP:LISTEN -P -naby potwierdzić proces.systemctl status nazwa-usługiaby sprawdzić usługę, która za tym stoi.journalctl -u nazwa-usługi -b --no-pagerjeśli usługa nasłuchuje, chociaż nie powinna.- Test zewnętrzny można przeprowadzić dopiero po zrozumieniu lokalnego źródła dźwięku.
Jeśli odkryjesz nieoczekiwany port, nie przerywaj procesu od razu. Zanotuj port, PID i usługę, a następnie przejrzyj logi. (Zobacz poradnik…) journalctl przy ostatnim uruchomieniu pomoże Ci ustalić, czy usługa uruchamia się automatycznie, czy też wynika to z niedawnej akcji.
Mówiąc prościej: SS Przede wszystkim, netstat tylko jeśli musisz zachować stare nawyki i nigdy nie modyfikować zapory przed zidentyfikowaniem usługi za portem.