Anda di halaman 1dari 5

16 Iptables

Iptables atau NetFilter adalah software Linux yang mengimplementasikan sebuah framework untuk firewall yang bersifat statefull. Iptables juga memiliki fiture Network Address Translation (NAT). Netfilter hanya bekerja pada kernel versi 2.4 atau 2.6 dan tidak dapat bekerja pada kernel yang lebih rendah dari 2.4. Netfilter membuat aturan-aturan apa yang dilakukan tentang paketpaket network yang lewat. Aturan tersebut bisa meneruskannya, menolaknya, dll.

16.1 Dasar iptables

Gambar 15: iptables Pada iptables di kenal istilah chain yaitu tempat terjadi proses pemfilteran (pada Gambar 15 berwarna hijau). Macam-macam chain[6]: - PREROUTING, titik dimana kita bisa memanipulasi paket network sebelum dia memasuki keputusan routing, apakah ia akan masuk ke dalam Linux kita atau cuma sekedar lewat. - INPUT, titik dimana kita bisa melakukan pemeriksaan terhadap paket network yang akan MASUK ke dalam Linux kita. - OUTPUT, titik dimana kita melakukan pemeriksaan terhadap paket network yang dihasilkan oleh Linux kita KELUAR sebelum routing. - FORWARD, titik dimana kita melakukan pemeriksaan terhadap paket network yang cuma numpang LEWAT Linux kita. - POSTROUTING, titik dimana kita bisa melakukan manipulasi terhadap paket yang akan keluar dari Linux kita. Masing-masing chain berisi daftar rules. Ketika sebuah paket dikirim ke suatu chain, paket ini dibandingkan dengan masing-masing rule di dalam chain dalam urutan atas ke bawah. rule bisa dalam bentuk user-defined chain atau salah satu dari built-in target: ACCEPT, DROP, QUEUE, atau RETURN.

ACCEPT Target ini menyebabkan iptables menerima paket. Paket yang diterima dari chain INPUT diizinkan lewat dan diterima oleh host lokal, sedangkan paket yang diterima dari chain OUTPUT akan diizinkan meninggalkan host, dan paket yang diterima dari chain FORWARD akan diizinkan untuk di-route ke host. DROP Target ini menyebabkan iptables mendrop paket tanpa proses yang lebih lanjut. Paket hilang tanpa ada indikasi yang diberikan ke host pengirim bahwa paket ini telah didrop. Yang tampak dari sender biasanya adalah communication timed-out. MASQUERADING IPMASQ adalah algoritme perubahan source-NAT suatu paket data tanpa menyebutkan asal paket yang sebenarnya. Dengan IPMASQ administrator tidak perlu memasukkan ke daftar tabel routing ketika suatu alamat IP lokal baru ingin mengakses internet lewat gateway IP live. Pada iptables juga dikenal adanya table yaitu tempat rule-rule/aturan-aturan yang kita buat disimpan (pada Gambar 15 berwarna kuning). Ada 3 buah table, secara general dapat kita definisikan: Table filter, adalah tempat rule-rule yang berkaitan dengan boleh/tidaknya suatu paket network melewati sebuah CHAIN di atas. dalam table ini terdapat Chain INPUT, OUTPUT dan FORWARD 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. Table mangle, adalah tempat rule-rule yang berkaitan dengan manipulasi suatu paket network untuk keperluan advance, seperti QOS (quality of service), packet marking, dll. dalam table ini terdapat semua Chain diatas.

16.2 Dua pendekatan setup firewall


Di mailing list sering ada yang bertanya: Port apa saja sih yang harus kita TUTUP? Ini adalah pendekatan negative list, dimana secara DEFAULT semua port kita BUKA, baru kemudian satu per satu kita TUTUP port yang diinginkan. Pendekatan kedua adalah: positive list, yaitu dimana secara DEFAULT semua port di TUTUP, dan baru kemudian satu per satu kita BUKA port yang diinginkan. Mana dari kedua pendekatan itu yang sebaiknya kita pakai? Berikut ini adalah kelebihan dan kekurangan masingmasing. Negative List: Mudah disetup Beresiko lupa menutup port Positive List: Sangat secure, sebab semua port tertutup Relatif lebih sulit disetup

16.3 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. Syntax Iptables seperti ini (perhatikan huruf besar kecil berpengaruh):
2

1 2 3 4 5 6

