Firewall di Linux

Pendahuluan

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.

One thought on “Firewall di Linux

  1. Pingback: Tempatku Menyimpan | Firewall di Linux

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s