Jak wyświetlić listę otwartych portów w systemie Linux?

How List Open Ports Linux



W sieci port jest interesującą funkcją. Jest to sposób, w jaki ruch sieciowy identyfikuje docelową aplikację lub usługę. Każdy proces/usługa otrzymuje swój unikalny port. Port będzie zawsze powiązany z adresem IP hosta wraz z protokołem.

To moja ulubiona metafora opisująca, czym jest port. Wyobraź sobie statek załadowany ładunkiem, który popłynie do odległego lądu. Jakie informacje są potrzebne do prawidłowego dotarcia do celu? Dla uproszczenia załóżmy, że potrzebuje kraju (adresu IP) i Port statek zadokuje.







W tym przewodniku sprawdź, jak wyświetlić listę otwartych portów w systemie Linux.



Porty w Linuksie

Porty działają jako punkt końcowy komunikacji. Jest to liczba 16-bitowa (od 0 do 65535 dziesiętnie). Chociaż zakres jest duży, dla ułatwienia użytkowania porty są podzielone na trzy kategorie. Każda kategoria jest oznaczona jako zakres wartości portu:



  • 0 do 1023: Są to dobrze znane porty, zwane również portami systemowymi, które są zarezerwowane dla procesów systemowych oferujących szeroką gamę usług sieciowych. Aby połączyć się z dobrze znanym portem, proces musi mieć uprawnienia superużytkownika.
  • 1024 do 49151: Są to porty zarejestrowane, zwane również portami użytkownika, które są wyznaczone przez IANA dla określonych usług. Na żądanie proces może mieć do nich dostęp. W przypadku większości systemów korzystanie z tych portów nie wymaga żadnych uprawnień administratora.
  • 49152 do 65535: Są to porty dynamiczne, znane również jako porty prywatne. Tych portów nie można zarejestrować w IANA. Porty te są otwarte do użytku dla usług prywatnych lub niestandardowych, a także mogą być automatycznie przydzielane jako porty efemeryczne (krótkotrwałe porty używane przez IP).

W Linuksie istnieje wiele sposobów sprawdzania otwartych portów. Domyślnie każdy port pozostanie zamknięty, chyba że aplikacja go używa. Jeśli port jest otwarty, musi być przypisany do usługi/procesu.





Wyświetl listę otwartych portów

Łatwiej jest zidentyfikować, które porty są w użyciu, niż które porty są otwarte. Dlatego w poniższej sekcji zostaną przedstawione metody listy wszystkich aktualnie używanych portów. W systemie Linux dostępnych jest wiele narzędzi do tego zadania. Większość z nich jest wbudowana w każdą dystrybucję Linuksa.

Dowiedzenie się, które porty są aktualnie otwarte, może być przydatne w różnych scenariuszach. Istnieje możliwość skonfigurowania dedykowanego portu dla określonej aplikacji. Otwarty port może również stanowić silną oznakę włamania do sieci.



Poniższe metody są demonstrowane w systemie Ubuntu 20.04.1 LTS.

Lista protokołów i otwartych portów z /etc/services

Plik /etc/services zawiera informacje o aktualnie uruchomionych usługach. To duży plik, więc gotowy na przytłoczenie.

$Kot /itp/usługi| mniej

Lista otwartych portów za pomocą netstat

Narzędzie netstat to narzędzie do wyświetlania połączeń sieciowych dla TCP, tablic routingu i różnych interfejsów sieciowych. Oferuje również statystyki protokołów sieciowych. Używając netstat, możemy wyświetlić listę wszystkich otwartych portów systemu.

Uruchom następujące polecenie netstat:

$netstat -atu

Zróbmy szybki podział wszystkich flag, których użyliśmy w tym poleceniu.

  • do : Mówi netstatowi, aby pokazał wszystkie gniazda
  • T : Mówi netstatowi, aby wyświetlał porty TCP
  • ty : Mówi netstatowi, aby wyświetlał porty UDP

Oto kolejna odmiana polecenia netstat:

$netstat -Intu

W poleceniu zastosowano dwie nowe flagi. Co mieli na myśli?

  • ten : Mówi netstatowi, aby wypisał tylko gniazda nasłuchowe
  • n : Mówi netstatowi, aby pokazał numer portu

