Android

Sådan kontrolleres (scannes) for åbne porte i linux

Using Heltec ESP32 OLED Wifi Kit

Using Heltec ESP32 OLED Wifi Kit

Indholdsfortegnelse:

Anonim

Uanset om du løser problemer med netværksforbindelse eller konfigurerer en firewall, er en af ​​de første ting, der skal kontrolleres, hvilke porte der faktisk åbnes på dit system.

Denne artikel beskriver adskillige tilgange til at finde ud af, hvilke porte der åbnes for ydersiden på dit Linux-system.

Hvad er åben havn

En lytteport er en netværksport, som en applikation lytter til. Du kan få en liste over lytteporte på dit system ved at spørge netværkstakken med kommandoer som ss , netstat eller lsof . Hver lytteport kan være åben eller lukket (filtreret) ved hjælp af en firewall.

Generelt er en åben port en netværksport, der accepterer indgående pakker fra fjerne placeringer.

Hvis du f.eks. Kører en webserver, der lytter på porte 80 og 443 og disse porte er åbne på din firewall, vil enhver (undtagen blokerede ips) kunne få adgang til websteder, der er vært på din webserver ved hjælp af hans browser. I dette tilfælde er både 80 og 443 åbne porte.

Åbne porte kan udgøre en sikkerhedsrisiko, da hver åben port kan bruges af angribere til at udnytte en sårbarhed eller udføre enhver anden type angreb. Du bør kun udsætte de porte, der er nødvendige til funktionaliteten af ​​din applikation, og lukke alle andre porte.

Marker Åbn porte med nmap

Nmap er et kraftfuldt netværksscanningsværktøj, der kan scanne enkeltværter og store netværk. Det bruges hovedsageligt til sikkerhedsrevisioner og penetrationstest.

Hvis det er tilgængeligt, skal nmap være dit første værktøj, når det kommer til port scanning. Udover portscanning kan nmap også registrere Mac-adresse, OS-type, kerneversioner og meget mere.

Følgende kommando udstedt fra konsollen bestemmer, hvilke porte der lytter til TCP-forbindelser fra netværket:

sudo nmap -sT -p- 10.10.8.8

-sT fortæller nmap at scanne efter TCP-porte og -p- at scanne for alle 65535 porte. Hvis -p- ikke bruges, scanner nmap kun 1000 porte.

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

Outputet ovenfor viser, at kun porte 22 , 80 og 8069 åbnes på målsystemet.

For at scanne efter UDP-porte skal du bruge -sU stedet for -sT :

sudo nmap -sU -p- 10.10.8.8

For mere information kan du besøge nmap-man-siden og læse om alle andre kraftfulde indstillinger for dette værktøj.

Tjek åbne porte med netcat

Netcat (eller nc ) er et kommandolinjeværktøj, der kan læse og skrive data på tværs af netværksforbindelser ved hjælp af TCP- eller UDP-protokoller.

Med netcat kan du scanne en enkelt port eller et havneområde.

For eksempel at scanne efter åbne TCP-porte på en fjernmaskine med IP-adresse 10.10.8.8 i området 20-80 , ville du bruge følgende kommando:

nc -z -v 10.10.8.8 20-80

Indstillingen -z fortæller nc at kun scanne efter åbne porte uden at sende nogen data, og -v er til mere fuldstændig information.

Outputet ser sådan ud:

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!

For at scanne efter UDP-porter videresendes optionen -u til kommandoen nc :

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

Kontroller Åbn porte ved hjælp af Bash Pseudo-enhed

En anden måde at kontrollere, om en bestemt port er åben eller lukket, er ved at bruge Bash shell /dev/tcp/.. eller /dev/udp/.. pseudo-enhed.

Når du udfører en kommando på en /dev/$PROTOCOL/$HOST/$IP pseudo-enhed, åbner Bash en TCP- eller UDP-forbindelse til den specificerede vært på den specificerede port.

Følgende if..else-erklæring vil kontrollere, om port 443 kernel.org er åben:

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

Hvordan fungerer koden ovenfor?

Standard timeout, når vi opretter forbindelse til en port ved hjælp af en pseudo-enhed er enorm, så vi bruger timeout kommandoen til at dræbe testkommandoen efter 5 sekunder. Hvis forbindelsen er etableret til kernel.org port 443 , returnerer kernel.org sand.

Du kan også bruge for-loop til at se efter et portinterval:

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

Outputet ser sådan ud:

port 22 is open port 80 is open

Konklusion

Vi har vist dig flere værktøjer, som du kan bruge til at scanne efter åbne porte. Der er også andre værktøjer og metoder til at kontrollere for åbne porte, for eksempel kan du bruge Python- socket modulet, curl , telnet eller wget .

terminal