cah-tkj

Q fhebrina tyas artika putri ... Biasa dipanggil tika ... Q skul di smk negeri 1 batang .... Jurusan Teknologi Komputer dan Jarigan ....

Minggu, 26 April 2009

IPtable

Monitoring Trafik Network Menggunakan iptables dan MRTG
Kamas Muhammad
________________________________________
Tidak ada copyright apapun dalam dukumen ini, anda bebas menyalin, mencetak, maupun memodifikasi (dengan menyertakan nama penulis asli). Saran, koreksi, kritik, kesalahan ketik, maupun ucapan silakan dikirimkan ke email tersebut diatas. Terima Kasih.
________________________________________
Pendahuluan
Dengan berbagai metode kita dapat mengukur besar keluar-masuknya data tiap komputer dalam jaringan kita. Salah satu cara yang sederhana dan mudah dikerjakan adalah dengan menggunakan iptables dan MRTG. Iptables hanya digunakan untuk menghitung besar data yang masuk untuk tiap-tiap komputer dalam jaringan, dan hasilnya ditampilkan dengan menggunakan MRTG. Dengan begitu kita tidak perlu menginstall server snmp di tiap komputer, namun masih bisa mendapatkan gambaran umum aktifitas koneksi tiap komputer dengan jaringan lain.
Di sini diasumsikan bahwa jaringan kita beralamat 10.11.12.0/24, pengukuran dilakukan di gateway dengan alamat 10.11.12.1.
1. Instalasi
Program yang kita butuhkan di sini tidak begitu banyak, dan biasanya pada beberapa distro linux program-program ini sudah disertakan di CD. Bila tidak ada, beberapa program inilah yang harus anda download dan anda install.
1. MRTG, dapat didownload dari http://www.ee.ethz.ch/~oetiker/webtools/mrtg/
2. iptables(versi > 1.2.6), dapat didownload dari http://www.netfilter.org
3. Apache web server, dapat didownload dari http://httpd.apache.org (web server lain juga bisa)
Ikuti petunjuk instalasi yang disertakan pada tiap-tiap program, biasanya ada pada file README dan INSTALL.
2. Iptables
Untuk bisa mengetahui jumlah keluar/masuknya paket data untuk suatu komputer kita harus menghitungnya secara terpisah yaitu untuk yang masuk dan untuk yang keluar. Bila kita akan mengamati sepuluh komputer, maka setidaknya harus ada 20 rule iptables. Chain yang digunakan untuk mengamati adalah chain FORWARD.
Untuk memudahkan pengamatan & parsing nilai hitungan iptables kita dapat menambahkan masing-masing 2 chain kosong yang menjadi target rule sehingga memudahkan kita dalam menjalankan grep, misal dengan menggunakan nama komputer yang kita beri tambahan -in dan -out.
root:~# iptables -N yudhistira-in
root:~# iptables -N yudhistira-out
root:~# iptables -A FORWARD -d 10.11.12.2 -j yudhistira-in
root:~# iptables -A FORWARD -s 10.11.12.2 -j yudhistira-out

root:~# iptables -N anoman-in
root:~# iptables -N anoman-out
root:~# iptables -A FORWARD -d 10.11.12.3 -j anoman-in
root:~# iptables -A FORWARD -s 10.11.12.3 -j anoman-out

root:~# iptables -N bagong-in
root:~# iptables -N bagong-out
root:~# iptables -A FORWARD -d 10.11.12.4 -j bagong-in
root:~# iptables -A FORWARD -s 10.11.12.4 -j bagong-out

root:~# iptables -nvxL FORWARD
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 yudhistira-in all -- * * 0.0.0.0/0 10.11.12.2
0 0 yudhistira-out all -- * * 10.11.12.2 0.0.0.0/0
0 0 anoman-in all -- * * 0.0.0.0/0 10.11.12.3
0 0 anoman-out all -- * * 10.11.12.3 0.0.0.0/0
0 0 bagong-in all -- * * 0.0.0.0/0 10.11.12.3
0 0 bagong-out all -- * * 10.11.12.3 0.0.0.0/0
Di atas dapat kita lihat bahwa kalau kita ingin mengambil besar data(dalam bytes) output iptables -nvxL FORWARD dapat kita pipe kan ke grep dan mengambil nilai kolom kedua dari output yang dihasilkan oleh grep.
root:~# iptables -nvxL FORWARD | grep bagong-in
0 0 bagong-in all -- * * 0.0.0.0/0 10.11.12.3
root:~# iptables -nvxL FORWARD | grep bagong-in | awk '{print $2}'
0
Untuk memudahkan kita dalam memasukkan nilainya ke MRTG kita bisa membuat script kecil seperti ini:
#!/bin/sh
paketIN=`/sbin/iptables -nvxL FORWARD | grep "$1-in" | awk '{print $2}'`
paketOUT=`/sbin/iptables -nvxL FORWARD | grep "$1-out" | awk '{print $2}'`
echo $paketIN
echo $paketOUT
Pemakaiannya hanyalah dengan cara menuliskan nama scriptnya dengan 1 parameter yaitu [nama komputer], misalnya scriptbacatrafik.sh bagong. Script ini akan mencetak nilai bytes yang keluar dari jaringan kita yang berasal dari komputer "bagong".
3. MRTG
Nilai yang dimasukkan ke mrtg haruslah berpasangan, pertama untuk in dan kedua untuk out. Nilai ini dapat diambil dari SNMP, dapat pula diambil dari nilai eksekusi program tertentu. Contoh mrtg.cfg yang mengambil nilai dari script yang tadi kita buat dapat dilihat di bawah ini.
WorkDir: /var/www/mrtg

