Understanding Security Zone, Security Policy and NAT in Juniper SRX Platforms

JuniperPerlu beberapa penyesuaian dengan environtment dengan satu vendor perangkat network ini, meski saya sudah pernah ikut training mengenai vendor ini tetap saja masih perlu menyesuaikan lagi. Juniper SRX merupakan perangkat sejenis Firewall, jadi default deny beda dengan router. Dalam artian semua paket/traffic yang masuk atau keluar melewati SRX ini akan di drop, jadi perlu membuat policy-policy yang sesuai untuk mengijinkan paket tersebut lewat. Perlu diketahui untuk perangkat satu ini ada yang namanya security-zone kalau di cisco bisa disamakan seperti route-map jadi semua network itu dibuat zone-zone tersendiri sesuai dengan peruntukanya masing-masing. Setelah dibuat zone maka kita masih perlu membuat policy (aturan) agar masing-masing zone tersebut bisa berkomunikasi satu dengan yang lain.

Security Zone

Dari prespektif security policies, semua traffic akan masuk ke sebuah security zone dan akan keluar ke security zone. Mengkombinasikan metode klasik “dari mana dan mau kemana” di Juniper dikenal dengan “from-zone” dan masuk ke “to-zone”.

Security zone bisa dikatakan sebagai identitas atau grup dari network yang bakalan di”ikutkan” ke policy. Bisa berupa sebuah interface atau lebih dari satu. Masing2 security zone agar bisa berkomunikasi dengan yang lain menggunakan security policy, akan dibahas dibawah nanti.

Network Topology

Default Zone : Trust Zone and Untrust Zone

By default, Juniper SRX sudah terdapat 2 Security Zone yaitu untrust zone untuk interface yang mengarah ke ISP (ge-0/0/0.0) dan trust zone untuk yang mengarah ke LAN (vlan.0). Berikut konfigurasi interface sesuai topology diatas.

ge-0/0/0 {
    unit 0 {
        family inet {
            address 202.100.100.2/29;
        }
    }
}
ge-0/0/1 {
    unit 0 {
        family inet {
            address 10.1.1.1/29;
        }
    }
}

Untuk security zone seperti berikut.

security-zone trust {
    host-inbound-traffic {
        system-services { #service yang diaccept pada security zone
            all;
        }
        protocols { #protocols yang diaccept pada security zone
            all;
        }
    }
    interfaces { #interface yang diattach ke security zone
        ge-0/0/1.0;
    }
}
security-zone untrust {
    screen untrust-screen; 
    interfaces {
        ge-0/0/0.0 {
            host-inbound-traffic {
                system-services {
                    dhcp;
                    tftp;
                }
            }
        }
    }
}

Pada bagian untrust zone, karena interface tersebut mengarah ke public. Untuk meningkatkan security juniper by default mengaktifkan aturan keamanan berupa screen feature, fitur ini selayaknya IDS (Intrusion Detection System) untuk mencegah system attack berupa scanning port, DoS dan beberapa hal lain.

Perlu diperhatikan, service-service yang masuk ke Juniper itu diatur di security zone ini. Biasanya untuk awal-awal akan muncul pertanyaan kok ini interface gak bisa di ping yah? coba periksa service yang enabled di juniper tersebut 😀


 

Security Policy

Seperti yang sudah saya sebutkan sebelumnya, security policy ini ibaratnya sebagai “pengatur lalu lintas jalan raya”. Masing-masing security zone agar bisa berkomunikasi satu sama lain itu ditentukan pada security policy ini, menggunakan attribute from-zone dan to-zone.

Topology 2

DMZ Zone and Trust Zone

Berikut adalah konfigurasi security policy untuk menghubungkan antara DMZ Zone dan Trust Zone.

security {
    policies {
        from-zone dmz to-zone trust {
            policy dmz-to-trust {
                match {
                    source-address any; 
                    destination-address any;
                    application any;
                }
                then {
                    permit;
                }
            }
        }
        from-zone trust to-zone dmz {
            policy trust-to-dmz {
                match {
                    source-address any;
                    destination-address any;
                    application any;
                }
                then {
                    permit;
                }
            }
        }
    }
}

Configure NAT

Ada 3 jenis NAT (Network Address Translation) yang tersedia untuk Juniper SRX devices. Source NAT, Destination NAT dan Static NAT. Juga akan membahas mengenai Proxy ARP. Mungkin untuk cara implementasi versi Junos SRX dengan Junos Router biasa agak berbeda, kata guru saya yang punya blog http://barliesucks.wordpress.com/

Kalo srx pake
Klo ruter enggak

Akan tetapi untuk postingan ini sudah cukup untuk membahas dasar-dasar dari rule-rule dari juniper ini.

JunOS NAT packet processing

Untuk mempermudah memahami konfigurasi NAT berikut disertakan gambar Flow Packet dari system JunOS.

