Feel banana feel the freedom

January 27, 2008

Monitor Jaringan dengan NTOP

Filed under: Linux Server — yoner @ 8:13 am

Setelah menimbang-nimbang network monitor apa yg enak dipake hasilnya pilihan gwe jatuh ke NTOP.

Salah satu alasan make yg ini mungkin karena gampang installnya :D

Gw install ntop ini di vector linux standard v.5.9 jadi kalo gak berhasil di distro lain, mungkin ada settingannya yg beda

Software requirement :

  • ntop , pada saat ini versinya 3.3 (jadi install dari source)
  • rrdtool-1.2.23 (cari di linuxpackages aja)
  • libpcap-0.9.4 (cari di linuxpackages aja)
  • swig (optional)
  • graphviz (optional)

Install program-program pendukung tsb, pastikan semua sudah terinstall dengan baik.

Sekarang install program utamanya yaitu NTOP :

  • extract file ntop
    • tar -xzvf ntop.tar.gz
  • Masuk ke directory extract NTOP
    • cd ntop    // sesuaikan dengan directory ntop yg telah diextract
  • Install ntop
    • ./autogen.sh && make && make install
  • Buat user dan group untuk NTOP
    • groupadd ntop
    • useradd -g ntop ntop -s /bin/false
  • Karena direktory berikut tidak otomatis dibuat pada waktu install, maka buat secara manual
    • mkdir /usr/local/var/ntop/rrd
    • mkdir /usr/local/var/ntop/rrd/graphics
    • mkdir /usr/local/var/ntop/rrd/flows
    • mkdir /usr/local/var/ntop/rrd/interfaces
  • Ubah status kepemilikan dan hak akses untuk folder berikut.
    • chown -R ntop.ntop /usr/local/share/ntop
    • chown -Rf ntop.ntop /usr/local/var/ntop
    • chmod -Rf 777 /usr/local/var/ntop
  • Jalankan ntop untuk pertama kali
    • ntop -A     // isikan password untuk admin ntop
  • Jalankan ntop dgn perintah >> /usr/local/bin/ntop -u ntop -i [interface network yg mau dimonitor] -d -w [default port adalah 3000]
    • /usr/local/bin/ntop -i eth0 -d -w 3000

Yup, sukses berjalan. Sekarang kita bisa browse untuk melihatnya, silakan buka browser
kesayangan Anda dan arahkan ke IP Address tempat menginstall NTOP, misal :
http://192.168.10.1:3000 atau http://localhost:3000