Target[anoman]: `/usr/local/sbin/scriptbacatrafik.sh anoman`
Title[anoman]: Anoman
PageTop[anoman]:

Anoman


MaxBytes[anoman]: 1250000
YLegend[anoman]: Bytes/s
ShortLegend[anoman]: B/s
LegendI[anoman]: Traffic in
LegendO[anoman]: Traffic out
Legend1[anoman]: Traffic in Bytes per Second

Target[bagong]: `/usr/local/sbin/scriptbacatrafik.sh bagong`
Title[bagong]: bagong
PageTop[bagong]:

bagong


MaxBytes[bagong]: 1250000
YLegend[bagong]: Bytes/s
ShortLegend[bagong]: B/s
LegendI[bagong]: Traffic in
LegendO[bagong]: Traffic out
Legend1[bagong]: Traffic in Bytes per Second

Target[yudhistira]: `/usr/local/sbin/scriptbacatrafik.sh yudhistira`
Title[yudhistira]: yudhistira
PageTop[yudhistira]:

yudhistira


MaxBytes[yudhistira]: 1250000
YLegend[yudhistira]: Bytes/s
ShortLegend[yudhistira]: B/s
LegendI[yudhistira]: Traffic in
LegendO[yudhistira]: Traffic out
Legend1[yudhistira]: Traffic in Bytes per Second
Setelah file konfigurasi selesai, jalankan indexmaker untuk membuat file index.html MRTG.
root:~# indexmaker /path/file/mrtg.cfg > /var/www/mrtg/index.html
Bila apache telah berjalan, cobalah untuk membuka http://10.11.12.1/mrtg/ untuk melihat hasilnya.
4. Pengembangan
Dengan cara pengukuran yang persis sama anda dapat pula mengukur besarnya keluar masuk paket per layanan misal web, ftp, smb, domain, dan sebagainya. Pengukuran dilakukan dengan menggunakan iptables, hanya saja kita tidak mendefinisikan alamat IP per komputer. Yang kita definisikan adalah protokol(TCP/UDP/ICMP) beserta nomor portnya, serta network address jaringan kita seperti contoh di bawah ini.
root:~# iptables -N www-in
root:~# iptables -N www-out
root:~# iptables -A FORWARD -d 10.11.12.0/24 -p tcp --dport 80 -j www-in
root:~# iptables -A FORWARD -s 10.11.12.0/24 -p tcp --sport 80 -j www-out

root:~# iptables -N ftp-in
root:~# iptables -N ftp-out
root:~# iptables -A FORWARD -d 10.11.12.0/24 -p tcp --dport 20:21 -j ftp-in
root:~# iptables -A FORWARD -s 10.11.12.0/24 -p tcp --sport 20:21 -j ftp-out
Contoh rule iptables di atas berguna untuk menghitung:
1. Besar paket data yang kita dapatkan dari webserver yang berasal dari luar jaringan kita.
2. Besar paket data request ke webserver di luar jaringan kita.
3. Besar paket data yang kita download melalui ftp yang berasal dari luar jaringan kita.
4. Besar paket data upload melalui ftp ke luar jaringan kita.
Edit mrtg.cfg untuk memasukkan hasil perhitungan iptables untuk kedua port yang baru.
Target[www]: `/usr/local/sbin/scriptbacatrafik.sh www`
Title[www]: www
PageTop[www]:

www


MaxBytes[www]: 1250000
YLegend[www]: Bytes/s
ShortLegend[www]: B/s
LegendI[www]: Traffic in
LegendO[www]: Traffic out
Legend1[www]: Traffic in Bytes per Second

Target[ftp]: `/usr/local/sbin/scriptbacatrafik.sh ftp`
Title[ftp]: ftp
PageTop[ftp]:

