Perché è male avere porte aperte?


36

Ecco qualcosa che mi ha sempre sconcertato. Perché è male avere porte aperte sul tuo computer? Supponendo che non si disponga di un virus sul computer o su un altro programma che ascolta una porta che potrebbe effettivamente fare qualcosa, perché è importante se una porta è aperta? Se una persona maliziosa inizia a inviare pacchetti a una porta, ma non c'è nulla per ricevere i dati e fare qualcosa con esso, perché è importante? Un computer non esegue in modo arbitrario tutti i dati che riceve. Capisco che l'inondazione di un computer con i pacchetti potrebbe causare un arresto anomalo perché non è in grado di gestire la quantità di dati, ma sto solo prendendo in considerazione problemi di sicurezza che cambiano effettivamente i file sul computer.

Aggiornare

Grazie per le risposte finora. Ora capisco che una porta aperta significa che esiste un programma che può essere sfruttato ascoltando su quella porta. Ma perché è così difficile scrivere software che non può essere sfruttato? Per arrecare un danno reale a un computer, un programma non dovrebbe consentire il caricamento di uno o più file, quindi sarà necessario eseguire uno di questi file. Sembra che sarebbe incredibilmente difficile permetterlo accidentalmente.

Risposte:


36

Una porta non è aperta se qualcosa non sta ascoltando una connessione su di essa.

La ragione per cui è una cattiva forma avere tutte le porte aperte ovunque è che espone a exploit quei servizi che stanno ascoltando su quelle porte. Ecco perché esistono i firewall, per limitare ciò che è consentito connettersi a determinate porte, per ridurre la superficie esposta dai servizi.


MODIFICARE

Per rispondere alla tua domanda sul perché le persone non possono semplicemente scrivere software non sfruttabile:

Questo è abbastanza facile per programmi semplici, ma molti programmi che richiedono un socket sono complessi. Come tali, hanno molti componenti, molti dei quali non sono nemmeno scritti dallo sviluppatore molto probabilmente (librerie incluse). Non puoi fare affidamento su altre persone per proteggere la tua rete quando esistono metodi di rafforzamento che puoi utilizzare, come i firewall.

L'esecuzione di codice arbitrario / remoto è un rischio enorme, come hai sottolineato. Sfortunatamente gli overflow del buffer e altri difetti di sicurezza che lo consentono sono comuni. Guarda qualsiasi aggiornamento di sicurezza di Microsoft e scommetto che corregge l'esecuzione del codice in remoto o l'elevazione dei privilegi, e MS è una grande azienda con centinaia di sviluppatori e miliardi di dollari.


4
Solo aggiungendo: se ad esempio sai che un servizio ha un bug che può essere usato per infiltrarsi nel codice o altro e vedi effettivamente che questo servizio è in esecuzione, questo è un invito aperto;)
Felix

9

Per quanto riguarda l'aggiornamento che hai scritto:

Grazie per le risposte finora. Ora capisco che una porta aperta significa che esiste un programma che può essere sfruttato ascoltando su quella porta. Ma perché è così difficile scrivere software che non può essere sfruttato? Per arrecare un danno reale a un computer, un programma non dovrebbe consentire il caricamento di uno o più file, quindi sarà necessario eseguire uno di questi file. Sembra che sarebbe incredibilmente difficile permetterlo accidentalmente.

Suo molto difficile scrivere software che non può essere sfruttato!

Ho letto il libro Building Secure Software e uno degli argomenti discussi è stato lo sfruttamento degli overflow dello stack. C'erano due fatti molto spaventosi lì dentro:

  • Affinché un programma abbia un bug di overflow dello stack sfruttabile è molto facile da eseguire, specialmente quando il programma è scritto in C. Nel linguaggio di programmazione C, molte funzioni non sono sicure per impostazione predefinita e il programmatore deve sapere per evitare le funzioni vulnerabili o deve intraprendere azioni speciali per essere sicuro.
  • L'exploit che un hacker deve usare è breve - molto breve. Era meno di mezza pagina del linguaggio assembly, che si traduce in circa 100 (indovinare) byte di codice macchina. Questo codice di exploit è sufficiente per dare alla shell hacker (prompt dei comandi) l'accesso al tuo computer. Non è richiesto il caricamento e l'esecuzione di file di grandi dimensioni, solo un piccolo pezzo di codice che può essere inserito nel mezzo di dati legittimi.