Selamat Mencoba

    December 19, 2007

    Install squid simple guide

    Filed under: Dejavu, Linux Server, Squid — yoner @ 12:48 pm

    1. install paket squid

    # installpkg squid-2.5.STABLE13-i486-1maew.tgz (atau file squid versi lain)

    2. copy file konfigurasi yang telah tersedia ke directory /etc/squid

    a.masuk ke directory squid-config, contoh :
    # cd /mnt/vl-hot/sdb/vol1/Linux/squid-dejavu/squid-config
    b. copy file yang ada di directory squid-config ke directory /etc/squid
    # cp -vf *.* /etc/squid

    3. buat group dan user squid

    # groupadd squid
    # useradd squid -g squid -d /dev/null -s /bin/false

    4. buat direktori cache dan log untuk squid

    # mkdir /cache
    # mkdir /var/log/squid
    # chown squid.squid /cache
    # chown squid.squid /var/log/squid

    5. buat direktori index untuk cache

    # squid -z
    jika semua berjalan lancar maka tampilan konsole akan kembali ke prompt tanpa pesan kesalahan.

    6. jalankan squid

    # squid -D

    Note :
    kesalahan yang cukup sering terjadi adalah spt ini :
    Dec 3 16:51:59 gateway squid[14696]: Squid Parent: child process 14698 started
    Dec 3 16:52:00 gateway squid[14696]: Squid Parent: child process 14698 exited due to signal 6
    Dec 3 16:52:03 gateway squid[14696]: Squid Parent: child process 14710 started
    Dec 3 16:52:03 gateway squid[14696]: Squid Parent: child process 14710 exited due to signal 6
    Dec 3 16:52:06 gateway squid[14696]: Squid Parent: child process 14722 started
    Dec 3 16:52:06 gateway squid[14696]: Squid Parent: child process 14722 exited due to signal 6
    Dec 3 16:52:09 gateway squid[14696]: Squid Parent: child process 14737 started
    Dec 3 16:52:10 gateway squid[14696]: Squid Parent: child process 14737 exited due to signal 6
    Dec 3 16:52:13 gateway squid[14696]: Squid Parent: child process 14752 started
    Dec 3 16:52:13 gateway squid[14696]: Squid Parent: child process 14752 exited due to signal 6
    Dec 3 16:53:41 gateway squid[15025]: Squid Parent: child process 15027 started

    solusi :
    hal tersebut terjadi karena masalah permission pada file squid.pid
    untuk memperbaiki, dapat dengan melakukan penggantian kepemilikan file squid.pid ke user squid dan group squid (sesuai yang di definisikan pada file konfigurasi squid.conf)

    # chown squid.squid /var/run/squid.pid

    File squid-conf bisa di downlad disini

    http://www.4shared.com/dir/2804634/c07ec5f8/sharing.html

    password : yoner

    October 28, 2007

    Sekilas tentang squid

    Filed under: Linux Server — yoner @ 1:11 am

    Salah satu contoh aplikasi proxy/cache server adalah Squid. Squid dikenal sebagai aplikasi proxy dan cache server yang handal. Pada pihak klien bekerja aplikasi browser yang meminta request http pada port 80. Browser ini setelah dikonfigurasi akan meminta content, yang selanjutnya disebut object, kepada cache server, dengan nomor port yang telah disesuaikan dengan milik server, nomor yang dipakai bukan port 80 melainkan port 8080 3130 (kebanyakan cache server menggunakan port itu sebagai standarnya).

    Pada saat browser mengirimkan header permintaan, sinyal http request dikirimkan ke server. Header tersebut diterima squid dan dibaca. Dari hasil pembacaan, squid akan memparsing URL yang dibutuhkan, lali URL ini dicocokkan dengan database cache yang ada.

    Database ini berupa kumpulan metadata (semacam header) dari object yang sudah ada didalam hardisk. Jika ada, object akan dikirimkan ke klien dan tercatat dalam logging bahwa klien telah mendapatkan object yang diminta. Dalam log kejadian tersebut akan dicatat sebagai TCP_HIT. Sebaliknya, jika object yang diminta ternyata tidak ada, squid akan mencarinya dari peer atau langsung ke server tujuan. Setelah mendapatkan objectnya, squid akan menyimpan object tersebut ke dalam hardisk. Selama dalam proses download object ini dinamakan “object in transit” yang sementara akan menghuni ruang memori. Dalam masa download tadi, object mulai dikirimkan ke klien dan setelah selesai, kejadian ini tercatat dalam log sebagai TCP_MISS.

    ICP sebagai protokol cache berperan dalam menanyakan ketersediaan object dalam cache. Dalam sebuah jaringan sebuah cache yang mempunyai sibling, akan mencoba mencari yang dibutuhkan ke peer sibling lainnya, bukan kepada parent, cache akan mengirimkan sinyal icp kepada sibling dan sibling membalasnya dengan informasi ketersediaan ada atau tidak. Bila ada, cache akan mencatatkan ICP_HIT dalam lognya. Setelah kepastian object bias diambil dari sibling, lalu cache akan mengirimkan sinyal http ke sibling untuk mengambil object yang dimaksud. Dan setelah mendapatkannya, cache akan mencatat log SIBLING_HIT.

    Jika ternyata sibling tidak menyediakan object yang dicari, cache akan memintanya kepada parent. Sebagai parent, ia wajib mencarikan object yang diminta tersebut walaupun ia sendiri tidak memilikinya (TCP_MISS). Setelah object didapatkan dari server origin, object akan dikirimkan ke cache child tadi, setelah mendapatkannya cache child akan mencatatnya sebagai PARENT_HIT.

    II.1 Konfigurasi, penggunaan dan metode Squid

    Konfigurasi-konfigurasi mendasar squid antara lain :

    1. http_port nomor port.
    Ini akan menunjukkan nomor port yang akan dipakai untuk menjalankan squid. Nomor port ini akan dipakai untuk berhubungan dengan klien dan peer.

    2. icp_port nomor port.
    Ini akan menunjukkan nomor port yang akan dipakai untuk menjalankan squid. Nomor port ini akan dipakai untuk berhubungan dengan klien dan peer.

    3. cache_peer nama_peer tipe_peer nomor_port_http nomor_port_icp option.
    Sintask dari cache peer ini digunakan untuk berhubungan dengan peer lain, dan peer lain yang dikoneksikan ini tipenya bergantung dari tipe peer yang telah dideklarasikan ini, bias bertipe sibling maupun bertipe parent,dan port yang digunakan untuk hubungan ICP maupun HTTP juga dideklarasikan disini, sedangakan untuk parameter option disini ada bermacam-macam salah satunya adalah default yang berarti dia adalah satu-satunya parent yang harus dihubungi (jika bertipe parent) dan proxy-only yang berarti bahwa object yang dipata dari peer tersebut tidak perlu disimpan dalam hardisk local.

    4. Dead_peer_timeout jumlah_detik seconds.
    Masing-masing peer yang telah didefinisikan sebelumnya mempunyai waktu timeout sebesar yang ditentukan dalam konfigurasi ini, Jika peer tidak menjawab kiriman sinyal ICP dalam batas waktu yang telah ditentukan, peer akan dianggap tidak akan dapat dijangkau, dan cache server tidak akan mengambil object dari server yang bersangkutan dalam interval waktu tertentu.

    5. Hierarcy_stoplist pola1 pola2
    Sintaks ini digunakan untuk menyatakan apa yang harus tidak diminta dari peer, melainkan harus langsung dari web server origin, jika pola1 dan pola 2 adalah parameter cgi-bin, ?, dan lain-lain maka jika ada request URL yang mengandung karakter tersebut maka akan diambilkan langsung ke server origin.

    6. Cache_mem jumlah_memori (dalam bytes)
    Sintaks ini akan menentukan batas atas jumlah memori yang digunakan untuk menyimpan antara lain : intransit object yaitu object yang dalam masa transisi antara waktu cache mendownload sampai object disampaikan ke klien, dan hot object, yaitu object yang sering diakses.

    7. Cache_swap_low/high jumlah (dalam persen)
    Squid akan menghapus object yang ada didalam hardisknya jika media tersebut mulai penuh. Ukuran penuh ini yang diset pada cache_swap_low dan cache_swap_high. Bila batas swap_low telah tercapai maka squid mulai menghapus dan jika batas swap_high tercapai maka squid akan semakin sering menghapus.

    8. Cache_dir jenis_file_sistem direktori kapasitas_cache dir_1 jumlah dir_2
    Sintaks ini akan menjelaskan direktori cache yang dipakai, pertama adalah jenis file sistemnya, lalu didirektori mana cache tersebut akan disimpan, selanjutnya ukuran cache tersebut dalam MegaBytes lalu jumlah direktori level 1 dan direktori level 2 yang akan digunakan squid untuk menyimpan objectnya.

    II.1.1 ACL (Access Control List)

    Berikut ini adalah control list yang akan digunakan untuk mengatur control dari ACL, control list tersebut antara lain :
    - http_access
    memperbolehkan acess http
    - icp_access
    memperbolehkan peer untuk mengirimkan icp untuk menquery object
    - miss_access
    memperbolehkan klien meminta object yang belum ada (miss) didalam cache
    - no_cache
    object yang diminta klien tidak perlu disimpan ke hardisk
    - always_direct
    permintaan yang ditangani langsung ke server origin
    - never direct
    permintaan yang ditangani secara tidak langsung ke server origin.

    Sebagai contoh diberikan sintaks konfigurasi ACL seperti dibawah ini :
    #bagian ACL
    ACL localnet src 192.168.100.0/24
    ACL localkomp 127.0.0.1/255.255.255.255
    ACL isp dst 202.59.206.65/30
    ACL allsrc src 0.0.0.0/0.0.0.0
    ACL alldst dst 0.0.0.0/0
    ACL other src 10.10.11.11/32
    ACL domainku srcdomain .jatara.net
    #bagian control list
    http_access deny other
    http_access allow localnet
    http_access allow lokalkomp
    http_access allow domainku
    http_access deny allsrc
    always_direct allow isp
    always_direct deny alldst

    Pada konsep sintaks konfigurasi squid adalah bahwa sesuatu yang telah dieksekusi pada baris yang lebih atas maka dia tidak dieksekusi lagi dibaris yang paling bawah, walaupun dalam parameter ACL yang dibawah tersebut dia juga termasuk, untuk lebih jelasnya, jika ada IP Address 192.168.100.0/24 maka IP Address yang berkisar dari 192.168.100.1 – 192.168.100.254 (ACL localnet) telah diijinkan untuk mengakses http yang ditunjukkan oleh http_access allow localnet, dan dibawahnya ada ACL allsrc yang itu adalah mencakup semua daftar IP Address dan ACL itu tidak diperbolehkan mengakses http, yaitu http_access_deny allsrc, tapi karena pada ACL localnet dia telah dieksekusi untuk sebagai IP Address yang boleh mengakses, maka walaupun dibaris bwahnya di dieksekusi lagi, itu tidak akan berpengaruh,hal-hal seperti itu digunakan untuk seorang administrator cache server untuk melakukan pengontrolan agar tidak akan terlalu detail melakukan pengaturan jika baris atas dan bawah sama-sama saling mempengaruhi.

    II.1.2 Object Cache

    Pengaturan object sebuah cache server merupakan salah satu hal yang perlu diperhatikan disini. Telah diketahui sebelumnya bahwa object disimpan pada dua level cache_dir yang besar levelnya didefinisikan pada konfigurasi utama squid. Object itu sendiri berisikan content URL yang diminta klien dan disimpan dalam bentuk file binary, masing-masing object mempunyai metadata yang sebagian dari isinya disimpan didalam memori untuk memudahkan melacak dimana letak object dan apa isi dari object tersebut. Banyak sifat-sifat yang perlu diamati untuk optimasi squid ini, antara lain :

    Umur object
    Umur obect merupakan sebuah ukuran waktu yang dihabiskan sebuah object untuk tinggal didalam hardisk cache. Umur object dibatasi oleh beberapa factor, yaitu :

    metode penghapusan object
    object dihapus bisa melalui beberap algoritma penghapusan :
    a. Logistic Regression :
    yaitu menghapus object dengan kemungkinan logistic regression terkecil. Kemungkinan logistic regression bisa diartikan sebagai besarnya kemungkinan object tersebut akan diakses diwaktu yang akan dating.

    b. Least Recently Used :
    yaitu metode penghapusan object berdasarkan waktu kapan object tersebut terakhir diakses. Semakin lama (besar) waktunya, kemungkin dihapus juga akan semakin besar.

    c. Least Frequently Used :
    Metode penghapusan object yang paling jarang diakses.

    d. First In First Out :
    Penghapusan yang merunut metode berdasarkan waktu masuk ke dalam cache_dir, yaitu object yang paling awal masuk, berarti itu adalah object yang akan dihapus terlebih dahulu.

    e. Random :
    Menghapus object secara random.

    Kapasitas hardisk cache
    Semakin besar kapasitas cache, berarti semakin lama umur object tersebut bisa disimpan, jika pemakaian hardisk sudah mendekati batas atas (cache_swap_high) penghapusan akan semakin sering dilakukan.

    II.2 KONFIGURASI DAN IMPLEMENTASI

    Diasumsikan instalasi telah selesai dan tidak terdapat kesalahan, langkah berikutnya adalah mengatur konfigurasi squid, bukalah file /etc/squid.conf dengan editor teks favorit anda (vi, pico, dll), file ini merupakan file konfigurasi squid.

    Carilah baris yang berisi perintah berikut :

    # http_port 3128

    Perintah ini akan membuat proxy HTTP menggunakan port 3128 yang merupakan port default untuk squid. Aktifkan dengan menghilangkan tanda #. Anda dapat membuat nilai port HTTP proxy ini sesuai dengan selera anda, tetapi jangan arahkan ke port 80, terutama jika anda juga menjalankan Web Server, karena Web Server juga memakai port tersebut.
    #cache_mem 8 MB

    Perintah tersebut digunakan untuk membatasi banyaknya memori komputer yang akan digunakan squid untuk menyimpan sementara obyek-obyek yang di cache. Batasan ini tidak ketat, suatu waktu jika squid membutuhkan memori lebih, dia dapat menggandakan memori yang dipakainya. Aktifkan baris ini dan ubahlah ukuran cache ini menjadi sebanyak yang anda inginkan, yang harus anda pertimbangkan adalah banyaknya memori yang dimiliki oleh komputer anda.
    Kemudian:
    # cache_access_log /var/log/squid/access.log
    # cache_log /var/log/squid/cache.log
    # cache_store_log /var/log/squid/store.log
    Berikutnya, carilah baris yang berisi perintah berikut :

    # LOGFILE PATHNAMES & CACHE DIRECTORIES
    # ————————————-
    Setting berikut ini digunakan untuk mendefinisikan alokasi penyimpanan web cache kita. Setting yang pertama adalah :

    #cache_dir /var/squid/cache 100 16 256

    Nilai yang ada diatas adalah nilai default squid, jika anda ingin merubahnya maka aktifkan perintah ini.

    Parameter pertama /var/squid/cache adalah nama direktori tempat kita akan menyimpan file-file cache. Anda dapat mengubah parameter ini ke direktori manapun, tetapi yang harus diperhatikan squid tidak akan menciptakan direktori baru, jadi bila parameter ini akan diubah, pastikan direktori tujuannya sudah ada dan squid mempunyai hak akses untukmenulis pada direktori tersebut.

    Parameter selanjutnya, yang bernilai 100 adalah banyaknya ruang pada hard disk (dengan satuan Mega Byte) yang akan digunakan squid untuk menyimpan file-file cache nya. Ubahlah sesuai dengan kebutuhan anda.

    Parameter selanjutnya, disebut dengan Level-1, adalah banyaknya direktori yang akan dibuat oleh squid dalam direktori cache nya. Sebaiknya penulis menyarankan untuk tidak mengubah parameter ini.

    Parameter terakhir, yang disebut dengan Level-2, adalah banyaknya direktori level kedua, yaitu direktori yang dibuat di dalam tiap direktori level pertama diatas.

    Langkah berikutnya, carilah perintah berikut :

    # ACCESS CONTROLS
    # ——————–
    Baris perintah berikut ini digunakan untuk mendefinisikan daftar hak akses dalam jaringan anda, squid menyebutnya dengan Access Control Lists (ACL). Anda dapat mendefinisikan beberapa ACL disini. Dalam bagian access controls ini, carilah baris perintah berikut :

    #Recommended minimum configuration:
    acl all src 0.0.0.0/0.0.0.0
    acl manager proto cache_object
    acl localhost src 127.0.0.1/255.255.255.255
    acl to_localhost dst 127.0.0.0/8
    acl SSL_ports port 443 563
    acl Safe_ports port 80 # http
    acl Safe_ports port 21 # ftp

    acl Safe_ports port 443 563 # https, snews
    acl Safe_ports port 70 # gopher
    acl Safe_ports port 210 # wais
    acl Safe_ports port 1025-65535 # unregistered ports
    acl Safe_ports port 280 # http-mgmt
    acl Safe_ports port 488 # gss-http
    acl Safe_ports port 591 # filemaker
    acl Safe_ports port 777 # multiling http
    acl CONNECT method CONNECT
    dibawah acl localhost src 127.0.0.1/255.255.255.255, tambahkan network yang akan di allowed
    acl jar1 src 172.17.3.0/255.255.255.0
    setelah itu supaya net1 dan net2 td bisa mengakses squid maka tambahkan http_access allow
    cari baris :
    # And finally deny all other access to this proxy
    http_access allow localhost
    http_access deny all
    diantara http_access allow localhost dan http_access deny all tambahkan :
    http_access allow jar1
    baris ini bisa diletakkan di atas http_access allow localhost atau dibawah http_access allow localhost yang penting diatas http_access deny all
    setelah itu simpan. lalu start squid nya
    [root@b301 ~]#squid –z ( hanya sekali pada saat pertama kali seting )
    [root@b301 ~]#/etc/init.d/squid start ( setiap kali akan menjalankan squid )
    setelah itu gunakan testing squidnya menggunakan browser sambil di lihat acess log nya
    [root@b301 ~]#tail -f /home/cache/squid/acces

    sumber : MALING (Malang Linux User Groups)

    site : http://malang.linux.or.id

    October 27, 2007

    Tutorial IPTables

    Filed under: Linux Server — yoner @ 8:07 am

    Source : Maling (Malang Linux User Group)

    written : eko

    Sebelum mulai, diharapkan  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.

    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 :

    1. NAT : Secara umum digunakan untuk melakukan Network Address Translation. NAT adalah penggantian field alamat asal atau alamat tujuan dari sebuah paket.
    2. MANGLE : Digunakan untuk melakukan penghalusan (mangle) paket, seperti TTL, TOS dan MARK.
    3. 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
    Referensi
    
    1. http://www.netfilter.org/
    2. Manual page iptables
    3. Beberapa sumber yang lain, tapi saya lupa )

    October 16, 2007

    Setting Internet Gateway Speedy di Vector Linux 5.1

    Filed under: Linux Server — yoner @ 4:36 am

    Lagi mo coba-coba bikin tutorial internet gateway Speedy di linux vector (my lovely distro) :

    Kebutuhan PC Gateway :

    • PC Pentium III dengan RAM 128(256 recommended)
    • 2 Ethernet Card

    Sekarang mari kita mulai setting :

    • eth0 –> terhubung ke LAN dengan IP 192.168.0.1 netmask 255.255.255.0
    • eth1 –> terhubung ke server internet (modem speedy) dengan IP 10.0.0.1 netmask 255.255.255.248
    • Modem speedy –> diset ipnya 10.0.0.2 netmask 255.255.255.248, untuk dns yg dikasih sama telkom

    Seeting eth0:

    • IP Address 192.168.0.1
    • Netmask 255.255.255.0
    • Gateway10.0.0.2

    Setting eth1

    • IP address 10.0.0.1
    • Netmask 255.255.255.248
    • Gateway 10.0.0.2

    Untuk setting ip gwe divector biasanya pake command “vnetmenu”
    Langkah selanjutnya Setting IP tables, edit file : /etc/rc.d/rc.local, tambahkan baris berikut :

    echo 1 > /proc/sys/net/ipv4/ip_forward
    iptables -A POSTROUTING -t nat -s 192.168.0.0/24 -j MASQUERADE -o eth1

    Setting Squid :

    • Install squid –> installpkg namafile.tgz
    • Buat directroy /cache di root, partisi terpisah lebih baik
    • Buat group untuk squid –> groupadd squid
    • Buat user squid –> useradd squid -g squid -s /dev/null -d /cache
    • Ubah kepemilikan –> chown squid.squid /cache
    • Copy file squid.conf ke directrory squid
    • Jalankan squid untuk pertama kali –> squid -z
    • Jalankan squid –> squid -D
    • Tambahkan squid -D di directory /etc/rc.d/rc.local –> biar running pada waktu start up

    Install HTBtool bandwdth management

    • Buat script htb.sh yang isinya bisa dilihat disini
    • chmod file htb.sh agar bisa di eksekusi –> chmod +x htb.sh
    • Buka /etc/rc.d/rc.local , tambahkan : ./htb.sh –> sesuaikan dengan directory file htb.sh tersimpan

    Untuk setting clients gampanglah tinggal setting ipnya saja dan arahkan untuk gatewaynya ke PC gateway, contoh

    Client1

    IP Address 192.168.0.201

    Netmask 255.255.255.0

    Gateway 192.168.0.1

    Hmmm akhirnya selesai juga

    Blog at WordPress.com.