Come scegliere una porta per eseguire un'applicazione su localhost? [chiuso]

1

Sto prendendo in considerazione lo sviluppo di un'applicazione web per il mio utilizzo su desktop, in esecuzione su localhost, avviata automaticamente all'avvio. Dovrò scegliere un porto per farlo. Ciò di cui sono a disagio è la capacità di qualsiasi altro programma di recuperare ciò che è disponibile su questa porta.

So che questo potrebbe essere considerato un virus, ma la mia impressione è che l'ascolto di una porta è qualcosa di meno inquietante di un keylogger, ad esempio. In realtà un'applicazione potrebbe già utilizzare questa porta per scopi legittimi.

Quali sono le migliori pratiche per scegliere una porta su localhost (se è già una pratica non così male) e, se è possibile, metterla al sicuro?

    
posta Matthew Adams 11.09.2017 - 13:38
fonte

3 risposte

1

Su Linux, le porte al di sotto di 1024 sono chiamate porte privilegiate. Le applicazioni che ascoltano su queste porte dovrebbero essere privilegiate. Cioè, l'applicazione deve essere eseguita come root o avere la CAP_NET_BIND_SERVICE capacità . Pertanto, potresti utilizzare una porta maggiore di 1024 .

Le porte web comuni (e assegnate a IANA) sono 80 per HTTP e 443 per HTTPS (HTTP su TLS). La porta alternativa per HTTP è 8080 che non è una porta privilegiata. Potresti questo.

Potresti anche assicurarti che il interface in ascolto della tua applicazione sia associato a interfaccia di loopback .

    
risposta data 11.09.2017 - 20:16
fonte
1

What I'm uneasy about is the ability of any other program to fetch what is available at this port.

Per cominciare, se il tuo server si collega a localhost (che è 127.0.0.1 per IPV4 e / o ::1 per IPV6) allora solo i client in esecuzione su localhost dovrebbero essere in grado di accedervi. Se vuoi limitare le connessioni a programmi locali , assicurati che il tuo server si leghi a uno di quegli indirizzi di loopback e sicuramente non 0.0.0.0 o :: ( che denotano tutte le interfacce) .

Se qualcuno ha un software di accesso agli accessi non autorizzato che può connettersi al dispositivo loopback localhost , potresti avere un problema molto più grande . Immagino che questo non sia un problema, intendendo a meno che tu non condivida il tuo computer con altri, sei sicuro di legare solo a 127.0.0.1 e / o ::1 e farlo con esso .

Potresti condividere il tuo computer con altri, ovvero eseguire un servizio di shell , il che significa che stai dando accesso al tuo sistema . In questo caso, la capacità di uno dei tuoi utenti (si spera fidati) di connettersi ai servizi legati al loopback dovrebbe essere una delle tue preoccupazioni. Quando lasci altre persone dietro il tuo firewall e nella tua area utenti , dai loro la possibilità di sondare l'intera rete! Il router, la stampante e tutti i telefoni collegati alla rete possono anche eseguire software e questi dispositivi possono essere molto più difficili da proteggere rispetto al server.

Dovresti prendere in considerazione la sandboxing di tali utenti che usano la virtualizzazione come KVM, Xen, ecc. dando loro il loro ambiente virtuale (inclusa un'interfaccia di rete virtuale ) per giocare e dando così la possibilità di installare un firewall su tale interfaccia di rete virtuale .

What are the best practices for choosing a port on localhost (if that's already a practice not so bad) and, if that's possible, securing it?

Anche in questo caso, le connessioni in entrata da un'interfaccia non-loopback dovrebbero non essere in grado di connettersi ai socket in ascolto su un'interfaccia loopback . Se il tuo sistema operativo consente una tale connessione, è grossolanamente mal configurato, oppure è Windows XP, service pack 1a o inferiore (che è di per sé un problema separato).

La tua preoccupazione principale dovrebbe essere quella di impedire agli utenti non fidati di eseguire codice direttamente nel tuo territorio utente, quindi se condividi il tuo computer con altre persone, come amministratore, dovresti sandbox quelle altre persone e mantenere un approccio a grana fine a quali cose esterne possono vedere. Supponendo che siano in modalità sandbox, possono solo comunicare con l'host tramite un'interfaccia di rete virtuale, quindi, ancora una volta, non possono connettersi a 127.0.0.1 o ::1 -bound servizi sull'host, ma potrebbero essere in grado per scansionare la tua rete, ancora ...

    
risposta data 11.09.2017 - 23:41
fonte
0

Controlla questo elenco di porte non assegnate link
Meglio scegliere qualcosa dopo 49k
Se si utilizza il socket per IPC, utilizzare la famiglia PF_INET

    
risposta data 11.09.2017 - 13:57
fonte

Leggi altre domande sui tag