Quindi se un hacker riesce a trovare un programma che (a) ha un bug di overflow dello stack che è (b) sfruttabile su una rete e (c) ha un paio di 100 byte di riserva nel suo buffer, allora il tuo computer viene generato. Fortunatamente la conoscenza dei bug di overflow dello stack è una conoscenza abbastanza comune ora, ma continuano a comparire. 5 anni fa e più a lungo questo era un problema molto più frequente.

Tornando alla tua domanda originale, dovresti evitare le porte aperte per evitare incidenti con un bug sfruttabile in un programma. Ora hai una seconda ragione: la shell remota che un hacker userebbe sarebbe un'altra porta aperta. Se hai un firewall che blocca tutto tranne che tu lo abbia specificamente permesso, bloccherai anche quella shell remota (anche se un hacker sarebbe ancora in grado di fare altre cose cattive sul tuo computer, quindi non essere compiacente!)


2
IIRC, Donald Knuth (?) Ha appena finito di dimostrare matematicamente che uno dei programmi più piccoli che ha scritto era privo di bug e ci sono voluti anni-uomo
RCIX,

7
  • Porta aperta: quando qualcuno lo chiede, il computer risponde che esiste un servizio in ascolto su questa porta. Ciò significa che tutto ciò che arriva a questa porta verrà elaborato da un programma (un servizio) in esecuzione su quel computer.
  • Porto chiuso: quando qualcuno chiede, il computer risponde che non ci sono servizi in ascolto su quella porta. Il richiedente saprà che c'è un computer che risponde all'indirizzo.
  • Porta invisibile: quando qualcuno chiede, non ottengono risposta. Il punto è nascondere se c'è un computer all'indirizzo. Potrebbe non essere molto efficace, tuttavia, poiché joschi si esprime nei commenti.

Se hai una porta aperta, sei sicuro a condizione che il programma che elabora le cose in entrata non abbia exploit disponibili. Ma gli exploit si trovano sempre, ed è bene sapere che ci sono molte scansioni portali che viaggiano in rete, alla ricerca di obiettivi.

Le porte chiuse rispondono ancora al mouse, quindi l'eventuale attaccante sa procedere con il controllo di altre porte. Inoltre, questo è il modo in cui Internet è specifico per funzionare. Mentre le porte invisibili tentano di non fornire alcuna informazione al potenziale aggressore, in teoria infrangono le specifiche.

Dal punto di vista della sicurezza, qualsiasi porta aperta è un enorme buco, poiché il codice viene utilizzato per elaborare dati esterni. Ciò che fa un firewall (o un router NAT) è assicurarsi che nessun traffico in entrata arrivi al tuo computer, anche se il sistema ha alcune porte aperte. In questo modo, chiudono efficacemente tutte le porte.


1
La tua definizione di "porta invisibile" è un pio desiderio. In realtà un utente malintenzionato sa che esiste un computer se non riceve alcuna risposta. Se non vi fosse alcun computer su quel particolare indirizzo IP, il router precedente avrebbe inviato un messaggio al riguardo. Con "porti
invisibili

@joschi: Beh, è ​​un concetto che ho visto su Internet, quindi penso che sia bello definirlo. Hai un buon punto, però. Ho modificato la risposta per riflettere il tuo commento. Almeno fa sembrare che l'IP di destinazione sia dietro un router NAT, immagino. Non sono mai stato un fan del concetto: se hai porte aperte, dovresti assicurarti che stiano eseguendo un servizio sicuro. E se non hai porte aperte, non c'è problema a dire alla rete che esisti. Stealth odora di hype di sicurezza per me.
Ilari Kajaste,

joschi: non tutti i router lo fanno. molti router semplicemente inoltrano alla cieca verso indirizzi IP dove non esiste un sistema. i tentativi di connessione scadono semplicemente perché il client si annoia di provare a fare un handsake a tre vie.
benc

