ip mangling dapat an sebagai modifikasi informasi pada packet header internet protocolh

23

Click here to load reader

Upload: udjie-udjie-theexplorer

Post on 28-Jul-2015

172 views

Category:

Documents


0 download

TRANSCRIPT

IP Mangling dapat digambarkan sebagai modifikasi informasi pada packet header Internet Protocol (IP) sebelum masuk pada routing. Ubahan yang disengaja ini tidaklah berbahaya, namun merupakan sebuah proses yang umum digunakan oleh network administrator. Ketika data ditransmisikan dari satu komputer ke komputer lainnya melalui Internet, informasi dikirimkan dalam sebuah paket data (data packet). Packet header terdiri dari informasi mengenai pengirim dan penerima, dan juga terdiri dari informasi mengenai data sebenarnya (actual data) yang sedang ditransmisikan, di mana disebut dengan payload. Packet mangling dilakukan melalui proses Network Address Translation (NAT). Proses ini digunakan ketika paket bergerak melalui traffic router. Di dalam NAT, translation table dapat diatur untuk memodifikasi field IP address asal dan IP address tujuan secara otomatis. Proses ini dikenal juga dengan IP masking atau network masquerading, dan merupakan salah satu fungsi packet mangling yang umum digunakan. Tabel utama (main table) yang digunakan pada proses ini disebut dengan mangle table. Mangle table terdiri dari lima urutan proses: pre -routing, input, forward, output dan post routing. Packet mangling merupakan fungsi utama (core function) apda NAT process dan digunakan untuk mengontrol aliran data paket -paket data di dalam sebuah private network. Packet mangling juga digunakan untuk mengelola informasi packet header untuk paket-paket data yang dikirim melalui Internet

FILTER table merupakan tabel yang berisikan seperangkat aturan dan Chain yang berfungsi melakukan penyaringan paket baik yang masuk maupun keluar. NAT table berfungsi sebagai tabel acuan dalam memodifikasi atau melakukan translate paket yang keluar masuk perangkat. Modifikasi tersebut bertujuan untuk mengubah addressing maupun port-port komunikasi yang ada dalam sebuah paket, menjadi sebuah bentuk yang dikenali baik di luar maupun di dalam perangkat itu sendiri. IP masquerading. MANGLE table berfungsi untuk melakukan modifikasi paket-paket data, namun fungsinya lebih kepada penandaan (marking) terhadap paket tersebut. Modifikasi tersebut terjadi pada level field-field tambahan dari protokol IP. Di dalam Filter table terdapat tiga buah Chain yang akan melayani kebutuhan Anda dalam filtering paket-paket data, yaitu INPUT, OUTPUT, dan FORWARDING. Mengapa ditulis dengan huruf besar, karena begitulah penulisannya nanti pada saat pembuatan filter. Chain INPUT berguna untuk melakukan filter terhadap paket data yang masuk dan memang ditujukan untuk perangkat komputer itu sendiri. OUTPUT merupakan chain yang dikenakan pada semua paket yang akan keluar dari mesin tersebut ke alamat tujuan yang ditentukan. Sedangkan chain FORWARD merupakan chain yang paling canggih yang akan mengubah perangkat computer Anda menjadi sebuah router. Chain ini melakukan filtering semua paket data yang masuk ke dalam mesin tersebut tetapi bukan diperuntukkan bagi mesin itu sendiri, melainkan diteruskan ke perangkat lainnya. Dari ketiga chain inilah Anda dapat membuat sebuah sistem filtering yang sesuai dengan kebutuhan. Di dalam NAT table, Anda dapat memodifikasi source dan destination address atau port dari paket-paket yang keluar-masuk. Keuntungan dari adanya fasilitas ini adalah untuk menyembunyikan alamat IP asli Anda atau sering disebut dengan istilah IP Masquerading. Penyembunyian IP lokal Anda menjadi sebuah bentuk lain yang dikenal dari luar merupakan salah satu sistem pengamanan yang paling dasar. Dengan demikian, tidak sembarang orang dapat mengetahui alamat IP Anda yang asli, apalagi sampai masuk ke dalamnya perangkat Anda. NAT table mempunyai tiga buah chain, yaitu PREROUTING, POSTROUTING, dan OUTPUT. Tabel ketiga adalah Mangle yang akan membuat paket-paket Anda ditandai satu per satu. Tujuannya adalah agar paket tersebut mempunyai ciri khas, sehingga paket tersebut dapat diolah lebih lanjut sesuai dengan policy yang akan Anda terapkan. Tabel Mangle memiliki kemampuan untuk menggunakan semua chain yang ada dalam IPTables seperti INPUT, OUTPUT, PREROUTING, dan sebagainya. Dengan menggunakan tabel ini, Anda bisa melakukan banyak hal, seperti misalnya melakukan pengubahan routing sesuai dengan kebijakan Anda, atau memberikan perlakuan khusus pada salah satu jenis paket atau yang sering disebut dengan istilah QoS, dan masih banyak lagi. Maka dari itu, Mangle banyak digunakan bersama dengan program lain untuk melayani pemprioritasan sebuah aplikasi.

