Jak sprawdzić, czy port TCP lub UDP jest otwarty czy zamknięty w systemie Linux

Wiedza o tym, czy port TCP lub UDP jest otwarty, czy zamknięty, jest podstawowym zadaniem każdego administratora systemu i sieci. Często ważne jest, aby wiedzieć, czy porty są otwarte, aby nawiązać komunikację z usługą, która nasłuchuje, ale jest również bardzo ważne, aby wiedzieć, czy są one zamknięte, aby uniknąć potencjalnych problemów z bezpieczeństwem. Dzisiaj w tym artykule pokażemy, jak sprawdzić, czy port jest otwarty, czy zamknięty w Linux system operacyjny, ponieważ ten system operacyjny jest zwykle używany na serwerach.

Istnieje kilka sposobów sprawdzenia, czy określony port jest otwarty lub zamknięty, szczególnie w Linuksie, pierwszym z nich jest użycie popularnego programu Netcat, który jest wstępnie zainstalowany we wszystkich dystrybucjach, a następnie bardzo dobry sposób, aby dowiedzieć się, czy port jest otwarty Polega to na sprawdzeniu tego bezpośrednio za pomocą pliku Nmap program, który pozwoli nam przeskanować wszystkie porty określonego hosta. Wreszcie, jeśli chcemy wiedzieć, czy mamy otwarty, czy zamknięty port, będziemy musieli przyjrzeć się temu w pliku zapora a także w obecnych połączeniach systemu operacyjnego.

Powiedz, czy port TCP lub UDP jest otwarty czy zamknięty w systemie Linux

Wyświetl otwarte porty za pomocą Netcat

Netcat to narzędzie, które jest domyślnie dostępne w większości dystrybucji Linuksa, więc oprócz tego, że jest bardzo łatwe w użyciu, nie będziemy musieli instalować żadnych dodatkowych pakietów. Przed sprawdzeniem za pomocą Netcata, czy port jest otwarty, zobaczmy dwa najważniejsze parametry Netcata:

  • z to parametr, który zapewnia, że ​​po zakończeniu sprawdzania połączenie zostanie zamknięte lub w przeciwnym razie program będzie działał w pętli, dopóki nie zakończymy go ręcznie za pomocą control + C, podobnie jak w przypadku włączenia pingowania Linux.
  • v to parametr odpowiedzialny za sprawdzanie, czy port jest otwarty, czy zamknięty.

Aby sprawdzić port, musimy wpisać w terminalu:

nc -zv {IP} {PUERTO}

Na przykład, żeby sprawdzić port 443 na naszym routerze rodzaj:

nc -zv 192.168.10.1 443

Na poniższym obrazku widać, jak ten port jest otwarty:

Jeśli przetestujemy stronę tego artykułu i port 443, uzyskamy podobne informacje:

W przypadku, gdy jest zamknięty, powinniśmy umieścić to:

Jak widzieliście, bardzo łatwo jest sprawdzić, czy port jest otwarty lub zamknięty za pomocą Netcat, bardzo prostego narzędzia, które jest fabrycznie zainstalowane w systemie Linux. Oprócz poleceń „z” i „v” mamy również inne dostępne argumenty, które pozwolą nam uzyskać więcej informacji. Jeśli wykonamy następujące polecenie, pojawi się pomoc:

nc -h

Jak widać, mamy wiele argumentów za rozszerzeniem funkcjonalności.

Zobacz otwarte porty z Nmap

Nmap to program par excellence do wykrywania hostów, a także do sprawdzania, czy różne porty są otwarte, ten program nie jest fabrycznie zainstalowany w systemach operacyjnych Linux, ale możemy go zainstalować bezpośrednio z repozytoriów w następującej kolejności:

sudo apt install nmap

Po zainstalowaniu, aby sprawdzić, czy określony port jest otwarty, musimy wprowadzić następujące polecenie:

nmap -p {PUERTO} {IP}

Na poniższym obrazku możesz zobaczyć, jak wyglądałby otwarty port:

W przypadku, gdy port zostanie zamknięty lub zostanie przefiltrowany przez zaporę, pojawią się następujące informacje:

Jeśli chcemy przeskanować wszystkie porty określonego hosta lub zakres portów, będziemy musieli wskazać zakres portów w następujący sposób:

nmap -p {PUERTO}-{PUERTO} {IP}

Na przykład:

