Monday, December 19, 2005

Instalasi SARG (Serious Post)

Beberapa hari yang lalu sempat buka-buka log squid, sekedar pengen tahu apakah user dalam jaringan suka buka situs yang "aneh-aneh" selain itu koq jadi banyak banget user yang komputernya kena spyware. Idenya kalau ada situs yang "aneh" atau situs-situs yang kebanyakan isinya spyware mending di blok aja. Atau user yang kebanyakan download file yang gede-gede mau digencet sekalian :).
Tapi setelah dilihat log squid secara manual kok bukannya tambah ngerti tapi tambah bingung bacanya, lagian banyak banget isinya. Akhirnya nyerah deh dan coba cari pertolongan ke milis. Menurut anjuran beberapa teman akhirnya diputuskan untuk menggunakan SARG (Squid Access Router Graphic). SARG ini adalah tool sederhana yang digunakan untuk membuat report dari log squid dalam bentuk tampilan html. Berikut sedikit informasi apa-apa yang telah saya lakukan:

I. Persiapan

II. Instalasi
Agar instalasi SARG sukses, maka perlu dilakukan instalasi paket-paket pendukungnya terlebih dahulu.

  • Instalasi zlib (asumsi instalasi dilakukan menggunakan paket source, x disini adalah nomor versi dari file source)
    1. Ekstrak paket source zlib
    $ tar -xzvf zlib-x.x.x.tar.gz
    2. Masuk ke folder hasil ekstraksi
    $ cd zlib-x.x.x.tar.gz
    3. Lakukan konfigurasi paket source
    $ ./configure
    $ make
    4. Proses instalasi, sebelumnya loginlah terlebih dulu sebagai root
    $ su
    # make install
    # exit
  • Instalasi libpng (asumsi instalasi dilakukan menggunakan paket source, x disini adalah nomor versi dari file source)
    1. Ekstrak paket source libpng
    $ tar -xzvf libpng-x.x.x.tar.gz
    2. Masuk ke folder hasil ekstraksi
    $ cd libpng-x.x.x.tar.gz
    3. Lakukan konfigurasi paket source
    $ ./configure
    $ make
    4. Proses instalasi, sebelumnya loginlah terlebih dulu sebagai root
    $ su
    # make install
    # exit
  • Instalasi freetype2 (asumsi instalasi dilakukan menggunakan paket source, x disini adalah nomor versi dari file source)
    1. Ekstrak paket source freetype2
    $ tar -xzvf freetype2-x.x.x.tar.gz
    2. Masuk ke folder hasil ekstraksi
    $ cd freetype2-x.x.x.tar.gz
    3. Lakukan konfigurasi paket source
    $ ./configure
    $ make
    4. Proses instalasi, sebelumnya loginlah terlebih dulu sebagai root
    $ su
    # make install
    # exit
  • Instalasi GD (asumsi instalasi dilakukan menggunakan paket source, x disini adalah nomor versi dari file source)
    1. Ekstrak paket source GD
    $ tar -xzvf gd-x.x.x.tar.gz
    2. Masuk ke folder hasil ekstraksi
    $ cd gd-x.x.x.tar.gz
    3. Lakukan konfigurasi paket source
    $ ./configure
    $ make
    4. Proses instalasi, sebelumnya loginlah terlebih dulu sebagai root
    $ su
    # make install
    # exit
    Lokasi file hasil instalasi secara default diletakkan di direktori "/usr/local/lib"
  • Sebelum instalasi SARG dilakukan, agar library GD dikenali oleh sistem maka perlu dibuatkan path terlebih dahulu ke library GD tersebut, ketik perintah berikut di console sebagai root
    $ su
    # echo "/usr/local/lib" >> /etc/ld.so.conf
    # ldconfig
  • Instalasi SARG (asumsi instalasi dilakukan menggunakan paket source)
    1. Ekstrak paket source SARG
    $ tar -xzvf sarg-x.x.x.tar.gz
    2. Masuk ke folder hasil ekstraksi
    $ cd sarg-x.x.x.tar.gz
    3. Lakukan konfigurasi paket source
    $ ./configure
    $ make
    4. Proses instalasi, sebelumnya loginlah terlebih dulu sebagai root
    $ su
    # make install
    # exit
    Secara default instalasi akan menghasilkan folder:
    - /usr/local/sarg, disini terletak file-file konfigurasi SARG
    - /usr/bin, disini diletakkan file "executable" yang digunakan untuk menggenerate report

Tarik napas dulu :) ----------------------------------------------------------