1) Proses Pemisahan (Mangle) IP > Firewall > Mangley

membuat Connection Mark, klik tanda (+) untuk membuat rule baru

Membuat dua rule dengan konfigurasi dibawah ini: Tabel Mangle Rule untuk Connection Mark General RUL E Chain Extra Nth Action New Passtroug Connectio h n konekA Yes

A

B

In. Connectio Ever Counte Packe Interfac Acction n State y r t e mark preroutin lokal new 1 1 0 connectio g n mark preroutin connectio lokal new 1 1 1 g n

KonekB

Yes

Pada tabel diatas dibuat dua rule karena ada dua koneksi dengan nama konekA dan konekB.y

membuat Routing Mark, klik tanda(+)

untuk membuat rule baru

Konfigurasi rule: Tabel Mangle Rule untuk Route Mark General RULE A B Chain In. Interface Connection Mark konekA konekB Action Acction mark routing mark routing New Routing Mark routeA routeB Passtrough no no

prerouting Lokal prerouting Lokal

Disini terdapat dua rule A dan B karena routing dibuat menjadi dua yaitu routeA dan routeB. 2) NAT (Network Address Translation) IP > Firewall > NAT NAT adalah suatu proses perubahan pengalamatan. Jenis NAT yang digunakan pada proses ini adalah src-nat (source nat). Src-nat adalah perubahan pada bagian source dari suatu paket, langkah-langkahnya adalah sebagai berikut:y y

Klik tanda(+) untuk membuat rule NAT baru Konfigurasi:

Tabel NAT Rule RULE A B General Action Chain Connection Mark Acction To address srcnat konekA src-nat 10.10.10.2 srcnat konekB src-nat 118.98.176.35

3) Route IP > Routes Tujuan konfigurasi ini untuk mengatur jalur keluar dari setiap group dengan menentukan gateway setiap jalur. Klik tanda(+) maka muncul tampilan seperti Gambar 3.9, kemudian membuat tiga route dengan konfigurasi sebagai berikut:y y y

Gateway : 10.10.10.1 Mark : routeA Gateway : 118.98.176.33 Mark : routeB Gateway : 118.98.176.33 (default gateway)

by : am@dheos B. Load Balancing tanpa Connection Mark Cara kerja dalam sistem ini yaitu membagi IP address kedalam group-group kemudian ditentukan jalur yang akan dilalui pada masing-masing group. Konfigurasi ini tidak perlu menggunakan Connection Mark tetapi cukup membuat Routing Mark pada Mangle dan menentukan gateway untuk masing-masing route mark pada Route list. Pengaturan IP LAN diasumsikan sebagai berikut:y

subnet 192.168.3.0/25 ip address : 192.168.3.0 192.168.3.127 diberi nama GroupA yang akan dilewatkan gateway ISP A (10.x.x.x)

y

subnet 192.168.3.128/25 ip address : 192.168.3.128 192.168.3.253 diberi nama GroupB yang akan dilewatkan gateway ISP B (202.x.x.x)

1) Proses Pemisahan (Mangle) IP > Firewall > Mangle Klik tanda(+) untuk membuat rule baru

Konfigurasi rule: Tabel Mangle Rule untuk Route Mark RULE A B General Action Chain Src. Address Acction New Routing Mark prerouting 192.168.3.0/25 mark routing GroupA prerouting 192.168.3.128/25 mark routing GroupB

2) Route IP > Routes Klik tanda(+) kemudian membuat tiga route dengan konfigurasi sebagai berikut:y y

Gateway : 10.x.x.x Mark : GroupA Gateway : 202.x.x.x Mark : GroupB

3) NAT (Network Address Translation) IP > Firewall > NAT Konfigurasi NAT dengan rule sebagai berikut :y y y

Chain : srcnat Src. Address : 192.168.3.0/24 Action : masquerade

IPTables memiliki tiga macam daftar aturan bawaan dalam tabel penyaringan, daftar tersebut dinamakan rantai firewall (firewall chain) atau sering disebut chain saja. Ketiga chain tersebut adalah INPUT, OUTPUT dan FORWARD.

