Domanda:
Con IPv6 dobbiamo usare ancora NAT?
キツネ
2013-10-18 22:40:39 UTC
view on stackexchange narkive permalink

Mi chiedo come utilizzare NAT con IPv6. Sembra che tu non ne abbia nemmeno più bisogno. Allora qual è esattamente il concetto alla base delle configurazioni del firewall negli ambienti IPv6?

Vedi anche [Passare a IPv6 e sbarazzarsi di NAT? Stai scherzando?] (Http://serverfault.com/q/184524/126632) e [RFC 4864] (http://tools.ietf.org/html/rfc4864).
Sette risposte:
#1
+73
Tom Leek
2013-10-18 23:56:08 UTC
view on stackexchange narkive permalink

Esiste una certa confusione su NAT.

NAT non è mai stato concepito per essere utilizzato come funzionalità di sicurezza. Tuttavia, accade che nella maggior parte dei casi (non in tutti), quando una macchina ha accesso a Internet solo tramite NAT, la macchina è in qualche modo "protetta". È come se il sistema NAT fosse anche, intrinsecamente, un firewall.

Vediamo come funziona:

  • Un pacchetto IP ha un indirizzo di origine e uno di destinazione. Ogni router, dopo aver visto l'indirizzo di destinazione, decide a quale router successivo deve essere inviato il pacchetto.
  • Quando un router implementa il NAT, inoltra i pacchetti in uscita sotto una maschera; vale a dire, i pacchetti portano l'IP esterno del router come indirizzo di origine, non la fonte effettiva. Per i pacchetti in arrivo, il router esegue l'operazione inversa. I numeri di porta TCP / UDP sono usati per sapere a quale host interno si riferiscono i pacchetti.
  • Tuttavia, dal punto di vista del router, gli host interni hanno (privato) Indirizzi IP direttamente raggiungibili. NAT è per le comunicazioni tra gli host interni e le macchine oltre il router.

Facciamo un esempio:

  Inner <- --> HomeRouter < --- > ISPRouter < --- > Internet  

"Inner" è il tuo PC. "HomeRouter" è il router che esegue il NAT. "ISPRouter" è il router del tuo ISP.

L '"effetto firewall" è il seguente: di solito , anche se "Inner" ha un port (esegue un servizio raggiungibile in remoto, ad esempio un server Web locale sulla porta 80), le persone da "Internet" non saranno in grado di connettersi ad esso. Il motivo è il seguente: ci sono due modi in cui un pacchetto IP può essere trasferito da HomeRouter a Inner:

  • Un pacchetto in arrivo può arrivare con l'indirizzo di HomeRouter come destinazione e prendere di mira una porta che HomeRouter sa essere associata a una connessione in uscita da Inner a qualche parte su Internet. Questo funziona solo per una connessione che è stata avviata da Inner, e questo implica che la porta non corrisponderà a quella del server che gira su Inner.

  • Un pacchetto IP contiene il privato di Inner Indirizzo IP come destinazione ed è in qualche modo portato all'attenzione di HomeRouter. Ma ISPRouter non conosce l'IP privato di Inner e non inoltrerà un pacchetto IP destinato a quell'indirizzo a HomeRouter. Source routing potrebbe essere utilizzato per contrassegnare un pacchetto con l'indirizzo IP privato di Inner come destinazione e l'indirizzo IP pubblico di HomeRouter come host intermedio. Se ISPRouter supporta l'instradamento della sorgente, un tale pacchetto raggiungerà Inner, indipendentemente dal NAT. Accade così che quasi nessun ISP supporti effettivamente il source routing.

Pertanto, l '"effetto firewall" di NAT si basa su due proprietà:

  • Gli aggressori sono lontani : gli aggressori non iniettano pacchetti direttamente sul collegamento tra il router di casa e l'ISP; tutti i loro tentativi devono passare attraverso i router dell'ISP.
  • L'ISP non consente il routing della sorgente . Questo è il caso (molto) comune.

Quindi in pratica ci sono molte macchine, nelle case private e nelle piccole imprese, che potrebbero essere hackerate in una questione di secondi tranne che traggono vantaggio dall '"effetto firewall" del NAT.


Allora che dire di IPv6? NAT è stato progettato e implementato ( ampiamente distribuito) per far fronte alla scarsità di indirizzi IPv4 gratuiti. Senza NAT, IPcalypse avrebbe già distrutto la civiltà (o attivato l'utilizzo effettivo di IPv6, forse). IPv6 utilizza indirizzi a 128 bit, invece dei miseri indirizzi IPv4 a 32 bit, proprio in modo che non sia necessario utilizzare soluzioni alternative grossolane come NAT.

Puoi usare NAT con IPv6, ma ha poco senso: se puoi convivere con NAT, perché dovresti passare a IPv6?

Tuttavia, senza NAT, allora nessun "effetto firewall" , fragile come potrebbe essere. La maggior parte dei sistemi operativi è ora pronta per IPv6 e lo utilizzerà automaticamente se ne avrà la possibilità. Pertanto, se un ISP decide di attivare IPv6, proprio in questo modo, molte macchine fino a quel momento "nascoste" dietro un NAT diventeranno raggiungibili dall'esterno. Questo potrebbe benissimo trasformarsi in un'orgia di hacking mondiale. Non c'è da meravigliarsi che gli ISP siano un po '... riluttanti.

Per passare a IPv6 piacevolmente , devi accoppiare la sua abilitazione con alcune regole di firewalling solide e ben ponderate, che impedirà connessioni in ingresso che non erano possibili in un mondo NAT (con le avvertenze spiegate sopra), ma ora sono realizzabili grazie alla magia di IPv6. La parola operativa qui è "pensare": questo richiederà un po 'di tempo ad alcune persone, e non è gratuito.

Quindi si può prevedere che IPv4 verrà utilizzato e mantenuto fintanto che può essere tollerato, e, grazie al NAT e ai proxy trasparenti, sarà un tempo lungo (soprattutto se riusciamo a contenere la popolazione umana al di sotto dei 10 miliardi).

C'è ancora pochissimo supporto IPv6 nei router domestici. Quei pochi che ho visto che lo supportano, hanno anche un firewall in entrata negato per impostazione predefinita.
Mi oppongo a "Puoi usare NAT con IPv6, ma ha poco senso". Se vuoi BCP38 devi eseguire SNAT per mantenere ICMP negli intervalli consentiti. Altrimenti lo abbandoneresti per i mittenti di AS stranieri che vivono nella tua rete, in quanto potrebbero trasferire legalmente `:: 0 / 0` che annullerebbe BCP38. Bene, non sono ancora convinto, il NAT IPv6-IPv6 funziona qui, ma vedremo.
La parte difficile non sono le effettive regole del firewall.Le regole per il traffico inoltrato possono essere riassunte in tre comandi ip6tables (predefinito nega, consenti da locale, consenti stabilito / correlato).Se vuoi filtrare anche il traffico locale da / verso il, diventa un po 'più complicato a causa di ICMPv6 ma non è ancora terribile.Il problema più grande è cosa succede se lo script del firewall non viene eseguito affatto.Con NAT ti accorgi che la tua connessione Internet è interrotta, con un firewall non nat probabilmente rimarrai completamente aperto.
Questo può essere mitigato non abilitando l'inoltro ip fino a quando lo script del firewall non è stato eseguito correttamente, ma è facile non vederlo.
#2
+10
Carl
2016-07-18 00:49:57 UTC
view on stackexchange narkive permalink

Il problema più grande per me nella rimozione del NAT è la riduzione della privacy. Con IPv6 noto che tutti i miei dispositivi LAN hanno un indirizzo IPv6 pubblico univoco, che consente a ciascun dispositivo su una LAN di essere identificato in modo univoco. Ciò consente quindi una più facile identificazione dei singoli dispositivi e utenti.

Implicazioni sulla privacy come la capacità di monitorare la tua attività in tutti i domini. I fornitori di annunci ovviamente eseguono questo tipo di monitoraggio già con i cookie, ma la rimozione del NAT semplifica il loro lavoro nel tracciare un singolo dispositivo.

Non hai attivato le estensioni della privacy IPv6 sui tuoi dispositivi?
Le estensioni della privacy IPv6 forniscono, per impostazione predefinita, un nuovo indirizzo IP al giorno.Questa non è privacy, è un ripensamento della privacy mal eseguito.
Quindi configuralo come desideri, nuovo ip ogni minuto?
@WilliamEntriken Stai incolpando lo strumento perché non lo stai usando correttamente?
Lo strumento è "le persone in casa mia aprono i loro dispositivi e usano Internet".È così che le persone usano i loro strumenti.Non è ragionevole per me aspettarmi che ogni persona nella mia casa / azienda riconfiguri le proprie impostazioni di rinnovo IP per aggirare la scarsa progettazione di IPv6.
#3
+8
Peter Green
2018-03-25 08:11:44 UTC
view on stackexchange narkive permalink

Nota: i dettagli di questa risposta presumeranno che utilizzi una macchina Linux come firewall. Se utilizzi un'altra piattaforma, i dettagli possono variare ma la maggior parte dei principi dovrebbe comunque valere.

Mi chiedo come utilizzare NAT con IPv6.

Nat per ipv6 è fortemente sconsigliato da IETF. tuttavia ci sono implementazioni là fuori se lo vuoi davvero. Ad esempio, linux l'ha aggiunto nella versione 3.7.

L'implementazione di Linux funziona sostanzialmente allo stesso modo dell'implementazione NAT di Linux per IPv4. Non posso parlare con altre implementazioni.

Sembra che tu non ne abbia più bisogno.

Le persone usano NAT per una serie di motivi.

  1. Disponibilità degli indirizzi, vogliono più indirizzi per gli host interni di quanti ne abbiano indirizzi pubblici.
  2. Indipendenza dagli indirizzi, desiderano mantenere i propri indirizzi interni indipendentemente dalle modifiche alla connettività.
  3. Privacy, vogliono nascondere i dettagli della loro rete interna e di quale host interno sta facendo la richiesta dal mondo esterno.
  4. Sicurezza, un NAT finisce per agire come un rozzo firewall stateful (anche se potrebbe non essere molto buono). Inoltre è probabile che non si chiuda, se le regole NAT non vengono caricate, il risultato probabile è l'assenza di connettività piuttosto che una connettività completamente aperta.

Allo stesso modo, anche se NAT ha una serie di svantaggi ( e almeno alcuni di questi aspetti negativi hanno implicazioni sulla sicurezza).

  1. Alcuni protocolli potrebbero essere violati dal NAT (sebbene questo possa essere vero anche per i firewall con stato)
  2. Ogni connessione deve essere monitorato e la disponibilità di porte è limitata, questo può portare a vulnerabilità di tipo Denial of Service.
  3. Quando viene rilevato un abuso, il NAT può nascondere la fonte dell'abuso.
  4. Gestione dei servizi in entrata può essere fastidioso. L'accesso da parte di client locali a IP esterni può essere un particolare punto di complessità.

Ipv6 risolve la carenza di indirizzi, in qualche modo risolve il problema dell'indipendenza dall'ISP consentendo di eseguire indirizzi pubblici e privati ​​in parallelo (anche se questo crea problemi di per sé). Le estensioni per la privacy nascondono quale computer su una sottorete sta effettuando una richiesta ma non nascondono su quale sottorete si trova.

Allora qual è esattamente il concetto alla base delle configurazioni del firewall in ambienti IPv6?

Puoi eseguire il filtraggio dei pacchetti con stato senza NAT, ad esempio una configurazione di base per consentire tutte le connessioni in uscita mentre vietano le connessioni in entrata potrebbero avere un aspetto simile.

  ip6tables -P FORWARD DROPip6tables -A FORWARD -i ethinternal -j ACCEPTip6tables -A FORWARD -m conntrack –ctstate ESTABLISHED, RELATED -j ACCEPT 

Il firewall tiene ancora traccia delle connessioni più o meno nello stesso modo in cui farebbe un nat, ma utilizza solo quelle informazioni per filtrare i pacchetti, non per eseguire la traduzione.

Una cosa devi stare attento assicurandoti che il tuo firewall non si chiuda. Suggerirei di NON abilitare l'inoltro in sysctl.conf, invece di abilitarlo alla fine dello script del firewall e utilizzare "set -e" nello script del firewall. In questo modo l'inoltro è abilitato solo se lo script del firewall viene eseguito correttamente.

Se vuoi filtrare anche il traffico da / verso il firewall stesso devi pensare a ICMP. Alcuni tipi di ICMP devono essere consentiti dal collegamento locale o la rete si interromperà gravemente.

A parte questo non è molto diverso da ipv4, decidi cosa vuoi consentire e permettilo.

#4
+5
mricon
2013-10-18 22:48:57 UTC
view on stackexchange narkive permalink

I NAT non sono magicamente più sicuri degli indirizzi pubblici (e hanno un sacco di brutte verruche, a causa della natura della traduzione degli indirizzi). Per eseguire il routing al tuo indirizzo ipv4 privato, un utente malintenzionato deve semplicemente puntare al tuo router, quindi spetta interamente al firewall filtrare quel traffico.

Il passaggio a ipv6 non cambierà nulla in questo riguardo, tranne per il fatto che la tua sottorete filtrata sarà instradabile in tutto il mondo anziché solo instradabile dall'autore dell'attacco. Tutto il resto rimane lo stesso: se devi limitare una sottorete ipv6, sottoclassi la tua / 64 e applichi le regole del firewall per filtrare il traffico autorizzato ad accedervi.

#5
+2
Lodewijk
2013-10-20 00:13:46 UTC
view on stackexchange narkive permalink

NAT è una tecnica che un router può utilizzare per consentire agli host collegati attraverso di esso di condividere un singolo indirizzo IP.

Il router tiene traccia di quali host hanno connessioni e gli host possono chiedere che determinati dati vengano instradati verso di loro. I giochi, ad esempio, richiedono in genere il reindirizzamento del traffico UDP su una determinata porta.

Al contrario, qualsiasi pacchetto che non sembra essere per nessuno che il router conosce (come una lettera senza un indirizzo leggibile) verrà scartato. Questo lo fa funzionare come un firewall.

IPv6 ha indirizzi praticamente illimitati e le famiglie / router probabilmente avranno molto da distribuire. NAT non è più necessario.

Questo rimuove l'effetto firewall. Probabilmente sarà sostituito da firewall adeguati che sono ugualmente restrittivi e fastidiosi per fornire una sicurezza simile a utenti finali sciocchi. Disporre di firewall adeguati è un grande passo avanti e spero che accada il prima possibile.

#6
  0
Terry Horridge
2019-08-14 03:32:51 UTC
view on stackexchange narkive permalink

IPv6 elimina la necessità del NAT di destinazione per le connessioni in entrata, invece di consegnarle agli host sul collegamento locale con l'indirizzo di destinazione (pubblico) intatto. I router rivolti verso l'esterno pubblicizzano prefissi disponibili esternamente a tutti gli host interni, quindi gli host sono liberi di aggiungere indirizzi con questi prefissi alle loro interfacce sul collegamento locale per ricevere le connessioni in entrata.

Non sono convinto che noi hanno eliminato la necessità del NAT di origine sui pacchetti in uscita. L'impostazione predefinita sembra richiedere al client di allocare un indirizzo pubblico nello stesso modo, esponendolo al mondo esterno utilizzando lo stesso identificatore host degli indirizzi locali del collegamento.

Beh, mi dispiace, questo sta divulgando informazioni private a Internet pubblico (non attendibile), che nel mio libro è una violazione della riservatezza: uno dei tre pilastri della sicurezza come lo intendiamo oggi.

Credo che il NAT dovrebbe essere usato per tradurre la parte privata dell'indirizzo sorgente (prefisso di routing, identificatore host e porta) in un valore casuale su qualsiasi firewall che protegge il confine tra Internet pubblico e una rete privata.

Ci tengo il collo qui, ma gli architetti IPV6 non si stanno facendo alcun favore tentando di eliminare NAT.Il consiglio dato in blog come questo: internetsociety.org/blog/2015/01/… sta indicando alla comunità che l'IETF non comprende la sicurezza.Questa è l'opinione generale tra gli esperti di sicurezza: IPv6 così com'è è un buco nero della sicurezza.
https://www.internetsociety.org/blog/2015/01/ipv6-security-myth-3-no-ipv6-nat-means-less-security/ È il collegamento troncato nel commento sopra
Ripensandoci penso che dovrebbe essere su tutti i firewall perimetrali.La trasmissione dello stato di connessione tra i firewall è un'aggiunta banale ai dati che è necessario condividere in ogni caso attraverso il perimetro.
Modificato per chiarire la portata nelle reti più grandi
#7
  0
Terry Horridge
2019-08-15 17:23:19 UTC
view on stackexchange narkive permalink

Il problema fondamentale che mette a disagio gli architetti di Internet con il NAT è che sembra essere in conflitto con il principio end-to-end. Questo in pratica dice che i router di livello 3 intermedio dovrebbero ignorare lo stato di connessione di livello 4 in modo che i pacchetti possano essere instradati in modo efficiente lungo percorsi alternativi. Tuttavia, NAT è facile da implementare nel contesto di un firewall stateful, ed è così che dovrebbe essere visto.

La necessità di firewall divenne evidente quando Internet si avvicinò al suo ventesimo compleanno alla fine degli anni '80. Al giorno d'oggi, tutti i dati che passano in entrata e in uscita da una rete privata sono costretti a passare attraverso un firewall, che deve tenere traccia dello stato della connessione per poter filtrare i pacchetti in modo efficace.

Anche se non era del tutto chiaro in 1994, se si elimina il requisito di riutilizzo degli indirizzi, NAT è una funzione firewall il cui scopo principale è impedire che i dati privati ​​escano dalla rete privata.

In particolare, quando un client avvia una connessione a un server esterno, la parte privata dell'indirizzo sorgente (prefisso di routing, identificatore host e porta) utilizzata all'interno della rete privata non dovrebbe mai essere autorizzata a trapelare su una rete esterna.

Il NAT di Linux Ip6tables è disponibile dalla versione del kernel 3 e svolge un lavoro completamente professionale, ad es producendo indirizzi host casuali univoci che sono validi solo per una singola sessione.

Sfortunatamente questa caratteristica non è stata completamente documentata perché nessuno ha escogitato un caso d'uso! Bene, eccolo qui. E già che ci sei puoi anche assicurarti che i numeri di porta siano inclusi.

Se visualizzato in questo modo, è il firewall che ha un requisito per mantenere lo stato e il NAT viene eseguito dal firewall, quindi non c'è mai stato niente come un router NAT. Il principio end-to-end non si applica.

Penso che la lezione sia che gli architetti di Internet dovrebbero attenersi alla progettazione dei protocolli Internet e lasciare la progettazione del firewall agli architetti della sicurezza.



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...