ftp


MaxBytes[ftp]: 1250000
YLegend[ftp]: Bytes/s
ShortLegend[ftp]: B/s
LegendI[ftp]: Traffic in
LegendO[ftp]: Traffic out
Legend1[ftp]: Traffic in Bytes per Second
Selamat mencoba, semoga sukses.
5. Referensi
1. Dokumentasi MRTG
2. Berbagai tutorial iptables
3. man iptables

IPtable

Tutorial IPTables
Lukman HDP/s3trum (lukman_hdp@yahoo.com)
August 5, 2003
________________________________________
Tulisan ini ditujukan untuk memberikan pengetahuan dasar mengenai pemfilteran paket menggunakan IPTables pada Linux. Tulisan ini bersifat general yang menjelaskan secara umum bagaimana sintaks IPTables dibuat. Beberapa (banyak?) bagian dari tulisan diambil dari official site IPTables. Tidak ada copyright apapun dalam dokumen ini, anda bebas menyalin, mencetak, maupun memodifikasi (dengan menyertakan nama penulis asli). Kritik, koreksi, saran dan lain-lain silahkan dialamatkan ke email tersebut di atas. Semoga bermanfaat.
________________________________________
1. Persiapan
Sebelum mulai, diharapkan pembaca sudah memiliki pengetahuan dasar mengenai TCP/IP karena hal ini merupakan dasar dari penggunaan IPTables. Ada (sangat) banyak resource yang mendokumentasikan konsep dasar tentang TCP/IP, baik itu secara online maupun cetak. Silahkan googling untuk mendapatkannya.
Hal berikutnya yang harus anda persiapkan adalah sebuah komputer yang terinstall Linux. Akan lebih baik jika komputer anda memiliki 2 buah network interface card, sebab bisa menjalankan fungsi packet forwarding. Disarankan anda menggunakan linux dengan kernel 2.4 ke atas, karena (setahu saya) linux dengan kernel 2.4 ke atas sudah memiliki dukungan IPTables secara default, sehingga anda tidak perlu mengkompilasi ulang kernel anda. Bagi anda yang menggunakan kernel 2.2 atau sebelumnya, anda harus melakukan kompilasi kernel untuk memasukkan dukungan IPTables. Silahkan lihat tutorial Kompilasi kernel 2.4.x di Linux oleh mas Asfik.
2. Pendahuluan
IPTables memiliki tiga macam daftar aturan bawaan dalam tabel penyaringan, daftar tersebut dinamakan rantai firewall (firewall chain) atau sering disebut chain saja. Ketiga chain tersebut adalah INPUT, OUTPUT dan FORWARD.

Pada diagram tersebut, lingkaran menggambarkan ketiga rantai atau chain. Pada saat sebuah paket sampai pada sebuah lingkaran, maka disitulah terjadi proses penyaringan. Rantai akan memutuskan nasib paket tersebut. Apabila keputusannnya adalah DROP, maka paket tersebut akan di-drop. Tetapi jika rantai memutuskan untuk ACCEPT, maka paket akan dilewatkan melalui diagram tersebut.
Sebuah rantai adalah aturan-aturan yang telah ditentukan. Setiap aturan menyatakan “jika paket memiliki informasi awal (header) seperti ini, maka inilah yang harus dilakukan terhadap paket”. Jika aturan tersebut tidak sesuai dengan paket, maka aturan berikutnya akan memproses paket tersebut. Apabila sampai aturan terakhir yang ada, paket tersebut belum memenuhi salah satu aturan, maka kernel akan melihat kebijakan bawaan (default) untuk memutuskan apa yang harus dilakukan kepada paket tersebut. Ada dua kebijakan bawaan yaitu default DROP dan default ACCEPT.
Jalannya sebuah paket melalui diagram tersebut bisa dicontohkan sebagai berikut:
Perjalanan paket yang diforward ke host yang lain
1. Paket berada pada jaringan fisik, contoh internet.
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.
Perjalanan paket yang ditujukan bagi host lokal
1. Paket berada dalam jaringan fisik, contoh internet.
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.
Perjalanan paket yang berasal dari host lokal
1. Aplikasi lokal menghasilkan paket data yang akan dikirimkan melalui jaringan.
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]

