Android

Cum se verifică (scanează) dacă există porturi deschise în linux

How to Check Listening Ports in Linux

How to Check Listening Ports in Linux

Cuprins:

Anonim

Indiferent dacă depanați probleme de conectivitate de rețea sau configurați un firewall unul dintre primele lucruri care trebuie verificate este ce porturi sunt de fapt deschise pe sistemul dvs.

Acest articol descrie câteva abordări pentru a afla ce porturi sunt deschise către exterior pe sistemul dvs. Linux.

Ce este Open Port

Un port de ascultare este un port de rețea pe care o aplicație îl ascultă. Puteți obține o listă a porturilor de ascultare de pe sistemul dvs. interogând stiva de rețea cu comenzi precum ss , netstat sau lsof . Fiecare port de ascultare poate fi deschis sau închis (filtrat) folosind un firewall.

În termeni generali, un port deschis este un port de rețea care acceptă pachete primite din locații îndepărtate.

De exemplu, dacă executați un server web care ascultă porturile 80 și 443 și aceste porturi sunt deschise pe firewallul dvs. oricine (cu excepția ips-ului blocat) va putea accesa site-urile web găzduite pe serverul dvs. web folosind browserul său. În acest caz, ambele 80 și 443 sunt porturi deschise.

Porturile deschise pot prezenta un risc de securitate, deoarece fiecare port deschis poate fi folosit de atacatori pentru a exploata o vulnerabilitate sau pentru a efectua orice alt tip de atacuri. Ar trebui să expuneți numai porturile necesare pentru funcționalitatea aplicației dvs. și să închideți toate celelalte porturi.

Verificați porturile deschise cu nmap

Nmap este un instrument puternic de scanare a rețelei care poate scana gazdele singure și rețelele mari. Este utilizat în principal pentru audituri de securitate și teste de penetrare.

Dacă este disponibil, nmap ar trebui să fie primul tău instrument atunci când vine vorba de scanarea porturilor. Pe lângă scanarea portului, nmap poate detecta și adresa Mac, tipul sistemului de operare, versiunile de sâmbure și multe altele.

Următoarea comandă emisă de pe consolă determină ce porturi ascultă conexiunile TCP din rețea:

sudo nmap -sT -p- 10.10.8.8

-sT spune nmap să scaneze porturile TCP și -p- să scaneze toate 65535 porturi. Dacă nu se folosește -p- nmap va scana doar 1000 de porturi.

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

Rezultatul de mai sus arată că doar porturile 22 , 80 și 8069 sunt deschise pe sistemul țintă.

Pentru a scana porturile UDP folosiți -sU în loc de -sT :

sudo nmap -sU -p- 10.10.8.8

Pentru mai multe informații, vizitați pagina de mana nmap și citiți despre toate celelalte opțiuni puternice ale acestui instrument.

Verificați porturile deschise cu netcat

Netcat (sau nc ) este un instrument de linie de comandă care poate citi și scrie date pe conexiunile de rețea, folosind protocoalele TCP sau UDP.

Cu netcat puteți scana un singur port sau un interval de porturi.

De exemplu, pentru a scana porturile TCP deschise pe o mașină de la distanță cu adresa IP 10.10.8.8 în intervalul 20-80 ar trebui să utilizați următoarea comandă:

nc -z -v 10.10.8.8 20-80

Opțiunea -z indică nc să scaneze numai pentru porturi deschise, fără a trimite date și the -v este pentru mai multe informații verbose.

Rezultatul va arăta astfel:

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!

Pentru a scana porturile UDP, treceți opțiunea -u la comanda nc :

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

Verificați porturile deschise utilizând dispozitivul Bse Pseudo

Un alt mod de a verifica dacă un anumit port este deschis sau închis este folosind pseudo dispozitivul Bash /dev/tcp/.. sau /dev/udp/..

Când executați o comandă pe un pseudo-dispozitiv /dev/$PROTOCOL/$HOST/$IP , Bash va deschide o conexiune TCP sau UDP către gazda specificată din portul specificat.

Următoarea declarație if..else va verifica dacă portul 443 pe kernel.org este deschis:

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

Cum funcționează codul de mai sus?

Timeout-ul implicit la conectarea la un port cu un pseudo dispozitiv este uriaș, așa că folosim comanda timeout pentru a omorî comanda de testare după 5 secunde. Dacă conexiunea este stabilită la portul kernel.org 443 , comanda test va reveni adevărat.

Puteți utiliza, de asemenea, bucla for pentru a verifica dacă există un interval de porturi:

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

Rezultatul va arăta astfel:

port 22 is open port 80 is open

Concluzie

V-am arătat mai multe instrumente pe care le puteți utiliza pentru a scana porturile deschise. Există, de asemenea, alte utilități și metode de verificare a porturilor deschise, de exemplu, puteți utiliza modulul socket Python, curl , telnet sau wget .

Terminal