You are on page 1of 9

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 –to-
ports 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 seakan-
akan 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/network-
scripts/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 parameter-
parameter 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 might also like