1. Table
IPTables memiliki 3 buah tabel, yaitu NAT, MANGLE dan FILTER. Penggunannya disesuaikan dengan sifat dan karakteristik masing-masing. Fungsi dari masing-masing tabel tersebut sebagai berikut :
a. NAT : Secara umum digunakan untuk melakukan Network Address Translation. NAT adalah penggantian field alamat asal atau alamat tujuan dari sebuah paket.
b. MANGLE : Digunakan untuk melakukan penghalusan (mangle) paket, seperti TTL, TOS dan MARK.
c. FILTER : Secara umum, inilah pemfilteran paket yang sesungguhnya.. Di sini bisa dintukan apakah paket akan di-DROP, LOG, ACCEPT atau REJECT
2. Command
Command pada baris perintah IPTables akan memberitahu apa yang harus dilakukan terhadap lanjutan sintaks perintah. Umumnya dilakukan penambahan atau penghapusan sesuatu dari tabel atau yang lain.
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.
3. Option
Option digunakan dikombinasikan dengan command tertentu yang akan menghasilkan suatu variasi perintah.
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.
4. Generic Matches
Generic Matches artinya pendefinisian kriteria yang berlaku secara umum. Dengan kata lain, sintaks generic matches akan sama untuk semua protokol. Setelah protokol didefinisikan, maka baru didefinisikan aturan yang lebih spesifik yang dimiliki oleh protokol tersebut. Hal ini dilakukan karena tiap-tiap protokol memiliki karakteristik yang berbeda, sehingga memerlukan perlakuan khusus.
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
--in-interface. Berlaku untuk chain OUTPUT, FORWARD dan POSTROUTING
5. Implicit Matches
Implicit Matches adalah match yang spesifik untuk tipe protokol tertentu. Implicit Match merupakan sekumpulan rule yang akan diload setelah tipe protokol disebutkan. Ada 3 Implicit Match berlaku untuk tiga jenis protokol, yaitu TCP matches, UDP matches dan ICMP matches.
a. TCP matches
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
b. UDP Matches
Karena bahwa protokol UDP bersifat connectionless, maka tidak ada flags yang mendeskripsikan status paket untuk 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 digunakan untuk mengirimkan pesan-pesan kesalahan dan kondisi-kondisi jaringan yang lain. Hanya ada satu implicit match untuk tipe protokol ICMP, yaitu :
--icmp-type
6. Explicit Matches
a. MAC Address
Match jenis ini berguna untuk melakukan pencocokan paket berdasarkan MAC source address. Perlu diingat bahwa MAC hanya berfungsi untuk jaringan yang menggunakan teknologi ethernet.
iptables –A INPUT –m mac –mac-source 00:00:00:00:00:01