Aby wyświetlić PID procesu korzystającego z portu, użyj flagi -p:

$netstat -Intup

Lista otwartych portów za pomocą ss

Narzędzie ss to narzędzie do badania gniazd. Jego użycie jest podobne do netstatu.

Aby wyświetlić listę otwartych portów, uruchom następujące polecenie ss:

$SS-Intu

Flagi są podobne do netstat. Funkcje, które opisują, są również dość podobne.

  • ten : Nakazuje ss wyświetlić gniazda nasłuchowe
  • n : Mówi ss, aby nie próbował rozwiązywać nazw usług
  • T : Nakazuje ss wyświetlić gniazda TCP
  • ty : Nakazuje ss wyświetlić gniazda UDP

Lista otwartych portów za pomocą lsof

Polecenie lsof służy do wylistowania otwartych plików. Jednak może być również używany do wyświetlania otwartych portów.

Uruchom następującą komendę lsof:

$lsof-i

Aby uzyskać otwarte porty określonego protokołu (TCP, UDP itp.), a następnie zdefiniuj je po fladze -i, użyj:

$lsof-i <protokół>

Lista otwartych portów za pomocą nmap

Narzędzie nmap jest potężnym narzędziem do eksploracji sieci i skanowania bezpieczeństwa/portów. Może zgłaszać wszystkie otwarte porty w systemie.

Aby wyświetlić listę otwartych portów TCP, uruchom następujące polecenie nmap. Tutaj adres IP to komputer hosta:

$sudo nmap -NS -P-Lokalny Gospodarz

Tutaj są dwie części argumentu polecenia.

  • -NS : Ta sekcja mówi nmapowi, aby skanował w poszukiwaniu portów TCP.
  • -P- : Nakazuje nmapowi skanowanie w poszukiwaniu wszystkich 65535 portów. Jeśli nie jest używany, nmap domyślnie skanuje tylko 1000 portów.

Jeśli chcesz wyświetlić listę otwartych portów UDP, uruchom następujące polecenie nmap:

$sudo nmap -jego -P-Lokalny Gospodarz

Aby uzyskać otwarte porty TCP i UDP, użyj następującego polecenia:

$sudo nmap -n -PN -NS -jego -P-Lokalny Gospodarz

Lista otwartych portów za pomocą netcat

Narzędzie netcat to narzędzie wiersza poleceń do odczytywania i zapisywania danych w połączeniach sieciowych za pośrednictwem protokołów TCP i UDP. To narzędzie może być również używane do wyliczania otwartych portów. Może wykonywać testy na określonym porcie lub szeregu portów.

Następujące polecenie netcat przeskanuje port od 1 do 1000. Polecenie netcat domyślnie wykona skanowanie na protokole TCP:

$nc-z -vLokalny Gospodarz1-1000

Można go również rozszerzyć na całą listę możliwych portów:

$nc-z -vLokalny Gospodarz1-65535

Zróbmy szybki podział flag.

  • z : Nakazuje netcatowi skanowanie tylko w poszukiwaniu otwartych portów bez wysyłania jakichkolwiek danych
  • v : Mówi netcatowi, aby działał w trybie gadatliwym

Aby uzyskać tylko otwarte porty z tej listy, przefiltruj dane wyjściowe za pomocą grep dla terminu pomyślnie.

$nc-z -vLokalny Gospodarz0-65535 2> &1 | chwytudało się

Jeśli chcesz wykonać skanowanie za pomocą protokołu UDP, dodaj flagę -u.

$nc-z -v -uLokalny Gospodarz0-65535 2> &1 | chwytudało się

Końcowe przemyślenia

Jak pokazano, istnieje mnóstwo sposobów skanowania w poszukiwaniu otwartych portów w systemie Linux. Proponuję wypróbować wszystkie metody, zanim zdecydujesz, którą z nich opanować. Jeśli regularnie korzystasz z określonego narzędzia, takiego jak netcat lub nmap, najbardziej korzystne będzie opanowanie powiązanych z nim metod.

Życzymy miłego korzystania z komputera!