6

In realtà, per quanto ne so, una porta aperta significa che un programma lo sta ascoltando. Quindi esiste un qualche tipo di servizio che elabora i dati.


3

Supponendo che non si disponga di un virus sul computer o su un altro programma che ascolta una porta che potrebbe effettivamente fare qualcosa, perché è importante se una porta è aperta? Se una persona maliziosa inizia a inviare pacchetti a una porta, ma non c'è nulla per ricevere i dati e fare qualcosa con esso, perché è importante?

L'assunzione è la madre di tutti gli eff :)

piuttosto sicuro che dispiaciuto ... ecco una bella lettura per te su makeuseof.com:

Spiegazione della tecnologia: porte del router aperto e loro implicazioni per la sicurezza


una buona lettura breve.
DaveParillo,

1

Non sono un'esportazione di sicurezza, ma ho fatto una piccola ricerca ... Una porta "aperta" è una porta che è impostata per accettare una connessione TCP in entrata.

Se hai app in ascolto solo sulle porte 9, 21 e 80 e il tuo firewall blocca l'accesso a queste tre porte, tecnicamente non hai porte aperte. IOW, la porta 25, ad esempio, non è aperta perché non è in ascolto.

Per rispondere alla tua domanda: il motivo per cui è male avere porte aperte sul tuo computer è perché queste porte possono essere facilmente scoperte e, una volta scoperte, queste porte sono ora sensibili alle vulnerabilità delle applicazioni di ascolto.


La tua definizione di cos'è una porta non è corretta. Una porta non è limitata a TCP in alcun modo.
MDMarra,

1
Suppongo che non si dovrebbe credere TUTTO quello che hanno letto sulla 'rete :) 5 dei primi 6 risultati di Google dichiarano esplicitamente "TCP" nella loro definizione. google.com/…
Shoeless

No, dicono TCP / IP. Grande differenza. TCP / IP include UDP
MDMarra il

1
ICMP non utilizza una porta, è un protocollo di livello 3 incluso nella suite di protocolli IP.
MDMarra,

1
L'unica ragione per cui dico è che è molto importante in riferimento ai firewall (di cui si tratta indirettamente). TCP è stateful e quindi vengono ricordate le connessioni, dove UDP non lo è. Molte volte ciò significa che le porte devono essere aperte per il traffico UDP di ritorno che viene avviato internamente dove non è necessario che ciò avvenga per le connessioni TCP stabilite internamente.
MDMarra,

0

Per lo stesso motivo per cui chiudi e chiudi porte e finestre a casa.


3
chiudo porte e finestre perché fuori fa freddo. cosa c'entra questa domanda con l'isolamento?
Quack Quixote,

2
Le porte e le finestre non isolano se sono solo chiuse? Il bullone extra fornisce davvero molto più isolamento.
Dentrasi,

Un buon punto, ma vale la pena notare che non tutti chiudono a chiave le porte e le finestre di casa. Potrebbe essere "Non tutti vogliono proteggere la propria proprietà" o "Non a tutti piace vivere in una cultura della paura", a seconda del punto di vista.
Ilari Kajaste,

-2

Diciamo solo che le porte aperte sono come la finestra aperta e la porta aperta ma quando le finestre sono aperte un ladro o un topo e un ragno possono entrare #per favore dimmi se sono stupido o asino Modificato nessun asino Le porte aperte sono come finestra aperta ma in internet c'è una porta aperta immagino che anche la porta chiusa siano finestre chiuse senza di essa non possiamo connetterci o navigare immagino proprio come HTTP e SSH o FTP senza di essa non possiamo connetterci perché è un client è solo una connessione TCP

Non sono un esperto di sicurezza


Le porte aperte sono necessarie per offrire servizi. Solo uno su più di un milione di possibili esempi: Gmail utilizza una porta aperta (443 per il loro sito Web utilizzando HTTPS). Ma ti chiede di accedere prima di mostrare qualsiasi cosa.
Arjan,
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.