b. Multiport Matches
Ekstensi Multiport Matches digunakan untuk mendefinisikan port atau port range lebih dari satu, yang berfungsi jika ingin didefinisikan aturan yang sama untuk beberapa port. Tapi hal yang perlu diingat bahwa kita tidak bisa menggunakan port matching standard dan multiport matching dalam waktu yang bersamaan.
iptables –A INPUT –p tcp –m multiport --source-port 22,53,80,110
c. Owner Matches
Penggunaan match ini untuk mencocokkan paket berdasarkan pembuat atau pemilik/owner paket tersebut. Match ini bekerja dalam chain OUTPUT, akan tetapi penggunaan match ini tidak terlalu luas, sebab ada beberapa proses tidak memiliki owner (??).
iptables –A OUTPUT –m owner --uid-owner 500
Kita juga bisa memfilter berdasarkan group ID dengan sintaks --gid-owner. Salah satu penggunannya adalah bisa mencegah user selain yang dikehendaki untuk mengakses internet misalnya.
d. State Matches
Match ini mendefinisikan state apa saja yang cocok. Ada 4 state yang berlaku, yaitu NEW, ESTABLISHED, RELATED dan INVALID. NEW digunakan untuk paket yang akan memulai koneksi baru. ESTABLISHED digunakan jika koneksi telah tersambung dan paket-paketnya merupakan bagian dari koneki tersebut. RELATED digunakan untuk paket-paket yang bukan bagian dari koneksi tetapi masih berhubungan dengan koneksi tersebut, contohnya adalah FTP data transfer yang menyertai sebuah koneksi TCP atau UDP. INVALID adalah paket yang tidak bisa diidentifikasi, bukan merupakan bagian dari koneksi yang ada.
iptables –A INPUT –m state --state RELATED,ESTABLISHED
7. Target/Jump
Target atau jump adalah perlakuan yang diberikan terhadap paket-paket yang memenuhi kriteria atau match. Jump memerlukan sebuah chain yang lain dalam tabel yang sama. Chain tersebut nantinya akan dimasuki oleh paket yang memenuhi kriteria. Analoginya ialah chain baru nanti berlaku sebagai prosedur/fungsi dari program utama. Sebagai contoh dibuat sebuah chain yang bernama tcp_packets. Setelah ditambahkan aturan-aturan ke dalam chain tersebut, kemudian chain tersebut akan direferensi dari chain input.
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.
Beberapa target yang lain biasanya memerlukan parameter tambahan:
a. LOG Target
Ada beberapa option yang bisa digunakan bersamaan dengan target ini. Yang pertama adalah yang digunakan untuk menentukan tingkat log. Tingkatan log yang bisa digunakan adalah debug, info, notice, warning, err, crit, alert dan emerg.Yang kedua adalah -j LOG --log-prefix yang digunakan untuk memberikan string yang tertulis pada awalan log, sehingga memudahkan pembacaan log tersebut.
iptables –A FORWARD –p tcp –j LOG --log-level debug
iptables –A INPUT –p tcp –j LOG --log-prefix “INPUT Packets”
b. REJECT Target
Secara umum, REJECT bekerja seperti DROP, yaitu memblok paket dan menolak untuk memproses lebih lanjut paket tersebut. Tetapi, REJECT akan mengirimkan error message ke host pengirim paket tersebut. REJECT bekerja pada chain INPUT, OUTPUT dan FORWARD atau pada chain tambahan yang dipanggil dari ketiga chain tersebut.
iptables –A FORWARD –p tcp –dport 22 –j REJECT --reject-with icmp-host-unreachable
Ada beberapa 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
Target ini berguna untuk melakukan perubahan alamat asal dari paket (Source Network Address Translation). Target ini berlaku untuk tabel nat pada chain POSTROUTING, dan hanya di sinilah SNAT bisa dilakukan. Jika paket pertama dari sebuah koneksi mengalami SNAT, maka paket-paket berikutnya dalam koneksi tersebut juga akan mengalami hal yang sama.
iptables –t nat –A POSTROUTING –o eth0 –j SNAT --to-source 194.236.50.155-194.236.50.160:1024-32000
d. DNAT Target
Berkebalikan dengan SNAT, DNAT digunakan untuk melakukan translasi field alamat tujuan (Destination Network Address Translation) pada header dari paket-paket yang memenuhi kriteria match. DNAT hanya bekerja untuk tabel nat pada chain PREROUTING dan OUTPUT atau chain buatan yang dipanggil oleh kedua chain tersebut.
iptables –t nat –A PREROUTING –p tcp –d 15.45.23.67 --dport 80 –j DNAT --to-destination 192.168.0.2
e. MASQUERADE Target
Secara umum, target MASQUERADE bekerja dengan cara yang hampir sama seperti target SNAT, tetapi target ini tidak memerlukan option --to-source. MASQUERADE memang didesain untuk bekerja pada komputer dengan koneksi yang tidak tetap seperti dial-up atau DHCP yang akan memberi pada kita nomor IP yang berubah-ubah.
Seperti halnya pada SNAT, target ini hanya bekerja untuk tabel nat pada chain POSTROUTING.
iptables –t nat –A POSTROUTING –o ppp0 –j MASQUERADE
f. REDIRECT Target
Target REDIRECT digunakan untuk mengalihkan jurusan (redirect) paket ke mesin itu sendiri. Target ini umumnya digunakan untuk mengarahkan paket yang menuju suatu port tertentu untuk memasuki suatu aplikasi proxy, lebih jauh lagi hal ini sangat berguna untuk membangun sebuah sistem jaringan yang menggunakan transparent proxy. Contohnya kita ingin mengalihkan semua koneksi yang menuju port http untuk memasuki aplikasi http proxy misalnya squid. Target ini hanya bekerja untuk tabel nat pada chain PREROUTING dan OUTPUT atau pada chain buatan yang dipanggil dari kedua chain tersebut.
iptables –t nat –A PREROUTING –i eth1 –p tcp --dport 80 –j REDIRECT --to-port 3128
Tutuorial Squid bisa dilihat di Instalasi Squid, Banner Filter, Porn Filter, Limit Bandwith, Transparan Proxy bikinan mas Hanny.
4. Penutup
Demikian dasar-dasar dari IPTables beserta komponen-komponennya. Mungkin anda masih agak bingung tentang implementasi dari apa yang telah dijelaskan di atas. Insya Allah dalam tulisan yang akan datang, saya akan memberikan beberapa contoh kasus jaringan yang menggunakan IPTables. Yea.. may I have enough power to do it :)
5. Change Log
5 Agustus 2003
• Penulisan pertama dokumen ini
6. Referensi
1. www.netfilter.org
2. Manual page iptables
3. Beberapa sumber yang lain,

Langkah-langkah Installasi Linux(Debian)

Persiapan Menginstall Linux (Debian)
Nyalakan komputer, kemudian tekan [delete] untuk masuk ke bios,
Setelah di dalam bios, pilih menu
BIOS FEATURES SETUP
tekan [ENTER]
Setelah itu pilihlah menu Boot Sequence agar menjadi CDROM,C,A

