it-swarm-eu.dev

Perché è brutto avere porte aperte?

Ecco qualcosa che mi ha sempre sconcertato. Perché è brutto avere porte aperte sul tuo computer? Supponendo che tu non abbia un virus sul tuo computer o qualche altro programma che ascolta una porta che potrebbe effettivamente fare qualcosa perché è importante se una porta è aperta? Se alcuni malintenzionati iniziano 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 arbitrariamente solo i dati che riceve. Capisco che l'inondazione di un computer con pacchetti potrebbe causarne l'arresto perché non è in grado di gestire la quantità di dati, ma sto solo considerando i problemi di sicurezza che effettivamente cambiano i file sul computer.

Update

Grazie per le risposte finora. Capisco ora, che una porta che viene aperta in realtà significa che c'è un programma che può essere sfruttato ascoltando su quella porta. Ma perché è così difficile scrivere software che non può essere sfruttato? Per fare del male a un computer, un programma non deve permettere che uno o più file vengano caricati, e quindi uno di quei file dovrebbe essere eseguito. Sembra che sarebbe incredibilmente difficile da permettere accidentalmente.

35
aireq

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

La ragione per cui è una cattiva forma avere tutte le porte aperte a tutti è che espone quei servizi che stanno ascoltando su quelle porte per gli exploit. Questo è il motivo per cui esistono firewall, per limitare ciò che è consentito connettersi a determinate porte, per ridurre l'area esposta dai servizi.


MODIFICARE

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

Questo è abbastanza facile per i 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 ci sono metodi di protezione che puoi usare tu stesso, come i firewall.

L'esecuzione arbitraria/remota del codice è un rischio enorme, come hai sottolineato. Purtroppo i buffer overflow e altri difetti di sicurezza che lo consentono sono comuni. Guarda tutti gli aggiornamenti di sicurezza Microsoft e scommetto che certifica l'esecuzione di codice in modalità remota o l'elevazione dei privilegi e MS è una società enorme con centinaia di sviluppatori e miliardi di dollari.

36
MDMarra

Riguardo l'aggiornamento che hai scritto:

Grazie per le risposte finora. Capisco ora, che una porta che viene aperta in realtà significa che c'è un programma che può essere sfruttato ascoltando su quella porta. Ma perché è così difficile scrivere software che non può essere sfruttato? Per fare del male a un computer, un programma non deve permettere che uno o più file vengano caricati, e quindi uno di quei file dovrebbe essere eseguito. Sembra che sarebbe incredibilmente difficile da permettere accidentalmente.

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

Ho letto il libro Building Secure Software e una delle cose di cui si parlava era lo sfruttamento degli overflow dello stack. C'erano due fatti molto spaventosi là dentro:

  • Per un programma avere un bug di overflow dello stack sfruttabile è molto facile da fare, specialmente quando il programma è scritto in C. Nel linguaggio di programmazione C, molte funzioni non sono sicure di default e il programmatore deve sapere per evitare le funzioni vulnerabili , o deve prendere azioni speciali per essere al sicuro.
  • L'exploit che un hacker deve usare è breve - molto breve. Era meno di mezza pagina di linguaggio Assembly, che si traduce in circa 100 (indovina) byte di codice macchina. Questo codice di exploit è sufficiente per fornire all'hacker Shell (prompt dei comandi) l'accesso al computer. Non è richiesto alcun caricamento e esecuzione di file di grandi dimensioni: solo una piccola porzione di codice che può essere inserita nel mezzo di dati legittimi.

Quindi, se un hacker può 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 computer è pwned. Fortunatamente la conoscenza dei bug di overflow dello stack è abbastanza comune ora, ma continua a comparire. 5 anni fa e più a lungo questo era un problema molto più frequente.

Tornando alla tua domanda iniziale, dovresti evitare le porte aperte per evitare qualsiasi incidente con un bug sfruttabile in un programma. Ora hai una seconda ragione: la shell remota che un hacker utilizzerà poi è un'altra porta aperta. Se disponi di un firewall che blocca tutto tranne che tu lo hai autorizzato in modo specifico, bloccherai anche quella Shell remota (anche se un hacker sarebbe ancora in grado di fare altre cose brutte sul tuo computer, quindi non essere soddisfatto!)

9
Richard Downer

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

6
Felix
  • Open port: Quando qualcuno ti chiede, il computer risponde che c'è un servizio in ascolto su questa porta. Ciò significa che qualsiasi cosa venga inviata a questa porta verrà elaborata da un programma (un servizio) in esecuzione su quel computer.
  • Porta chiusa: Quando qualcuno chiede, il computer risponde che non ci sono servizi in ascolto su quella porta. L'utente saprà che c'è un computer che risponde all'indirizzo.
  • Stealth port: Quando qualcuno chiede, non ottengono risposta. Il punto è nascondere se c'è un computer all'indirizzo. Potrebbe non essere molto efficace, tuttavia, poiché joschi si sporge nei commenti.

Se hai una porta aperta, sei al sicuro se il programma che elabora le cose in arrivo non ha exploit disponibili. Ma gli exploit si trovano sempre, ed è bello sapere che ci sono un sacco di scansioni portuali che girano per la rete, alla ricerca di obiettivi.

Le porte chiuse rispondono ancora al richiedente, quindi un eventuale attaccante sa di procedere controllando altre porte. Poi di nuovo, questo è il modo in cui Internet è specifico per funzionare. Mentre le porte stealth tentano di non dare al potenziale attaccante alcuna informazione, in teoria infrangono le specifiche.

Dal punto di vista della sicurezza, qualsiasi porta aperta è un enorme buco aperto, dal momento che il codice viene utilizzato per elaborare dati estranei. Quello che fa un firewall (o un NAT router) è assicurarsi che nessun traffico in ingresso arrivi sul tuo computer, anche se il sistema ha alcune porte aperte. In questo modo, chiudono efficacemente tutte le porte.

6
Ilari Kajaste

Presumendo non hai un virus sul tuo computer o qualche altro programma che ascolta una porta che potrebbe effettivamente fare qualcosa perché è importante se una porta è aperta? Se alcuni malintenzionati iniziano a inviare pacchetti a una porta, ma non c'è nulla per ricevere i dati e fare qualcosa con esso perché è importante?

Assumption è la madre di tutti gli effetti :)

piuttosto sicuro che dispiaciuto ... ecco Nice leggere per te su makeuseof.com:

Spiegazione della tecnologia: porte del router aperte e implicazioni sulla sicurezza

3
Molly7244

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

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

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 scoperto queste porte sono ora vulnerabili alle vulnerabilità delle applicazioni di ascolto.

1
Shoeless

Per la stessa ragione per cui chiudi e blocca le tue porte e finestre a casa.

0
Steven A. Lowe