IPTABLES
(IPCHAINS)
IPTables
merupakan aplikasi untuk administrasi filtering paket dan Network Address
Translation (NAT) pada IPv4. Gambaran umum, iptables digunakan untuk
konfigurasi, merawat dan memeriksa rules tables (table aturan) tentang filter
paket IP yang terdapat di kernel linux.
IPTables memiliki 4 tabel aturan yaitu filter, nat,
mangle dan raw. Yang akan saya bahas adalah aturan “filter” karena ini yang
seringkali digunakan dalam pengaturan jaringan. Kita sudah tahu bahwa pada
table terdapat chains (rantai) yang berisi rules / aturan. Namun perlu
diketahui tiap table memiliki chains yang berbeda-beda. Chains pada tables
“filter” dari 3 fungsi yaitu INPUT, FORWARD dan OUTPUT. INPUT untuk paket yang
disiapkan untuk soket lokal atau komputer kita sendiri. FORWARD untuk paket
yang diarahkan / routing ke box dan OUTPUT untuk paket yang di generate /
dibuat sendiri. Cara gampangnya untuk memahami, chains INPUT berguna untuk
mengatasi paket data yang masuk. FORWARD berguna untuk mengalihkan paket yang
datang dan OUTPUT berguna untuk menghasilkan paket data yang akan diteruskan
nantinya.
- Contoh
kegunaan iptables:
komputer A, B dan C mengirim paket
data kepada komputer D yang sudah dilengkapi iptables. Pada konfigurasi
iptables dibuat pernyataan bahwa hanya paket yang memiliki huruf c yang boleh
diterima komputer D, selain itu ditolak semua. Dan hasilnya, hanya komputer C
saja yang bisa mengirimkan paket dan diterima komputer D. Tentunya dengan
gambaran sederhana ini kita bisa membayangkan kegunaan iptables lebih detail. Misalkan
bila ada komputer asing yang mengirimkan paket data untuk keperluan scanning
atau hacking maka paket tersebut langsung ditolak oleh komputer kita.
Setelah kita mengetahui ketiga
fungsi chains tersebut maka kita perlu mengetahui command / perintah dalam
konfigurasi iptables. Perlu diketahui bahwa dalam satu chain terdiri dari
beberapa rule / aturan. Tiap-tiap aturan tersebut memiliki urutan prioritas
tersendiri. Bila ada paket datang maka akan disesuaikan dengan chains. Setelah
dikelompokkan maka paket tersebut diseleksi oleh rule yang terdapat pada chain.
Bila ada paket datang yang tidak cocok dengan aturan pertama maka akan
diteruskan menuju seleksi aturan kedua dan selanjutnya hingga aturan terakhir.
Berikut command-command yang umum digunakan :
-A
yaitu append. Memiliki struktur -A [chain] [aturan]. Berfungsi untuk menetapkan
aturan ke dalam chains. Contoh : iptables -A INPUT -s 191.167.2.4
-D
yaitu delete aturan. Memiliki struktur -D [chain] [aturan] atau -D [chain]
[nomor urutan aturan]. Berfungsi untuk menghapus aturan dari chains atau
menghapus aturan berdasarkan urutan list didalam chains. Contoh : iptables -D
INPUT 1 ( menghapus aturan pertama dalam chain INPUT )
-I
yaitu insert. Memiliki struktur -I [chain] [nomor urutan aturan] [aturan].
Berfungsi untuk memasukan aturan baru kedalam chain. Bila nomor urutan aturan
adalah 1 berarti aturan tersebut dimasukkan ke prioritas utama dalam chain.
Contoh : iptables -I OUTPUT 2 -s 191.167.2.4
-R
yaitu replace. Memiliki struktur -R [chain] [nomor urutan aturan] [aturan
baru]. Berfungsi untuk menimpa / me-replace aturan lama dengan aturan baru
dalam chain. Contoh : iptables -I OUTPUT 2 -s 191.167.2.4
( menimpa rule kedua
dengan rule baru -s 191.167.2.4
-L
yaitu list. Memiliki struktur -L [chain]. Berfungsi untuk menampilkan daftar
aturan-aturan didalam chain. Bila chain tidak disertakan maka akan muncul
aturan dalam semua chain. Contoh : iptables -L INPUT
-F
yaitu flush. Memiliki struktur -F [chain]. Berfungsi untuk menghilangkan semua
aturan pada chain. Contoh: iptables -F FORWARD ( menghapus semua aturan didalam
chain FORWARD )
-N
yaitu new. Memiliki struktur -N [chain]. Berfungsi untuk membuat chain baru.
Contoh: iptables -N GET
-X
yaitu delete chain. Memiliki struktur -X [chain]. Berfungsi untuk menghapus
chain dan ini berbeda dengan -D yang berguna untuk menghapus rule saja. Untuk
menghapus chain, dipastikan terlebih dahulu bahwa tidak ada aturan-aturan
didalam chain tersebut. Dapat digunakan flush untuk menghapus aturan-aturan di
dalam chains, Contoh: iptables -X GET
-E
yaitu rename chain. Memiliki struktur -E [chain lama] [chain baru]. Berfungsi
untuk me-rename / mengganti nama chain yang ada didalam iptables. Contoh:
iptables -E GET PUT
Setelah kita mengetahui
perintah-perintah pada iptables, yang kira perlu pahami berikutnya adalah
parameter. Kita melihat contoh perintah “iptables -I OUTPUT 2 -s 191.167.2.4″.
Disini, -s merupakan parameter. Kegunaan parameter adalah untuk
mengidentifikasikan spesifikasi aturan dan digunakan untuk mengikuti perintah
umum seperti add, delete, insert, replace dan append.
-p
yaitu menunjukkan
protokol. Untuk mengindentifikasikan protokol dalam rule seperti tcp, udp,
icmp,dst diperlukan parameter ini.Contoh: iptables -A INPUT -p tcp
-m
yaitu match option. Mirip dengan -p tetapi perbedaannya adalah modul yang
digunakan. Bila pada -p menggunakan modul yang bersifat spesifik tetapi berbeda
dengan -m. Dengan menggunakan parameter ini, kita bebas menentukan nama module
yang dipakai dan meng-variasikannya dalam perintah selanjutnya. Contoh :
iptables -A INPUT -s 192.168.0.0/16 -m comment –comment “IP yang di-blok” (
berarti modul comment berisi perintah –comment “IP yang di-blok” )
-s
yaitu source alamat hostname / ip. Contoh : iptables -A INPUT -s 191.167.2.4
-d
yaitu destination / tujuan dari alamat ip. Contoh: iptables -A INPUT -d
191.167.0.2
-j
yaitu jump. Berfungsi untuk memberikan keputusan setelah paket data cocok
dengan aturan. Biasanya terdapat di akhir perintah dan diikuti argumen
perintah. Contoh : iptables -A INPUT -s 191.167.0.2 -j DROP.
-i
yaitu in-interface alias nama interface yang menerima kiriman paket ( terbatas
pada chain INPUT, FORWARD dan PREROUTING saja ). Contoh: iptables -A INPUT -i
eth0 -s 191.167.0.2
-o
yaitu out-interface alias nama interface yang akan mengirim paket keluar
(terbatas pada chain FORWARD, OUTPUT dan POSTROUTING). Contoh : iptables -A
OUTPUT -o eth1 -s 191.167.0.2
-c
yaitu counter untuk menghitung paket-paket yang lewat dari sebuah aturan.
Penulisan parameter ditulis sebelum command semacam APPEND,INSERT,REPLACE,dst.
Contoh : iptables -c -A INPUT -s 191.167.0.2
-n
yaitu numeric. Parameter ini akan menampilkan output numeric seperti
hostname,ip, port, nama network,dst. Contoh: iptables -L -n
-v
yaitu verbose yang berarti menampilkan informasi secara keseluruhan alias dalam
bahasa indonesia terjemahannya “bertele-tele”. Contoh: iptables -L -n -v
Sekarang kita sudah
mendapatkan gambaran tentang penggunaan berbagai command dalam iptables. Lalu
apa yang kurang? Argumen! argumen dibutuhkan untuk menentukan tindakan apa yang
akan dilakukan setelah paket tersebut cocok dengan aturan pada iptables
Paket-paket
yang masuk akan di periksa, apakah rusak, salah informasi atau tidak, kemudian
di berika ke chain INPUT
Keputusan yang diambil untuk suatu paket dapat
berupa :
1. ACCEPT
Menerima paket dan diproses lebih lanjut oleh kernel
2. DROP
Menolak paket tanpa pemberitahuan terlebih dahulu
3. REJECT
Mengembalikan paket ke asalnya dngan pesan kesalahan
ICMP
4. LOG
Melakukan log (pencatatan) terhadap paket yang
bersesuaian
5. RETURN
Untuk chain
user-defined akan dikembalikan ke chain yang memanggil, sedangkan untuk cha INPUT, OUTPUT dan FORWARD akan dijalankan
kebijakan default.
6. Mengirim ke chain user-defined
Perintah-perintah yang digunakan:
1. Setting IP address kelas A
ifconfig eth0 50.50.50.1 netmask 255.0.0.0
2. Setting gateway 50.50.50.21
route add default gw 50.50.50.21
3. Koneksikan jaringan
ping ip_address_tujuan
4. Mengembalikan semua aturan pada posisi
default
iptables –F
5. Melihat semua aturan yang ada
iptables –L
6. Memblok pengiriman data keluar
iptables –A OUTPUT – d ip_user_tujuan -j DROP
7. Koneksikan kembali ke user lain
8. Normalkan kembali semua aturan dan lihat
semua aturan yang ada.
9.
Buat direktori dengan nama masing-masing di user account BSI_NIM
kemudian buat file dengan nama latihan, isi file dengan : BELAJAR FIREWALL
10. Kirim direktori nama
masing-masing yang ada di user BSI_NIM
ke user lain.
scp –r
/home/bsi_nim/direktori ip_user_tujuan
:/home/bsi_nim_user_lain
11.
Buat file dengan nama linux di direktori nama masing-masing yang ada di user
BSI_NIM
12.
Menolak kiriman data dari luar iptables –A INPUT – s ip_user_tujuan -j REJECT
13.
Kirim kembali file linux ke direktori nama masing-masing user BSI_NIM ip_user_tujuan
scp
/home/bsi_nim/direktori/nama_file
ip_user_tujuan:/home/bsi_nim/direktori.