IPTABLES
- Apa itu iptables?
iptables
adalah suatu tools dalam sistem operasi linux yang berfungsi sebagai alat untuk
melakukan filter (penyaringan) terhadap (trafic) lalulintas data. Secara
sederhana digambarkan sebagai pengatur lalulintas data. Dengan iptables inilah
kita akan mengatur semua lalulintas dalam komputer kita, baik yang masuk ke
komputer, keluar dari komputer, ataupun traffic yang sekedar melewati komputer
kita.
- Gimana perintahnya?iptables [–t tables] [option] [rule] [target]
Contohnya:
iptables –P FORWARD ACCEPT
- Apa saja yang bisa dilakukan dengan iptables?
Dengan
kemampuan tools iptables ini, kita bisa melakukan banyak hal dengan iptables.
Yang paling penting adalah bahwa dengan iptables ini kita bisa membuat aturan
(rule), untuk arus lalulintas data. Aturan aturan itu dapat mencakup banyak
hal, seperti besar data yang boleh lewat, jenis paket/datagram yang dapat
diterima, mengatur trafic berdasar asal dan tujuan data, forwarding, nat,
redirecting, pengelolaan port, dan firewall.
Perlakuan apa saja yang dialami data oleh iptables?
Perlakuan
yang dialami oleh data/paket data oleh iptables digambarkan melalui tabel.
Macam tabelnya adalah:
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
Bagaimana kita
bisa peroleh informasi tentang iptables tersebut di dalam sistem operasi linux?
Kita bisa peroleh
info tentang iptables, dengan cara mengetikkan:
man
iptables
atau
iptables –help
atau
iptables –help
Perintah man
adalah untuk mendapatkan manual penggunaaan dari iptables ini. Sedangkan help
adalah untuk mendapatkan informasi help dari iptables tersebut.
B.COMMAND
Command dan rule yang dipasang pada iptables (firewall) memiliki ketentuan. Pada dasarnya iptables pada komputer dianggap sebagai TABEL IP sesuai dengan namanya. System hanya akan menjalan rule yang ada pada tabel. Sedangkan rule yang sudah ada pada iptables juga dapat di hapus atau di replace dengan rule lain. Berikut beberapa command untuk penambahan, penghapusan dan operasi sejenisnya yang akan diperlakukan terhadap rule.
Command dan rule yang dipasang pada iptables (firewall) memiliki ketentuan. Pada dasarnya iptables pada komputer dianggap sebagai TABEL IP sesuai dengan namanya. System hanya akan menjalan rule yang ada pada tabel. Sedangkan rule yang sudah ada pada iptables juga dapat di hapus atau di replace dengan rule lain. Berikut beberapa command untuk penambahan, penghapusan dan operasi sejenisnya yang akan diperlakukan terhadap rule.
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.
|
Option terdiri dari command, dan parameter serta opsi tambahan
Option
|
Command
|
Keterangan
|
-v
–verbose
|
–list
–append
–insert
–delete
–replace
|
Memberi output secara detail. Jika digunakan dengan –list, akan
menampilkan 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
|
Menyocokkan 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
|
Menyocokkan 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-po rt
|
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
Selanjutnya
apa itu yang disebut dengan chain?
Chain/rantai digambarkan sebagai jalur aliran data. Chains yang diperlukan untuk iptables ini antara lain:
Chain/rantai digambarkan sebagai jalur aliran data. Chains yang diperlukan untuk iptables ini antara lain:
Chain
berikut Keterangan
FORWARD Route packet akan di FORWARD tanpa di proses lanjut di local
INPUT Route packet masuk ke dalam proses lokal sistem
OUTPUT Route packet keluar dari local sistem
PREROUTING Chain yang digunakan untuk keperluan perlakuan sebelum packet masuk route. Biasanya dipakai untuk proses NAT
POSTROUTING Chain yang digunakan untuk keperluan perlakuan sesudah packet masuk route. Biasanya dipakai untuk proses NAT
FORWARD Route packet akan di FORWARD tanpa di proses lanjut di local
INPUT Route packet masuk ke dalam proses lokal sistem
OUTPUT Route packet keluar dari local sistem
PREROUTING Chain yang digunakan untuk keperluan perlakuan sebelum packet masuk route. Biasanya dipakai untuk proses NAT
POSTROUTING Chain yang digunakan untuk keperluan perlakuan sesudah packet masuk route. Biasanya dipakai untuk proses NAT
Chain PREROUTING
dan POSTROUTING dimaksudkan sebagai jalur data sebelum dan sesudah data
tersebut masuk ke dalam route.
PREROUTING: data sebelum masuk jalur route, akan di kenakan rule
POSTROUTING: data sebelum masuk akan dikenakan route
PREROUTING: data sebelum masuk jalur route, akan di kenakan rule
POSTROUTING: data sebelum masuk akan dikenakan route
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 RETUR
–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
Contoh beberapa
kasus untuk iptables
Misalkan terdapat
sebuah jaringan komputer menggunakan koneksi internet dengan IP ADDRESS publik
222.124.132.91 (eth0)
Server gateway memiliki 3 anak jaringan (jaringan lokal) dengan dibedakan subnet
222.124.132.91 (eth0)
Server gateway memiliki 3 anak jaringan (jaringan lokal) dengan dibedakan subnet
192.168.0.0/24
(eth1)
192.168.1.0/24 (eth2)
192.168.10.0/24 (eth3)
192.168.1.0/24 (eth2)
192.168.10.0/24 (eth3)
Kondisi
dalam jaringan, eth3 tidak diperbolehkan melakukan akses ke internet tetapi
diperbolehkan masuk ke jaringan lokal lainnya melalui protokol http. Sedangkan
eth1 dan eth2 diperbolehkan melakukan akses ke internet. Pada IP ADDRESS
192.168.1.10 terdapat webserver, dan pada IP Address 192.168.1.12 terdapat
koleksi intranet yang akan dipublish ke internet. Disamping itu, koneksi
internet 1 mega tersebut akan di share, untuk semua komputer di eth2 akan
dibatasi pemakaiannya maksimal 10kbps. Berikut contoh sederhana routin
firewallnya
#/bin/bash
#blok semua
address (default), pada dasarnya semua akses di blok
iptables –P INPUT –j DROP
#bersihkan table
iptables –F
iptables –t nat –F
iptables –t mangle -F
#perkecualian dengan syarat tertentu
iptables -A INPUT -d 192.168.1.0/24 -m limit –limit 10/s –limit-burst 20 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -m limit –limit 10/s –limit-burst 20 -j ACCEPT
iptables –t nat –A POSTROUTING –s 192.168.0.0/24 –j MASQUERADE
iptables –t nat –A POSTROUTING –s 192.168.1.0/24 –j MASQUERADE
#forward webserver dan intranet
iptables -t nat -A PREROUTING -i eth0 -p tcp –dport 80 -j DNAT –to 192.168.0.10:80
iptables -t nat -A PREROUTING -i eth0 -p tcp –dport 88 -j DNAT –to 192.168.0.12:80
#redirect ke squid
iptables –t nat –A PREROUTING –s 192.168.10.0/24 -p tcp –dport 80 -j REDIRECT –to-port 3128
iptables –t nat –A PREROUTING –s 192.168.10.1/24 -p tcp –dport 80 -j REDIRECT –to-port 3128
iptables –P INPUT –j DROP
#bersihkan table
iptables –F
iptables –t nat –F
iptables –t mangle -F
#perkecualian dengan syarat tertentu
iptables -A INPUT -d 192.168.1.0/24 -m limit –limit 10/s –limit-burst 20 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -m limit –limit 10/s –limit-burst 20 -j ACCEPT
iptables –t nat –A POSTROUTING –s 192.168.0.0/24 –j MASQUERADE
iptables –t nat –A POSTROUTING –s 192.168.1.0/24 –j MASQUERADE
#forward webserver dan intranet
iptables -t nat -A PREROUTING -i eth0 -p tcp –dport 80 -j DNAT –to 192.168.0.10:80
iptables -t nat -A PREROUTING -i eth0 -p tcp –dport 88 -j DNAT –to 192.168.0.12:80
#redirect ke squid
iptables –t nat –A PREROUTING –s 192.168.10.0/24 -p tcp –dport 80 -j REDIRECT –to-port 3128
iptables –t nat –A PREROUTING –s 192.168.10.1/24 -p tcp –dport 80 -j REDIRECT –to-port 3128
maaf gan ane punya kasus juga nih, tapi ane gak ngerti. mohon di bantu ya.
BalasHapusmisalkan ane punya IP:
IP Address IDS 192.168.1.2 eth0
IP Address Honeyd 192.168.1.6
IP Address Client/Hacker 192.168.1.3
Nah IP Address Client/Hacker 192.168.1.3 ini menyerang IP Address IDS 192.168.1.2 yg udah ane pasang snort.
gimana sih cara belokin serangan IP Address Client/Hacker 192.168.1.3 ini ke IP Address Honeyd 192.168.1.6 menggunakan IPTables?
tolong di jawab gan, ane gak ngerti. makasi
thx ya artikel nya
BalasHapusiptables –t nat –A POSTROUTING –s 192.168.0.0/24 –j MASQUERADE
BalasHapusiptables –t nat –A PREROUTING –s 192.168.10.0/24 -p tcp –dport 80 -j REDIRECT –to-port 3128
gan ane mau tanya apa fungsi dari kode-kode diatas ,,
tolong di jawab ya gan ..
Kurang lengkap mamank
BalasHapusBacod
HapusHe anak mamank
HapusGoblok
BalasHapusApa maksud dari perintah #ip tables-A forward-p tcp-dport 80-i eth1-j ACCEPT
BalasHapusApa maksud dari perintah #ip tables-A forward-p tcp-dport 80-i eth1-j ACCEPT
BalasHapus