Thursday, 8 December 2016

Firewall Iptables


A. Pengertian

    Iptables adalah suatu tools dalam sistem operasi linux ysng brfungsi sebagai alat untuk filter terhadap trafic lalu lintas data, secara sederhana Iptables dapat digambarkan sebagai pengatur lalu lintas data.Dengan Iptables inilah kita dapat mengatur mengatur lalu lintas traffic data dalam komputer kita, baik yang masuk ke komputer, keluar dari komputer, atau hanya melewati komputer kita.

B. Latar Belakang

    Agar kita bisa mengerti dan memahami tentang Iptables.Sehingga nantinya jka kita sudah paham betul dengan iptables ini, kita dapat mengamankan dan mengelola server kita.

C. Maksud dan Tujuan

    Supaya dapat mengerti serta mengetahui tentang firewall iptables itu sendiri pada sistem operasi GNU/Linux.

D. Firewall Iptables





     Nah, konsep Iptables itu sendiri menggunakan IP, protocol (TCP, UDP, ICMP), dan juga port.Iptables menggunakan chain (INPUT, OUTPUT, FORWARD), apabila data diproses menggunakan paket IP maka akan dilewati dalam tebel penyerigan terlebih dahulu seperti gambar di atas.

     Pada gambar diatas chain digambarkan dengan lingkaran, jadi saat sebuah paket sampai pada sebuah lingkaran, maka disitulah terjadi proses penyaringan. Chain akan memutuskan nasib paket tersebut apabila keputusannya adalah DROP, maka paket tersebut akan di-drop, tetapi jika chain memutuskan untuk ACCEPT, maka paket akan dilewatkan melalui diagram tersebut.


E. Diagram Iptables

   

Nah, berikut penjelasan masing masing titik dari diagram gambar diatas.

1. PREROUTING, titik dimana kita bisa memanipulasi paket network sebelum dia memasuki keputusan untuk routing, apakah ia akan masuk ke Linux kita atau hanya sekedar lewat.

2. INPUT, titik dimana kita melakukan pemeriksaan terhadap paket network yang akan masuk ke Linux kita.

3. OUTPUT, titik dimana kita melakukan pemeriksaan terhadap paket network yang dihasilkan oleh Linux kita dan keluar sebelum routing.

4. FORWARD, titik dimana kita melakukan pemeriksaan terhadap paket network yang cuma lewat di Linux kita.

5. POSTROUTING, titik dimana kita bisa melakukan manipulasi terhadap paket yang akan keluar dari Linux kita.

   Kemudian kelima titik diatas diisebut CHAIN dalam syntax Iptables, dalam IPtables juga ada yang dinamakan table.Table adalah tempat rule atauu aturan yang kita buat untuk disimpan, ada tiga buah table yang dapat kita definisikan.

1. Table filter, adalah tempat rule rule yang berkaitan dengan boleh tidaknya suatu paket network melewati CHAIN di atas.

2. Table nat, adalah singkatan dari Network Address Translation yaitu table tempat rule rule yang berkaitan dengan manipulasi suatu paket network ketika melewati CHAIN, PREROUTING, POSTROUTING, dan OUTPUT.

3. Table mangle, adalah tempat rule yang berkaitan dengan manipulasi satu paket network untuk keperluan advanced, seperti QoS (Quality of Service), paket marking, dll.


F. Syntax Iptables






    Iptables memberikan keleluasaan yang sangat besar kepada kita di dalam mengatur firewall. Kita bisa membuat rule mulai dari yang general/umum sampai yang detail sekali.Besar kecilnya huruf sangat berpengaruh pada Iptables.

I ---> insert, bila menggunakan I, maka secara default rule akan menempati baris.Nomor 1. Kita bisa menyebutkan ingin insert di baris keberapa.
­A ---> append, rule akan ditambahkan di baris paling bawah.
­D ---> delete, menghapus rule baris ke-berapa.
­R ---> replace, mengganti rule baris ke-berapa.
­L ---> list, menampilkan rule2 yang ada.
­P ---> policy, mengubah policy suatu cha
in



G. Istilah-Istilah dalam Command Iptables 

   Istilah – istilah tersebut misalnya, memberitahu apa yang harus dilakukan terhadap lanjutan sintaks perintah, dan dilakukan untuk penambahan atau penghapusan sesuatu dari tabel atau yang lain, seperti dibawah ini :

   Syntax IPTables = iptables [-t table] command [match] [target/jump]
Table

   Command pada baris perintah IPTables akan memberitahu apa yang harus dilakukan terhadap lanjutan sintaks perintah.

-A or - -append = Perintah ini menambahkan aturan pada akhir chain. Aturan akan ditambahkan di akhir baris pada chain yang bersangkutan, sehingga akan dieksekusi terakhir.

-D or – -delete = 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.

-R or - -replace = Penggunaannya sama seperti - -delete, tetapi command ini menggantinya dengan entry yang baru.

-I or - -insert = 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 baris-baris selanjutnya.

-L or - -list = 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).

-F or – -flush = Perintah ini mengosongkan aturan pada sebuah chain. Apabila chain tidak disebutkan, maka semua chain akan di-flush.

-N or - -new-chain = Perintah tersebut akan membuat chain baru.

-X or – -delete-chain = Perintah ini akan menghapus chain yang disebutkan. Agar perintah di atas berhasil, tidak boleh ada aturan lain yang mengacu kepada chain tersebut.

-P or – -policy = 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.

-E or - -rename-chain = Perintah ini akan merubah nama suatu chain.

-v or – -verbose = 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).-x or - -exact = Memberikan output yang lebih tepat.

-n or - -numeric = Memberikan output yang berbentuk angka. Alamat IP dan nomor port akan ditampilkan dalam bentuk angka dan bukan hostname ataupun nama aplikasi/servis.