nmap -p 1-65535 192.168.10.1

Jak widać, sprawdzanie otwartych portów za pomocą Nmapa jest naprawdę proste, ponadto możemy przeskanować wszystkie hosty w domowej lub profesjonalnej sieci lokalnej, aby później przeskanować różne porty.

Sprawdź zaporę w systemie Linux

Jeśli chcemy sprawdzić, czy mamy otwarty port do przyjmowania połączeń, pierwszą rzeczą do sprawdzenia jest stan zapory w naszym systemie operacyjnym Linux. Domyślnie na wszystkich serwerach Linux zasady są zezwalające, to znaczy wszystkie pakiety są akceptowane przez zasady. Możemy zmienić tę politykę na restrykcyjną, a nawet dodać nowe tabele, łańcuchy i reguły zezwalające lub blokujące ruch.

Jeśli w naszym terminalu Linux umieścimy:

iptables -L

Otrzymamy wszystkie łańcuchy i reguły z tabeli „filter” iptables, w przypadku korzystania z Nftables należy wskazać następującą komendę:

nft list ruleset

Bardzo ważnym zaleceniem bezpieczeństwa jest to, że wszystkie porty na serwerze Linux powinny być zamknięte, w ten sposób, gdy podniesiemy usługę nasłuchującą na określonym porcie, nie będzie ona dostępna, chyba że pozwolimy na to w zaporze. Musimy szczegółowo sprawdzić, czy dany port jest otwarty, czy nie, aby nasze usługi były dostępne z zagranicy.

Wyświetl stan połączeń TCP i UDP

Jeśli interesuje nas stan wszystkich protokołów TCP, UDP, ICMP i innych w naszym systemie operacyjnym, powszechnie używanym narzędziem zawsze był „netstat”, jednak to narzędzie jest na drugim miejscu dzięki nowemu „ss” które w łatwy i szybki sposób dostarczy nam dużej ilości informacji. To narzędzie jest odpowiedzialne za sprawdzanie wszystkich otwartych lub zamkniętych gniazd na naszym serwerze Linux i będziemy mogli zobaczyć statystyki tych otwartych lub zamkniętych gniazd. Jeśli w przeszłości korzystałeś z narzędzia netstat, jesteśmy pewni, że spodoba ci się to nowe narzędzie „ss”.

Narzędzie „ss” jest już wstępnie zainstalowane w systemach operacyjnych Linux jako część samego systemu, podobnie jak w przypadku narzędzi „ping”, „traceroute” i wielu innych. Jeśli otworzymy konsolę, zarówno w trybie użytkownika, jak i superużytkownika, musimy wykonać:

ss

Po zrealizowaniu tego zamówienia możemy zobaczyć następujące informacje:

Zobaczymy stan połączenia (ESTAB), a także odebrane i wysłane paczki, adres lokalny i port, a także adres zdalny i używany port. Otrzymamy dużą liczbę portów używanych przez różne programy i usługi, które zainstalujemy w systemie operacyjnym.

Jeśli chcemy zobaczyć stan wszystkich portów (gniazd), możemy ułożyć następującą kolejność:

ss -a

Jeśli chcemy zobaczyć tylko te porty, które „nasłuchują”, musimy umieścić następującą komendę:

ss -l

Na poniższej ilustracji można zobaczyć przykład portów, które są „GOTOWE” do przyjmowania połączeń przychodzących:

W przypadku, gdy chcemy pokazać połączenia TCP, będziemy musieli użyć argumentu „-t”, aw przypadku chęci pokazania połączeń UDP będziemy musieli użyć argumentu „-u”.

ss -t ss -u

Polecenie „ss” jest naprawdę przydatne, aby pokazać wszystkie ustanowione połączenia, a także nasłuchiwać w naszym systemie operacyjnym Linux.

Jak widzieliście, mamy różne metody, aby dowiedzieć się, czy port jest otwarty, czy zamknięty na zdalnym hoście, a także na naszym komputerze lokalnym, w zależności od tego, co chcemy wiedzieć, użyjemy jednego lub drugiego narzędzia, najważniejsze polega na tym, że wszystkie porty, które nie są używane, powinny zostać zamknięte ze względów bezpieczeństwa przez zaporę ogniową, w ten sposób unikniemy problemów z bezpieczeństwem i wykorzystania luk w zabezpieczeniach serwerów.