Pada diagram tersebut, lingkaran menggambarkan ketiga rantai atau chain. Pada saat sebuah paket sampai pada sebuah lingkaran, maka disitulah terjadi proses penyaringan. Rantai akan memutuskan nasib paket tersebut. Apabila keputusannnya adalah DROP, maka paket tersebut akan di-drop. Tetapi jika rantai memutuskan untuk ACCEPT, maka paket akan dilewatkan melalui diagram tersebut. Sebuah rantai adalah aturan-aturan yang telah ditentukan. Setiap aturan menyatakan jika paket memiliki informasi awal (header) seperti ini, maka inilah yang harus dilakukan terhadap paket. Jika aturan tersebut tidak sesuai dengan paket, maka aturan berikutnya akan memproses paket tersebut. Apabila sampai aturan terakhir yang ada, paket tersebut belum memenuhi salah satu aturan, maka kernel akan melihat kebijakan bawaan (default) untuk memutuskan apa yang harus dilakukan kepada paket tersebut. Ada dua kebijakan bawaan yaitu default DROP dan default ACCEPT. Jalannya sebuah paket melalui diagram tersebut bisa dicontohkan sebagai berikut: Perjalanan paket yang diforward ke host yang lain 1. Paket berada pada jaringan fisik, contoh internet. 2. Paket masuk ke interface jaringan, contoh eth0. 3. Paket masuk ke chain PREROUTING pada table Mangle. Chain ini berfungsi untuk memangle (menghaluskan) paket, seperti merubah TOS, TTL dan lain-lain. 4. Paket masuk ke chain PREROUTING pada tabel nat. Chain ini berfungsi utamanya untuk melakukan DNAT (Destination Network Address Translation). 5. Paket mengalami keputusan routing, apakah akan diproses oleh host lokal atau diteruskan ke host lain. 6. Paket masuk ke chain FORWARD pada tabel filter. Disinlah proses pemfilteran yang utama terjadi. 7. Paket masuk ke chain POSTROUTING pada tabel nat. Chain ini berfungsi utamanya untuk melakukan SNAT (Source Network Address Translation). 8. Paket keluar menuju interface jaringan, contoh eth1. 9. Paket kembali berada pada jaringan fisik, contoh LAN.

Perjalanan paket yang ditujukan bagi host lokal 1. Paket berada dalam jaringan fisik, contoh internet. 2. Paket masuk ke interface jaringan, contoh eth0. 3. Paket masuk ke chain PREROUTING pada tabel mangle. 4. Paket masuk ke chain PREROUTING pada tabel nat. 5. Paket mengalami keputusan routing. 6. Paket masuk ke chain INPUT pada tabel filter untuk mengalami proses penyaringan. 7. Paket akan diterima oleh aplikasi lokal. Perjalanan paket yang berasal dari host lokal 1. Aplikasi lokal menghasilkan paket data yang akan dikirimkan melalui jaringan. 2. Paket memasuki chain OUTPUT pada tabel mangle. 3. Paket memasuki chain OUTPUT pada tabel nat. 4. Paket memasuki chain OUTPUT pada tabel filter. 5. Paket mengalami keputusan routing, seperti ke mana paket harus pergi dan melalui interface mana. 6. Paket masuk ke chain POSTROUTING pada tabel NAT. 7. Paket masuk ke interface jaringan, contoh eth0. 8. Paket berada pada jaringan fisik, contoh internet.

3. Sintaks IPTablesiptables [ -t table] command [match] [target/jump]

1. Table IPTables memiliki 3 buah tabel, yaitu NAT, MANGLE dan FILTER. Penggunannya disesuaikan dengan sifat dan karakteristik masing-masing. Fungsi dari masing-masing tabel tersebut sebagai berikut : a. NAT : Secara umum digunakan untuk melakukan Network Address Translation. NAT adalah penggantian field alamat asal atau alamat tujuan dari sebuah paket. b. MANGLE : Digunakan untuk melakukan penghalusan (mangle) paket, seperti TTL, TOS dan MARK. c. FILTER : Secara umum, inilah pemfilteran paket yang sesungguhnya.. Di sini bisa dintukan apakah paket akan di-DROP, LOG, ACCEPT atau REJECT 2. Command Command pada baris perintah IPTables akan memberitahu apa yang harus dilakukan terhadap lanjutan sintaks perintah. Umumnya dilakukan penambahan atau penghapusan sesuatu dari tabel atau yang lain. Command Keterangan-A --append -D --delete -R --replace -I --insert

Perintah ini menambahkan aturan pada akhir chain. Aturan akan ditambahkan di akhir baris pada chain yang bersangkutan, sehingga akan dieksekusi terakhir Perintah ini menghapus suatu aturan pada chain. Dilakukan dengan cara menyebutkan secara lengkap perintah yang ingin dihapus atau dengan menyebutkan nomor baris dimana perintah akan dihapus. Penggunaannya sama seperti --delete , tetapi command ini menggantinya dengan entry yang baru. Memasukkan aturan pada suatu baris di chain. Aturan akan dimasukkan pada baris yang disebutkan, dan aturan awal yang menempati baris tersebut akan digeser ke bawah. Demikian pula

-L --list

-F --flush -N --new-chain -X --delete-chain -P --policy

