Uso della porta effimera per il server


4

In generale, le porte effimere vengono utilizzate dai client per stabilire la connessione con il server.

Per esempio:

  1. Il server è in ascolto sulla porta 80
  2. Un client (browser, client FTP, client bittorent) invia una richiesta al server inclusa la porta temporanea assegnata dal sistema operativo
  3. Il server risponde utilizzando la porta temporanea fornita come porta di destinazione

E ora la domanda:

Ho scritto un'applicazione server che vorrei avviare su una porta libera casuale ogni volta che viene avviata (per mantenere costante questa domanda non spiegherò perché mi piacerebbe questo comportamento). Ora la mia domanda è quali implicazioni avrebbe se uso una delle porte effimere su cui il server può ascoltare. Ci sono degli svantaggi (anche in termini di sicurezza) nel fare questo?

Conoscete forse qualche esempio di un server che in pratica utilizza anche porte effimere?

Una delle mie preoccupazioni è anche l'affermazione di The TCP / IP Guide: A Complete, Illustrated Internet Protocol Protocol Reference (page 705) :

Così come i numeri di porta noti e registrati vengono utilizzati per i processi del server, i numeri di porta effimeri sono solo per i processi client.


Quindi ... un po 'come bitorrent?
Journeyman Geek

1
In realtà FTP lo ha fatto per primo. Aveva il server ricollegarsi al client sulla porta fornita dal client per il trasferimento dei dati. Ciò non ha funzionato con proxy e NAT, quindi è stata implementata una modalità passiva che utilizzava la stessa connessione utilizzata per la prima volta dal client per trasferire i dati.
Dan D.

In realtà (se ho capito bene) i client di bittorrent e FTP stanno ascoltando sulla porta effimera, ma vorrei che il server ascoltasse sulla porta effimera fornita dal sistema operativo fintanto che il server è attivo. Quindi la mia domanda è se sia sicuro farlo poiché le porte effimere vengono generalmente utilizzate dai client per protocolli di trasporto di breve durata.
PrimosK

Risposte:


1

A titolo di aiuto, la pagina Wikipedia su Porta effimera fornisce ulteriori informazioni sui numeri di porta effettivamente utilizzati dal sistema operativo.

Da questo si può immediatamente vedere che ci sono molte porte disponibili che non sono in genere utilizzate dal server (processi) e non sono nell'intervallo effimero.

Quindi la soluzione ovvia sarebbe quella di selezionare casualmente da una di quelle altre porte. Questo evita la necessità di fare ipotesi su come il sistema operativo si alloca dall'intervallo effimero: controlla l'uso effettivo o solo le sue allocazioni per evitare collisioni per nuove allocazioni ?.

Questa domanda può sembrare minore, ma con una porta client il processo di solito non utilizza direttamente il numero di porta (viene allocato quando il processo apre la connessione, solo guardando le proprietà del socket il processo può trovare il numero: e di solito questo è completamente inutile). Tuttavia, per accettare le connessioni in entrata, il socket deve essere associato a una porta specifica, pertanto il processo del server è responsabile dell'ottenimento di un numero di porta.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.