Sunday, March 3, 2013

Dasar IPTABLES

PTables adalah firewall yang biasa dipakai pada Sistem Operasi GNU/Linux. IPTables memiliki tiga jenis daftar aturan di dalam tabel penyaringan yang bernama rantai firewall (chain), yakni INPUT, FORWARD dan OUTPUT.

Berikut merupakan syntax IPTables:
iptables [-t table_name] command [match] [target/jump]

Penjelasan tentang tiap-tiap komponen adalah sebagai berikut:

A. Table
Fungsi masing-masing tabel pada IPTables:

1. NAT : NAT mentranslasikan (menggantikan) alamat asal atau tujuan dari sebuah paket. Contoh apabila satu buah PC Client yang beralamat IP private memberikan request agar terkoneksi ke internet dari gateway dan di terima oleh PC Router, sedangkan hanya PC Router yang memiliki alamat IP public, maka agar client dapat terkoneksi ke internet, IP private tadi ditranslasikan (digantkan) requestnya oleh PC Router dengan IP public miliknya, kemudian hasil request disambungkan kembali ke PC Client, sehingga PC Client dapat mengakses internet.

2. MANGLE : Melakukan penghalusan (mangle) paket, seperti TTL, TOS dan MARK.

3. FILTER : Menentukan paket yang akan di-DROP, LOG, ACCEPT atau REJECT

B. Command
Command menambahkan yang harus dilakukan di baris syntax. Biasanya ada penambahan atau penghapusan sesuatu dari tabel dan lain lain.

Command
Keterangan
-A

–append
Perintah ini menambahkan aturan di akhir chain. Aturan ditambahkan di akhir baris chain yang bersangkutan, sehingga dieksekusi terakhir kali
-D         
–delete
Menghapus satu aturan chain. Caranya dengan menyebutkan perintah mana yang ingin dihapus secara lengkap atau menyebutkan nomor baris perintah yang akan dihapus.
-R         
–replace
Menggantikan aturan chain dengan aturan (entry) baru..
-I         
–insert
Memasukkan aturan pada suatu baris di chain. Aturan akan dimasukkan ke baris yang ditulis, dan aturan yang tadinya ada di baris tersebut akan bergeser ke bawah bersama dengan baris-baris selanjutnya
-L         
–list
Menampilkan semua aturan pada tabel. Jika tabel tidak disebutkan, seluruh aturan di semua tabel akan ditampilkan, walaupun tidak ada aturan sama sekali pada tabel. Command ini bisa dikombinasikan dengan option –v (verbose), -n (numeric) dan –x (exact).
-F         
–flush
Perintah ini mengosongkan aturan pada sebuah chain. Apabila chain tidak disebutkan, maka semua chain akan hilang.
-N         
–new-chain
Membuat chain baru.
-X         
–delete-chain
Menghapus chain yang dituliskan. Notabene, tidak boleh ada aturan lain yang bersangkutan dengan chain tersebut.
-P         
–policy
Membuat kebijakan default pada chain. Jika ada paket yang tidak memenuhi aturan pada baris yang diinginkan, paket akan diperlakukan sesuai dengan kebijakan default ini.
-E         
–rename-chain
Mengubah nama chain.



C. Option
Option dikombinasikan dengan command tertentu.



Option
Command  
Keterangan
-v         
–verbose
–list         
–append
–insert
–delete
–replace
Memberi output secara detail. Jika digunakan dengan
–list, akan menampilkam K (x1.000),
M (1.000.000) dan G (1.000.000.000).
-x         
–exact
–list
Memberikan output secara tepat.
-n          
–numeric
–list
Memberikan output berbentuk angka. IP Address dan port ditampilkan dalam bentuk angka, bukan hostname ataupun nama servis/repositori.
–line-number
–list
Menampilkan nomor dari daftar aturan.
–modprobe
All
Memerintahkan IPTables memanggil modul tertentu. Dapat digunakan bersama semua command.

D. Generic Matches
Generic Matches adalah pendefinisian kriteria secara umum. Jadi sintaks generic matches akan sama untuk semua protokol. Setelah protokol didefinisikan, maka aturan yang lebih spesifik protokol baru didefinisikan. Tiap-tiap protokol berbeda karakter, sehingga perlu perlakuan yang berbeda.