baris-baris selanjutnya. Perintah ini menampilkan semua aturan pada sebuah tabel. Apabila tabel tidak disebutkan, maka seluruh aturan pada semua tabel akan ditampilkan, walaupun tidak ada aturan sama sekali pada sebuah tabel. Command ini bisa dikombinasikan dengan option v (verbose), -n (numeric) dan x (exact). Perintah ini mengosongkan aturan pada sebuah chain. Apabila chain tidak disebutkan, maka semua chain akan di-flush. Perintah tersebut akan membuat chain baru. Perintah ini akan menghapus chain yang disebutkan. Agar perintah di atas berhasil, tidak boleh ada aturan lain yang mengacu kepada chain tersebut. Perintah ini membuat kebijakan default pada sebuah chain. Sehingga jika ada sebuah paket yang tidak memenuhi aturan pada baris-baris yang telah didefinisikan, maka paket akan diperlakukan sesuai dengan kebijakan default ini. Perintah ini akan merubah nama suatu chain.

-E --rename-chain

3. Option Option digunakan dikombinasikan dengan command tertentu yang akan menghasilkan suatu variasi perintah. Option Command Keterangan-v --verbose Pemakai --list --append --insert --delete --replace --list --list

Memberikan output yang lebih detail, utamanya digunakan dengan --list. Jika digunakan dengan --list, akan menampilkam K (x1.000), M (1.000.000) dan G (1.000.000.000). Memberikan output yang lebih tepat. Memberikan output yang berbentuk angka. Alamat IP dan nomor port akan ditampilkan dalam bentuk angka dan bukan hostname ataupun nama aplikasi/servis. Akan menampilkan nomor dari daftar aturan. Hal ni akan mempermudah bagi kita untuk melakukan modifikasi aturan, jika kita mau meyisipkan atau menghapus aturan dengan nomor tertentu. Memerintahkan IPTables untuk memanggil modul tertentu. Bisa digunakan bersamaan dengan semua command.

-x --exact -n --numeric

--line-number

--list

--modprobe

All

4. Generic Matches Generic Matches artinya pendefinisian kriteria yang berlaku secara umum. Dengan kata lain, sintaks generic matches akan sama untuk semua protokol. Setelah protokol didefinisikan, maka baru didefinisikan aturan yang lebih spesifik yang dimiliki oleh protokol tersebut. Hal ini dilakukan karena tiap-tiap protokol memiliki karakteristik yang berbeda, sehingga memerlukan perlakuan khusus. Match Keterangan-p --protocol

Digunakan untuk mengecek tipe protokol tertentu. Contoh protokol yang umum adalah TCP, UDP, ICMP dan ALL. Daftar protokol bisa dilihat pada /etc/protocols . Tanda inversi juga bisa diberlakukan di sini, misal kita

-s --src --source

-d --dst --destination -i --in-interface -o --out-interface

menghendaki semua protokol kecuali icmp, maka kita bisa menuliskan --protokol ! icmp yang berarti semua kecuali icmp. Kriteria ini digunakan untuk mencocokkan paket berdasarkan alamat IP asal. Alamat di sini bisa berberntuk alamat tunggal seperti 192.168.1.1, atau suatu alamat network menggunakan netmask misal 192.168.1.0/255.255.255.0, atau bisa juga ditulis 192.168.1.0/24 yang artinya semua alamat 192.168.1.x. Kita juga bisa menggunakan inversi. Digunakan untuk mecocokkan paket berdasarkan alamat tujuan. Penggunaannya sama dengan match src Match ini berguna untuk mencocokkan paket berdasarkan interface di mana paket datang. Match ini hanya berlaku pada chain INPUT, FORWARD dan PREROUTING Berfungsi untuk mencocokkan paket berdasarkan interface di mana paket keluar. Penggunannya sama dengan --in-interface . Berlaku untuk chain OUTPUT, FORWARD dan POSTROUTING

5. Implicit Matches Implicit Matches adalah match yang spesifik untuk tipe protokol tertentu. Implicit Match merupakan sekumpulan rule yang akan diload setelah tipe protokol disebutkan. Ada 3 Implicit Match berlaku untuk tiga jenis protokol, yaitu TCP matches, UDP matches dan ICMP matches. a. TCP matches Match Keterangan--sport --source-port

--dport --destination port --tcp-flags

Match ini berguna untuk mecocokkan paket berdasarkan port asal. Dalam hal ini kia bisa mendefinisikan nomor port atau nama service-nya. Daftar nama service dan nomor port yang bersesuaian dapat dilihat di /etc/services . --sport juga bisa dituliskan untuk range port tertentu. Misalkan kita ingin mendefinisikan range antara port 22 sampai dengan 80, maka kita bisa menuliskan --sport 22:80 . Jika bagian salah satu bagian pada range tersebut kita hilangkan maka hal itu bisa kita artikan dari port 0, jika bagian kiri yang kita hilangkan, atau 65535 jika bagian kanan yang kita hilangkan. Contohnya --sport :80 artinya paket dengan port asal nol sampai dengan 80, atau --sport 1024: artinya paket dengan port asal 1024 sampai dengan 65535.Match ini juga mengenal inversi. Penggunaan match ini sama dengan match --source-port. Digunakan untuk mencocokkan paket berdasarkan TCP flags yang ada pada paket tersebut. Pertama, pengecekan akan mengambil daftar flag yang akan diperbandingkan, dan kedua, akan memeriksa paket yang di-set 1, atau on. Pada kedua list, masing-masing entry-nya harus dipisahkan oleh koma dan tidak boleh ada spasi antar entry, kecuali spasi antar kedua list. Match ini mengenali SYN,ACK,FIN,RST,URG, PSH. Selain itu kita juga menuliskan ALL dan NONE. Match ini juga bisa menggunakan inversi. Match ini akan memeriksa apakah flag SYN di-set dan ACK dan

