Il mio blog-spazio.

NAT, PAT, DMZ, DHCP, Firewalling, Port Forwarding

Visto che
- e' sabato,
- sono a casa e ho una mezz'ora libera;
parliamo un pò di nat, pat, dmz, dhcp, firewall.


Sono in vena ormai di guide come se piovesse...


PREMESSA

Il discorso qui è abbastanza complesso e necessiterebbe di conoscenze basilari un po ampie su alcuni aspetti.
Tuttavia tenter√≤ di essere il pi√Ļ pratico possibile e di non fare una guida troppo teorica.

Molte cose sono state omesse,
molti argomenti presi superficialmente.


NAT, PAT: cos'è a cosa serve e come funziona.

Perche esiste e a che cosa serve il NAT/PAT?
La tecnica di natting/patting (Network Address Translation, Port Address Translation)
nasce dal fatto che l'attuale sistema indirizzamento IP a 32 bit (IPv4), ha raggiunto la saturazione:
vale a dire gli indirizzi ip sono finiti, o stanno finendo.

La tecnica del nat consente ad intere lan di "essere viste" dall'esterno,
cioè dalla rete pubblica internet,
come un singolo host e quindi avere assegnato un solo indirizzo ip pubblico,
invece di avere un indirizzo per ogni host pubblico.

