P. 1
iptables

iptables

|Views: 270|Likes:
Published by Anita Dobel Es

More info:

Published by: Anita Dobel Es on Mar 02, 2011
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

08/22/2015

pdf

text

original

Manajemen Jaringan dengan IPTables

Tools konfigurasi firewall Iptables bukan hanya berguna untuk memblokir atau mengizinkan akses jaringan. Lebih dari itu, iptables bisa menjadikan PC Anda sebuah pengelola jaringan yang cukup lengkap tanpa perlu membeli perangkat khusus. Apabila Anda berpikir bahwa perintah iptables untuk melakukan konfigurasi firewall, hanya mengurusi pemblokiran akses. Namun lebih dari itu, iptables bisa menyediakan berbagai macam fungsi yang berguna. Artikel ini akan mencoba menyajikan beberapa fungsi di antaranya: 1. Pengalihan port (port redirection). 2. Membatasi kecepatan koneksi. 3. Membuat sistem Linux sebagai router atau gateway Internet komputer lain. 4. Membatasi akses Internet pada waktu (jam, hari, tanggal) tertentu. Referensi yang digunakan dalam artikel ini adalah iptables versi 1.4.1.1 (disertakan dalam distro Linux Fedora 9). Versi yang lebih rendah mungkin tidak menyertakan modul yang dibahas saat ini. Cara mengecek versi iptables adalah dengan perintah: $ iptables –V

iptables v1.4.1.1 Seperti biasa, prompt # berarti perintah dilakukan sebagai root. Sementara prompt $ berarti bisa dilakukan sebagai user biasa.

1. Port redirect
Apa yang dimaksud dengan redirect? Secara mudahnya, redirect berarti membelokkan suatu komunikasi dari tujuan sebenarnya ke arah lain. Di sini, yang dibelokkan adalah tujuan port. Misalnya, jika awalnya suatu data TCP mengarah ke port 80 lalu dialihkan ke port 8080. Teknik ini biasanya digunakan untuk mengalihkan suatu komunikasi secara transparan. Salah satu contoh yang umum diterapkan adalah mengalihkan suatu akses ke web server (port 80) ke proxy server (port 8080). Pengalihan ini bertujuan untuk: 1. Mengurangi beban web server. Request akan dilayani oleh proxy server dahulu. Selanjutnya, jika ada content yang perlu langsung dijawab oleh webserver, web server akan menjawab 2. Mempercepat akses. Proxy server (contohnya Squid) menyimpan halaman-halaman web yang terakhir diakses. Dengan demikian, jika suatu alamat web diakses bersama-sama oleh banyak client, maka proxy bisa membantu dengan langsung memberikan halaman yang diminta.

Untuk melakukan redirect, gunakan perintah seperti berikut ini. # iptables -t nat -p tcp -A OUTPUT -s 10.1.1.0/24 –d 11.1.1.1 –dport 80 -j REDIRECT –toports 8080 Perintah di atas dapat diartikan, semua data yang berasal dari semua komputer pada kelompok jaringan 10.1.1.0 dengan tujuan komputer ber-IP 11.1.1.1 pada port 80 dialihkan ke port 8080 (pada komputer yang menjadi firewall). Hal lainnya yang perlu Anda ingat adalah metode redirect ini harus ditempatkan pada tabel NAT atau lebih tepatnya pada bagian chain PREROUTING atau OUTPUT.

2. Membatasi kecepatan koneksi
Sebenarnya, istilah membatasi kecepatan koneksi tidaklah sepenuhnya tepat. Yang dilakukan iptables untuk melakukan pembatasan sebenarnya adalah mengizinkan suatu koneksi mencapai batas kecepatan tertentu dan memblokir jika telah melebihi batas ini. Salah satu tujuannya adalah untuk mengendalikan beban lalu lintas data yang terjadi pada suatu komputer. Ada beberapa cara untuk melakukan hal ini. Pertama dengan modul hashlimit. Sebagai contoh, pembatasan dilakukan agar PC hanya dapat merespons ping sebanyak 2 kali selama 1 menit:

# iptables -A INPUT -p icmp -d 192.168.1.2 -m hashlimit –hashlimit 1/minute –hashlimit-name PING-BLOCK –hashlimit-mode srcip -j ACCEPT # iptables -A INPUT -p icmp -d 192.168.1.2 -j DROP

Pada perintah pertama, digunakan parameter -m untuk memanggil modul hashlimit. Berikutnya, kita sebutkan kecepatan yang kita inginkan. Di sini digunakan batas 1 paket ICMP per menit. ICMP (Internet Control Message Protocol) adalah nama teknis dari jenis data yang dikirim saat proses ping dilakukan. Suatu catatan penting disini: kita masukkan rule ini pada chain INPUT karena kita hendak membatasi jumlah paket ping yang ingin direspons komputer. Apabila komputer digunakan sebagai gateway dan ingin menyaring paket serupa, maka atauran atau rule harus dimasukkan ke chain FORWARD.

Parameter lainnya yang tidak kalah penting adalah “hashlimit-mode”. Argumen pada parameter ini menentukan bagaimana perhitungan limit kecepatan dilakukan. Pada contoh di atas, digunakan argumen srcip. Artinya, perhitungan limit dihitung per komputer asal koneksi. Lebih jelasnya, semisal ada tiga komputer melakukan koneksi ke komputer ini, jika masing-masing komputer (dianggap A, B dan C) melakukan koneksi bersamaan ke komputer kita, masing-masingnya akan mendapat kecepatan respon 1 paket per menit.

Adapun kemungkinan nilai lainnya antara lain : ldstip : Kebalikan dari srcip, pada dstip limit dihitung pada komputer tujuan. Kembali pada contoh di atas, A, B dan C secara keseluruhan akan mendapat kecepatan 1 paket per menit. lsrcport : Seperti srcip, tetapi pengelompokkan didasarkan pada port asal (sumber) koneksi. ldstport : Seperti dstip, tetapi pengelompokan didasarkan pada port tujuan koneksi.

Pada perintah kedua mungkin timbul pertanyaan, kenapa parameter drop disertakan? Module hashlimit akan match selama jumlah paket per interval waktu sesuai dengan yang kita sebutkan. Dalam contoh di atas, sampai dengan jumlah paket 1 per menit, rule akan tepat (match). Di sini, kita sebutkan bahwa paket akan diterima. Bagaimana jika kecepatan paket melebihi batas tersebut? Rule-nya tentu saja tidak lagi match. Hal inilah yang ingin dicegah. Oleh karena itu, paket ICMP perlu di-drop pada baris berikutnya. Cara lain yang mirip adalah dengan menggunakan modul limit:

# iptables -I INPUT -d 192.168.1.2 -p icmp -m limit –limit 12/min -j ACCEPT # iptables -I INPUT -p icmp -d 192.168.1.2 -j DROP

Perbedaannya di sini adalah limit berlaku universal, tidak dikelompokkan berdasar IP node asal atau tujuan. Namun, faktor kapan rule dianggap sesuai atau tidak identik dengan hashlimit yang menjadi pertimbangan, kenapa pada baris kedua tetap diperperlukan rule drop. Catatan: limitasi 12 menit kurang lebih mengizinkan paket ping 1 kali per 5 detik.

3. Membuat Linux sebagai router
Ini pertanyaan yang kerap terlontar jika kita ingin menghubungkan beberapa PC di rumah atau warnet ke Internet. Misalnya di sebuah warnet ada 16 komputer yang disiapkan untuk pelanggan. Lalu, Anda selaku pemilik berlangganan layanan ADSL dari suatu provider di Indonesia. Biasanya, hanya ada satu sampai dengan empat PC yang bisa langsung tersambung ke ADSL router (tergantung jumlah port Ethernet yang tersedia). Lalu, bagaimana dengan sisanya? Apabila kita pikirkan sejenak, dibutuhkan suatu cara agar sekitar 14 komputer sisanya dapat “menumpang” koneksi pada komputer yang tersambung langsung ke router. Pengertian menumpang di sini adalah komputer berkomunikasi dengan Internet via komputer lainnya. Ilustrasi lain adalah sebuah perusahaan memiliki hampir seratusan PC. Sang administrator selain meminta sambungan Internet, juga meminta dua alamat IP publik. Alamat IP ini untuk area Indonesia biasanya berawalan 202.x.x.x atau 203.x.x.x. Satu alamat akan digunakan untuk mail server, sementara satunya digunakan untuk gateway. Komputer yang memiliki IP publik bisa langsung berkomunikasi dengan Internet. Lalu, bagaimana dengan sisanya? Kita perlu trik seakanakan komputer lain yang terhubung lewat gateway tersebut menggunakan IP publik. Untuk mencapai hal ini, kita buat dulu beberapa asumsi: 1. Komputer yang dijadikan gateway memiliki dua network card. Network card pertama (eth0) memiliki IP 202.130.1.2 dan terhubung ke Internet 2. Network card kedua (eth1) memiliki IP 192.168.1.254 dan terhubung ke jaringan lokal lewat switch. Komputer-komputer lain dikoneksikan di kelompok switch yang sama