- -line-number = 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.

- -modprobe = Memerintahkan IPTables untuk memanggil modul tertentu. Bisa digunakan bersamaan dengan semua command.

-p or - -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 menghendaki semua protokol kecuali icmp, maka kita bisa menuliskan – -protokol ! icmp yang berarti semua kecuali icmp.

-s or – -src or- -source = Kriteria ini digunakan untuk mencocokkan paket berdasarkan alamat IP asal. Alamat di sini bisa berberntuk alamat tunggal seperti 192.168.0.10, atau suatu alamat network menggunakan netmask misal 192.168.0.0/255.255.255.0, atau bisa juga ditulis 192.168.0.0/24 yang artinya semua alamat 192.168.0.x. Kita juga bisa menggunakan inversi.

-d or- -dst or - -destination = Digunakan untuk mecocokkan paket berdasarkan alamat tujuan. Penggunaannya sama dengan match –src

-i or- -in-interface = Match ini berguna untuk mencocokkan paket berdasarkan interface di mana paket datang. Match ini hanya berlaku pada chain INPUT, FORWARD dan PREROUTING

-o or- -out-interface = Berfungsi untuk mencocokkan paket berdasarkan interface di mana paket keluar. Penggunannya sama dengan – -in-interface. Berlaku untuk chain OUTPUT, FORWARD dan POSTROUTING

- -sport or- -source-port = 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.

- -dport or- -destination-port = Penggunaan match ini sama dengan match – -source-port.

- -tcp or -flags =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.


- -syn = Match ini akan memeriksa apakah flag SYN di-set dan ACK dan FIN tidak di-set. Perintah ini sama artinya jika kita menggunakan match - -tcp-flags SYN,ACK,FIN SYNPaket dengan match di atas digunakan untuk melakukan request koneksi TCP yang baru terhadap server.

UDP Matches = Karena bahwa protokol UDP bersifat connectionless, maka tidak ada flags yang mendeskripsikan status paket untuk untuk membuka atau menutup koneksi. – -sport atau – -source-port- -dport atau – -destination-port

ICMP Matches = Paket ICMP digunakan untuk mengirimkan pesan-pesan kesalahan dan kondisi-kondisi jaringan yang lain. – -icmp-type


H. Explicit Matches
 

1. MAC Address

Match jenis ini berguna untuk melakukan pencocokan paket berdasarkan MAC source address. Contoh = iptables –A INPUT –m mac –mac-source 00:00:00:00:00:01
 

2. 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. Contoh = iptables –A INPUT –p tcp –m multiport – -source-port 22,53,80,110

3. Owner Matches

Penggunaan match ini untuk mencocokkan paket berdasarkan pembuat atau pemilik/owner paket tersebut. contoh = iptables –A OUTPUT –m owner – -uid-owner 500 or – -gid-owner

4. State Matches
Match ini mendefinisikan state apa saja yang cocok. Ada 4 state yang berlaku, yaitu NEW, ESTABLISHED, RELATED dan INVALID. Contohnya = iptables –A INPUT –m state – -state RELATED,ESTABLISHED

Target/Jump
Target atau jump adalah perlakuan yang diberikan terhadap paket-paket yang memenuhi kriteria atau match. 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


-j ACCEPT or - -jump ACCEPT = Ketika paket cocok dengan daftar match dan target ini diberlakukan, maka paket tidak akan melalui baris-baris aturan yang lain dalam chain tersebut atau chain yang lain yang mereferensi chain tersebut. Akan tetapi paket masih akan memasuki chain-chain pada tabel yang lain seperti biasa.

-j DROP or - -jump DROP = 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.

-j RETURN or – -jump RETURN = 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.

-j MIRROR = 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.

LOG Target
Ada beberapa option yang bisa digunakan bersamaan dengan target ini. Yang pertama adalah yang digunakan untuk menentukan tingkat log. Contoh = iptables –A FORWARD –p tcp –j LOG – -log-level debug or iptables –A INPUT –p tcp –j LOG – -log-prefix “INPUT Packets”

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. Contohnya = iptables –A FORWARD –p tcp –dport 22 –j REJECT – -reject-with icmp-host-unreachable or icmp-net-unreachable, or icmp-host-unreachable, icmp-port-unreachable, or icmp-proto-unrachable, or icmp-net-prohibited dan icmp-host-prohibited.

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. Contohnya = iptables –t nat –A POSTROUTING –o eth0 –j SNAT – -to-source 194.236.x.x-194.236.x.x:1024-32000
 

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. Contohnya = iptables –t nat –A PREROUTING –p tcp –d 182.123.4.5 – -dport 80 –j DNAT – -to-destination 192.168.0.2

MASQUERADE Target
Secara umum, target MASQUERADE bekerja dengan cara yang hampir sama seperti target SNAT, tetapi target ini tidak memerlukan option – -to-source. Contohnya = iptables –t nat –A POSTROUTING –o ppp0 –j MASQUERADE

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 = iptables –t nat –A PREROUTING –i eth1 –p tcp – -dport 80 –j REDIRECT – -to-port 8180
 


I. Kesimpulan

   Dengan adanya sebuah firewall atau iptables pada komputer server kita, membuat komputer server kita aman dari serangan luar seperti virus, spam, DOS, dll. Selain itu dengan firewall atau iptables ini kita dapat dengan mudah mengelola jaringan kita dengan membuat aturan-aturan tertentu untuk setiap hostnya.

J. Refrensi

- https://en.wikipedia.org/wiki/Iptables
- http://dejanlucker.blogspot.co.id/2015/04/penjelasan-dan-pengenalan-iptables-linux.html 

0 comments:

Post a Comment