Porta (reti)
Da Wikipedia, l'enciclopedia libera.
Nelle reti di calcolatori, le porte 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, cfr. [1], [2].
Le porte sono numeri (in TCP e UDP sono a 16 bit) utilizzati per identificare una particolare connessione di trasporto tra quelle al momento attive su un calcolatore. I pacchetti appartenenti ad una connessione saranno quindi identificati dalla quadrupla [<indirizzo IP sorgente>, <indirizzo IP destinazione>, <porta sorgente>, <porta destinazione>]. I pacchetti nella direzione opposta avranno ovviamente sorgente e destinazione scambiati.
Il livello di trasporto (tipicamente realizzato dal sistema operativo) associa a ciascuna porta utilizzata un punto di contatto (ad esempio, una socket), utilizzato da uno (o più) processi applicativi per trasmettere e/o ricevere dati.
Per poter inviare con successo un pacchetto con una certa porta destinazione, ci deve essere un processo che è "in ascolto" su quella porta, ovvero che ha chiesto al sistema operativo di ricevere connessioni su quella porta. L'operazione di impegnare una porta TCP o UDP da parte di un processo è detta "bind", dal nome della chiamata di sistema unix che la realizza.
La porta sorgente utilizzata in una connessione viene scelta dal calcolatore che inizia la connessione tra una di quelle al momento non impegnate.
In Internet, c'è una convenzione per cui ad alcuni numeri di porta sono associati determinati protocolli di livello applicativo. Ad esempio, se voglio contattare il server HTTP eventualmente in esecuzione su un certo calcolatore, so che devo tentare di stabilire una connessione verso la porta 80.
I numeri di porta sono classificabili in tre gruppi:
- Le porte conosciute sono assegnate dall'Internet Assigned Numbers Authority (IANA), sono quelle inferiori a 1024, e sono generalmente utilizzate a livello di sistema operativo o di processi di sistema. In genere rimangono in ascolto su queste porte applicazioni con funzioni di server. Alcuni esempi possono essere le applicazioni che utilizzino protocolli FTP (21), SSH (22), TELNET (23), SMTP (25) e HTTP (80). Sono dette porte ben note.
- Le porte registrate invece sono spesso utilizzate come riferimento fra applicazioni, come una specie di accordo.
- Le porte dinamiche invece sono tutte le altre, liberamente utilizzabili da tutte le applicazioni utente, salvo l'occupazione contemporanea da parte di qualche altro processo.
[modifica] Sicurezza
Supervisionare le porte "in ascolto" cioè aperte è di estrema importanza, per evitare attacchi informatici che nel caso più grave possono portare al controllo completo del computer. Per visualizzare le porte aperte sul proprio computer è necessario un programma di scansione delle porte e dei relativi servizi collegati ad esse. Le porte normalmente più vulnerabili sono:
- Servizi di Login: Telnet(23/TCP), SSH(22/TCP), NetBIOS(139/TCP), ecc.
- Posta: SMTP(25/TCP), POP(109/TCPe 110/TCP), IMAP(143/TCP), ecc.
- Web: HTTP(80/TCP) e SSL (443/TCP, tranne quelle verso i server web esterni. Si dovrebbero bloccare anche le porte HTTP comuni (8000/TCP, 8080/TCP, 8888/TCP e così via)
- Piccoli servizi: porte prima delle 20/TCP e 20/UDP, time (37/TCPe 37/UDP)