III. Setting SARG
Setelah proses instalasi selesai sebelum menggunakannya perlu dilakukan perubahan dari file konfigurasi sarg (sarg.conf) yang terletak di folder /usr/local/sarg sesuai kebutuhan. Selain setting melalui file konfigurasi, setting laporan yang ingin ditampilkan dapat juga dilakukan pada saat runtime. Berikut contoh pemakaian SARG:

  • Kita akan buat laporan log squid dari tanggal 10-Desember-2005 sampai 30-Desember-2005. Lokasi penyimpanan hasil report diletakkan di direktori "/var/www/html/sarg/contoh". Sedangkan lokasi file log squid yang akan dibaca ada di "/var/log/squid/access.log". Perintahnya adalah:

    $ /usr/bin/sarg -l /var/log/squid/access.log -o /var/www/html/sarg/contoh -z -d 10/12/2005-30/12/2005

    Otomatis akan hasil laporan akan diletakkan di folder "/var/www/html/sarg/contoh". Untuk mengaksesnya cukup gunakan web browser dan buka file index.html yang dihasilkan dalam folder tersebut.
    Untuk memudahkan pemakaian, contoh skrip tersebut dapat disimpan dalam bentuk file yang executable kemudian jalankan dengan bantuan cron. Berikut contoh-contoh yang diambil dari http://sarg.sourceforge.net/enhancements.php :

    Laporan harian :

    #!/bin/bash
    #Get current dateTODAY=$(date +%d/%m/%Y)
    #Get one week ago todayYESTERDAY=$(date --date "1 day ago" +%d/%m/%Y)
    /usr/bin/sarg -l /var/log/squid/access.log -o /var/www/html/sarg/daily -z -d $YESTERDAY-$TODAY
    exit 0

    Laporan mingguan :

    #!/bin/bash
    #Get current dateTODAY=$(date +%d/%m/%Y)
    #Get one week ago todayYESTERDAY=$(date --date "1 week ago" +%d/%m/%Y)
    /usr/bin/sarg -l /var/log/squid/access.log -o /var/www/html/sarg/weekly -z -d $YESTERDAY-$TODAY
    exit 0

    Laporan bulanan :

    #!/bin/bash
    #Get current dateTODAY=$(date +%d/%m/%Y)
    #Get one week ago todayYESTERDAY=$(date --date "1 month ago" +%d/%m/%Y)
    /usr/bin/sarg -l /var/log/squid/access.log -o /var/www/html/sarg/monthly -z -d $YESTERDAY-$TODAY
    /usr/local/squid/bin/squid -k rotate
    exit 0

    Referensi :
    1. http://sarg.sourceforge.net/sarg.php
    2. http://www.boutell.com
    3. http://www.zlib.net/
    4. http://www.libpng.org/pub/png/
    5. http://freetype.sourceforge.net

Wish Book 1

01:00 tengah malam.
Jadi kepikiran ... dah lama juga nggak ngisi blog. Makanya sekarang aja sempetin. Baru dapet banyak e-book nih dari milis, jadi sayang mau tidur di awal waktu. Nanggung, soalnya suka lupa lagi apa yang dibaca semalam kalau nggak sampai ngerti betul. Tapi baca e-book langsung di komputer juga harus hati-hati, soalnya kalau nggak jaga-jaga mata bisa-bisa rabun duluan (uuh jangan deh ...). Btw jadi pingin beli yang versi hardcopynya, untuk sementara aku tulis aja dulu dalam daftar wish list:
2. Head First Design Pattern

Transparent Proxy (Serious Post)

Sempat suatu hari saya dibikin penasaran oleh user yang browsing di lingkungan jaringan. Karena IP komputer miliknya tidak tercatat dalam log squid, jadi tidak bisa diamati ia browsing kemana saja. Setelah saya cek ternyata ia set browsernya agar saat ia browsing tidak melalui proxy. Kalau cuma 1 orang saja sih nggak masalah untuk merubah ulang settingannya, tapi kalau berpuluh-puluh komputer seperti itu kan rumit juga. Akhirnya dapat solusi juga dari milis, yaitu menggunakan transparent proxy. Konsepnya sih sederhana, yaitu memaksa koneksi internet user agar selalu melalui mesin proxy kita -dengan atau tanpa setting di menu browser-. Caranya adalah dengan menerapkan rule (baca aturan) pada firewall agar tiap kali ada permintaan membuka http atau https dari client akan langsung di arahkan ke mesin proxy.
Berikut setting firewall yang saya terapkan, kebetulan saya orang yang masih males dan belum sempat upgrade linux box saya, jadinya firewall yang digunakan masih ipchains (untuk kernel linux terbaru menggunakan iptables):

Seperti biasa, loginlah sebagai root terlebih dahulu. Saya asumsikan nomor ip proxy adalah 192.168.1.1

$ su

Ketikkan perintah berikut untuk menambahkan rule ke firewall agar user yang browsing ke internet di arahkan ke mesin proxy

# /sbin/ipchains –A input -s ! 192.168.1.1 -d ! 192.168.1.1 http -p TCP -j REDIRECT 3128
# /sbin/ipchains -A input -s ! 192.168.1.1 -d ! 192.168.1.1 https -p TCP -j REDIRECT 3128

Sedangkan rule berikut gunanya adalah untuk memastikan agar mesin proxy kita tidak dipakai orang luar

# /sbin/ipchains -A input -s ! 192.168.1.1 -d ! 192.168.1.1 8080 -p TCP -j REJECT
# /sbin/ipchains -A input -s ! 192.168.1.1 -d ! 192.168.1.1 3128 -p TCP -j REJECT

Set ulang konfigurasi squid agar mendukung transparent proxy

$ su
# vi /etc/squid/squid.conf

Tambahkanlah baris berikut kedalam konfigurasi squid (file squid.conf)

httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on