Junos Flow Packet

Junos Flow Packet

Sesuai gambar diatas, sebelum SRX memproses policy, pertama kali pelu tahu zone tersebut dari mana dan akan menuju ke zone mana. Maka dari itu destination static NAT dan destination NAT menjadi tahap pertama kali. Setelah itu baru masuk ke policy dimana source dari static NAT atau source NAT akan di translasikan.

Source NAT

Traffic dari ip private yang akan menuju internet akan di source NAT-kan menjadi sebuah IP public. Kalau di mikrotik bisa dikatakan ini adalah NAT Masquerade (one-to-many) yaitu sebuah fungsi yang merubah field Source IP Private dari sebuah packet data menjadi IP Address Publik. Sederhananya metode dimana banyak host bisa terhubung ke internet menggunakan 1 ip publik saja.

Source NATKonfigurasi seperti berikut

set security nat source rule-set nat-trust-to-untrust from zone trust
set security nat source rule-set nat-trust-to-untrust to zone untrust

set security nat source rule-set nat-trust-to-untrust rule pat-interface match source-address 192.168.100.0/29
set security nat source rule-set nat-trust-to-untrust rule pat-interface match destination-address 0.0.0.0/0
set security nat source rule-set nat-trust-to-untrust rule pat-interface then source-nat interface

Yang perlu diperhatikan untuk membuat rule NAT, kita perlu membuat rule-set dan rule didalam rule-set. Hanya terdapat rule-set yang dapat diimplement ke sebuah security zone. Akan tetapi multiple rule dapat diimplement ke dalam sebuah rule-set.

Seperti contoh diatas, traffic yang berasal dari 192.168.100.0/29 akan ditujukan ke “any” (kesemuanya), dideliver dari zone TRUST menuju zone UNTRUST akan menjadi source NAT ke ip interface UNTRUST. Kalau di cisco kita bisa menyebutnya sebagai PAT (Port Address Translation), atau NAT overload. Karena beberapa ip private dapat ditranslasikan ke dalam sebuah ip publik.

Then Source-NAT Options

Dalam konfigurasi NAT diatas, bisa dilihat pada command terakhir menggunakan then source-nat. Ada terdapat 3 option yang bisa ditambahkan disini. Seperti contoh diatas kita menggunakan opsi interface pada akhir command. Ada juga pool dan off.

Pool Option

Opsi ini digunakan ketika kita tidak ingin NAT ke interface akan tetapi akan di NAT kan ke ip lain (yang tidak digunakan). Pertama kali kita perlu mendefinisikan ip yang ada di pool yang akan kita gunakan. Konfigurasinya seperti berikut.

set security nat source pool pool-pat address 202.100.100.3/32

set security nat source rule-set nat-trust-to-untrust from zone trust
set security nat source rule-set nat-trust-to-untrust to zone untrust

set security nat source rule-set nat-trust-to-untrust rule pat-interface match source-address 192.168.100.0/29
set security nat source rule-set nat-trust-to-untrust rule pat-interface match destination-address 0.0.0.0/0
set security nat source rule-set nat-trust-to-untrust rule pat-interface then source-nat pool pool-pat

Sebagai catatan kita masih tetep bisa membuat pool meski cuman ada 1 ip saja yang tersedia, hanya sekedar membuat pool lho ya selanjutnya akan didefinisikan ketikan source pool atau destination pool digunakan. Jika kamu memiliki berpuluh2 ribu connection yang melewati firewall kedalam sebuah IP, kita dapat membuat beberapa IP untuk dimasukan ke dalam pool dan SRX akan otomatis translate diantara beberapa ip tersebut yang berada di pool.

Off Option

Kita juga bisa mengidentify traffic yang tidak ingin kita NAT-kan. Akan berguna sekali jika kita mengenat semuanya dari DMZ menuju UNTRUST, akan tetapi kita tidak ingin NAT flow tertentu yang menuju VPN tunnel. Untuk membuatnya kita bisa menggunakan option off. Seperti berikut.

set security nat source rule-set nat-trust-to-untrust from zone trust
set security nat source rule-set nat-trust-to-untrust to zone untrust

set security nat source rule-set nat-trust-to-untrust rule nat-off match source-address 192.168.100.0/29
set security nat source rule-set nat-trust-to-untrust rule nat-off match destination-address 172.16.57.0/24
set security nat source rule-set nat-trust-to-untrust rule nat-off then source-nat off

set security nat source rule-set nat-trust-to-untrust rule pat-interface match source-address 192.168.100.0/29
set security nat source rule-set nat-trust-to-untrust rule pat-interface match destination-address 0.0.0.0/0
set security nat source rule-set nat-trust-to-untrust rule pat-interface then source-nat interface

