In un nostro precedente articolo della rubrica Tech Corner, abbiamo già parlato ampiamente della tecnoogia NAT e discusso di quali siano le criticità legate all’utilizzo in ambito VoIP. In questo nuovo articolo, approfondiremo la questione legata alle varie tipologie di NAT con esplicito riferimento al loro comportamento a livello di mappatura di IP e Porte e a livello di filtraggio sugli accessi.
Cone NAT e NAT Simmetrico
Esistono due categorie di comportamento NAT, ovvero Il Cone NAT e il Symmetric NAT. La differenza cruciale tra loro è che il primo utilizzerà gli stessi numeri di porta per gli indirizzi di trasporto interni ed esterni, mentre il secondo utilizzerà sempre numeri diversi per ciascun lato del NAT.
Inoltre, ci sono 3 tipi di Cone NAT, con vari gradi di restrizioni per quanto riguarda le fonti consentite di trasmissioni in entrata. Per connettersi con un host locale che si trova dietro un Cone NAT, è prima necessario che l’host locale esegua una trasmissione in uscita a uno remoto. In questo modo, verrà creata una regola dinamica per l’indirizzo di trasporto di destinazione, consentendo all’host remoto di riconnettersi.
L’unica eccezione è il Full Cone NAT, dove una regola statica può essere creata preventivamente da un amministratore, grazie al fatto che questo tipo di NAT ignora qual è l’indirizzo di trasporto di origine dell’host remoto che si sta connettendo.
Full Cone NAT
Questo tipo di NAT consente le trasmissioni in entrata da qualsiasi indirizzo IP di origine e qualsiasi porta di origine , purché la regola di NAT statico sia stata creata in precedenza.
In genere, queste regole vengono create in modo statico, manualmente da un amministratore. Questo è il tipo di regole utilizzate per configurare Port Forwarding (ovvero ” apertura delle porte “) nella maggior parte dei router di livello consumer. Naturalmente, come per tutti i tipi di NAT, è anche possibile creare regole dinamiche eseguendo prima una trasmissione in uscita. Il Full Cone NAT si accompagna in genere con lo static port mapping che prevede che la porta esterna del NAT corrisponda alla porta interna (conservazione delle porte).
Al fine delle trasmissioni VoIP con il protocollo SIP, il Full Cone Nat costituisce la situazione migliore dal punto di vista funzionale. Si tratta però della situazione che espone a maggiori rischi di attacco, in quanto la porta esterna (ad. es la 5060) è raggiungibile da qualunque host remoto.
In questa situazione è raccomandabile inserire nella regola di NAT dei Filtri ACL, al fine di limitare l’esposizione del NAT.
Restricted Cone NAT (Address)
Questo tipo di NAT consente le trasmissioni in entrata da un indirizzo IP di origine specifico e qualsiasi porta di origine. In genere, una regola in entrata di questo tipo viene precedentemente creata dinamicamente, nel momento in cui l’host locale avviava una trasmissione in uscita verso un indirizzo host remoto.
Il Restricted Cone NAT si accompagna, in genere, con un filtro simmetrico sulle porte esterne che prevede che la porta esterna del NAT sia generata casualmente e NON corrisponda, quindi, alla porta interna.
Al fine delle trasmissioni VoIP con il protocollo SIP, il Restricted Cone Nat presenta una maggiore difficoltà di funzionamento su alcuni PBX SIP ma non espone il PBX a rischi diretti di attacco. La porta esterna (ad. es la 32000 che corrisponde alla 5060 interna) è raggiungibile solo dall’IP Remoto che è stato precedentemente contattato.
Per dispositivi come i Telefoni IP è raccomandabile utilizzare gli strumenti di superamento delle barriere di NAT quali Stun. Keep Alive, Rport.
Port-Restricted Cone NAT
Questo è il tipo più restrittivo di Cone NAT e consente solo trasmissioni in entrata da un indirizzo IP di origine specifico e da una porta di origine specifica. Anche in questo caso, una regola in entrata di questo tipo è stata precedentemente creata dinamicamente quando l’host locale ha avviato una trasmissione in uscita verso un host remoto.
Anche il Port Restricted Cone NAT, si accompagna in genere con un filtro simmetrico sulle porte esterne che prevede che la porta esterna del NAT sia gernerata casualmente e NON corrisponda quindi alla porta interna.
Al fine delle trasmissioni VoIP con il protocollo SIP, il Restricted Cone Nat presenta una maggiore difficoltà di funzionamento su alcuni PBX SIP ma non espone il PBX a rischi diretti di attacco. La porta esterna (ad. es la 32000 che corrisponde alla 5060 interna) è raggiungibile solo dall’IP Remoto che è stato precedentemente contattato.
Per dispositivi come i Telefoni IP In questa situazione è raccomandabile utilizzare gli strumenti di superamento delle barriere di NAT quali Stun. Keep Alive, Rport.
NAT Simmetrico
Questo tipo di NAT si comporta allo stesso modo di un Port Restricted Cone NAT, con una differenza importante: per ogni trasmissione in uscita verso un diverso indirizzo di trasporto remoto (cioè a un diverso host remoto), il NAT assegna una nuova porta, generata casualmente sul lato esterno (pubblico). Ciò significa che due trasmissioni consecutive dalla stessa porta locale a due diversi host remoti avranno due diverse porte di origine esterne, anche se l’indirizzo di trasporto di origine interno è lo stesso per entrambi.
Questo è anche l’unico caso in cui l’utilizzo di un server Stun sarà totalmente inutile al fine di risolvere la porta esterna utilizzata e di identificare il tipo di NAT. Si tratta della situazione normalmente più critica con la quale operare in ambito VoIP.
Tipologie di NAT nella realtà di tutti i giorni (RFC4787)
La nomenclatura che abbiamo utilizzato è quella più classica che si riduce ai 4 esempi menzionati. Questa terminologia è però stata spesso fonte di confusione in passato poichè nella realtà operativa odierna, la maggior parte delle implementazioni reali combinano tutti i tipi di NAT che abbiamo appena descritto, incrociandoli con il concetto di modifica o preservazione delle porte (filtro simmetrico).
La RFC4787 tenta di alleviare questo problema introducendo una terminologia standardizzata per i comportamenti tipici. In particolare opera una distinzione tra i seguenti concetti:
Classificazione in base al tipo di Mappatura delle Porte effettuata dal NAT
la RFC caratterizzerebbe i Full Cone NAT, i Restricted Cone NAT e i Port Restricted Cone NAT come aventi una mappatura indipendente dall’indirizzo dall’endpoint, mentre caratterizzerebbe un NAT simmetrico come avente una mappatura dipendente dall’indirizzo e dalla porta dell’endpoint
Classificazione in base al Filtro operato dal NAT
Questa sezione descrive vari comportamenti di filtraggio osservati nei NAT. Quando un endpoint interno apre una sessione in uscita tramite un NAT, quest’ultimo assegna una regola di filtraggio per la mappatura tra un IP e porta-interno con un IP e porta-esterno. Il comportamento chiave che viene descritto è relativo al criterio utilizzato dal NAT per filtrare (accettare o scartare) i pacchetti provenienti da specifici endpoint esterni.
- Il Full Cone NAT viene classificato dalla RFC come avente un filtro indipendente dall’endpoint.
- Il restricted Cone NAT è classificato come aventi un filtro dipendente dall’indirizzo.
- Il port restricted cone NAT è classificato come avente un filtro dipendente dall’indirizzo e dalla porta
- Il NAT simmetrico è invece classificato come avente sia un filtro dipendente dall’indirizzo che un filtro dipendente dall’indirizzo e dalla porta
Classificazione in base alla preservazione delle Porte
Alcuni NAT tentano di preservare il numero di porta utilizzato internamente quando devono assegnare ad un indirizzo IP pubblico esterno una porta. Questo comportamento di assegnazione delle porte viene definito “port preservation“. In caso di collisione della porta, questi NAT tentano di mettere in atto una varietà di tecniche differenti. Ad esempio, alcuni NAT lo faranno sovrascrivendo la mappatura precedente per preservare la stessa porta. Altri NAT assegneranno un indirizzo IP esterno differente, qualora sia effettivamente disponibile un pool adeguato di indirizzi pubblici esterni. In altri casi l’algoritmo utilizzato per il NAT procederà semplicemente al cambio di porta, utilizzando una porta casuale (NAT senza port preservation).
Alcuni NAT usano il “Port Overloading“, cioè usano sempre la porta conservazione anche in caso di collisione; si tratta però di una metodica inefficace che causa spesso il fallimento dell’operazione di NAT con la maggior parte dei servizi.
Alcuni esempi di traduzione di NAT in ambito VoIP
Full Cone Nat con Static Port Mapping (NAT statico)
E’ l’esempio tipico di una configurazione di NAT statico ideale per il VoIP. Questa configurazione viene in genere realizzata inserendo una regola statica di NAT all’interno dell’apparato router/firewall. Le porte private interne vengono preservate anche sul lato esterno (pubblico). E’ raccomandabile inserire dei filtri ACL per limitare l’accesso in ingresso solo aspecifici host remoti
Restricted Cone Nat (NAT Dinamico)
E’ l’esempio tipico di una configurazione di NAT dinamico compatibile con le applicazioni VoIP. E’ la configurazione che si ottiene in assenza di specifiche regole di NAT statico. La richiesta in uscita, operata dal dispositivo telefonico, determina l’apertura dielle specifiche porte SIP e RTP verso i provider VoIP utilizzati. Le porte pubbliche esterne vengono generate dinamicamente e non coincidono con quelle esterne. E’ importante notare che le porte SIP esterne, relative alla traduzione della porta 5060 interna, rimangono invariate nonstante gli host remoti contattati siano differenti (provider1 e provider2).
NAT Simmetrico (NAT Dinamico)
E’ l’esempio tipico di una configurazione di NAT dinamico incompatibile con le applicazioni VoIP. E’ la configurazione che si ottiene in presenza di NAT Simmetrico (statico o dinamico). La richiesta in uscita, operata dal dispositivo telefonico, determina l’apertura dielle specifiche porte SIP e RTP verso i provider VoIP utilizzati. Le porte pubbliche esterne vengono generate dinamicamente e non coincidono con quelle esterne. E’ importante notare che le porte SIP esterne, relative alla traduzione della porta 5060 interna, risultino differenziate per ognuno degli host remoti contattati (provider1 e provider2). Questo comportamento rende nulla la funzionalità di un eventuale impiego di server Stun e rende difficoltoso il funzionamento del protocollo SIP. L’errore più comune in queste situazioni è relativo alla monodirezionalità o assenza dell’audio duranrte la chiamata.