iptables iptables iptables iptables iptables iptables

[-t [-t [-t [-t [-t [-t

table] table] table] table] table] table]

-[AD] -I -R -D -[LFZ] -P

CHAIN CHAIN CHAIN CHAIN CHAIN CHAIN

rule-specification [options] [rulenum]rule-specification [options] rulenum rule-specification [options] rulenum [options] [options] target [options]

Keterangan: -I : insert, 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 rule-rule yang ada. -P : policy, mengubah policy suatu chain.

16.4 Contoh Kasus


Terdapat jaringan sebagai berikut:

Gambar 16: Contoh jaringan Melihat status iptables [root@server ]# iptables -nL Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination

Semua Chain memiliki policy ACCEPT artinya secara default semua paket dapat masuk ke host ini. Ubah policy default menjadi DROP (Positive list) [root@server ]# iptables I INPUT p DROP Chain INPUT (policy DROP) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination
3

Chain OUTPUT (policy ACCEPT) target prot opt source

destination

Baris 2: policy chain INPUT sudah berubah menjadi DROP. lakukan perubahan juga pada chain yang lain. Perintah ini harus dilakukan pada baris terakhir. Jika ada perintah lain maka harus dilakukan sebelum perintah ini. Membolehkan hanya PC1 (192.168.0.1) yang dapat mengakses Gateway
[root@server ]# iptables -I INPUT -s 192.168.0.1 -j ACCEPT [root@server ]# iptables -I OUTPUT -d 192.168.0.1 -j ACCEPT [root@server ]# iptables -nL Chain INPUT (policy ACCEPT) t a r g e t p r o t o p t s o u r c e d e s t i n a t i o n ACCEPT al l -- 192.168 .0.1 0.0.0.0/0

Chain FORWARD (policy ACCEPT) target prot opt source destination destination 192.168.0.1

Chain OUTPUT (policy ACCEPT) target prot opt source ACCEPT al l -- 0. 0.0.0/0

Baris 1: Semua paket yang masuk ke mesin yang berasal dari 192.168.0.1 diizinkan. Baris 2: Semua paket yang keluar dari mesin menuju 192.168.0.1 diizinkan. Konfigurasi 2 arah tersebut kadang sangat merepotkan. Oleh karenanya biasa di gunakan Connection tracking, yaitu dimana ketika kita sudah mendefinisikan sebuah rule di chain tertentu, maka trafik network yang terkait dengan rule tersebut tidak perlu disebutkan lagi. Jadi dalam hal kasus diatas, kita cukup mendefinisikan rule di chain INPUT saja, yang di OUTPUTnya tidak perlu lagi.
[root@server ]# iptables -I INPUT [root@server ]# iptables -I INPUT [root@server ]# iptables -I INPUT [root@server ]# iptables -I INPUT [root@server ]# iptables -nL Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- 0.0.0.0/0 ACCEPT all -- 192.168.0.1 Chain FORWARD (policy ACCEPT) target prot opt source destination ACCEPT all -- 0.0.0.0/0 Chain OUTPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- 0.0.0.0/0 -s -m -m -m 192.168.0.1 -j state --state state --state state --state ACCEPT RELATED ,ESTABLISHED RELATED ,ESTABLISHED RELATED ,ESTABLISHED -j ACCEPT -j ACCEPT -j ACCEPT

0.0.0.0/0state RELATED ,ESTABLISHED 0.0.0.0/0

0.0.0.0/0state RELATED ,ESTABLISHED

0.0.0.0/0state RELATED ,ESTABLISHED

Sharing Internet. Ada dua langkah yang harus dilakukan agar semua host dapat terkoneksi dengan internet: memperbolehkan semua host untuk mengakses port http (80) host luar (internet) [root@server ]# iptables -A FORWARD -p tcp --dport 80 -s 192.168.0.1 -j ACCEPT membungkus tiap paket yang keluar menjadi ip gateway, sehingga bisa dikenali dalam internet. [root@server ]# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE Mengatur agar kita bisa membuat sebuah web server yang terlindungi di belakang gateway menerima tiap paket yang bertujuan ke port 80 [root@server ~]# iptables -A FORWARD -p tcp -i eth0 --dport 80 -j ACCEPT mengubah tujuan tiap paket yang bertujuan ke port 80 menuju ke host 192.168.0.201 port 80 [root@server ~]# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.0.201:80

Anda mungkin juga menyukai