Match
Keterangan
-p         
–protocol
Mengecek tipe protokol tertentu, seperti TCP, UDP, ICMP dan ALL. Tanda inverse juga berlaku di sini, misal kita menghendaki semua protokol kecuali icmp, maka kita cukup tuliskan –protokol ! icmp yang berarti semua kecuali icmp.
-s         
–src
–source
Menyocokkan paket berdasar alamat IP asal tunggal seperti 192.168.2.69, atau alamat network seperti 192.168.2.0/255.255.255.128  dan 192.168.2.0/25. Inversi juga berlaku.
-d         
–dst
–destination
Meyocokkan paket berdasar alamat tujuan. Sama seperti match –src
-i         
–in-interface
Menyocokkan paket berdasar interface source paket dan hanya berlaku pada chain INPUT, FORWARD dan PREROUTING
-o         
–out-interface
Menyocokkan paket berdasar interface destination paket seperti –in-interface dan hanya berlaku untuk chain OUTPUT, FORWARD dan POSTROUTING

E. Implicit Matches
Implicit Match merupakan sekumpulan rule yang diload setelah tipe protokol disebutkan, yaitu TCP matches, UDP matches dan ICMP matches.
a. TCP matches

Match
Keterangan
–sport         
–source-port
Meyocokkan paket berdasar port asal. Kita memutuskan port atau service yang di definisikan, atau bahkan range port tertentu. Untuk mendefinisikan range antara port 22 sampai dengan 80, tuliskan –sport 22:80.
Jika bagian kiri kita hilangkan, paket diartikan dari port 0. Jika bagian kanan kita hilangkan, paket diartikan dari port 65535. Inverse juga berlaku.
–dport         
–destination-port
Sama dengan match –source-port.
–tcp-flags
Menyocokkan paket berdasar TCP flags yang ada pada paket. Match ini bisa menggunakan inversi.
–syn
Memeriksa apakah flag SYN di-set dan ACK dan FIN tidak di-set. Seperti –tcp-flags, SYN, ACK, FIN SYN, dapat digunakan untuk request koneksi TCP baru ke server

b. UDP Matches
Karena protokol UDP bersifat connectionless, tidak ada flags yang mendeskripsikan status paket 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 mengirimkan pesan kesalahan dan kondisi jaringan lain. Hanya ada satu implicit match untuk tipe protokol ICMP, yaitu :
–icmp-type

F. Explicit Matches
a. MAC Address
Melakukan penyocokan paket berdasar MAC source address dan hanya berfungsi untuk jaringan yang menggunakan teknologi ethernet.
iptables –A INPUT –m mac –mac-source 00:00:00:00:00:05

b. Multiport Matches
Mendefinisikan port atau port range lebih dari satu, tspi definisi aturan sama untuk beberapa port. Kita tidak bisa menggunakan port matching standard dan multiport matching dalam waktu yang sama.
iptables –A INPUT –p tcp –m multiport –source-port 22,80, 110,1028
c. Owner Matches
Mencocokkan paket berdasar pemilik paket. Match ini bekerja di chain OUTPUT, tetapi terdapat kekurangan yaitu beberapa proses tidak memiliki owner (??).
iptables –A OUTPUT –m owner –uid-owner 500
Selain itu bisa juga dengan group ID dengan sintaks –gid-owner.

d. State Matches
Mendefinisikan state apa yang cocok. Ke empat state yang ada yaitu NEW, ESTABLISHED, RELATED dan INVALID.
NEW untuk paket yang memulai koneksi baru.
ESTABLISHED untuk koneksi yang sudah tersambung dan paket sudah bagian dari koneki.
RELATED untuk paket yang berhubungan dengan koneksi, tapi bukan bagian dari koneksi. Seperti FTP data transfer yang menyertai koneksi TCP atau UDP.
INVALID adalah paket yang tidak teridentifikasi, bukan bagian dari koneksi.
iptables –A INPUT –m state –state RELATED,ESTABLISHED

