PTables
adalah firewall yang biasa dipakai pada Sistem Operasi GNU/Linux.
IPTables memiliki tiga jenis daftar aturan di dalam tabel penyaringan
yang bernama rantai firewall (chain), yakni INPUT, FORWARD dan OUTPUT.
Berikut merupakan syntax IPTables:
iptables [-t table_name] command [match] [target/jump]
Penjelasan tentang tiap-tiap komponen adalah sebagai berikut:
A. Table
Fungsi masing-masing tabel pada IPTables:
1.
NAT : NAT mentranslasikan (menggantikan) alamat asal atau tujuan dari
sebuah paket. Contoh apabila satu buah PC Client yang beralamat IP
private memberikan request agar terkoneksi ke internet dari gateway dan
di terima oleh PC Router, sedangkan hanya PC Router yang memiliki alamat
IP public, maka agar client dapat terkoneksi ke internet, IP private
tadi ditranslasikan (digantkan) requestnya oleh PC Router dengan IP
public miliknya, kemudian hasil request disambungkan kembali ke PC
Client, sehingga PC Client dapat mengakses internet.
2. MANGLE : Melakukan penghalusan (mangle) paket, seperti TTL, TOS dan MARK.
3. FILTER : Menentukan paket yang akan di-DROP, LOG, ACCEPT atau REJECT
B. Command
Command
menambahkan yang harus dilakukan di baris syntax. Biasanya ada
penambahan atau penghapusan sesuatu dari tabel dan lain lain.
Command
|
Keterangan
|
-A
–append
|
Perintah
ini menambahkan aturan di akhir chain. Aturan ditambahkan di akhir
baris chain yang bersangkutan, sehingga dieksekusi terakhir kali
|
-D
–delete
|
Menghapus
satu aturan chain. Caranya dengan menyebutkan perintah mana yang
ingin dihapus secara lengkap atau menyebutkan nomor baris perintah
yang akan dihapus.
|
-R
–replace
|
Menggantikan aturan chain dengan aturan (entry) baru..
|
-I
–insert
|
Memasukkan
aturan pada suatu baris di chain. Aturan akan dimasukkan ke baris
yang ditulis, dan aturan yang tadinya ada di baris tersebut akan
bergeser ke bawah bersama dengan baris-baris selanjutnya
|
-L
–list
|
Menampilkan
semua aturan pada tabel. Jika tabel tidak disebutkan, seluruh aturan
di semua tabel akan ditampilkan, walaupun tidak ada aturan sama sekali
pada tabel. Command ini bisa dikombinasikan dengan option –v
(verbose), -n (numeric) dan –x (exact).
|
-F
–flush
|
Perintah ini mengosongkan aturan pada sebuah chain. Apabila chain tidak disebutkan, maka semua chain akan hilang.
|
-N
–new-chain
|
Membuat chain baru.
|
-X
–delete-chain
|
Menghapus chain yang dituliskan. Notabene, tidak boleh ada aturan lain yang bersangkutan dengan chain tersebut.
|
-P
–policy
|
Membuat
kebijakan default pada chain. Jika ada paket yang tidak memenuhi
aturan pada baris yang diinginkan, paket akan diperlakukan sesuai
dengan kebijakan default ini.
|
-E
–rename-chain
|
Mengubah nama chain.
|
|
|
C. Option
Option dikombinasikan dengan command tertentu.
Option
|
Command
|
Keterangan
|
-v
–verbose
|
–list
–append
–insert
–delete
–replace
|
Memberi output secara detail. Jika digunakan dengan
–list, akan menampilkam K (x1.000),
M (1.000.000) dan G (1.000.000.000).
|
-x
–exact
|
–list
|
Memberikan output secara tepat.
|
-n
–numeric
|
–list
|
Memberikan
output berbentuk angka. IP Address dan port ditampilkan dalam bentuk
angka, bukan hostname ataupun nama servis/repositori.
|
–line-number
|
–list
|
Menampilkan nomor dari daftar aturan.
|
–modprobe
|
All
|
Memerintahkan IPTables memanggil modul tertentu. Dapat digunakan bersama semua command.
|
D. Generic Matches
Generic
Matches adalah pendefinisian kriteria secara umum. Jadi sintaks generic
matches akan sama untuk semua protokol. Setelah protokol didefinisikan,
maka aturan yang lebih spesifik protokol baru didefinisikan. Tiap-tiap
protokol berbeda karakter, sehingga perlu perlakuan yang berbeda.
Match
|
Keterangan
|
-p
–protocol
|
Mengecek
tipe protokol tertentu, seperti TCP, UDP, ICMP dan ALL. Tanda inverse
juga berlaku di sini, misal kita menghendaki semua protokol kecuali
icmp, maka kita cukup tuliskan –protokol ! icmp yang berarti semua
kecuali icmp.
|
-s
–src
–source
|
Menyocokkan
paket berdasar alamat IP asal tunggal seperti 192.168.2.69, atau
alamat network seperti 192.168.2.0/255.255.255.128 dan
192.168.2.0/25. Inversi juga berlaku.
|
-d
–dst
–destination
|
Meyocokkan paket berdasar alamat tujuan. Sama seperti match –src
|
-i
–in-interface
|
Menyocokkan paket berdasar interface source paket dan hanya berlaku pada chain INPUT, FORWARD dan PREROUTING
|
-o
–out-interface
|
Menyocokkan
paket berdasar interface destination paket seperti –in-interface dan
hanya berlaku untuk chain OUTPUT, FORWARD dan POSTROUTING
|
E. Implicit Matches
Implicit
Match merupakan sekumpulan rule yang diload setelah tipe protokol
disebutkan, yaitu TCP matches, UDP matches dan ICMP matches.
a. TCP matches
Match
|
Keterangan
|
–sport
–source-port
|
Meyocokkan
paket berdasar port asal. Kita memutuskan port atau service yang di
definisikan, atau bahkan range port tertentu. Untuk mendefinisikan
range antara port 22 sampai dengan 80, tuliskan –sport 22:80.
Jika
bagian kiri kita hilangkan, paket diartikan dari port 0. Jika bagian
kanan kita hilangkan, paket diartikan dari port 65535. Inverse juga
berlaku.
|
–dport
–destination-port
|
Sama dengan match –source-port.
|
–tcp-flags
|
Menyocokkan paket berdasar TCP flags yang ada pada paket. Match ini bisa menggunakan inversi.
|
–syn
|
Memeriksa
apakah flag SYN di-set dan ACK dan FIN tidak di-set. Seperti
–tcp-flags, SYN, ACK, FIN SYN, dapat digunakan untuk request koneksi
TCP baru ke server
|
b. UDP Matches
Karena
protokol UDP bersifat connectionless, tidak ada flags yang
mendeskripsikan status paket untuk membuka atau menutup koneksi. Paket
UDP juga tidak memerlukan acknowledgement. Sehingga Implicit Match untuk
protokol UDP lebih sedikit daripada TCP.
Ada dua macam match untuk UDP:
–sport atau –source-port
–dport atau –destination-port
c. ICMP Matches
Paket
ICMP mengirimkan pesan kesalahan dan kondisi jaringan lain. Hanya ada
satu implicit match untuk tipe protokol ICMP, yaitu :
–icmp-type
F. Explicit Matches
a. MAC Address
Melakukan penyocokan paket berdasar MAC source address dan hanya berfungsi untuk jaringan yang menggunakan teknologi ethernet.
iptables –A INPUT –m mac –mac-source 00:00:00:00:00:05
b. Multiport Matches
Mendefinisikan
port atau port range lebih dari satu, tspi definisi aturan sama untuk
beberapa port. Kita tidak bisa menggunakan port matching standard dan
multiport matching dalam waktu yang sama.
iptables –A INPUT –p tcp –m multiport –source-port 22,80, 110,1028
c. Owner Matches
Mencocokkan
paket berdasar pemilik paket. Match ini bekerja di chain OUTPUT, tetapi
terdapat kekurangan yaitu beberapa proses tidak memiliki owner (??).
iptables –A OUTPUT –m owner –uid-owner 500
Selain itu bisa juga dengan group ID dengan sintaks –gid-owner.
d. State Matches
Mendefinisikan state apa yang cocok. Ke empat state yang ada yaitu NEW, ESTABLISHED, RELATED dan INVALID.
NEW untuk paket yang memulai koneksi baru.
ESTABLISHED untuk koneksi yang sudah tersambung dan paket sudah bagian dari koneki.
RELATED
untuk paket yang berhubungan dengan koneksi, tapi bukan bagian dari
koneksi. Seperti FTP data transfer yang menyertai koneksi TCP atau UDP.
INVALID adalah paket yang tidak teridentifikasi, bukan bagian dari koneksi.
iptables –A INPUT –m state –state RELATED,ESTABLISHED
7. Target/Jump
Perlakuan
terhadap paket yang memenuhi aturan atau match. Chain yang ada akan
dimasuki paket dengan kriteria. Contohnya ada chain bernama paket_tcp.
Tambahkan aturan, dan direferensi dari chain input.
iptables –A INPUT –p tcp –j paket_tcp
Target
|
Keterangan
|
-j ACCEPT
–jump ACCEPT
|
Memberlakukan paket yang cocok dengan daftar match dan target.
|
-j DROP
–jump DROP
|
Membuang paket dan menolak memproses lebih jauh.
|
-j RETURN
–jump RETURN
|
Mengembalikan
paket ke superset chain di atasnya dan masuk ke baris aturan
berikutnya, jika pada subchain. Tapi jika pada chain utama seperti
INPUT, maka paket dikembalikan kepada kebijakan default.
|
-j MIRROR
|
Membalik source address dan destination address.
Target ini bekerja pada chain INPUT, FORWARD dan PREROUTING atau chain buatan yang melalui chain tersebut.
|
Beberapa target yang lain biasanya memerlukan parameter tambahan:
a. LOG Target
Tingkatan
log yang bisa digunakan dalam option pertama adalah debug, info,
notice, warning, err, crit, alert dan emerg. Option kedua adalah -j LOG
–log-prefix untuk memberikan string yang tertulis pada awal log,
sehingga memudahkan pembacaan log.
iptables –A FORWARD –p tcp –j LOG –log-level debug
iptables –A INPUT –p tcp –j LOG –log-prefix “INPUT Packets”
b. REJECT Target
Memblok
paket dan menolak untuk memproses lebih lanjut paket tersebut. REJECT
akan mengirimkan pesan error ke pengirim paket, tidak seperti DROP.
REJECT bekerja pada chain INPUT, OUTPUT dan FORWARD atau pada chain
tambahan dari chain tersebut.
iptables –A FORWARD –p tcp –dport 80 –j REJECT –reject-with icmp-host-unreachable
Tipe
pesan yang bisa dikirimkan yaitu icmp-net-unreachable,
icmp-host-unreachable, icmp-port-unreachable, icmp-proto-unrachable,
icmp-net-prohibited dan icmp-host-prohibited.
c. SNAT Target
Berguna
untuk melakukan perubahan alamat asal paket (Source Network Address
Translation). Target ini hanya berlaku untuk tabel nat pada chain
POSTROUTING. Jika paket pertama dari satu koneksi mengalami SNAT,
paket-paket berikutnya dalam koneksi juga akan mengalaminya.
iptables –t nat –A POSTROUTING –o eth0 –j SNAT –to-source 192.168.2.69-192.168.2.96:1024-32000
d. DNAT Target
Digunakan
untuk melakukan translasi alamat tujuan (Destination Network Address
Translation) pada header dari paket yang memenuhi aturan match. DNAT
hanya bekerja untuk tabel nat pada chain PREROUTING dan OUTPUT atau
chain buatan yang dipanggil oleh chain tersebut.
iptables –t nat –A PREROUTING –p tcp –d 35.35.33.37 –dport 80 –j DNAT –to-destination 192.168.22.22
e. MASQUERADE Target
Hampir sama dengan SNAT, tetapi tidak perlu option –to-source. Target ini hanya bekerja untuk tabel nat pada chain POSTROUTING.
iptables –t nat –A POSTROUTING –o ppp0 –j MASQUERADE
f. REDIRECT Target
Mengalihkan
paket ke komputer itu sendiri. Mengarahkan paket yang menuju suatu port
tertentu untuk memasuki proxy, berguna untuk membangun transparent
proxy. Misal untuk mengalihkan semua koneksi yang menuju port http untuk
memasuki aplikasi http proxy seperti squid. Hanya bekerja untuk tabel
nat pada chain PREROUTING dan OUTPUT atau pada chain buatan dari chain
tersebut.
iptables –t nat –A PREROUTING –i eth1 –p tcp –dport 80 –j REDIRECT –to-port 8080