[ESC]
Pilih,
SAVE & EXIT SETUP
tekan [ENTER]
tekan y [ENTER]
Maka komputer akan mulai booting kembali dengan boot sequence pertama ke CDROM.

Masukkan CD debian yang ada kedalam CDROM.

LANGKAH II
Boot dari CD
Setelah memasukkan CD ke dalam CDROM maka tinggal tunggu CD boot.

Setelah komputer boot ke CD, akan muncul tampilan sebagai berikut:

Welcome to Deal
This is debian …………………………………….
………………………………………………….

boot:_ [ENTER]

LANGKAH III
Pilihan Awal Penginstallan
Setelah itu komputer akan loading…
Tunggu sampai muncul tulisan sebagai berikut:

‘ Choose The Language ‘
Pilih bahasa (disarankan bahasa inggris - en). [ENTER]

‘ Choose Language Variant ‘
Pilih ‘ English (United States) ‘ [ENTER].

‘ Relase Notes ‘
Pilih [ENTER].

‘ Debian GNU/LINUX Installation Main Menu ‘
Akan ada macam-macam pilihan didalam kotak dengan bagian yang di highlight
pada pilihan yang paling atas dengan tulisan,

Next : Configure the Keyboard

tekan [ENTER].

‘ Select a Keyboard ‘
Akan ada macam-macam pilihan didalam kotak dengan bagian yang di highlight
pilih,

qwerty/us : U.S. English (QWERTY)

[ENTER]

LANGKAH IV
Menentukan Partisi Hardisk

‘ Debian GNU/LINUX Installation Main Menu ‘
Akan ada macam-macam pilihan didalam kotak dengan bagian yang di highlight
pada pilihan yang paling atas dengan tulisan,
Next : Initialize and Activate a Swap Partition
pilih,
Previous: Partition a Hard Disk
[ENTER]

‘ Select Disk Drive ‘
pilih,
/dev/hda
[ENTER]

‘ Lilo Limitations ‘
[ENTER]

‘ Note on additional space for the ReiserFS Journal ‘
[ENTER]

Akan muncul tampilan partisi yang ada pada hard Disk hda, dengan informasi ini anda akan mengetahui letak partisi swap dan letak partisi tempat anda akan meletakkan ‘/’ (root).
pilih [ Quit ]
dengan menggerakan/menekan panah kearah kanan. [ENTER]

LANGKAH V
Menginisialisasi Partisi Swap

‘ Debian GNU/LINUX Installation Main Menu ‘
Akan ada macam-macam pilihan didalam kotak dengan bagian yang di highlight pada pilihan yang paling atas dengan tulisan,

Next : Initialize and Activate a Swap Partition
[ENTER]

‘ Scan for Bad Blocks? ‘
pilih [ENTER]

‘ Are You Sure? ‘
pilih [ENTER]

LANGKAH VI
Memilih jenis File System pada Partisi Linux

‘ Debian GNU/LINUX Installation Main Menu ‘
Akan ada macam-macam pilihan didalam kotak dengan bagian yang di highlight
pada pilihan yang paling atas dengan tulisan,

Next : Initialize a Linux Partition
[ENTER]

‘ Choose Filesystem Type ‘
Terdapat 3 pilihan pada kotak, pilih,

Ext3 : Next Generation of Ext2, a journaling filesystem
[ENTER]

‘ Select Partition ‘
Pilih partisi yang akan dijadikan “Ext3″
Terdapat 3 pilihan pada kotak, pilih,

/dev/hda2 : Linux native
[ENTER]

‘ Scan for Bad Blocks? ‘
pilih [ENTER]

‘ Are You Sure? ‘
Perhatikan baik-baik apakah benar yang anda pilih /dev/hda2 sebagai “Ext3″ kalau sudah benar
pilih [ENTER]

‘ Mount as the Root Filesystem? ‘
pilih [ENTER]

LANGKAH VII
Menginstall Kernel dan Modulnya

‘ Debian GNU/LINUX Installation Main Menu ‘
Akan ada macam-macam pilihan didalam kotak dengan bagian yang di highlight pada pilihan yang paling atas dengan tulisan,

Next : Install kernel and Driver Modules
[ENTER]

‘ Select Installation Medium ‘
pilih,
cdrom : CD-ROM drive
[ENTER]

‘ Please insert the CD-ROM ‘
pilih [ENTER]

‘ Please Wait ‘

‘ Select Archive path ‘
Pilih directory tempat menginstall kernel.
/instmnt/dists/woody/main/disks-i386/current
[ENTER]

‘ Please Wait ‘

LANGKAH VIII
Memilih Driver