A breve, si spera, passeremo ad IPv6 ( https://it.wikipedia.org/wiki/IPv6 )


Differenza tra NAT e PAT
Il NAT modifica SOLO l'ip
il PAT la porta del pacchetto.

Nella maggior parte dei casi (99,9%) il processo è ibrido NAT+PAT.

Il solo NAT presuppone di avere un pool (una serie)
di indirizzi pubblici da associare all'indirizzo privato.

Visto che l'indirizzo pubblico è unico ed è fornito dinamicamente dal provider,
se uno a casa ha piu di un pc collegato, solo uno dei due a turno potrebbe uscire in internet.
Per evitare questo, ci viene in soccorso :
il NAT + PAT, che permette di associare pi√Ļ indirizzi lan privati,
mantenendo un unico indirizzo pubblico e variando la porta.
Quindi ad esempio:

lan pc1 192.168.1.2
lan pc2 192.168.1.3

dopo il NAT/PAT:
wan pc1: 82.240.10.1:1000
wan pc2: 82.240.10.1:1001

quindi NAT (variazione dell'ip) e PAT (variazione della porta).


Come funziona?
La parola stessa lo dice:
viene modificato il pacchetto IP e/o la porta,
dove all'interno risiedono l'indirizzo di destinazione e l'indirizzo sorgente.

Possono essere modificati tutte e due gli indirizzi e porta (destinazione e sorgente).

Il processo avviene creando una tabella di associazione (nat table)
che accoppia le richieste in uscita dalla lan a un set di porte (scelte a caso dal router di volta in volta)
ed a un indirizzo ip pubblico fornito dal provider.

Esempio
nostro IP pubblico assegnato dal nostro Provider (tim fastweb vodafone..) : 82.240.10.1
Lan PC: 192.168.1.2

Il PC richiede una pagina web che ha come indirizzo 151.10.10.10
quindi
il PC manda il pacchetto al gateway (sarebbe il router),
con indirizzo sorgente 192.168.1.2 e destinazione 151.10.10.10
il router memorizza nella nat table che 192.168.1.2 ha richiesto una pagina che ha indirizzo 151.10.10.10
il router sostituisce l'indirizzo sorgente nel pacchetto e ci mette quello pubblico 82.240.10.1 assegnato dal provider,
e cambia la porta.
Facciamo finta, 82.240.10.1:80
viene memorizzato tutto nella nat table,
il pacchetto torna indietro con le informazione richieste (la pagina web)
il router controlla nella nat table se qualcuno all'interno della lan ha richiesto dei pacchetti provenienti da questo ip,
se c'è una corrispondenza, sostituisce l'ip di destinazione con l'ip privato trovato nella tabella,
e il pacchetto arriva all'host della lan.
Vi si apre il sito web che avete richiesto, sul vostro PC.
Questo è il funzionamento del NAT/PAT.


DMZ
Il fatto che esista una tabella di nat,
fa si che tutti i pacchetti NON richiesti dalla lan
(cioè pacchetti che non hanno corrispondenza nella nat table)
vengano droppati (scartati) dal router e non inoltrati all'interno.

Esiste pero un metodo di funzionamento,
il DMZ (Demilitared Zone),
che indica al router di forwardare (instradare) all'interno della lan, a tutti gli hosts,
TUTTI i pacchetti in arrivo dalla rete pubblica.

E' un sistema che viene di solito usato per i server pubblici,
che hanno però pool di indirizzi pubblici e comunque isolati dalle lan per ovvi motivi di sicurezza.
Ne sconsiglio vivamente l'utilizzo per uso home.


FIREWALLING
Il firewalling è una tecnica volta alla creazione di regole (rules)
e all'ispezione dei pacchetti per motivi di sicurezza.

Quand'è che ho necessita di usare un firewall?
Una delle cose che mi da piu fastidio a questo mondo, è il fatto di fregare la gente.
Fare leva sull'ignoranza per vendere cose assolutamente, in certi casi ovviamente, inutili a prezzi folli.
Il caso piu eclatante è quello del firewall.

Potrei elencare decine e decine di casi in cui firewall installati e configurati (male)
era praticamente come se non esistessero, e nella maggior parte dei casi non sarebbero nemmeno serviti.

Quando il firewall ha un senso?
Ricordando il fatto che stiamo parlando di router e non di modem, il firewall ha senso quando:
- ho un pool di indirizzi pubblici, per cui il router non fa nat e gli host sono direttamente raggiungibili dalla rete pubblica.
- sono in DMZ
e basta.

Ma soprattutto perche?
Come vi dicevo prima,
i pacchetti vengono forwardati all'interno della lan solo se esiste un match (corrispondenza) sulla nat table.

Fine del discorso. Niente entra se non è rischiesto da un host interno.

Non è assolutamente necessario perderci un secondo di tempo nella sua configurazione (utente home)
lasciate tutto come esce dalla casa madre del router.


PORTFORWARDING
PREMESSA: questo paragrafo dovrebbe andare su NAT ma è necessario leggersi parte del precedente paragrafo per capire meglio.

Credo che questo sia l'argomento di maggior interesse per tutti.
Sfatiamo un mito:
- il portforwarding non è firewalling.

Quando uno imposta una regola di port forward
(in alcuni router li chiamano virtual server, per generare ancora di piu confusione)
NON si creano regole di firewalling.

Se qualcuno mi dicesse ma iptables?
Ecco! IPTables è un modulo ibrido di linux (e di alcuni router/firewall linux based) e comprende anche NAT.

Dicevamo:
il portforward è una associazione MANUALE che si fa sulla tabella NAT.

Perchè?
Alle volte c'è la necessita che i pacchetti che arrivano dall'esterno,
non debbano essere necessariamente richiesti prima dall'interno!
(tipo quando si gioca online o, per farvela semplice, per i cattivoni su eMule).

In questi casi è sufficiente indicare al router su quali porte (PAT)
e su quale indirizzo IP Interno (NAT)
mandare i pacchetti che arrivano su porte che noi conosciamo a priori.

La regola:
se create un qualcosa tipo
allow source: any
destination: any

= avete realizzato il DMZ.

Ci siamo?

Quindi evitate di usare any ma usate sempre IP o MAC Address dove possibile.

Andiamo di esempio
Porta pubblica di un gioco: 6550
Porta privata (la stessa): 6550
IP del PC che vuole giocare (ip interno) : 192.168.1.2

regola da creare:
source port: 6550
private port: 6550
lan ip: 192.168.1.2



Corrette impostazioni di un firewall (nel caso in cui ne abbiate bisogno...)
Supponendo che ne abbiate veramente bisogno,
le tecniche di firewalling sono complesse da spiegare,
esiste la regola MASTER che ogni admin deve seguire come la bibbia:

- porte tutte chiuse e traffico disabilitato su tutti gli indirizzi.
da qui in poi si abilitano ad uno a uno tutti i servizi necessari alla lan.


ROUTING
Ho scritto l'altro giorno in un forum ad un utente che chiedeva lumi (spero poi abbia capito... :-D )
Siccome mi è piaciuto molto quello che ho scritto ( rotfl )
lo posto nella speranza che capiate qualcosa e vi facciate un idea sull'arcano argomento.

La metafora
Immagina di essere in macchina nella tua citta (nella tua LAN).
Tu sei il bel pacchetto che se ne va in giro tranquillo per la città in macchine e va a trovare tutti i suoi amici hosts.
Che tu sai dove abitano perche abitano nella tua città.

A questo punto però devi andare da uno che non conosci,
e che abita in una via che non hai mai visitato, di cui conosci solo il nome, per sentito dire.

L'unica uscita dalla tua città è l'autostrada e tu sai dov'è (che è il gateway, cioè il router),
perche è sempre nella tua citta (lan).

Prendi l'autostrada.

Mentre viaggi nell'autostrada vedi i cartelli (la tabella di rounting)
che ti dice che per andare in un certo posto devi prendere una certa via.

Segui i cartelli (in realtà sono i cartelli a livello di routing che portano te ma è per fare un esempio)
fino che trovi l'uscita che ti porta o su un altra autostrada, ma sempre piu vicino alla destinazione,
oppure direttamente nel paese (lan) dove abita il tuo amico che non conosci.

Questo è il routing.


Una vita da IP: come funziona tutto il sistema.

L'idea è quella di far capire che non è l'ip che decide ma è il router che "obbliga".
Di fatto in tutti i testi l'ip è indicato come protocollo "routed" (ruotato).

Breve storia triste, interpretata da:

pacchetto ip: IP
router: RT
switch: SW

IP: "azz , mi tocca uscire dalla lan oggi, chissà che casino sulle dorsali...vabbe, partiamo!"

IP: "ok allora devo andare qui. E' fuori la mia lan per cui mi dirigo al punto di uscita, vado sul router"

IP: "hey RT?"

RT: "uh?"

IP: "senti questo è il mio header vedi un pò dove farmi uscire"

RT: "famme vedè..."

RT: "mmmm capito, tiè esci di là"

IP: "tenk iu very macc"

RT: "prego, vai piano che è un attimo a fare un collision"

IP: "popopopopopopo a ecco un altro RT"

RT2: "che palle oggi tutti sti pacchetti...avanti un altro"

IP: "hey RT2 senti un po ciapa qua il mio header, mi manda, come puoi vedere dal MAC, RT"

RT2: "ah il grande RT come sta? è da un pezzo che non ci scambiamo le tabelle di routing...sto bastardo...vabbe fammè vedè...ah sei arrivato!Esci di lì e mostra allo switch il mac"

IP: "grassie"

SW: "bonjour"

IP: "bonjour?"

SW: "si sò francese!"

IP: "vabbuo, RT2 mi ha detto di mostrarti il mio MAC..."

SW: "mostra!"

IP: "ciapa"

SW: "va ben, devi consegnare lì (indicando un uscita), pussa via, ou revoire"

IP: "grassie...comunque fatti un bidet 8-) "



DHCP
Il DHCP permette di assegnare dinamicamente agli hosts che sono configurati per farlo indirizzi ip presi da uno scope dhcp (range ip).

(di default se non avete toccato niente è cosi, altrimenti siete con ip statico assegnato manualmente da voi),

Quando utilizzarlo?
Il dhcp è buona norma utilizzarlo quando NON ci sono regole di forwarding attive.
Questo perchè le regole di forwarding si basano su ip fissi.
Se per caso quella mattina il dhcp si sveglia e decide di cambiare ip al vostro un pc in lan
(perche in fondo il dhcp è bastardo!)
e avete regole di portforwarding attive,
ebbene quelle regole non varranno piu una cippa
perchè si riferiscono ad ip fissi e non tengono conto delle variazione del dhcp.
Quindi se usate portforwarding usate ip statici.

Sistemi ibridi
Qui il problema sta nel fatto che se io ho una rete in dhcp (tutta)
ed imposto alcuni client con ip fisso,
il dhcp se ne sbatte e c'è la possibilità che vada ad assegnare ad un altro client in dhcp lo stesso indirizzo,
con conseguente conflitto.

Come creare, a seconda delle esigenze, un sistema dhcp ibrido? e Perchè crearlo?
Perch√® se avete regole di port forwarding solo su due tre macchine, e tutte le altre possono risolversi con il dhcp senza problemi, √® molto pi√Ļ comodo per tutti.

Ci sono diversi sistemi, pi√Ļ o meno standard.
Io ne preferisco uno e solo uno :

Escludo un numero iniziale di IP dal DHCP, e lo faccio partire pi√Ļ avanti!

Questo ti permette di sapere che certi indirizzi non verranno mai assegnati automaticamente.
Questi indirizzi saranno i nostri ip fissi per i nostri server, o client che dir si voglia.

Esempio,
imposto il DHCP così:

Originale
Pannello del router (192.168.1.1)
DHCP IP Iniziale: 192.168.1.2
Finale 192.168.1.254


Alessio version
DHCP IP Iniziale: 192.168.1.20
Finale 192.168.1.254


Per cui il RANGE da 192.168.1.2 fino a 192.168.1.19 non saranno mai assegnati,
e questi li usiamo noi in modo statico sulle macchine che richiedono il port forwarding.



Beh, il mio freetime pare terminato.
Ciao a tutti alla prossima!