- Back to Home »
- Firewall Pada Linux
Posted by : Unknown
Jumat, 26 Juli 2013
IPTABLES
Mengapa diberi nama firewall? Mungkin itu pertanyaan yang
pertama kali muncul ketika membaca artikel tentang keamanan, baik di Win, Linux
maupun sistem operasi apa saja. Menurut istilah konstruksi bangunan, firewall
adalah sebuah struktur yang dibuat untuk mencegah penyebaran api. Hampir senada
dengan istilah awalnya, Firewall bertujuan menjaga LAN dari ”api” akses yang
tidak diinginkan dari Internet. Disamping agar pengguna LAN tidak sembarangan
mengeluarkan ”api” aksesnya ke Internet. Dengan kata lain firewall dibuat untuk
membatasi antara dua dunia (LAN dan Internet).
Firewall yang pertama kali dibuat adalah sebuah mesin Unix
yang menjadi perantara antara sebuah LAN dengan Internet. Jika seorang user
ingin mengakses Internet maka ia harus login terlebih dahulu ke mesin Unix
untuk kemudian mengakses dari situ. Begitu pula ketika seorang user ingin
mendownload data dari Internet maka ia harus download terlebih dahulu pada
mesin Unix, baru dipindah pada workstation user.
Firewall sendiri terbagi menjadi dua jenis yakni :
1. Filtering Firewalls – yang akan memblok dan melewatkan
paket-paket tertentu
2. Proxy Servers – berfung sebagai perantara koneksi
Packet Filtering Firewalls
Packet filter adalah sebuah software yang memeriksa header
dari paket ketika paket tersebut lewat, dan memutuskan tindakan apa yang
dilakukan terhadap paket tersebut. Apakah paket tersebut di-DROP (misal dengan
menghapus paket tersebut), ACCEPT(misal, paket tersebut diteruskan ke
tujuannya), atau hal lain yang lebih kompleks.
Pada Linux, packet filtering ditanamkan pada kernel (
sebagai modul kernel, atau digabungkan ke dalam kernel). Penerapan packet
filtering sudah cukup lama sejak kernel 1.1. Versi pertamanya, masih banyak
mencontoh cara kerja ipfw milik BSD (Sistem Operasi buatan University California
atBerkeley), dibuat oleh Alan Cox pada akhir 1994. Berkembang menjadi ipfwadm
pada kernel 2.0, ipchains pada kernel 2.2 dan terakhir iptables sejak kernel
2.4.
Packet Filtering Firewalls dengan Iptables
Iptables merupakan paket program yang disertakan secara
default oleh banyak distro bersama dengan kernel versi 2.4. Pada iptables
nantinya kita akan banyak berhubungan dengan aturanaturan(rules) yang
menentukan tindakan apa yang akan dilakukan terhadap sebuah paket.
Aturan-aturan ini dimasukan dan dihapus pada tabel packet filtering yang
terdapat pada kernel. Sekedar mengingatkan kernel adalah ”jantung” sistem
operasi yang terus berada pada memori sejak computer booting hingga komputer
dimatikan. Sehingga aturan apapun yang kita tentukan akan hilang pada saat
terjadi rebooting, namun demikian terdapat beberapa cara agar aturan-aturan
yang telah kita buat dapat di kembalikan pada saat Linux booting, yaitu :
1. Menggunakan perintah iptables-save, untuk menyimpan
aturan-aturan yang telah ditentukan dalam sebuah file, dan iptables-restore,
untuk memanggil file aturan yang telah dibuat.
2. Meletakannya pada sebuah skrip yang akan berjalan pada
saat inisialisasi Linux.
Perjalanan Paket Melintasi Filter
Terdapat tiga daftar aturan pada tabel filter. Daftar-daftar
ini disebut ”firewall chains” atau ”chains”. Ketiga chains tersebut adalah
INPUT, OUTPUT dan FORWARD. Chains tersebut tersusun kurang lebih sebagai
berikut :
Ketika paket melewati salah satu chains (INPUT, OUTPUT atau
FORWARD), maka chain akan dilihat untuk menentukan ”takdir” dari paket
tersebut. Jika menurut chain paket tersebut harus di DROP maka paket akan
dihapus, begitu juga sebaliknya jika menurut chain paket tersebut di- ACCEPT
maka paket tersebut akan melanjutkan perjalanannya. Jadi chain sebenarnya
merupakan daftar aturan-aturan. Tiap aturan mengatur tindakan apa yang akan
dilakukan terhadap sebuah paket berdasarkan header dari paketnya. Jika aturan
pertama tidak cocok dengan header paket maka akan dilanjutkan dengan aturan
berikutnya, begiru seterusnya. Hingga apabila tidak ada lagi aturan yang sesuai
dengan header paket maka kernel akan melihat pada chain policy, yang berisi
aturan umum tentang tindakan terhadap suatu paket. Pada kebanyakan sistem,
chain policy biasanya akan men-DROP paket tersebut.
Menggunakan iptables
Seperti sudah disebutkan sebelumnya, terdapat tiga chain
dasar yaitu:
• INPUT
• OUTPUT
• FORWARD
Untuk memanipulasi chain terdapat beberapa option sebagai
berikut :
1. Membuat chain baru (-N)
2. Menghapus chain yang kososng (-X)
3. Mengganti policy untuk chain built-in (-P)
4. Melihat aturan-aturan dari sebuah chain (-L)
5. Menghapus seluruh aturan dari sebuah chain (-F)
6. Mengosongkan paket dan mengeset nol semua aturan pada
sebuah chain (-Z)
Terdapat beberapa hal yang dapat kita lakukan sehubungan
dengan aturan(rules), yaitu :
1. Menambah aturan baru pada sebuah chain (-A)
2. Memasukkan aturan baru pada posisi tertentu dalam sebuah
chain (-I)
3. Mengganti sebuah aturan pada posisi tertentu dalam sebuah
chain (-R)
4. Menghapus sebuah aturan pada posisi tertentu, atau aturan
pertama yang cocok (-D)
Juga terdapat beberapa parameter berikut, beserta contoh
penggunaannya :
Memilih tindakan (-j atau –jump)
Secara garis besar terdapat 3 tindakan terhada suatu paket
yaitu, ACCEPT (paket boleh lewat), DROP (paket berhenti / diblok) dan REJECT (
mirip dengan DROP bedanya akan diberitahukan ke alamat IP asal/sumber paket bahwa
paket ditolak). Contoh :
# iptables -A INPUT -j DROP
Perintah diatas akan menambahkan aturan ke dalam chain
INPUT, dimana semua paket yang ditujukan ke IyaNet akan di-DROP. Untuk
menghapus aturan diatas digunakan perintah
# iptables -D INPUT -j DROP
Hasil yang sama juga akan didapatkan dengan perintah
# iptables -D INPUT 1
jika aturan yang dimaksud merupakan aturan pertama.
Memilih peralatan input (-i atau –in-interface) dan memilih
peralatan output (-o atau–out-interface)
Parameter ini sangat berguna bila kita memiliki beberapa
peralatan masukan dan/atau keluaran, misal kita memiliki 2 kartu jaringan (eth0
dan eth1). Perlu diingat bahwa chain INPUT hanya memiliki peralatan input.
Sehingga jika kita menambah parameter -o pada chain INPUT, tidak akan match!.
Begitu juga sebaliknya untuk chain OUTPUT. Hanya chain FORWARD saja yang dapat
menggunakan kedua parameter.
Contoh :
# iptables -A INPUT -i eth0 -j DROP
Perintah diatas akan men-DROP semua paket yang berasal dari
eth0. Contoh penerapan pada chain FORWARD adalah sebagai berikut :
# iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
Perintah tersebut akan meng-ACCEPT semua paket yang masuk
dari eth0 dan akan keluar menuju eth1.
Memilih jenis protokol (-p atau –proto)
Jenis protokol yang sering digunakan diantaranya adalah TCP,
UDP dan ICMP.
# iptables -A INPUT -p icmp -j DROP
Dengan perintah diatas maka akan menambahkan aturan ke dalam
chain INPUT dimana untuk setiap paket yang datang dan berjenis protokol icmp
(contoh : ping), maka paket tersebut akan di-DROP
Memilih sumber/asal paket (-s atau –source) dan memilih
tujuan paket (-d atau – destination)
Ada empat cara pendeklarasian sumber atau tujuan paket yaitu
:
1. dengan nama domain, misal http://www.yahoo.com
2. dengan alamat IP, misal 192.168.1.23
3. dengan range alamat berdasarkan most significant bit,
misal 212.99.221.0/24
4. dengan range alamat berdasarkan subnet mask, misal
212.99.221.0/255.255.255.0, dimana
hasilnya akan sama dengan no.3.
Contoh :
# iptables -A INPUT -s http://www.hackers.net
-j DROP
Perintah diatas akan menambahkan sebuah aturan ke dalam
chain input, dimana semua paket yang berasal dari http://www.hackers.net akan di-DROP.
Packet Filtering Firewalls dengan Iptables 39
Kebalikan dari (!)
Parameter inversi ini dapat digabungkan dengan parameter
sebelumnya, sebagai contoh :
# iptables -A INPUT -s ! http://www.hackers.net
-j ACCEPT
Perintah diatas akan memberikan hasil yang sama dengan
contoh perintah sebelumnya, dimana semua nama domain selain http://www.hackers.net akan di-ACCEPT.
Dibawah ini beberapa contoh penggunaan gabungan parameter tersebut diatas
Contoh 1
# iptables -A INPUT -s 178.191.122.45 -p tcp –dport telnet
-j DROP
Maksud perintah diatas adalah menambah aturan ke dalam chain
INPUT, dimana paket yang berasal dari alamat IP 178.191.122.45 dan berjenis
protokol tcp serta memiliki port tujuan (destination port) telnet akan di-DROP.
Penggunaan –dport dan –sport (source port atau port tujuan) merupakan perluasan
dari penggunaan parameter-p tcp.
Contoh 2
# iptables -A OUTPUT -p tcp –dport telnet -i eth1 -j DROP
Perintah diatas akan menambah aturan ke dalam chain OUTPUT,
dimana semua paket yang menggunakan protokol tcp, memiliki port tujuan telnet
dan keluar melalui peralatan eth1 akan di-DROP
Contoh 3
# iptables -A INPUT -i eth0 -p tcp –dport ! 80 -j DROP
Aturan diatas berarti semua paket yang datang melalui eth0,
menggunakan protokol tcp, dengan alamat tujuan selain port 80 akan di-DROP.
Untuk mengetahui nama-nama port beserta nomornya anda dapat melihat file /etc/services.