7. Target/Jump
Perlakuan terhadap paket yang memenuhi aturan atau match. Chain yang ada akan dimasuki paket dengan kriteria. Contohnya ada chain bernama paket_tcp. Tambahkan aturan, dan direferensi dari chain input.
iptables –A INPUT –p tcp –j paket_tcp

Target
Keterangan
-j ACCEPT
–jump ACCEPT
Memberlakukan paket yang cocok dengan daftar match dan target.
-j DROP
–jump DROP
Membuang paket dan menolak memproses lebih jauh.
-j RETURN
–jump RETURN
Mengembalikan paket ke superset chain di atasnya dan masuk ke baris aturan berikutnya, jika pada subchain. Tapi jika pada chain utama seperti INPUT, maka paket dikembalikan kepada kebijakan default.
-j MIRROR
Membalik source address dan destination address.
Target ini bekerja pada chain INPUT, FORWARD dan PREROUTING atau chain buatan yang melalui chain tersebut.

Beberapa target yang lain biasanya memerlukan parameter tambahan:
a. LOG Target
Tingkatan log yang bisa digunakan dalam option pertama adalah debug, info, notice, warning, err, crit, alert dan emerg. Option kedua adalah -j LOG –log-prefix untuk memberikan string yang tertulis pada awal log, sehingga memudahkan pembacaan log.
iptables –A FORWARD –p tcp –j LOG –log-level debug
iptables –A INPUT –p tcp –j LOG –log-prefix “INPUT Packets”

b. REJECT Target
Memblok paket dan menolak untuk memproses lebih lanjut paket tersebut. REJECT akan mengirimkan pesan error ke pengirim paket, tidak seperti DROP. REJECT bekerja pada chain INPUT, OUTPUT dan FORWARD atau pada chain tambahan dari chain tersebut.
iptables –A FORWARD –p tcp –dport 80 –j REJECT –reject-with icmp-host-unreachable
Tipe pesan yang bisa dikirimkan yaitu icmp-net-unreachable, icmp-host-unreachable, icmp-port-unreachable, icmp-proto-unrachable, icmp-net-prohibited dan icmp-host-prohibited.

c. SNAT Target
Berguna untuk melakukan perubahan alamat asal paket (Source Network Address Translation). Target ini hanya berlaku untuk tabel nat pada chain POSTROUTING. Jika paket pertama dari satu koneksi mengalami SNAT, paket-paket berikutnya dalam koneksi juga akan mengalaminya.
iptables –t nat –A POSTROUTING –o eth0 –j SNAT –to-source 192.168.2.69-192.168.2.96:1024-32000

d. DNAT Target
Digunakan untuk melakukan translasi alamat tujuan (Destination Network Address Translation) pada header dari paket yang memenuhi aturan match. DNAT hanya bekerja untuk tabel nat pada chain PREROUTING dan OUTPUT atau chain buatan yang dipanggil oleh chain tersebut.
iptables –t nat –A PREROUTING –p tcp –d 35.35.33.37 –dport 80 –j DNAT –to-destination 192.168.22.22

e. MASQUERADE Target
Hampir sama dengan SNAT, tetapi tidak perlu option –to-source. Target ini hanya bekerja untuk tabel nat pada chain POSTROUTING.
iptables –t nat –A POSTROUTING –o ppp0 –j MASQUERADE

f. REDIRECT Target
Mengalihkan paket ke komputer itu sendiri. Mengarahkan paket yang menuju suatu port tertentu untuk memasuki proxy, berguna untuk membangun transparent proxy. Misal untuk mengalihkan semua koneksi yang menuju port http untuk memasuki aplikasi http proxy seperti squid. Hanya bekerja untuk tabel nat pada chain PREROUTING dan OUTPUT atau pada chain buatan dari chain tersebut.
iptables –t nat –A PREROUTING –i eth1 –p tcp –dport 80 –j REDIRECT –to-port 8080

No comments:

Post a Comment

Free Download GTA 4

Grand Theft Auto IV (GTA IV) adalah permainan komputer/game 3D generasi keenam dari serial Grand Theft Auto. Game yang dikembangkan o...