Come vedere le porte aperte in Linux : comandi ed esempi

Se ti conosco, ti proteggo.

Per migliorare la sicurezza della propria macchina Linux, è necessario sapere se e quali porte sono aperte. In questo articolo vedremo diversi modi per elencare o visualizzare le porte aperte in Linux. Ricordate, un controllo sulle porte aperte deve essere sempre effettuato con regolarità. Nei sistemi critici questa operazione deve essere effettuata almeno una volta al giorno. Scoprire una “nuova” porta aperta deve sempre far accendere lo status di ALERT !

Cosa sono le porte  e a cosa servono 

Le porte, nella telematica e nell’ambito delle reti di calcolatori, sono lo strumento utilizzato per realizzare la multiplazione delle connessioni a livello di trasporto, ovvero per permettere ad un calcolatore di effettuare più connessioni contemporanee verso altri calcolatori, facendo in modo che i dati contenuti nei pacchetti in arrivo vengano indirizzati al processo che li sta aspettando.

Il termine è la traduzione dell’inglese port, nella accezione derivante dal latino porta: apertura, portale, oblò; il termine che in italiano si traduce in porto deriva invece dal latino portus.[1]

In particolare il termine porta è mutuato direttamente da quello di porta fisica di connessione tra cavi di un calcolatore o di un qualunque altro dispositivo elettronico. Di fatto nell’ambito della trasmissione dei dati durante una connessione non c’è altra porta fisica oltre a quella di aggancio del connettore del cavo. Nell’ambito delle reti di telecomunicazioni il termine porta indica quindi solamente una porta virtuale o logica e può essere vista banalmente come un’etichetta (label) che identifica e discrimina il traffico dati di una connessione da quello di un’altra.

Tutti i processi di rete tra i vari terminali di rete necessitano dunque di una porta per l’instaurazione, l’esecuzione ed il completamento del servizio preposto.” (WK)

Controlliamo le porte aperte in linux

Per avere una lista di “tutte” le porte e in special modo di quelle “note” ( assegnate a specifici servizi dalla IANA)  basta un

cat /etc/services

root@unassigned-hostname:~# cat /etc/services
# Network services, Internet style
#
# Note that it is presently the policy of IANA to assign a single well-known
# port number for both TCP and UDP; hence, officially ports have two entries
# even if the protocol doesn’t support UDP operations.
#
# Updated from http://www.iana.org/assignments/port-numbers and other
# sources like http://www.freebsd.org/cgi/cvsweb.cgi/src/etc/services .
# New ports will be added on request if they have been officially assigned
# by IANA and used in the real-world or are needed by a debian package.
# If you need a huge list of used numbers please install the nmap package.

tcpmux 1/tcp # TCP port service multiplexer
echo 7/tcp
echo 7/udp
discard 9/tcp sink null
discard 9/udp sink null
systat 11/tcp users
daytime 13/tcp
daytime 13/udp
netstat 15/tcp
qotd 17/tcp quote
msp 18/tcp # message send protocol
msp 18/udp
chargen 19/tcp ttytst source
chargen 19/udp ttytst source
ftp-data 20/tcp
ftp 21/tcp
fsp 21/udp fspd
ssh 22/tcp # SSH Remote Login Protocol
ssh 22/udp
telnet 23/tcp
smtp 25/tcp mail
time 37/tcp timserver
time 37/udp timserver
rlp 39/udp resource # resource location
nameserver 42/tcp name # IEN 116
whois 43/tcp nicname

etc etc .. e’ una lista abbastanza lunga.

Ma fate attenzione non è detto che sulla porta 443  (https 443/tcp # http protocol over TLS/SSL) ci sia sempre hhtps protocol, potrei utilizzare quella porta per SSH o per qualsiasi altro servizio!

 

Controlliamo le porte con netstat

Iniziamo con un netstat nudo e crudo

linux netstat
comando netstat linux

e’ un po dura da leggere è in questo momento non è quello che cerchiamo. Però a netstat possono essere aggiunti dei parametri come :

a: mostra tutti i socket

t: mostra le connessioni TCP

u: mostra le connessioni UDP

p: per visualizzare il PID correlato del processo o del nome del programma

quindi proviamo con

netstat -atup (potete utilizzare anche solo i singoli parametri)

 linux netstat -autp
comando linux netstat -autp

 

 

I parametri che possono essere utilizzati con netstat sono tanti, ed e’ impossibile riportarli tutti.  Consiglio di fare un bel

man netstat

e di provare ad utilizzare tutte le varie combinazioni dato che non si possono fare danni !

Altro comando utile è lsof

Non tentate (fatelo) di lanciare lsof senza parametri , vi uscirà una lunga lista …. molto lunga.

Proviamo invece a lanciarlo con

-i

e poi con

-n -P | grep LISTEN

sono i parametri che uso più di frequente

Ricordo sempre un bel man lsof 

lsof -i

comando linux isof -i
comando linux isof -i

lsof -n -P | grep LISTEN

vediamo anche i socket aperti…..

comando linux isof -n -p
comando linux isof -n -p

 

Dopo aver dato uno sguardo ai comandi che possono essere utilizzati sulla macchina che vogliamo monitorare, consiglio di installare Nmap – Zenmap GUI su un client (magari lo propongo la prossima volta) e lanciare  un bel

nmap -T4 -A -v ip_da_controllare

e monitorare quali e quante porte rispondono in entrata e vedere se c’è qualche sorpresa !

Controllare con costanza le porte aperte può farci scoprire in tempo utile una falla , la presenza di un worm o un attacco riuscito al nostro server. Fatelo sempre e spesso ! Controlliamo sempre le porte aperte in linux !