‘ Debian GNU/LINUX Installation Main Menu ‘
Akan ada macam-macam pilihan didalam kotak dengan bagian yang di highlight
pada pilihan yang paling atas dengan tulisan,

Next : Configure Device Driver Modules
[ENTER]

‘ Note about loaded drivers ‘
pilih, [ENTER]

‘ Select Category ‘
Akan tampil pilihan-pilihan module yang akan di pilih,

1. Pilih ‘ kernel/drivers/input Input Devices. ‘ [ENTER]

‘ Select kernel/driver/input modules ‘
pilih,
‘ kebdev - Keyboard support ‘ [ENTER]

‘ kebdev ‘
pilih, [ENTER]

‘ Enter Command-Line Argumens ‘
Tidak perlu diisi apa-apa.
[ENTER]

pilih,
‘ mousedev - Mouse support ‘ [ENTER]

‘ mousedev ‘
pilih, [ENTER]

‘ Enter Command-Line Argumens ‘
Tidak perlu diisi apa-apa.
[ENTER]

Pilih ‘ Exit Finish Return to previous menu. ‘ [ENTER]

2. Pilih ‘ kernel/drivers/net Drivers for network interface cards ‘ [ENTER]

‘ Select kernel/drivers/net modules ‘
carilah ‘ eepro100 ‘ [ENTER]

‘ eepro100 ‘
pilih, [ENTER]

atau bila gagal bisa coba bonding

‘ Enter Command-Line Argumens ‘
Tidak perlu diisi apa-apa. [ENTER]

Pilih ‘ Exit Finish Return to previous menu. ‘ [ENTER]

3. Pilih ‘ kernel/fs/msdos
MS-DOS file system ‘ [ENTER]

‘ Select kernel/fs/msdos modules ‘
pilih, ‘ msdos - PC BIOS ‘ [ENTER]

‘ msdos ‘
pilih, [ENTER]

‘ Enter Command-Line Argumens ‘
Tidak perlu diisi apa-apa.
[ENTER]

Pilih ‘ Exit Finish Return to previous menu. ‘ [ENTER]

4. Pilih ‘ kernel/arch/1386/kernel i386-base drivers. ‘ [ENTER]
pilih, ‘ apm ‘ [ENTER]

‘ apm ‘
pilih, [ENTER]

‘ Enter Command-Line Argumens ‘
Tidak perlu diisi apa-apa.
[ENTER]

pilih, ‘ cpuid ‘ [ENTER]

‘ cpuid ‘
pilih, [ENTER]

‘ Enter Command-Line Argumens ‘
Tidak perlu diisi apa-apa.
[ENTER]

Pilih ‘ Exit Finish Return to previous menu. ‘ [ENTER]

Pilih, ‘ Exit ‘ [ENTER]

LANGKAH IX
Mengkonfigurasi Jaringan

‘ Debian GNU/LINUX Installation Main Menu ‘
Akan ada macam-macam pilihan didalam kotak dengan bagian yang di highlight
pada pilihan yang paling atas dengan tulisan,

Next : Configure the network

[ENTER]

‘ Choose The Hostname ‘
Ganti tulisan ‘ Debian ‘ dengan ‘ LAB-OS-27-*** ‘
*** diganti dengan nomor komputer.
[ENTER]

‘ Automatic Network Configuration ‘
pilih, [ENTER]

‘ Choose the IP Address ‘
Ganti tulisan default-nya dengan ‘ 152.118.27.*** ‘
*** diganti dengan nomor komputer.
[ENTER]

‘ Choose Network Mask ‘
Tidak usah diganti.
[ENTER]

‘ What is your IP gateaway address? ‘
152.118.27.1
[ENTER]

‘ Choose Domain Name ‘
Tulis ‘ cs.ui.ac.id ‘
[ENTER]

‘ Choose the DNS Server Addresses ‘
Ganti dengan ‘ 152.118.24.2 ‘
[ENTER]

LANGKAH X
Menginstall Base System

‘ Debian GNU/LINUX Installation Main Menu ‘
Akan ada macam-macam pilihan didalam kotak dengan bagian yang di
highlight pada pilihan yang paling atas dengan tulisan,

Next : Install the base system
[ENTER]

‘ Select Installation Medium ‘
pilih,

‘ cdrom : CD-ROM drive ‘
[ENTER]

‘ Please insert the CD-ROM ‘
pilih, [ENTER]

‘ Select Archive path ‘
Pilih directory untuk menginstall base sistem.
/instmnt
[ENTER]

‘ Installing Base System, please wait ‘
Tunggulah sampai selesai menginstall.

LANGKAH XI
Membuat System Menjadi Bootable

