1. Persiapan
2. Pendahuluan
2. Paket masuk ke interface jaringan, contoh eth0.
3. Paket masuk ke chain PREROUTING pada table Mangle. Chain ini berfungsi untuk me-mangle (menghaluskan) paket, seperti merubah TOS, TTL dan lain-lain.
4. Paket masuk ke chain PREROUTING pada tabel nat. Chain ini berfungsi utamanya untuk melakukan DNAT (Destination Network Address Translation).
5. Paket mengalami keputusan routing, apakah akan diproses oleh host lokal atau diteruskan ke host lain.
6. Paket masuk ke chain FORWARD pada tabel filter. Disinlah proses pemfilteran yang utama terjadi.
7. Paket masuk ke chain POSTROUTING pada tabel nat. Chain ini berfungsi utamanya untuk melakukan SNAT (Source Network Address Translation).
8. Paket keluar menuju interface jaringan, contoh eth1.
9. Paket kembali berada pada jaringan fisik, contoh LAN.
2. Paket masuk ke interface jaringan, contoh eth0.
3. Paket masuk ke chain PREROUTING pada tabel mangle.
4. Paket masuk ke chain PREROUTING pada tabel nat.
5. Paket mengalami keputusan routing.
6. Paket masuk ke chain INPUT pada tabel filter untuk mengalami proses penyaringan.
7. Paket akan diterima oleh aplikasi lokal.
2. Paket memasuki chain OUTPUT pada tabel mangle.
3. Paket memasuki chain OUTPUT pada tabel nat.
4. Paket memasuki chain OUTPUT pada tabel filter.
5. Paket mengalami keputusan routing, seperti ke mana paket harus pergi dan melalui interface mana.
6. Paket masuk ke chain POSTROUTING pada tabel NAT.
7. Paket masuk ke interface jaringan, contoh eth0.
8. Paket berada pada jaringan fisik, contoh internet.
3. Sintaks IPTables
iptables [-t table] command [match] [target/jump]
- NAT : Secara umum digunakan untuk melakukan Network Address Translation. NAT adalah penggantian field alamat asal atau alamat tujuan dari sebuah paket.
- MANGLE : Digunakan untuk melakukan penghalusan (mangle) paket, seperti TTL, TOS dan MARK.
- FILTER : Secara umum, inilah pemfilteran paket yang sesungguhnya.. Di sini bisa dintukan apakah paket akan di-DROP, LOG, ACCEPT atau REJECT
Command |
Keterangan
|
-A
--append
|
Perintah ini menambahkan aturan pada akhir chain.
Aturan akan ditambahkan di akhir baris pada chain yang bersangkutan, sehingga
akan dieksekusi terakhir
|
-D
--delete
|
Perintah
ini menghapus suatu aturan pada chain. Dilakukan dengan cara menyebutkan
secara lengkap perintah yang ingin dihapus atau dengan menyebutkan nomor
baris dimana perintah akan dihapus.
|
-R
--replace
|
Penggunaannya sama seperti --delete, tetapi command
ini menggantinya dengan entry yang baru.
|
-I
--insert
|
Memasukkan aturan pada suatu baris di chain. Aturan akan dimasukkan pada
baris yang disebutkan, dan aturan awal yang menempati baris tersebut akan
digeser ke bawah. Demikian pula
baris-baris selanjutnya.
|
-L
--list
|
Perintah ini menampilkan semua aturan pada sebuah tabel. Apabila tabel tidak
disebutkan, maka seluruh aturan pada semua tabel akan ditampilkan, walaupun
tidak ada aturan sama sekali pada sebuah 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 di-flush.
|
-N
--new-chain
|
Perintah
tersebut akan membuat chain baru.
|
-X
--delete-chain
|
Perintah ini akan menghapus chain yang disebutkan. Agar perintah di atas
berhasil, tidak boleh ada aturan lain yang mengacu kepada chain tersebut.
|
-P
--policy
|
Perintah ini membuat kebijakan default pada sebuah chain. Sehingga jika
ada sebuah paket yang tidak memenuhi aturan pada baris-baris yang telah
didefinisikan, maka paket akan diperlakukan sesuai dengan kebijakan default
ini.
|
-E
--rename-chain
|
Perintah ini akan merubah nama suatu chain.
|
Option |
Command Pemakai |
Keterangan
|
-v
--verbose
|
--list
--append
--insert
--delete
--replace
|
Memberikan output yang lebih detail, utamanya digunakan
dengan --list. Jika digunakan dengan
--list, akan menampilkam K (x1.000), M (1.000.000) dan G (1.000.000.000). |
-x
--exact
|
--list
|
Memberikan output yang lebih tepat.
|
-n
--numeric
|
--list
|
Memberikan output yang berbentuk angka. Alamat
IP dan nomor port akan ditampilkan dalam bentuk angka dan bukan hostname
ataupun nama aplikasi/servis.
|
--line-number
|
--list
|
Akan menampilkan nomor dari daftar aturan. Hal
ni akan mempermudah bagi kita untuk melakukan modifikasi aturan, jika
kita mau meyisipkan atau menghapus aturan dengan nomor tertentu.
|
--modprobe
|
All
|
Memerintahkan IPTables untuk memanggil modul tertentu.
Bisa digunakan bersamaan dengan semua command.
|
Match |
Keterangan
|
-p
--protocol
|
Digunakan untuk mengecek tipe protokol tertentu. Contoh protokol yang umum adalah TCP, UDP, ICMP dan ALL. Daftar protokol bisa dilihat pada /etc/protocols.
Tanda inversi juga bisa diberlakukan di sini, misal
kita menghendaki semua protokol kecuali icmp, maka kita bisa menuliskan
--protokol ! icmp yang berarti semua kecuali icmp.
|
-s
--src
--source
|
Kriteria ini digunakan untuk mencocokkan paket berdasarkan alamat IP asal. Alamat di sini bisa berberntuk alamat tunggal seperti 192.168.1.1, atau suatu alamat network menggunakan netmask misal 192.168.1.0/255.255.255.0, atau bisa juga ditulis 192.168.1.0/24 yang artinya semua alamat 192.168.1.x. Kita juga bisa menggunakan inversi. |
-d
--dst
--destination
|
Digunakan untuk mecocokkan paket berdasarkan alamat tujuan. Penggunaannya sama dengan match –src |
-i
--in-interface
|
Match ini berguna untuk mencocokkan paket berdasarkan interface di mana paket datang. Match ini hanya berlaku pada chain INPUT, FORWARD dan PREROUTING |
-o
--out-interface
|
Berfungsi untuk mencocokkan paket berdasarkan interface di mana paket
keluar. Penggunannya sama dengan
|
Match |
Keterangan
|
--sport
--source-port
|
Match ini berguna untuk mecocokkan paket
berdasarkan port asal. Dalam hal ini kia bisa mendefinisikan nomor port
atau nama service-nya. Daftar
nama service dan nomor port yang bersesuaian dapat dilihat di /etc/services.
--sport juga bisa dituliskan untuk range port tertentu. Misalkan
kita ingin mendefinisikan range antara port 22 sampai dengan 80, maka
kita bisa menuliskan --sport 22:80.
Jika bagian salah satu bagian pada range tersebut kita hilangkan maka hal
itu bisa kita artikan dari port 0, jika bagian kiri yang kita hilangkan,
atau 65535 jika bagian kanan yang kita hilangkan. Contohnya --sport
:80 artinya
paket dengan port asal nol sampai dengan 80, atau --sport 1024: artinya paket dengan port
asal 1024 sampai dengan 65535.Match ini juga mengenal inversi.
|
--dport
--destination-port
|
Penggunaan
match ini sama dengan match --source-port.
|
--tcp-flags
|
Digunakan untuk mencocokkan paket berdasarkan TCP flags yang ada pada paket tersebut. Pertama, pengecekan akan mengambil
daftar flag yang akan diperbandingkan,
dan kedua, akan memeriksa paket yang di-set 1, atau on.
Pada kedua list, masing-masing
entry-nya harus dipisahkan oleh koma dan tidak boleh ada spasi antar entry,
kecuali spasi antar kedua list.
Match ini mengenali SYN,ACK,FIN,RST,URG, PSH. Selain itu kita juga menuliskan
ALL dan NONE. Match ini juga bisa
menggunakan inversi.
|
--syn
|
Match ini akan memeriksa apakah flag
SYN di-set dan ACK dan FIN tidak
di-set. Perintah ini sama artinya
jika kita menggunakan match --tcp-flags
SYN,ACK,FIN SYN
Paket dengan match di atas digunakan
untuk melakukan request koneksi
TCP yang baru terhadap server
|
Ada dua macam match untuk UDP:
--sport atau --source-port --dport atau --destination-port
--icmp-type
iptables –A INPUT –m mac –mac-source 00:00:00:00:00:01
iptables –A INPUT –p tcp –m multiport --source-port 22,53,80,110
iptables –A OUTPUT –m owner --uid-owner 500
iptables –A INPUT –m state --state RELATED,ESTABLISHED
iptables –A INPUT –p tcp –j tcp_packets
Target |
Keterangan
|
-j ACCEPT
--jump ACCEPT
|
Ketika
paket cocok dengan daftar match
dan target ini diberlakukan, maka paket tidak akan melalui baris-baris
aturan yang lain dalam chain tersebut atau chain yang lain yang mereferensi
chain tersebut. Akan tetapi paket masih
akan memasuki chain-chain pada tabel yang lain seperti biasa.
|
-j DROP
--jump DROP
|
Target ini men-drop paket dan
menolak untuk memproses lebih jauh. Dalam beberapa kasus mungkin hal ini
kurang baik, karena akan meninggalkan dead
socket antara client dan
server.
Paket yang menerima target DROP benar-benar mati dan target tidak akan mengirim
informasi tambahan dalam bentuk apapun kepada client atau server.
|
-j RETURN
--jump RETURN
|
Target ini akan membuat paket berhenti melintasi aturan-aturan pada chain
dimana paket tersebut menemui target RETURN. Jika chain merupakan subchain dari chain yang lain, maka paket
akan kembali ke superset chain di
atasnya dan masuk ke baris aturan berikutnya. Apabila chain adalah chain utama misalnya INPUT, maka paket akan dikembalikan
kepada kebijakan default dari chain tersebut.
|
-j MIRROR
|
Apabila
kompuuter A menjalankan target seperti contoh di atas, kemudian komputer
B melakukan koneksi http ke komputer A, maka yang akan muncul pada browser
adalah website komputer B itu sendiri. Karena fungsi utama target ini
adalah membalik source address dan
destination address.
Target
ini bekerja pada chain INPUT, FORWARD dan PREROUTING atau chain buatan
yang dipanggil melalui chain tersebut.
|
iptables –A FORWARD –p tcp –j LOG --log-level debug iptables –A INPUT –p tcp –j LOG --log-prefix “INPUT Packets”
iptables –A FORWARD –p tcp –dport 22 –j REJECT --reject-with icmp-host-unreachable
c. SNAT Target
iptables –t nat –A POSTROUTING –o eth0 –j SNAT --to-source 194.236.50.155-194.236.50.160:1024-32000
iptables –t nat –A PREROUTING –p tcp –d 15.45.23.67 --dport 80 –j DNAT --to-destination 192.168.0.2
iptables –t nat –A POSTROUTING –o ppp0 –j MASQUERADE
iptables –t nat –A PREROUTING –i eth1 –p tcp --dport 80 –j REDIRECT --to-port 3128