--syn

FIN tidak di-set. Perintah ini sama artinya jika kita menggunakan match --tcp-flags SYN,ACK,FIN SYN Paket dengan match di atas digunakan untuk melakukan request koneksi TCP yang baru terhadap server

b. UDP Matches Karena bahwa protokol UDP bersifat connectionless, maka tidak ada flags yang mendeskripsikan status paket untuk untuk membuka atau menutup koneksi. Paket UDP juga tidak memerlukan acknowledgement. Sehingga Implicit Match untuk protokol UDP lebih sedikit daripada TCP. Ada dua macam match untuk UDP:--sport atau --source-port --dport atau --destination -port

c. ICMP Matches Paket ICMP digunakan untuk mengirimkan pesan-pesan kesalahan dan kondisi-kondisi jaringan yang lain. Hanya ada satu implicit match untuk tipe protokol ICMP, yaitu :--icmp-type

6. Explicit Matches a. MAC Address Match jenis ini berguna untuk melakukan pencocokan paket berdasarkan MAC source address. Perlu diingat bahwa MAC hanya berfungsi untuk jaringan yang menggunakan teknologi ethernet.iptables A INPUT m mac mac-source 00:00:00:00:00:01

b. Multiport Matches Ekstensi Multiport Matches digunakan untuk mendefinisikan port atau port range lebih dari satu, yang berfungsi jika ingin didefinisikan aturan yang sama untuk beberapa port. Tapi hal yang perlu diingat bahwa kita tidak bisa menggunakan port matching standard dan multiport matching dalam waktu yang bersamaan.iptables A INPUT p tcp m multiport --source-port 22,53,80,110

c. Owner Matches Penggunaan match ini untuk mencocokkan paket berdasarkan pembuat atau pemilik/owner paket tersebut. Match ini bekerja dalam chain OUTPUT, akan tetapi penggunaan match ini tidak terlalu luas, sebab ada beberapa proses tidak memiliki owner (??).iptables A OUTPUT m owner --uid-owner 500

Kita juga bisa memfilter berdasarkan group ID dengan sintaks --gid-owner. Salah satu penggunannya adalah bisa mencegah user selain yang dikehendaki untuk mengakses internet misalnya. d. State Matches Match ini mendefinisikan state apa saja yang cocok. Ada 4 state yang berlaku, yaitu NEW, ESTABLISHED, RELATED dan INVALID. NEW digunakan untuk paket yang akan memulai koneksi baru. ESTABLISHED digunakan jika koneksi telah tersambung dan paketpaketnya merupakan bagian dari koneki tersebut. RELATED digunakan untuk paket-paket yang bukan bagian dari koneksi tetapi masih berhubungan dengan koneksi tersebut, contohnya adalah FTP data transfer yang menyertai sebuah koneksi TCP atau UDP. INVALID adalah paket yang tidak bisa diidentifikasi, bukan merupakan bagian dari koneksi yang ada.iptables A INPUT m state --state RELATED,ESTABLISHED

7. Target/Jump Target atau jump adalah perlakuan yang diberikan terhadap paket-paket yang memenuhi kriteria atau match. Jump memerlukan sebuah chain yang lain dalam tabel yang sama. Chain tersebut nantinya akan dimasuki oleh paket yang memenuhi kriteria. Analoginya ialah chain baru nanti berlaku sebagai prosedur/fungsi dari program utama. Sebagai contoh dibuat sebuah

chain yang bernama tcp_packets. Setelah ditambahkan aturan-aturan ke dalam chain tersebut, kemudian chain tersebut akan direferensi dari chain input.iptables A INPUT p tcp j tcp_packets Target Keterangan -j ACCEPT Ketika paket cocok dengan daftar match dan target ini diberlakukan, --jump ACCEPT maka paket tidak akan melalui baris-baris aturan yang lain dalam

-j DROP --jump DROP

-j RETURN --jump RETURN

-j MIRROR

