Razmišljanje: Ali je NAT res tako škodljiv?

Sedaj me že celo mediji v intervjujih sprašujejo, zakaj vedno trdim, da je NAT tako zelo škodljiv. Ne trdim, da v določenem momentu ni podaljšal časovnega okvira, po katerem bi verjetno brez tega zmanjkalo IPv4 naslovov – a kolateralna škoda je bila opazna in agonija IPv4 protokola se je samo za nekaj let podaljšala. Pa si oglejmo nekaj dejstev…

NAT  (Network Address Translator) kot tak v svoji osnovi samo spremeni IP naslov iz javnega naslova v nek RFC1918 privaten naslov. Originalno NAT ne dela translacije portov. To je bila prva poteza vrlih snovalcev te zadeve, a so kmalu ugotovili, da so naredili zelo neuporaben mehanizem, saj je organizacija še vedno potrebovala ravno toliko javnih IP naslovov kot je imela računalnikov. Zato so si brihtne glave izmislile PAT (Port Address Translation) in ga vtaknile v NAT mehanizem. Tako je NAT/PAT spremenil IP naslov in tudi omogočil to, da so si računalniki v lokalnem omrežju na privatnih naslovih razdelili med sabo 65536 sej na enem javnem IP naslovu, kar je pomenilo drastičen upad porabe javnih IP naslovov.

Kaj je to prineslo s sabo? Nič kaj dobrega. V prvih verzijah NAT-a je komaj delal samo http protokol. Nato so začeli krpati luknje in počasi so začeli čez NAT delati tudi drugi protokoli, a za večino njih je bilo potrebno dati v NAT nekakšen ALG (Application Layer Gateway), ki je znal protokolu pri prehodu “pomagati” pri delovanju. Vsak nov protokol potrebuje prilagoditev NAT-a ali pa že kot tak uporablja “evasive” tehnike, da se prebije skozi.

Poleg tega ima večina ljudi NAT za varnostni mehanizem, saj pravijo da so za NATom “varno skriti”. NAT je translacijski mehanizem in ne varnostni mehanizem. Dajte to že enkrat preboleti in mi prosim nehajte to razlagati. Če bi mi vsak, ki mi poizkuša to “prodati” dal zraven še 10 evrov bi sedaj bil miljonar. Security-by-obscurity nikoli ni prinesel nič pametnega.

Strinjam se z Alunom Jonesom, ko je v svojem blog zapisu napisal, da je to podobno, kot da bi živeli v šotoru in svoje premoženje varovali s ključavnico na vhodnem krilu. False-sense-of-security.

Stopimo korak nazaj in se zazrimo v malo večjo sliko interneta; Naloga omrežja je, da prenese paket med strežnikom, kjer je servis do uporabnika oziroma odjemalca. Ne več, ne manj. Samo IP paket moramo spraviti med dvema točkama. Zakaj bi torej postavljal na to pot vse več “pametnih” naprav, ki nekaj spreminjajo, preusmerjajo, opremljajo, pregledujejo, pa še marsikaj? Saj moramo samo en ubogi IP paket spraviti od strežnika do uporabnika…

Sedaj modre glave razmišljajo, kaj narediti ko bi zmanjkalo IPv4 naslovov. Odgovor je lahko dokaj enostaven: Postavimo NAT v jedro omrežja pri ISP-ju in cela omrežja ali celo države bodo lepo varno skrite za NAT-om. A to pomeni, da uporabniku ne bomo več dali javnega IP naslova, ampak le privatni naslov, za katerega bo lahko postavil drugi NAT in tako naprej, pristali bomo v večplastnem NAT svetu. Kje je tukaj ideja o direktni komunikaciji med napravami na internetu (ent to end connectivity)? Ni je, ubili smo jo. Za vedno.

Kaj o tem pravijo drugi? V googlu sem napisal “problems with NAT“. Rezultatov je ogromno. Našel sem tudi zanimiv spisek, kaj vse NAT pokvari (avtor Keith Moore, University of Tennessee).

Zakaj to pišem? Ker nočem, da bi se celotna omrežja čez leta znašla za nekakšnimi ogromnimi NATi, CGN imenovanimi. Svojo komunikacijo z internetom hočem obdržati takšno, kot je bila zamišljena na začetku – brez pametnih škatel vmes. Mobitel, Simobil in ostali mobilni operaterji že imajo CGN – da ne bom krivičen, Mobitel skuša to popraviti, Simobil ostaja hladen, za TušMobil pa nimam podatkov. Morda bo Miha iz Tuš-a kaj zapisal spodaj. Zakaj je CGN tako zelo nevaren smo pa zapisali tudi v naš A+P RFC draft. Preden mi spet kdo začne najedati, kako je NAT super, naj si prosim to prebere in tudi razume.

Sicer pa me nima kaj skrbeti, saj smo internetno-ideološko napreden narod; že leta 2002 se je Slovenija zrevoltirala in rekla NATu ne! 😀

Za go6.si iz NAT-free omrežja: Jan Žorž

Vaš IP naslov (ali ste na IPv6 ?):
13.59.36.203

Comments

  1. December 21st, 2009 | 12:04

    Da ne boš širil polresnic: “Enterprise” NAT (kjer NAT uporablja za prevajanje source IN destination naslov in port) je natanko tako varen kot stateful packet inspection.

    Odločitev ali je to zadosti, je stvar posameznika. Res pa je, da škatle ki jih za 50€ dobiš zraven pralnega praška delajo drugačen NAT, ki je varnostno res samo pesek v oči.

  2. December 21st, 2009 | 12:12

    Deloma se strinjam… a če mene vprašaš, bi morali počasi vso to “90’s” kramo (NAT, statefull firewalls, etc…) počasi zamenjati za L7 deep packet inspection mehanizme, kjer porti in ostali skoraj nepomembni podatki skoraj niso več pomembni – pomembno je kaj se v paketih skriva in kaj to za uporabnika pomeni. IPv4 ali IPv6? Škatli “vmes” mora biti vseeno.

    BTW, ene par idej imam spet, morava spet na coffee. Se bova po mailu zmenila.

  3. December 21st, 2009 | 17:59

    Časi firewallov in acc. list so mimo torej gledanja samo headerjev (source/dest port,ip) paketka.. nas dandanes zanima bolj payload del paketka, ker preprosto prideš do točke kjer določenih portov ne moreš blokirat za ves traffic (25,53,80,..), ampak problem nastopi pri večina podjetjih oz. državnih institucij, da se “stari mački”, ki administrirajo omrežja tega ne zavedajo..

    Lp, Sebastjan Štucl

  4. December 21st, 2009 | 23:14

    Sebastjan, good point. A vseeno, samo govoriti o tem ne bo dovolj…

  5. Edi
    December 22nd, 2009 | 11:59

    Jan, odličen blogpost. Lep indikator, da NAT ni varnostni varnostni mehanizem temveč translacijski je ravno IPv6. V IPv6 svetu ni potrebe za NAT, ostali varnosti mehanizni (the real ones) pa so še vedno tu (firewall, IPS/IDS, IPsec…).

Leave a reply

website