3. Komputer-komputer pada LAN memiliki IP berawalan 192.168.1.x.

Hal pertama yang perlu dilakukan adalah memastikan bahwa semua komputer di LAN mengeset IP gateway-nya dengan benar. Perintahnya adalah: # route add default gw 192.168.1.254 Untuk membuatnya menjadi permanen setiap kali Linux di-reboot, kita bisa mengedit file konfigurasi network. Pada keluarga distribusi Fedora dan Redhat, kita edit file /etc/sysconfig/networkscripts/ifcfg-eth0 dan edit baris berikut: GATEWAY=192.168.1.254 Simpan lalu restart fungsi network: # service network restart Hal di atas tidak perlu dilakukan jika alamat IP dan setting gateway dikirim oleh server DHCP (Dynamic Host Control Protocol). Cukup pastikan server DHCP telah mengirim informasi gateway yang benar. Di sisi gateway, kita gunakan suatu target yaitu MASQ, singkatan dari masquerade: # iptables -t nat -A POSTROUTING -o eth0 –s 192.168.1.1/24 -d ! 192.168.1.1/24 -j MASQUERADE

Dari perintah di atas bisa disimpulkan bahwa target masquerade hanya bisa diletakkan di tabel NAT di chain postrouting. Penyebutan output interface (-o), alamat asal (-s), dan alamat tujuan (-d) hanya bertujuan untuk lebih memperjelas jenis lalu lintas data yang ingin kita “samarkan”. Anda boleh saja membuang parameter ini dan tetap mencapai hasil yang sama. Perintah berikut melengkapi masquerade kita: # iptables -A FORWARD -i eth1 -o eth0 -m state –state RELATED,ESTABLISHED -j ACCEPT Rule di atas akan memastikan bahwa koneksi balik dari Internet yang berhubungan dengan inisiatif koneksi dari komputer-komputer di LAN diizinkan masuk. Tanpa rule ini, kemungkinan besar hubungan ke Internet akan macet. Cara lain yang adalah dengan menggunakan target bernama SNAT (Source Network Address Translation): # iptables -t nat -A POSTROUTING -j SNAT –to-source 192.168.1.254

Perhatikan bahwa opsi –to-source diberikan setelah definisi target. Di sini Anda perlu menyebutkan alamat IP “pengganti” bagi komputer-komputer pada jaringan (LAN). Di sinilah perbedaan paling utama antara SNAT dan MASQUERADE. Pada MASQUERADE, alamat IP “pengganti” tidak perlu disebutkan karena otomatis akan digantikan oleh alamat IP interface yang mengirim data (eth0). Perbedaan lain menurut manual iptables adalah pada situasi penggunaan. Target masquerade sesuai untuk gateway yang tersambung secara dinamis pada Internet. Yang dimaksud dinamis disini adalah mendapat alamat IP yang belum tentu sama alias bukan statis. Sementara itu, SNAT sesuai untuk koneksi yang menggunakan alamat IP statis. Pada skenario kali ini, digunakan alamat statis sehingga solusi SNAT lebih tepat.

4. Mengatur waktu koneksi