chain tersebut atau chain yang lain yang mereferensi chain tersebut. Akan tetapi paket masih akan memasuki chain-chain pada tabel yang lain seperti biasa. Target ini men-drop paket dan menolak untuk memproses lebih jauh. Dalam beberapa kasus mungkin hal ini kurang baik, karena akan meninggalkan dead socket antara client dan server. Paket yang menerima target DROP benar-benar mati dan target tidak akan mengirim informasi tambahan dalam bentuk apapun kepada client atau server. Target ini akan membuat paket berhenti melintasi aturan-aturan pada chain dimana paket tersebut menemui target RETURN. Jika chain merupakan subchain dari chain yang lain, maka paket akan kembali ke superset chain di atasnya dan masuk ke baris aturan berikutnya. Apabila chain adalah chain utama misalnya INPUT, maka paket akan dikembalikan kepada kebijakan default dari chain tersebut. Apabila kompuuter A menjalankan target seperti contoh di atas, kemudian komputer B melakukan koneksi http ke komputer A, maka yang akan muncul pada browser adalah website komputer B itu sendiri. Karena fungsi utama target ini adalah membalik source address dan destination address. Target ini bekerja pada chain INPUT, FORWARD dan PREROUTING atau chain buatan yang dipanggil melalui chain tersebut.

Beberapa target yang lain biasanya memerlukan parameter tambahan: a. LOG Target Ada beberapa option yang bisa digunakan bersamaan dengan target ini. Yang pertama adalah yang digunakan untuk menentukan tingkat log. Tingkatan log yang bisa digunakan adalah debug, info, notice, warning, err, crit, alert dan emerg.Yang kedua adalah -j LOG --log-prefix yang digunakan untuk memberikan string yang tertulis pada awalan log, sehingga memudahkan pembacaan log tersebut.iptables A FORWARD p tcp j LOG --log-level debug iptables A INPUT p tcp j LOG --log-prefix INPUT Packets

b. REJECT Target Secara umum, REJECT bekerja seperti DROP, yaitu memblok paket dan menolak untuk memproses lebih lanjut paket tersebut. Tetapi, REJECT akan mengirimkan error message ke host pengirim paket tersebut. REJECT bekerja pada chain INPUT, OUTPUT dan FORWARD atau pada chain tambahan yang dipanggil dari ketiga chain tersebut.iptables A FORWARD p tcp dport 22 j REJECT --reject-with icmp -hostunreachable

Ada beberapa tipe pesan yang bisa dikirimkan yaitu icmp-net-unreachable, icmp-hostunreachable, icmp-port-unreachable, icmp-proto-unrachable, icmp-net-prohibited dan icmphost-prohibited. c. SNAT Target Target ini berguna untuk melakukan perubahan alamat asal dari paket (Source Network Address Translation). Target ini berlaku untuk tabel nat pada chain POSTROUTING, dan

hanya di sinilah SNAT bisa dilakukan. Jika paket pertama dari sebuah koneksi mengalami SNAT, maka paket-paket berikutnya dalam koneksi tersebut juga akan mengalami hal yang sama.iptables t nat A POSTROUTING o eth0 j SNAT --to-source 194.236.50.155 194.236.50.160:1024 -32000

d. DNAT Target Berkebalikan dengan SNAT, DNAT digunakan untuk melakukan translasi field alamat tujuan (Destination Network Address Translation) pada header dari paket-paket yang memenuhi kriteria match. DNAT hanya bekerja untuk tabel nat pada chain PREROUTING dan OUTPUT atau chain buatan yang dipanggil oleh kedua chain tersebut.iptables t nat A PREROUTING p tcp d 15.45.23.67 --dport 80 j DNAT -to-destination 192.168.0.2

e. MASQUERADE Target Secara umum, target MASQUERADE bekerja dengan cara yang hampir sama seperti target SNAT, tetapi target ini tidak memerlukan option --to-source. MASQUERADE memang didesain untuk bekerja pada komputer dengan koneksi yang tidak tetap seperti dial-up atau DHCP yang akan memberi pada kita nomor IP yang berubah-ubah. Seperti halnya pada SNAT, target ini hanya bekerja untuk tabel nat pada chain POSTROUTING.iptables t nat A POSTROUTING o ppp0 j MASQUERADE

f. REDIRECT Target Target REDIRECT digunakan untuk mengalihkan jurusan (redirect) paket ke mesin itu sendiri. Target ini umumnya digunakan untuk mengarahkan paket yang menuju suatu port tertentu untuk memasuki suatu aplikasi proxy, lebih jauh lagi hal ini sangat berguna untuk membangun sebuah sistem jaringan yang menggunakan transparent proxy. Contohnya kita ingin mengalihkan semua koneksi yang menuju port http untuk memasuki aplikasi http proxy misalnya squid. Target ini hanya bekerja untuk tabel nat pada chain PREROUTING dan OUTPUT atau pada chain buatan yang dipanggil dari kedua chain tersebut.

