Android

Hvordan sjekke (skanne) for åpne porter i Linux

A Tale of Two Studies: The Best and Worst of YubiKey Usability

A Tale of Two Studies: The Best and Worst of YubiKey Usability

Innholdsfortegnelse:

Anonim

Enten du feilsøker nettverkstilkoblingsproblemer eller konfigurerer en brannmur, er en av de første tingene å sjekke, hvilke porter som faktisk er åpnet på systemet ditt.

Denne artikkelen beskriver flere tilnærminger for å finne ut hvilke porter som er åpnet for utsiden på ditt Linux-system.

Hva er åpen havn

En lytteport er en nettverksport som en applikasjon lytter til. Du kan få en liste over lytteportene på systemet ditt ved å spørre om nettverksstabelen med kommandoer som ss , netstat eller lsof . Hver lytteport kan være åpen eller lukket (filtrert) ved hjelp av en brannmur.

Generelt sett er en åpen port en nettverksport som godtar innkommende pakker fra eksterne steder.

Hvis du for eksempel kjører en webserver som lytter på port 80 og 443 og disse portene er åpne på brannmuren din, vil alle (unntatt blokkerte ips) kunne få tilgang til nettsteder som er vert på nettjeneren din ved hjelp av nettleseren. I dette tilfellet er både 80 og 443 åpne porter.

Åpne porter kan utgjøre en sikkerhetsrisiko da hver åpen port kan brukes av angripere til å utnytte et sårbarhet eller utføre andre typer angrep. Du bør bare eksponere portene som er nødvendige for funksjonaliteten til applikasjonen din, og lukke alle andre porter.

Sjekk Åpne porter med nmap

Nmap er et kraftig nettverksskanneverktøy som kan skanne enkeltverter og store nettverk. Den brukes hovedsakelig til sikkerhetsrevisjoner og penetrasjonstesting.

Hvis tilgjengelig, bør nmap være det første verktøyet når det gjelder portskanning. I tillegg til nmap kan nmap også oppdage Mac-adresse, OS-type, kjerneversjoner og mye mer.

Følgende kommando utstedt fra konsollen bestemmer hvilke porter som lytter etter TCP-tilkoblinger fra nettverket:

sudo nmap -sT -p- 10.10.8.8

-sT forteller nmap å skanne etter TCP-porter og -p- å skanne for alle 65535 porter. Hvis -p- ikke brukes, vil nmap skanne bare 1000 porter.

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

Utgangen over viser at bare porter 22 , 80 og 8069 er åpnet på målsystemet.

For å søke etter UDP-porter bruker du -sU stedet for -sT :

sudo nmap -sU -p- 10.10.8.8

For mer informasjon, besøk nmap man-siden og les om alle andre kraftige alternativer for dette verktøyet.

Sjekk åpne porter med netcat

Netcat (eller nc ) er et kommandolinjeverktøy som kan lese og skrive data på tvers av nettverkstilkoblinger, ved hjelp av TCP- eller UDP-protokollene.

Med netcat kan du skanne en enkelt port eller et portområde.

For å skanne etter åpne TCP-porter på en ekstern maskin med IP-adresse 10.10.8.8 i området 20-80 bruker du følgende kommando:

nc -z -v 10.10.8.8 20-80

Alternativet -z forteller nc å skanne bare for åpne porter, uten å sende noen data, og -v er for mer ordinær informasjon.

Utgangen vil se slik ut:

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 å søke etter UDP-porter, pass alternativet -u til nc kommandoen:

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

Sjekk Åpne porter ved hjelp av Bash Pseudo-enhet

En annen måte å sjekke om en bestemt port er åpen eller lukket, er å bruke Bash shell /dev/tcp/.. eller /dev/udp/.. pseudo-enhet.

Når du utfører en kommando på en /dev/$PROTOCOL/$HOST/$IP pseudo-enhet, vil Bash åpne en TCP- eller UDP-forbindelse til den spesifiserte verten på den angitte porten.

Følgende if..else-uttalelse vil sjekke om port 443 kernel.org er åpen:

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 over?

Standard timeout når vi kobler til en port ved hjelp av en pseudo-enhet er enorm, så vi bruker timeout kommandoen til å drepe testkommandoen etter 5 sekunder. Hvis forbindelsen er opprettet til kernel.org port 443 kommer kernel.org tilbake.

Du kan også bruke for-loop for å se etter et portområde:

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

Utgangen vil se slik ut:

port 22 is open port 80 is open

Konklusjon

Vi har vist deg flere verktøy som du kan bruke til å skanne etter åpne porter. Det finnes også andre verktøy og metoder for å se etter åpne porter, for eksempel kan du bruke Python- socket modulen, curl , telnet eller wget .

terminal