Belakangan ini, koneksi Internet cenderung ditawarkan tanpa batas (unlimited). Kompetisi yang ketat di antara para penyedia layanan Internet di Indonesia mungkin menjadi salah satu penyebabnya. Meskipun demikian, pada situasi tertentu, kita harus membatasi waktu akses Internet agar kegiatan utama kita tidak terganggu. Contohnya saat di kantor, akses Internet cenderung dibatasi pada jam istirahat makan siang atau waktu break lainnya. Itupun bisa saja ditambah dengan pemblokiran lainnya, misalnya karyawan tidak dapat mengakses website porno atau website lainnya yang dianggap menurunkan produktivitas (Facebook, Friendster, dan sejenisnya). Contoh lainnya, adanya pemblokiran pada program komunikasi, seperti Yahoo Messenger, IRC, dan Google Talk. Hal serupa bisa juga diterapkan di tempat lain, misalnya di sekolah, lab di kampus, atau bahkan rumah kita sendiri. Namun, bagaimana cara melakukannya? Katakanlah dipakai cara sangat sederhana dengan mematikan router ADSL di saat-saat tertentu. Cara ini cukup merepotkan. Cara lainnya yang lebih praktis adalah menggunakan fasilitas Access Control List (ACL) pada sistem proxy. Software Squid menyediakan fasilitas tersebut. Namun, coba tanyakan pada diri Anda sendiri, bagaimana agar user bisa mengakses Internet tetapi tetap melalui proxy? Cara yang dianggap lebih efisien adalah menggunakan bantuan modul time di iptables. Modul ini tidak selalu ada di semua distro (distribusi). Yang jelas, modul ini telah tersedia langsung di distro Fedora 9, tetapi tidak tersedia di distro CentOS 5.3. Cara termudah memeriksa ada tidaknya modul tersebut adalah dengan perintah:

$ find /lib/xtables/ -iname “*time*” /lib/xtables/libxt_time.so Atau: $ find /lib/iptables/ -iname “*time*” Anda dipersilahkan mengecek sendiri, mana direktori yang eksis di sistem Linux Anda. Kalau digunakan asumsi seperti pada contoh pembuatan router dan kita hendak membatasi agar akses tidak bisa dilakukan pada jam 10 sampai dengan 12 siang, perintahnya adalah: # iptables -A FORWARD -i eth1 -o eth0 -m time –time start 10:00 –timestop 12:00 -j DROP Kita bisa juga mengatur pemblokiran akses pada hari tertentu dengan perintah: # iptables -I FORWARD 1 -i eth1 -o eth0 -m time --timestart 07:30 –timestop 12:00 –weekdays Mon,Tue,Wed,Thu,Fri -j DROP # iptables -I FORWARD 1 -i eth1 -o eth0 -m time --timestart 13:00 –timestop 17:00 –weekdays Mon,Tue,Wed,Thu,Fri -j DROP Dengan dua baris perintah di atas, kita tentukan agar pada jam 7 pagi sampai jam 12 siang, dilanjutkan jam 1 siang sampai 5 sore, akses diblokir. Peraturan ini berlaku untuk hari Senin sampai dengan Jumat. Pada perintah tersebut, terlihat penyebutan hari cukup dituliskan dengan tiga huruf pertama dari nama hari dalam bahasa Inggris, contohnya “Sat” untuk “Saturday”. Huruf pertama harus huruf kapital. Selain penyebutan jam dan nama hari, kita bisa juga menggunakan parameterparameter berikut:

–datestart: menandakan awal suatu interval tanggal. Formatnya adalah YYYY-MM-DD, contoh 2010-05-01 untuk menyebutkan 1 Mei 2010. –datestop: menandakan akhir suatu interval tanggal. Formatnya sama seperti di atas. –monthdays: menyebutkan tanggal rule berlaku. Yang bisa dimasukkan di sini adalah angka 1 sampai dengan 31. Di sini tanggal terbesar disesuaikan dengan bulan bersangkutan, misalnya di bulan April tanggal terbesar adalah 30.

Penutup
Masih banyak fungsi lain dari iptables yang bisa digunakan. Melalui perintah “man iptables”, Anda bisa belajar banyak hal, seperti membatasi jumlah koneksi, memblokir koneksi jika data mengandung string tertentu, dan lain sebagainya. Selamat belajar dan mencobanya!

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->