Android

Jak sprawdzić (skanować) otwarte porty w systemie Linux

Проброс COM портов через TCP/IP с помощью Virtual Serial Ports Emulator (Windows)

Проброс COM портов через TCP/IP с помощью Virtual Serial Ports Emulator (Windows)

Spisu treści:

Anonim

Niezależnie od tego, czy rozwiązujesz problemy z łącznością sieciową, czy konfigurujesz zaporę ogniową, jedną z pierwszych rzeczy do sprawdzenia jest, które porty są faktycznie otwarte w twoim systemie.

W tym artykule opisano kilka podejść, aby dowiedzieć się, które porty są otwarte na zewnątrz w systemie Linux.

Co to jest Open Port

Port nasłuchujący to port sieciowy, na którym nasłuchuje aplikacja. Listę portów nasłuchiwania w systemie można uzyskać, sprawdzając stos sieciowy za pomocą poleceń, takich jak ss , netstat lub lsof . Każdy port nasłuchujący może być otwarty lub zamknięty (przefiltrowany) za pomocą zapory ogniowej.

Ogólnie rzecz biorąc, port otwarty to port sieciowy, który przyjmuje pakiety przychodzące ze zdalnych lokalizacji.

Na przykład, jeśli korzystasz z serwera WWW, który nasłuchuje na portach 80 i 443 a te porty są otwarte w zaporze, każdy (oprócz zablokowanego Ips) będzie mógł uzyskać dostęp do stron internetowych hostowanych na twoim serwerze za pomocą swojej przeglądarki. W tym przypadku zarówno 80 , jak i 443 są otwartymi portami.

Otwarte porty mogą stanowić zagrożenie dla bezpieczeństwa, ponieważ każdy otwarty port może być wykorzystywany przez atakujących w celu wykorzystania luki lub wykonania dowolnego innego rodzaju ataku. Powinieneś udostępnić tylko porty potrzebne do działania aplikacji i zamknąć wszystkie pozostałe porty.

Sprawdź otwarte porty za pomocą nmap

Nmap to potężne narzędzie do skanowania sieci, które może skanować pojedyncze hosty i duże sieci. Służy głównie do audytów bezpieczeństwa i testów penetracyjnych.

Jeśli to możliwe, nmap powinno być pierwszym narzędziem do skanowania portów. Oprócz skanowania portów nmap może również wykryć adres Mac, typ systemu operacyjnego, wersje jądra i wiele więcej.

Następujące polecenie wydane z konsoli określa, które porty nasłuchują połączeń TCP z sieci:

sudo nmap -sT -p- 10.10.8.8

-sT mówi nmap aby skanował w poszukiwaniu portów TCP i -p- aby skanował w poszukiwaniu wszystkich portów 65535 Jeśli nie użyto opcji -p- nmap skanuje tylko 1000 portów.

Starting Nmap 7.60 (https://nmap.org) at 2019-07-09 23:10 CEST Nmap scan report for 10.10.8.8 Host is up (0.0012s latency). Not shown: 998 closed ports PORT STATE SERVICE 22/tcp open ssh 80/tcp open http MAC Address: 08:00:27:05:49:23 (Oracle VirtualBox virtual NIC) Nmap done: 1 IP address (1 host up) scanned in 0.41 seconds

Powyższe dane wyjściowe pokazują, że tylko porty 22 , 80 i 8069 są otwarte w systemie docelowym.

Aby skanować w poszukiwaniu portów UDP, użyj -sU zamiast -sT :

sudo nmap -sU -p- 10.10.8.8

Aby uzyskać więcej informacji, odwiedź stronę podręcznika nmap i przeczytaj o wszystkich innych potężnych opcjach tego narzędzia.

Sprawdź otwarte porty za pomocą netcat

Netcat (lub nc ) to narzędzie wiersza polecenia, które może odczytywać i zapisywać dane w połączeniach sieciowych przy użyciu protokołów TCP lub UDP.

netcat umożliwia skanowanie pojedynczego portu lub zakresu portów.

Na przykład, aby skanować w poszukiwaniu otwartych portów TCP na zdalnym komputerze o adresie IP 10.10.8.8 z zakresu 20-80 , należy użyć następującego polecenia:

nc -z -v 10.10.8.8 20-80

Opcja -z mówi nc aby skanował tylko w poszukiwaniu otwartych portów, bez wysyłania żadnych danych, a -v oznacza więcej pełnych informacji.

Dane wyjściowe będą wyglądać mniej więcej tak:

nc: connect to 10.10.8.8 port 20 (tcp) failed: Connection refused nc: connect to 10.10.8.8 port 21 (tcp) failed: Connection refused Connection to 10.10.8.8 22 port succeeded!… Connection to 10.10.8.8 80 port succeeded!

nc -z -v 10.10.8.8 20-80 2>&1 | grep succeeded

Connection to 10.10.8.8 22 port succeeded! Connection to 10.10.8.8 80 port succeeded!

Aby skanować w poszukiwaniu portów UDP, przekaż opcję -u do polecenia nc :

nc -z -v -u 10.10.8.8 20-80 2>&1 | grep succeeded

Sprawdź otwarte porty za pomocą pseudo urządzenia Bash

Innym sposobem sprawdzenia, czy dany port jest otwarty czy zamknięty, jest użycie pseudo urządzenia Bash shell /dev/tcp/.. lub /dev/udp/..

Podczas wykonywania polecenia na pseudo-urządzeniu /dev/$PROTOCOL/$HOST/$IP Bash otworzy połączenie TCP lub UDP z określonym hostem na określonym porcie.

Poniższa instrukcja if..else sprawdzi, czy port 443 na kernel.org jest otwarty:

if timeout 5 bash -c ' /dev/null' then echo "Port is open" else echo "Port is closed" fi if timeout 5 bash -c ' /dev/null' then echo "Port is open" else echo "Port is closed" fi

Port is open

Jak działa powyższy kod?

Domyślny limit czasu podczas łączenia się z portem za pomocą pseudo urządzenia jest ogromny, dlatego używamy polecenia timeout aby zabić polecenie testowe po 5 sekundach. Jeśli połączenie zostanie nawiązane z portem kernel.org 443 polecenie testowe zwróci true.

Możesz także użyć pętli for, aby sprawdzić zakres portów:

for PORT in {20..80}; do timeout 1 bash -c " /dev/null" && echo "port $PORT is open" done for PORT in {20..80}; do timeout 1 bash -c " /dev/null" && echo "port $PORT is open" done

Dane wyjściowe będą wyglądać mniej więcej tak:

port 22 is open port 80 is open

Wniosek

Pokazaliśmy kilka narzędzi, których możesz użyć do skanowania w poszukiwaniu otwartych portów. Istnieją również inne narzędzia i metody sprawdzania wolnych portów, na przykład możesz użyć modułu socket Python, curl , telnet lub wget .

terminal