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.
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.
1. Data masuk ke dalam sistem komputer bisa melalui banyak jalan, biasanya melalui network interface. Bisa berupa card dan dapat pula berupa wifi lan atau yang lain. Setelah masuk sistem, maka data tersebut akan segera masuk ke dalam decission maker, yang menentukan bahwa data itu akan di proses ke dalam komputer (input) atau akan di lewatkan (forward).
2. Setelah data masuk jika data tersebut mendapatkan rantai FORWARD maka akan segera masuk dalam aturan dalam rule FORWARD tersebut.
3. Jika data masuk ke dalam rantai input, maka data akan mengalami rule
Perlakuan apa saja yang dialami data oleh iptables?
Perlakuan yang dialami oleh data/paket data oleh iptables digambarkan melalui tabel. Macam tabelnya adalah:
1. Filter : tabel default yang ada dalam penggunaan iptables
2. NAT : tabel ini digunakan untuk fungsi NAT, redirect, redirect port
3. Mangle : tabel ini berfungsi sebagai penghalus proses pengaturan paket
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
Perintah man adalah untuk mendapatkan manual penggunaaan dari iptables ini. Sedangkan help adalah untuk mendapatkan informasi help dari iptables tersebut.
- OPTION
Option terdiri dari command, dan parameter serta opsi tambahan
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.
Daftar Perintah berikut keterangan
-A atau –append Melakukan penambahan rule
-D atau –delete Melakukan penghapusan rule
-R atau –replace Melakukan replacing rule
-L atau –list Menampilkan ke display, daftar iptables
-F atau –flush Menghapus daftar iptables/pengosongan
-I atau –insert Melakukan penyisipan rule
-N atau –new-chain Melakukan penambahan chain baru
-X atau –delete-chain Melakukan penghapusan chain
-P atau –policy Memberikan rule standard
-E atau –rename Memberikan penggantian nama
-h atau –help Menampilkan fasilitas help
Command iptables
Parameter
Parameter iptables digunakan sebagai pelengkap yang diperlukan untuk tujuan spesifikasi rule tersebut
Parameter berikut Keterangan
-p, –protocol (proto) Parameter ini untuk menentukan perlakuan terhadap protokol
-s, –source (address) –-src Parameter untuk menentukan asal paket
-d, –destination (address) –-dst Parameter untuk menentukan tujuan paket
-j, –jump (target)
-g, –goto (chain)
-i, –in-interface Masuk melalui interface (eth0, eth1 dst)
-o, –out-interface
[!] -f, –fragment
-c, –set-counters
Parameter iptables
Parameter berikut Keterangan
–sport
–source-port Menentukan port asal
–dport
–destination-port Menentukan port tujuan
–tcp-flags Menentukan perlakuan datagram
–syn
Table 3. Tabel Parameter detail
Selanjutnya apa itu yang disebut dengan chain?
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
Chain
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
Apakah target itu?
Target adalah tujuan perlakuan terhadap rule. Pada target ini terletak keputusan, paket data mau diapakan, apakah mau di tolak, atau diteruskan atau diolah terlebih dahulu. Berikut daftar table target iptables
Target berikut Keterangan
ACCEPT Rantai paket tersebut diterima dalam rule
DROP Rantai paket tersebut “dijatuhkan”
REJECT Rantai paket tersebut ditolak seperti DROP
DNAT Rantai paket di “destination nat” kan ke address lain
SNAT Rantai paket di arahkan ke source nat tertentu
REDIRECT Rantai paket di redirect ke suatu addres dan port tertentu
MASQUERADE Bekerja seperti SNAT tapi tidak memerlukan source
REJECT Bekerja seperti DROP
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
192.168.0.0/24 (eth1)
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
Virtual ip dan salah satu penggunaannya, serta tujuan diantaranya masalah cost and eficiency. Disini hanya membahas sedikit tentang kegunaan virtual ip.
Study kasus:
1 koneksi jaringan adsl speedy akan di pake oleh kakak beradik, yang satu buka usaha game online saja dan yang satunya buka warnet saja. keduanya ruangannya terpisah yaitu disebuah ruko atas dan bawah, yang bawah untuk warnet dan atas untuk game online. hal yang di inginkan adalah warnet dan game berbeda ip dengan tujuan supaya beda network dan file sharing nya berbeda atau terpisah. ini juga karena di warnet di pasang freeze dan yang game tidak.
Kondisi jaringan warnet dengan ip range 192.168.0.0/24 atau 192.168.0.1 – 192.168.0.254
kondisi jaringan game dengan ip range 192.168.1.0/24 atau 192.168.1.1 – 192.168.1.254
kebutuhan:
1 router 2 lancard yang sudah ready on connection.
1 switch hub 32 port
Disini saya memakai router dengan os linux fedora core. untuk setingan ip sebagai berikut:
[root@gateway ~]# ifconfig eth1
eth1 Link encap:Ethernet HWaddr 00:13:F7:39:CC:AA
inet addr:192.168.0.1 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::213:f7ff:fe39:ccaa/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:747124 errors:0 dropped:0 overruns:0 frame:0
TX packets:1066930 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:105921261 (101.0 MiB) TX bytes:822868449 (784.7 MiB)
Interrupt:177 Base address:0x4400
[root@gateway ~]# ifconfig eth1:0
eth1:0 Link encap:Ethernet HWaddr 00:13:F7:39:CC:AA
inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:177 Base address:0x4400
[root@gateway ~]#
eth0 nya ke arah modem. untuk eth1 dan eth1:0 ini yang virtual ip.
cara membuatnya untuk temporary bisa dengan perintah.
ifconfig eth1:0 192.168.1.1 netmask 255.255.255.0 up
dan untuk permanent nya.
masuk ke /etc/sysconfig/network-scripts/
ada nma file yang perlu di copy yaitu ifcfg-eth1 di copykan ke ifcfg-eth1:0
kemudian di edit. berikut isinya:
[root@gateway network-scripts]# vi ifcfg-eth1
# Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+
DEVICE=eth1
BOOTPROTO=static
BROADCAST=192.168.0.255
HWADDR=00:13:F7:39:CC:AA
IPADDR=192.168.0.1
IPV6ADDR=
IPV6PREFIX=
NETMASK=255.255.255.0
NETWORK=192.168.0.0
ONBOOT=yes
[root@gateway network-scripts]# vi ifcfg-eth1:0
# Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+
DEVICE=eth1:0
BOOTPROTO=static
BROADCAST=192.168.1.255
IPADDR=192.168.1.1
IPV6ADDR=
IPV6PREFIX=
NETMASK=255.255.255.0
NETWORK=192.168.1.0
ONBOOT=yes
——————————
yang eth1 adalah real nic untuk yang bawah virtual dan nebeng pada nic eth1.
eth1 untuk ke jaringan warnet dan eth1:0 ke jaringan game
selanjutnya yang penting adalah.masalah routing. dalam kondisi di atas sudah connect kesemuanya. meskipun jaringan warnet dan game 1 switch hub tetapi karena beda network ip addresess maka tidak akan nampak pada my network places.
untuk routing tinggal menambahkan code berikut pada /etc/rc,local
disini saya sertakan script complete nya yang sebenarnya jika posisi /kondisi ini adalah kondisi router sudah tersambung internet da n routing untuk jaringan warnet sudah berjalan/sudah bisa konek internet sehingga untuk jaringan game hanya nambah saja alias expansi usaha/jaringa.
#————–sampe disini—————-
service iptables stop
/sbin/iptables -F
#echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
echo 1 > /proc/sys/net/ipv4/ip_forward
###############reject##########
/sbin/route del -net 169.254.0.0 netmask 255.255.0.0 gw 0.0.0.0
/sbin/route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1 eth1
/sbin/iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 0/0 -j MASQUERADE
/sbin/iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -d 0/0 -j MASQUERADE
/sbin/iptables -A PREROUTING -t nat -j REDIRECT -p tcp -s 192.168.0.0/24 -d 0/0 –dport 80 –to-ports 3128
/sbin/iptables -A PREROUTING -t nat -j REDIRECT -p tcp -s 192.168.1.0/24 -d 0/0 –dport 80 –to-ports 3128
/sbin/iptables -A PREROUTING -t nat -j REDIRECT -p tcp -s 192.168.0.0/24 -d 0/0 –dport 8080 –to-ports 3128
/sbin/iptables -A PREROUTING -t nat -j REDIRECT -p tcp -s 192.168.1.0/24 -d 0/0 –dport 8080 –to-ports 3128
#————–sampe disini—————-
dikarenakan saya memakai squid maka maka perlu jump port ke port squid. untuk ip network yang berbeda tinggal di kondisikan. jika nantinya akan ada perluasan jaringan/expansi semisal untuk kantor memakai jaringan berbeda semisal 192.168.2.0/24 atau 192.168.2.1 – 192.168.2.254 maka tinggal membuat virtual ip pada nic eth1 menjadi ifcfg-eth1:1 serta merubah/mengedit isi didalamnya.
selanjutnya ceck routing, dengan perintah route -n
kemudian ping ke jaringan dalam 192.168.0.0/24 dan yang jaringan 192.168.1.0/254 kemudian test dari arah client di kedua jaringan tersebut.
more info: google.com
semoga bermanfaat.