NAT adalah pengalihan suatu alamat IP ke alamat yang lain. Dan apabila suatu paket dialihkan dengan NAT pada suatu link, maka pada saat ada paket kembali dari tujuan maka link ini akan mengingat darimana asal dari paket itu, sehingga komunikasi akan berjalan seperti biasa. Kenapa orang-orang menggunakan NAT ? Koneksi Modem ke Internet. Kebanyakan ISP akan memberikan satu alamat IP pada saat anda melakukan dial up ke internet. Anda dapat mengirim paket ke alamat mana saja yang anda inginkan tetapi balasannya hanya akan diterima oleh satu alamat IP yang anda miliki.Apabila anda ingin menggunakan banyak komputer seperti jaringan dalam rumah anda untuk terhubung dengan internet dengan hanya satu kink ini, maka anda membutuhkan NAT. Cara ini adalah NAT yang paling umum digunakan sekarang ini, sering disebut sebagai masqurading. Banyak Server Terkadang anda ingin mengubah arah paket yang datang ke jaringan anda. Hal ini disebabkan anda hanya memiliki satu alamat IP, tapi anda ingin semua orang dapat mengakses komputer yang berada di belakang komputer yang memiliki alamat IP yang asli. Apabila anda dapat mengubah tujuan dari paket yang masuk, anda dapat melakukan ini. Tipe NAT seperti ini disebut port-forwarding. Transparent Proxy Terkadang anda ingin seakan-akan setiap paket yang melewati komputer anda hanya ditujukan untuk komputer anda sendiri. Hal ini digunakan untuk membuat transparent proxy : Proxy adalah program yang berada di antara jaringan anda dan dunia luar, dan membuat keduanya dapat saling berkomunikasi. Bagian transparannya dikarenakan jaringan anda tidak akan mengetahui bahwa dia menggunakan proxy kecuali proxynya tidak bekerja. Program squid dapat dikonfiguraasi untuk bekerja seperti ini, dan hal ini disebut redirection atau transparent proxy. Dua Tipe NAT NAT terdiri atas dua macam tipe: Source NAT (SNAT) dan Destination NAT (DNAT) Source NAT adalah ketika anda mengubah alamat asal dari paket pertama dengan kata lain anda merubah dari mana koneksi terjadi. Source NAT selalu dilakukan setelah routing, sebelum paket keluar ke jaringan. Masquerading adalah contoh dari SNAT. Destination NAT adalah ketika anda mengubah alamat tujuan dari paket pertama dengan kata lain anda merubah ke mana komunikasi terjadi. Destination NAT selalu dilakukan sebelum routing, ketika paket masuk dari jaringan. Port forwarding, load sharing dan transparent proxy semuanya adalah bentuk dari DNAT.

Menggunakan NAT di Linux Untuk membuat NAt anda harus membuat aturan NAT yang akan memberitahu kernel koneksi apa yang harus diubah. Untuk ini kita menggunakan tool iptables dan membuatnya untuk mengubah tabel NAT dengan memberikan option -t nat. Tabel aturan NAT berisi 3 bagian yang disebut chain, setiap aturan akan diperiksa secara berurutan sampai ada satu yang tepat. Kedua chain disebut PREROUTING (untuk Destination NAT, ketika paket pertama kali masuk), dan POSTROUTING (untuk Source NAT, ketika paket pergi). Yang ketiga, OUTPUT akan diabaikan. Tabel di bawah akan menggambarkannya : _____ _____ /\/\ PREROUTING >[Routing ]>POSTROUTING> \D-NAT/ [Decision] \S-NAT/ |^ || || || || || || > Local Process Pada setiap node di atas, ketika paket melewati kita melihat koneksi apa yang diasosiasikan dengannya. Apabila hal itu adalah koneksi yang baru, kita melihat chain pada tabel nat yang berperan untuk mengetahui apa yang akan kita lakukan dengan paket tersebut. Source NAT Untuk melakukan Source NAT anda harus merubah asal dari koneksi. Hal ini dilakukan di chain POSTROUTING, pas sebelum keluar. Hal ini sangat penting, dikarenakan berarti tools lain yang di dalam router itu (routing, packet filtering) akan melihat paket itu tidak berubah. Hal ini juga berarti opsi -o (outgoing interface) juga bisa digunakan. Source dispesifikasikan dengan menggunakan -j SNAT, dan juga opsi to-source untuk menspesifikasikan sebuah alamat IP, range alamat IP dan port atau range port (hanya untuk protokol UDP dan TCP) yang sifatnya optional. Mengubah alamat asal ke 1.2.3.4 # iptables -t nat -A POSTROUTING -o eth0 -j SNAT to 1.2.3.4 Mengubah alamat asal ke 1.2.3.4, 1.2.3.5, or 1.2.3.6 # iptables -t nat -A POSTROUTING -o eth0 -j SNAT to 1.2.3.4-1.2.3.6 Mengubah alamat asal ke 1.2.3.4, port 1-1023 # iptables -t nat -A POSTROUTING -p tcp -o eth0 -j SNAT to 1.2.3.4:1-1023 Masquerading Terdapat kasus yang khusus untuk Source NAT yang disebut masquerading, sebaiknya hanya digunakan untuk alamat IP yang dinamik, seperti menggunakan dialup secara standar (untuk alamat IP yang statis, gunakan SNAT si atas). Anda tidak perlu menempatkan alamat asal apabila anda menggunakan masquerading, dikarenakan alamat asal akan memakai alamat

