Академический Документы
Профессиональный Документы
Культура Документы
I. Pendahuluan
Firewall adalah sebuah bagian dari sistem komputer atau jaringan yang
didesain untuk memblok atau mengijinkan sebuah jaringan lain untuk
mengakses jaringan kita. Firewall bisa berbentuk hardware atau software
atau pun kombinasi dari keduanya. Firewall digunakan untuk melindungi
jaringan kita dari jaringan-jaringan yang berpotensi menimbulkan bahaya ke dalam sistem kita. Seluruh
pesan yang masuk atau meninggalkan jaringan kita melalui firewall akan dicek setiap pesan dan memblok
setiap pesan yang tidak memenuhi kriteria yang telah kita tetapkan di dalam firewall. Gambar dibawah
merupakan ilustrasi tentang bagaimana firewall bekerja.
Firewall merupakan perangkat jaringan yang berada di dalam kategori perangkat Layer 3 (Network layer)
dan Layer 4 (Transport layer) dari protocol 7 OSI layer. Seperti diketahui, layer 3 adalah layer yang
mengurus masalah pengalamatan IP, dan layer 4 adalah menangani permasalahan port-port komunikasi
(TCP/UDP). Pada kebanyakan firewall, filtering belum bisa dilakukan pada level data link layer atau layer 2
pada 7 OSI layer. Jadi dengan demikian, sistem pengalamatan MAC dan frame-frame data belum bisa difilter.
Maka dari itu, kebanyakan firewall pada umumnya melakukan filtering dan pembatasan berdasarkan pada
alamat IP dan nomor port komunikasi yang ingin dituju atau diterimanya.
Firewall yang sederhana biasanya tidak memiliki kemampuan melakukan filtering terhadap paket
berdasarkan isi dari paket tersebut. Sebagai contoh, firewall tidak memiliki kemampuan melakukan filtering
terhadap e-mail bervirus yang kita download atau terhadap halaman web yang tidak pantas untuk dibuka.
Yang bisa dilakukan firewall adalah melakukan blokir terhadap alamat IP dari mail server yang mengirimkan
virus atau alamat halaman web yang dilarang untuk dibuka. Dengan kata lain, firewall merupakan sistem
pertahanan yang paling depan untuk jaringan Anda.
II. Iptables
Di artikel ini akan dijelaskan tentang iptables, sebuah aplikasi firewall terbaik yang biasa digunakan oleh para
administrator linux. Iptables merupakan aplikasi yang dibuat oleh proyek the netfilter.org. Sebelum membuat
iptables yang berjalan mulai dari linux kernel 2.4.x sampai sekarang, proyek tersebut sudah membuat
aplikasi ipchains untuk kernel 2.2.x dan aplikasi ipfwadm untuk kernel 2.0.x. Saat ini, banyak distro-distro
besar sudah memaketkan firewall di dalam distro mereka sehingga memudahkan kita untuk menginstal
iptables ke dalam sistem kita. Pada tutorial kali ini kita akan menggunakan distro Centos 5.4. Tutorial
iptables pada artikel ini hanya menjelaskan tentang dasar-dasar iptables saja dan aplikasi iptables pada
jaringan lokal saja.
Sebelum melangkah lebih lanjut, pastikan firewall di sistem kita di enable yaitu dengan cara ketik setup lalu
pilih Firewall configuration. Setelah itu, pada bagian Security Level beri tanda bintang pada item
Enabled lalu pilih tombol OK.
1. Table
IPTables memiliki beberapa buah tabel yaitu NAT, MANGLE, dan FILTER. Penjelasannya adalah:
a. Table Mangle: tabel yang bertanggung jawab untuk melakukan penghalusan (mangle) paket seperti
merubah quality of service (QOS), TTL, dan MARK di header TCP. Biasanya tabel ini jarang digunakan di
lingkungan SOHO.
b. Table Filter: yaitu tabel yang bertanggung jawab untuk pemfilteran paket. Tabel ini mempunyai 3 rantai
(chain) yaitu:
1. Rantai Forward yaitu rantai yang memfilter paket-paket yang akan ke server yang dilindungi oleh
firewall. Rantai ini digunakan ketika paket-paket datang dari IP Publik dan bukan dari IP lokal.
2. Rantai Input: yaitu rantai yang memfilter paket-paket yang ditujukan ke firewall.
3. Rantai Output: yaitu rantai yang memfilter paket-paket yang berasal dari firewall.
c. Tabel NAT: yaitu rantai yang bertanggung jawab untuk melakukan Network Address Translation (NAT).
NAT yaitu mengganti field asal atau alamat tujuan dari sebuah paket. Pada tabel ini terdapat 2 rantai, yaitu:
1. Rantai Pre-Routing: Merubah paket-paket NAT dimana alamat tujuan dari paket-paket tersebut terjadi
perubahan. Biasanya dikenal dengan destination NAT atau DNAT.
2. Rantai Post-Routing: Merubah paket-paket NAT dimana alamat sumber dari paket-paket tersebut terjadi
perubahan. Biasanya dikenal dengan source NAT atau SNAT.
1.
Jalannya sebuah paket melalui gambar diatas bisa dicontohkan sebagai berikut:
1.Perjalanan Paket yang diforward ke host yang lain
a. Paket berada pada jaringan fisik (Network) dan masuk ke interface jaringan
b. Paket masuk ke rantai PREROUTING pada tabel MANGLE dan tabel NAT
c. Paket mengalami Routing apakah akan diproses oleh host lokal atau diteruskan ke host lain
d. Paket masuk ke rantai FORWARD pada tabel MANGLE dan tabel FILTER
e. Paket masuk ke rantai POSTROUTING pada tabel MANGLE dan tabel NAT
f. Paket keluar menuju ke interface jaringan
g. Paket kembali pada jaringan fisik (Network)
2. command
command pada baris perintah iptables yang akan memberitahu apa yang harus dilakukan terhadap lanjutan
sintaks perintah. Berikut adalah beberapa command pada iptables:
command Deskripsi
Menambah aturan pada akhir rantai sehingga akan dieksekusi terakhir
-A (--append)
Menghapus sebuah aturan pada rantai yang dilakukan dengan cara menyebutkan secara
lengkap perintah yang ingin dihapus atau dengan menyebutkan nomor baris dimana
-D (--delete) perintah akan dihapus
Memasukkan aturan pada sebuah baris rantai. Berbeda dengan perintah append,
perintah insert akan menempati baris yang dimaksud dan aturan awal yang menempati
-I (--insert) baris tersebut akan digeser ke bawah
Menampilkan semua aturan pada sebuah tabel. Perintah ini akan dikombinasikan
-L (--list) dengan opsi -v (verbose), -n (numeric), -x (exact), dan --line-number
Mengecek tipe protokol tertentu. Tanda inverse(!) berarti kecuali. Misalnya protocol ! tcp
-p (--protocol) berarti kecuali tcp
Mencocokkan paket berdasarkan interface dimana paket datang dan berlaku pada rantai
-i (--in-interface) INPUT, FORWARD, dan PREROUTING
Mencocokkan paket berdasarkan interface dimana paket keluar dan berlaku pada rantai
-o (--out-interface) OUTPUT, FORWARD, dan POSTROUTING
Mencocokkan paket berdasarkan port asal(bisa dilihat di /etc/services). Perintah ini bisa
digunakan untuk range port tertentu. Misal range antara port 22 sampai 80 bisa ditulis
--sport (--source- --sport 22-80. Jika --sport :80 berarti paket dengan port 0-80. Jika --sport 1024:
port) berarti paket dengan port asal 1024-65535
--dport (-- Mencocokkan paket berdasarkan port tujuan. Penggunaannya sama dengan --sport
destination-port)
Memeriksa apakah flag SYN di set dan ACK dan FIN tidak di set. Perintah ini sama
dengan kita menggunakan match --tcp-flags SYN,ACK,FIN SYN. Paket dengan perintah
--syn tersebut digunakan untuk melakukan request koneksi TCP yang baru terhadap server
Memang banyak sekali dan bisa menjadi sangat sangat kompleks teknik konfigurasi iptables. Pada
kesempatan ini kita hanya mencoba melakukan konfigurasi firewall / iptables yang sederhana saja.
V. Connection Tracking
iptables mengandung sebuah modul yang mengijinkan para administrator untuk memeriksa dan membatasi
service-service yang tersedia pada sebuah jaringan internal menggunakan sebuah metode yang disebut
connection tracking. Fitur ini merupakan fitur baru di dalam firewall yang ditambahkan sejak kernel 2.4.x.
Kemampuan dari connection tracking adalah untuk menyimpan dan menjaga informasi koneksi seperti
koneksi baru atau koneksi yang sudah ada yang disertai dengan jenis protokol, alamat IP asal dan alamat IP
tujuan. Dengan menggunakan fitur ini, para administrator dapat menolak atau mengijinkan berbagai macam
koneksi. Connection tracking mempunyai beberapa keadaan:
- NEW --> Sebuah klien mereques koneksi melalui firewall. Maksudnya server1 menghubungi server2
dengan mengirimkan paket SYN (Synchronize)
- RELATED --> Sebuah koneksi yang mereques sebuah reques baru tetapi masih merupakan bagian dari
koneksi yang sudah ada. Maksudnya server2 menerima paket SYN dari server 1 dan kemudian merespon
dengan sebuah paket SYN-ACK (Synchronize-Acknowledgment)
- ESTABLISHED --> Sebuah koneksi yang merupakan bagian dari koneksi yang sudah ada. Maksudnya
server 1 menerima paket SYN-ACK dan kemudian merespon dengan paket ACK (Acknowledgment).
- INVALID --> Sebuah keadaan dimana tidak ada keadaan seperti 3 keadaan di atas
kita harus menggunakan keadaan koneksi RELATED pada firewall jika kita mengijinkan akses ftp secara pasif.
Fungsi lain dari connection tracking yaitu ketika kita sudah mendefinisikan sebuah rule di chain tertentu,
maka trafik network yang terkait dengan rule tersebut tidak perlu disebutkan lagi. Misalnya kita ingin
menolak ssh dari sebuah IP, maka kita cukup mendefinisikan rule tersebut di chain INPUT saja, yang di
outputnya tidak perlu lagi. Caranya adalah:
Di bawah ini adalah contoh iptables untuk mengijinkan service ssh dengan IP 132.456.78.9 masuk dan
keluar serta hanya mengijinkan koneksi baru dan establlished untuk service ssh tersebut.
# iptables -A INPUT -p tcp -s 0/0 --sport 513:65535 -d 64.67.33.76 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
# iptables -A OUTPUT -p tcp -s 132.456.78.9--sport 22 -d 0/0 --dport 513:65535 -m state --state ESTABLISHED -j ACCEPT
VI. Contoh-Contoh
Ada dua pendekatan di dalam Iptables yaitu pendekatan positif dan pendekatan negatif. Pendekatan positif
yaitu dimana seluruh port ditutup sedangkan pendekatan negatif yaitu dimana seluruh port dibuka. Untuk
melihat apakah sistem iptables kita menggunakan pendekatan positif atau negatif (namun, pada umumnya
linux secara default menggunakan pendekatan negatif) ketikkan iptables -L dan lihat kata setelah kata
POLICY. Jika ada kata ACCEPT maka berarti pendekatan yang digunakan adalah negatif. Di tutorial ini kita
akan menggunakan pendekatan negatif. Berikut adalah contoh-contohnya:
Perintah di atas digunakan untuk memblok paket dari IP 192.168.0.149. Ada 2 opsi yang digunakan
sebenarnya yaitu DROP dan REJECT. Perbedaan dari keduanya adalah kalau REJECT, perintah ini akan
memblok paket namun akan memberitahukan bahwa paket tersebut ditolak. Sedangkan kalau DROP,
perintah ini akan memblok paket namun tidak diberitahu apakah paket tersebut ditolak atau tidak.
# iptables -I INPUT 10 -s 192.168.0.149 -j REJECT
Perintah di atas hampir sama dengan perintah sebelumnya hanya saja perintah ini memasukkan perintah ini
pada baris ke 10 dari rantai INPUT. Sedangkan pada perintah sebelumnya perintah iptables akan dimasukkan
ke baris paling atas ari rantai INPUT.
# iptables -A INPUT -s 192.168.0.149 -j REJECT
Perintah di atas juga sama yaitu menambahkan perintah iptables ke dalam rantai INPUT. Hanya saja
perbedaan dengan perintah-perintah sebelumnya, perintah ini memasukkan perintah iptables ke bagian
paling bawah dari rantai INPUT.
2. Menghapus iptables
# iptables -D INPUT 3
3. Menutup Port
# iptables -A INPUT -p tcp --dport 22 -j REJECT
Perintah di atas digunakan untuk melihat daftar (list) iptables dan disertai dengan nomor baris
# iptables -L -v --line-number
Perintah di atas digunakan untuk melihat daftar (list) iptables dan disertai dengan nomor baris serta dengan
mode verbose
# iptables -L -v --line-number -t nat
Perintah di atas digunakan untuk melihat daftar (list) iptables dan disertai dengan nomor baris dengan mode
verbose serta menampilkan tabel NAT
5. Mengubah Policy
# iptables -P INPUT DROP
6. Lain-Lain
# iptables -A INPUT -m mac -mac-source 00-14-85-47-85-E5
7. Menggunakan Log
Untuk menggunakan log di dalam iptables, maka kita harus menambahkan skrip di file file syslog.conf pada
folder /etc. Di dalam skrip tersebut, tambahkan skrip sebagai berikut:
kern.* /var/log/firewall.log
Setelah itu, simpan file tersebut dan restart syslog dengan cara:
# service syslog restart
Dengan demikian, segala hal yang terjadi pada iptables akan dicatat di /var/log/firewall.log
Penentuan posisi log juga berpengaruh terhadap pencatatan log itu sendiri. Sebaiknya posisi log ditempatkan
di baris paling atas karena akan mencatat segala yang terjadi pada paket-paket sebelum paket-paket
tersebut diperlakukan sesuai dengan rule yang ada di dalam iptables. Untuk lebih jelasnya, perhatikan
contoh berikut. Kita akan membuat server linux di vmware dengan 2 ethernet. eth0 dengan IP
192.168.0.248 dan eth1 dengan IP 192.168.2.2. Lalu di iptables kita buat aturan sebagai berikut:
# iptables -P INPUT DROP
# iptables -I INPUT -s 192.168.0.1 -d 192.168.0.248 -j ACCEPT
# iptables -A INPUT -p ALL -m state --state NEW -j LOG --log-prefix "IPTABLES: (INPUT-REJECT)"
# iptables -A INPUT -i eth1 -j REJECT
Perintah pertama dapat dijelaskan bahwa policy default untuk rantai INPUT adalah DROP yang berarti akan
memblok seluruh inputan. Perintah iptables kedua akan menerima inputan dari IP 192.168.0.1 dengan
tujuan IP 192.168.0.248. Perintah iptables ketiga akan mencatat seluruh inputan yang mencoba masuk ke
server selain yang sudah ditentukan. Perintah iptables keempat akan memblok seluruh inputan yang menuju
eth1 atau yang ber- IP 192.168.2.2. Sekarang coba ping 192.168.0.248 dari komputer yang ber-IP
192.168.0.1, dan akan terlihat hasil sebagai berikut:
Dan kalau kita lihat di log firewall di /var/log/firewall akan terlihat tidak ada aktivitas apa-apa di dalam file
tersebut. Tetapi pada saat kita menge-ping 192.168.2.2, maka akan terlihat gambar seperti di bawah ini:
Itu berarti IP tersebut di blok. Sekarang lihat di log firewall, seharusnya akan terlihat gambar berikut ini:
Contoh yang lain lagi misalnya kita mempunyai IP publik yang ada di eth1 dan kita ingin memblok seluruh IP
publik yang ada untuk mengakses IP publik kita, namun kita juga ingin mengetahui IP-IP mana saja yang
mengakses IP Publik kita maka sintaksnya seperti berikut:
# iptables -I INPUT -p All -i eth1 -s ! 192.168.0.0/24 -m state --state NEW -j LOG --log-prefix "IPTABLES: (INPUT-REJECT) "
# iptables -A INPUT -i eth1 -s ! 192.168.0.0/24 -j REJECT
Sintaks di atas dapat dijelaskan bahwa seluruh IP akan ditolak namun hanya IP-IP publik saja yang akan di
catat dalam log.
8. Membackup dan merestore iptables
Jika kita sudah mengatur konfigurasi iptables, maka sebaiknya kita langsung menyimpan iptables tersebut.
Karena jika tidak, konfigurasi iptables kita akan hilang jika server kita restart atau kita menggunakan
perintah restart iptables dan kita harus menyusunnya kembali. Berikut adalah langkah-langkah untuk
menyimpan iptables:
# service iptables save
Maka perintah-perintah iptables akan disimpan di file iptables pada folder /etc/sysconfig. Jika misalnya kita
sudah menyimpan iptables yang sudah kita konfigurasi sebelumnya, maka jika server kita restart atau
iptables kita restart maka iptables kita bisa terestore secara otomatis. Untuk merestore iptables yang sudah
kita simpan sebelumnya, maka ketikkan perintah:
# service iptables restart
Iptables sendiri merupakan tools yang sangat kompleks dan memiliki banyak kemampuan. Pada intinya,
sesuaikan saja kebutuhan yang ingin kita terapkan dalam jaringan kita, kemudian gunakan option IPtables
yang sesuai dengan kebutuhan kita