Sebagai catatan disini terdapat 2 rule. Yang pertama NO-NAT yang artinya akan menggunakan source-nat off pada traffic yang cocok dengan kriteria tersebut. Kenapa harus dilakukan seperti ini? Karena semisal ada spesifik traffic yang akan dideliver ke VPN dan kita tidak ingin traffic tersebut di NAT-kan akan tetapi kita tetep harus source NAt ke interface IP. Dalam hal ini biasanya dikenal sebagai NAT Zero, NAT 0, No NAT or Identity NAT.

Destination NAT

Ketika ada orang lain di internet ingin mengakses device yang berada pada internal networkl kita bisa menggunakan rule Dst-NAT, dengan cara membelokan ip publik tertentu ke arah internal network kita.

Destination NAT

Destination NAT

set security nat destination pool pool-webserver address 10.1.1.2/32

set security nat destination rule-set nat-untrust-to-dmz from zone untrust
set security nat destination rule-set nat-untrust-to-dmz to zone dmz

set security nat destination rule-set nat-untrust-to-dmz rule dest-nat match destination-address 202.100.100.4/32
set security nat destination rule-set nat-untrust-to-dmz rule dest-nat then destination-nat pool pool-webserver

Dalam contoh konfigurasi diatas semua traffic yang menuju SRX pada untrust zone pada ip 202.100.100.4 akan di translate menuju 10.1.1.2. Dalam hal ini jika terdapat 2 buah IP pada pool, SRX secara ototmatis akan load balance diantara kedua IP yang berada di pool. Melewatkan beberapa traffic ke kedua IP pada destination pool.

Port Forwarding

Terkadang kita ingin melakukan port forwarding, dalam artian yang kita forward hanya port tertentu saja menuju ke arah server. Dalam hal ini kita menggunakan destination NAT seperti berikut contohnya.

set security nat destination pool pool-port-forward address 10.1.1.2/32 port 80

set security nat destination rule-set nat-untrust-to-dmz from zone untrust
set security nat destination rule-set nat-untrust-to-dmz to zone dmz

set security nat destination rule-set nat-untrust-to-dmz rule dest-nat match destination-address 202.100.100.4/32
set security nat destination rule-set nat-untrust-to-dmz rule dest-nat match destination-port 8080
set security nat destination rule-set nat-untrust-to-dmz rule dest-nat then destination-nat pool pool-port-forward

Dalam contoh konfigurasi diatas, semua yang menuju SRX dari untrust zone interface pada ip 202.100.100.4 port 8080 akan di translatekan menuju 10.1.1.2 port 80

Static NAT

NAT tipe ini adalah one to one mapping dalam artian satu ip publik di mappingkan ke satu ip private. Dalam artian semua traffic akan di NAT-kan dikedua sisi masuk ataupun keluar.

Static NAT

Static NAT

set security nat static rule-set static-server1 from zone untrust
set security nat static rule-set static-server1 rule rule-name match destination-address 202.100.100.3/32
set security nat static rule-set static-server1 rule rule-name then static-nat 10.1.1.2/32

Proxy ARP

Bayangkan jika ip yang tertanam pada interface fisik untrust adalah 202.100.100.2 dan kita perlu melakukan NAT pada ip 202.100.100.3 yaitu ip yang tidak digunakan dan tidak tertanam pada interface fisik akan di NAT-kan menuju ip 10.1.1.2. Dalam hal ini next-hop internet router akan melakukan ARP untuk melihat siapa sih yang memiliki ip 202.100.100.3 ini. Karena by default SRX tidak akan merespond ARP request seperti ini. Proxy ARP harus diaktifkan di SRX untuk dapat mereply “oh, itu paket untuk saya, nah ini adalah mac address miliknya”.

Berikut contoh konfigurasinya:

set security nat proxy-arp interface ge-0/0/0.0 address 202.100.100.3/32

Verification Command

Berikut adalah command untuk verifikasi proses NAT yang sudah dikonfigurasikan.

show security flow session
show security nat source summary
show security destination source summary

4 thoughts on “Understanding Security Zone, Security Policy and NAT in Juniper SRX Platforms

  1. Donny Kurniawan says:

    Untuk source NAT konfigurasi “destination-address 0.0.0.0/0” apakah diperlukan? Dan kalau memang diperlikan itu address di sisi trust atau untrust, mohon penjelasannya. Terima kasih.

    Donny Kurniawan

    • Randy Mukti says:

      Untuk command “destination-address 0.0.0.0/0” pada bagian source nat itu hanya optional, command tersebut menandakan bahwa ip publik yang terdapat pada pool atau interface itu digunakan semua. Bisa dikatakan optional karena pada bagian tersebut saya menggunakan pat interface, kalau mau lebih spesifik pada command tersebut kita bisa mendefinisikan ip address destination yang akan digunakan. Untuk perbandingan bisa dilihat pada bagian destination nat, pada bagian tersebut destination address lebih spesifik, begitu pula pada pada static nat.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.