dari interface tempat paket itu keluar. Hal ini akan memudahkan apabila ada penggantian alamat IP dari interface tersebut, sehingga keslaahan da[at dihindari. Masquerade semua paket yang keluar dari ppp0 # iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE Destination NAT Destination NAT dilakukan pada chain PREROUTING, pas ketika paket masuk, hal ini berarti semua tools di dalam router akan melihat paket akn pergi ke tujuan yang sebenarnya . Hal ini juga berarti bahwa opsi -i (incoming interface) bisa digunakan. Destination NAT dispesifikasikan dengan menggunakan -j DNAT dan opsi todestination menspesifikasikan sebuah alamat IP, range alamat IP dan range dari port (hanya untuk protokol UDP dan TCP) yang sifatnya optional. Merubah alamat tujuan ke 5.6.7.8 # iptables -t nat -A PREROUTING -i eth0 -j DNAT to 5.6.7.8 Merubah alamat tujuan ke 5.6.7.8, 5.6.7.9, or 5.6.7.10 # iptables -t nat -A PREROUTING -i eth0 -j DNAT to 5.6.7.8-5.6.7.10 Merubah alamat tujuan dari lalu lintas web ke 5.6.7.8 port 8080 # iptables -t nat -A PREROUTING -p tcp dport 80 -i eth0 -j DNAT to 5.6.7.8:8080 Redirection Terdapat kasus khusus dari Destination NAT yang disebut redirection. Redirection adalah pengarahan dari paket yang masuk dari posrt tertentu diarahkan ke port lain, dimana setiap port menandakan aplikasi jaringan yang berbeda. Mengirim dari port 80 lalu lintas web ke squid (transparent) proxy # iptables -t nat -A PREROUTING -i eth1 -p tcp dport 80 -j REDIRECT to-port 3128 Dalam hal ini squid harus dikonfigurasi sehingga dia tahu paket yang masuk adalah transparent proxy.

Pada jaringan komputer, proses Network Address Translation (NAT) adalah proses penulisan ulang (masquerade) pada alamat IP asal (source) dan/atau alamat IP tujuan (destination), setelah melalui router atau firewall. NAT digunakan pada jaringan dengan workstation yang menggunakan IP Private supaya dapat terkoneksi ke Internet dengan menggunakan satu atau lebih IP Public. Ilustrasi NAT terlihat pada Gb. 1.

Gb 1. Network Address Translation Kalo kita menginap di hotel tentunya kita akan mendapatkan nomor kamar bukan? Nah, alamat lengkap hotel dimana kita menginap disebut alamat publik, alamat yang dikenal oleh orang luar. Sedangakan nomor kamar kita adalah alamat private. Jadi misalnya kita memesan nasi padang di luar, yang akan kita sebutkan alamatnya adalah alamat lengkap hotel tersebut, bukan alamat kamar kita kan? Sedangkan kita tahu bahwa bisa jadi yang menginap di hotel itu nggak hanya kita. Jadi kepemilikan alamat hotel tersebut itulah yang disebut KTP bersama. Nah, nasi padang yang kita pesan nanti tentunya akan tiba di resepsionis, lalu nanti resepsionis akan meminta seorang OB untuk mengantarkan pesanan kita ke kamar anda. Fungsi resepsionis inilah yang kita sebut NAT, contoh lainnya, ternyata telpon kita di hotel hanya bersifat lokal, untuk dapat menghubungi orang diluar, kita harus mengontak resepsionis agar dapat menghubungkan kita dengan orang tersebut. Seperti itulah cara kerja NAT, menerjemahkan alamat private menjadi publik Implementasi NAT Pada mesin Linux, untuk membangun NAT dapat dilakukan dengan menggunakan iptables (Netfilter). Dimana pada iptables memiliki tabel yang mengatur NAT. Pada tabel NAT, terdiri dari 3 chain (Gb. 2) yaitu: PREROUTING, digunakan untuk memilah paket yang akan diteruskan POSTROUTING, digunakan untuk memilah paket yang telah diteruskan FORWARD, digunakan untuk memilih paket yang melalui router.

Gb 2: Tabel NAT pada iptables Proses NAT dilakukan pada data yang akan meninggalkan ROUTER. Sehingga pada iptables untuk pengolahan NAT dilakukan pada chain POSTROUTING. Rule yang diberikan kepada paket data tersebut adalah MASQUERADE. Langkah-langkah membangun NAT dengan iptables pada Linux Router: 1. Tentukan NIC mana yang terkoneksi ke internet dan yang terkoneksi ke LAN 2. Tentukan Network Address dari LAN, misal 192.168.1.0/24 3. Menambahkan Rule di iptables # iptables -t nat -I POSTROUTING -s 192.168.1.0/24 -j MASQUERADE Dengan menggunakan NAT ini, IP dari LAN akan dapat terkoneksi ke jaringan yang lain, tetapi tidak dapat diakses dari jaringan lain.