Android

Jak zkontrolovat (vyhledat) otevřené porty v Linuxu

MKS SGEN L V1.0 - A4988 Stepper Drivers

MKS SGEN L V1.0 - A4988 Stepper Drivers

Obsah:

Anonim

Ať už řešíte problémy s připojením k síti nebo konfigurujete bránu firewall, jednou z prvních věcí, které je třeba zkontrolovat, je to, jaké porty jsou ve vašem systému skutečně otevřeny.

Tento článek popisuje několik přístupů k zjištění, jaké porty jsou v systému Linux otevřeny ven.

Co je otevřený port

Naslouchací port je síťový port, na kterém aplikace naslouchá. Seznam naslouchacích portů ve vašem systému získáte dotazem na síťový zásobník pomocí příkazů, jako je ss , netstat nebo lsof . Každý port pro poslech lze otevřít nebo zavřít (filtrovat) pomocí brány firewall.

Obecně řečeno, otevřený port je síťový port, který přijímá příchozí pakety ze vzdálených umístění.

Pokud například provozujete webový server, který poslouchá na portech 80 a 443 a tyto porty jsou otevřené ve vaší bráně firewall, kdokoli (s výjimkou blokovaných IP) bude mít přístup k webovým serverům hostovaným na vašem webovém serveru pomocí svého prohlížeče. V tomto případě jsou 80 i 443 otevřené porty.

Otevřené porty mohou představovat bezpečnostní riziko, protože útočníci mohou každý otevřený port využít k zneužití zranitelnosti nebo k provedení jakéhokoli jiného typu útoku. Měli byste odhalit pouze porty potřebné pro funkčnost aplikace a zavřít všechny ostatní porty.

Zkontrolujte otevřené porty pomocí nmap

Nmap je výkonný nástroj pro skenování v síti, který dokáže skenovat jednotlivé hostitele a velké sítě. Používá se hlavně pro bezpečnostní audity a penetrační testování.

Pokud je to možné, nmap by měl být vaším prvním nástrojem, pokud jde o skenování portů. Kromě skenování portů nmap dokáže také detekovat Mac adresu, typ OS, verze jádra a mnoho dalšího.

Následující příkaz vydaný z konzoly určuje, které porty poslouchají připojení TCP ze sítě:

sudo nmap -sT -p- 10.10.8.8

-sT říká nmap aby vyhledával TCP porty a -p- prohledal všech 65535 portů. Pokud se nepoužije -p- nmap prohledá pouze 1000 portů.

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

Výše uvedený výstup ukazuje, že v cílovém systému jsou otevřeny pouze porty 22 , 80 a 8069 .

Chcete-li vyhledat porty UDP, použijte -sU místo -sT :

sudo nmap -sU -p- 10.10.8.8

Další informace naleznete na manuálové stránce nmap a přečtěte si o všech dalších výkonných možnostech tohoto nástroje.

Zkontrolujte otevřené porty pomocí netcat

Netcat (nebo nc ) je nástroj příkazového řádku, který umí číst a zapisovat data prostřednictvím síťových připojení pomocí protokolů TCP nebo UDP.

S netcat můžete skenovat jeden port nebo rozsah portů.

Chcete-li například vyhledat otevřené porty TCP na vzdáleném počítači s adresou IP 10.10.8.8 v rozsahu 20-80 , použijte následující příkaz:

nc -z -v 10.10.8.8 20-80

Volba -z říká nc aby prohledával pouze otevřené porty, aniž by odesílala data, a -v znamená více podrobných informací.

Výstup bude vypadat asi takto:

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!

Chcete-li vyhledat porty UDP, předejte volbu -u příkazu nc :

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

Zkontrolujte otevřené porty pomocí zařízení Bash Pseudo

Dalším způsobem, jak zkontrolovat, zda je určitý port otevřený nebo uzavřený, je použití pseudo zařízení Bash shell /dev/tcp/.. nebo /dev/udp/..

Při provádění příkazu na /dev/$PROTOCOL/$HOST/$IP pseudo-zařízení, Bash otevře TCP nebo UDP připojení k zadanému hostiteli na zadaném portu.

Následující příkaz if..else zkontroluje, zda je otevřen port 443 na kernel.org :

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 výše uvedený kód funguje?

Výchozí časový limit při připojení k portu pomocí pseudo zařízení je obrovský, takže pomocí příkazu timeout zabijeme testovací příkaz po 5 sekundách. Pokud je navázáno připojení k portu kernel.org 443 testovací příkaz se vrátí true.

Můžete také použít smyčku for pro kontrolu dosahu portů:

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

Výstup bude vypadat asi takto:

port 22 is open port 80 is open

Závěr

Ukázali jsme vám několik nástrojů, které můžete použít ke kontrole otevřených portů. Existují také další nástroje a metody ke kontrole otevřených portů, například můžete použít socket modul Python, curl , telnet nebo wget .

terminál