‘ Debian GNU/LINUX Installation Main Menu ‘
Akan ada macam-macam pilihan didalam kotak dengan bagian yang di highlight
pada pilihan yang paling atas dengan tulisan,

Next : Make System Bootable
[ENTER]

‘ When should the LILO boot loader be installed ? ‘
Pilih,
/dev/hda : Install LILO in the MBR (use this if unsure).
[ENTER]

‘ Other bootable partitions ‘
Pilih,
Include Put all into the menu.
[ENTER]

‘ Securing LILO ‘
[ENTER]

LANGKAH XII
Membuat Boot Floppy

‘ Debian GNU/LINUX Installation Main Menu ‘
Akan ada macam-macam pilihan didalam kotak dengan bagian yang di highlight
pada pilihan yang paling atas dengan tulisan,

Next : Make a Boot Floppy

Masukkan disket(dalam keadaan baik)ke dalam floppy disk
[ENTER]

‘ Change Disk ‘
[ENTER]

Tunggulah sementara sedang membuat boot floppy

LANGKAH XIII
Mereboot Komputer

‘ Debian GNU/LINUX Installation Main Menu ‘
Akan ada macam-macam pilihan didalam kotak dengan bagian yang di highlight
pada pilihan yang paling atas dengan tulisan,

Next : Reboot The System
[ENTER]

‘ Reboot The System? ‘
Pilih,
Yes [ENTER]

Kemudian keluarkan disket dari floppy disk, sementara komputer sedang reboot.

Keluarkanlah cd deal dari cdrom.

Tunggu sampai muncul lilo boot seperti dibawah ini,

Linux
WIN/Dos

Pilih Linux [ENTER]

LANGKAH XIV
Konfigurasi System Debian

Kemudian akan masuk ke tampilan seperti dibawah ini :
‘ Debian System Configuration ‘
[ENTER]

‘ TimeZone Configuration ‘
Is the hardware clock set to GMT
Pilih,
[ENTER]

What area do you life in?
Pilih,
Asia [ENTER]

Select a city or time zone:
Pilih,
Jakarta [ENTER]

‘ Password setup ‘
Shall I enable md5 passwords?
Pilih,
[ENTER]

Shall I enable shadow passwords?
Pilih,
[ENTER]

Enter a password for the root:
Isi saja dengan 12345
[ENTER]

Re-enter password to verify:
Isi lagi dengan 12345
[ENTER]

Shall I create a normal user account now?
Pilih,
[ENTER]

‘ Debian System Configuration ‘
Shall I remove the pcmcia packages?
Pilih,
[ENTER]

Do you want to user a PPP connection to install the system.
Pilih,
[ENTER]

‘ Apt Configuration ‘
Choose the method apt should user to access to Debian archive:
Pilih,
cdrom [ENTER]

Masukkan cd deal ke dalam cdrom.

Enter CD ROM device file:
/dev/cdrom [ENTER]

Scan another CD?
pilih [ENTER]

Add another apt source?
pilih [ENTER]

Use security updates from security.debian.org?
pilih [ENTER]

Run tasksel?
pilih [ENTER]

Run dselect?
pilih [ENTER]

Run dselect?
pilih, [ENTER]

Tunggu sementara sedang mengkonfigurasi paket apa saja yang akan diambil,
sampai ada tulisan seperti di bawah ini :
Do you want to continue? [Y/n]
Ketikan y [ENTER]

Do you want to erase any previous downloaded.deb files? [Y/n]
Ketik,
y [ENTER]
Please enter to continue
[ENTER]

I can do …..
[---Please return---]
[ENTER]

You must choose one of the options below:
Enter value (default=’1′, ‘x’ to restart):
Ketik,
5 [ENTER]

‘Debian System Configuration ‘
Have fun !
Thank you for choosing Debian.
[ENTER]

LANGKAH XV
Login
Nanti akan muncul pesan seperti dibawah ini:
LAB-OS-27-**** login :
(**** sesuai dengan komputer tempat anda menginstall)

Coba masukkan login root dan passwordnya.

Setelah itu kita akan mencoba menginstall paket.
Cara menginstallnya adalah dengan cara sebagai berikut:
ketik perintah ini di console:

apt-get install “nama paket” [ENTER]

Sebagai contoh kita akan mencoba menginstall lynx.
Jadi yang harus diketikkan adalah sebagai berikut :

apt-get install lynx [ENTER]

Do you want to continue? [Y/n]
ketikan y [ENTER]

Setelah selesai menginstall lynx coba ketikkan perintah ini di console :
lynx kambing.vlsm.org [ENTER]

Jika berhasil masuk ke halaman kambing.vlsm.org berarti anda berhasil.
Selamat menggunakan Debian