34
SQUID DAN SARG [email protected] Proxy Server Proxy Server adalah sistem komputer yang berada antara client yang merequest web document ke target server (web server )/ komputer lain. Atau secara simpelnya, proxy server menjembatani komunikasi antar client dan target server tanpa memodifikasi pesan request dan reply. Cara Kerja: Dari gambar diatas kita bisa ambil contoh untuk cara kerja proxy server: 1. Client request untuk web document ke webserver. 2. Proxy server akan meng hijack request tersebut, dan melihat konfigurasi yang ada pada proxy untuk melihat aturan yang dimasukan oleh administrator. 3. Jika diperbolehkan lewat, proxy server akan memforwardkan request dari client tersebut ke webserver. 4. Saat pesan reply dijawab dari web server, proxy server akan memforwardkan ke client yang tadi request.

Modul Praktikum Uji Kompetensi - Squid Proxy Dan Sarg

Embed Size (px)

DESCRIPTION

Modul untuk SMK jurusan informatika

Citation preview

  • SQUID DAN SARG [email protected]

    Proxy Server

    Proxy Server adalah sistem komputer yang berada antara client yang merequest web document

    ke target server (web server )/ komputer lain. Atau secara simpelnya, proxy server menjembatani

    komunikasi antar client dan target server tanpa memodifikasi pesan request dan reply.

    Cara Kerja:

    Dari gambar diatas kita bisa ambil contoh untuk cara kerja proxy server:

    1. Client request untuk web document ke webserver.

    2. Proxy server akan meng hijack request tersebut, dan melihat konfigurasi yang ada pada

    proxy untuk melihat aturan yang dimasukan oleh administrator.

    3. Jika diperbolehkan lewat, proxy server akan memforwardkan request dari client tersebut

    ke webserver.

    4. Saat pesan reply dijawab dari web server, proxy server akan memforwardkan ke client

    yang tadi request.

  • SQUID DAN SARG [email protected]

    Dengan gambaran diatas client sebenarnya komunikasi langsung dengan web server, tetapi

    sebenarnya pesan tersebut melewati proxy sever dahulu.

    Pada implementasi Advance Server Proxy dapat juga bertugas sebagai :

    Memfilter request berdasarkan berbagai aturan yang dikonfigurasi administrator.

    Aturannya dapat berdasarkan IP address client atau server, Protocol, Type content dokumen, dll.

    Menghemat bandwidth.

    Menambah user experience saat browsing menjadi lebih ceapat, karena content web

    dicache pada proxy server.

    Menambah network policy.

    Montitoring user traffic, reporting penggunaan internet user.

    Menambah privacy user, dengan cara tidak mengekspose client langsung ke internet.

    Load balance network traffic lewat multiple koneksi network.

    Reverse Proxy

    Reverse proxy adalah teknik yang digunakan untuk menyimpan reply dari web server, kemudian

    disimpan dalam local server proxy, sehingga jika ada client lain yang harus mendapatkan reply

    yang sama tidak perlu ke web server tetapi hanya ke proxy server saja.

    Teknik ini sering disebut web caching.

    Web caching sering digunakan untuk :

  • SQUID DAN SARG [email protected]

    Mengurangi penggunaan bandwidth. Jadi jika ada static komunikasi dari client ke Web

    server tentang CSS, file java script, Video, dan lain-lain dapat disimpan pada proxy server.

    Oleh ISP digunakan untuk menambah performa experience user saat browsing internet.

    Squid

    Squid adalah aplikasi yang dapat digunakan sebagai proxy server atau reverse proxy. Aplikasi

    squid sendiri dapat berjalan pada sistem operasi Linux, UNIX, Windows.

    Aplikasi squid sendiri dapat dipasangkan pada server dengan cara:

    1. Install lewat source code.

    2. Install lewat binary seperti .deb .RPM dll.

    File source code dan binary dapat didownload di official website squid http://squid-cache.org.

    Ada banyak versi untuk aplikasi squid sendiri namun kita harus memilih versi yang stable dan

    paling terbaru, untuk melihat list versi squid dapat ke alamat http://squid-cache.org/Versions/

    Pada modul ini installasi hanya akan menggunakan cara lewat nomor 2 yaitu install lewat binary.

    Alat dan Bahan Untuk Praktek pada modul

    1. Komputer yang sudah diinstall OS Debian GNU/Linux 7.0 (wheezy) 32 bit.

    2. Koneksi ke internet.

    3. Client dengan sistem operasi windows/linux.

  • SQUID DAN SARG [email protected]

    No Langkah Pengerjaan Screenshoot

    Install Aplikasi Squid

    1 Pada bagian pertama ini kita akan menginstall squid

    dengan menggunakan binary. Caranya kita lihat

    apakah aplikasi squid3 ada pada repository kita.

    # aptitude search squid

    - dari gambar disamping kita lihat ada banyak binary

    yang masuk dalam kategori searching kata squid,

    2 install aplikasi Squid

    # apt-get install squid3

    - tekan tombol y untuk memulai installasi.

  • SQUID DAN SARG [email protected]

    3 Untuk melihat apakah squid sudah dinstall dapat

    menggunakan peritah:

    # dpkg --get-selections |grep squid

    4 Untuk melihat versi squid yang diinstall dan opsi apa

    saja yang dipasang saat installasi dapat dilihat

    menggunakan perintah:

    # squid3 v

  • SQUID DAN SARG [email protected]

    Struktur Direktori Squid

    Agar lebih mengerti tentang aplikasi squid kita harus tahu dimana saja folder/file squid yang

    dipasang saat installasi, berikut folder squid yang harus diketahui:

    /usr/lib/squid3/

    Folder ini berisi informasi library untuk menjalankan aplikasi squid

    /etc/squid3

    Berisi file konfigurasi aplikasi squid

    /usr/sbin/squid3

    Ini adalah program utama dari squid, digunakan sebagai deamon aplikasi squid.

    /usr/share/doc/squid3

    Berisi informasi manual page untuk aplikasi squid.

    /var/log/squid3/

    Berisi informasi log tentang acces log dan cache log dari squid.

    /var/cache

    Directory default saat kita menggunakan fitur cache pada hardisk

  • SQUID DAN SARG [email protected]

    Quick Start Squid

    NO Langkah pengerjaan Screenshoot

    Konfigurasi Quick Start Squid

    1. Sebelum mengetahui squid lebih jauh, kita buat dahulu

    minimal konfigurasi dari squid.

    Konfigurasi utama squid ada di directory /etc/squid3/

    File konfigurasi squid.conf

    Buat backup file konfigurasi default dari squid.

    # cp /etc/squid3/squid.conf

    /etc/squid3/squid.conf.asli

  • SQUID DAN SARG [email protected]

    2 Buka file squid.conf dan tambahkan konfigurasi

    berikut:

    # nano /etc/squid3/squid.conf

    tambahkan baris berikut:

    cache_dir ufs /var/squid/cache 500 16 256

    acl client_pc src 10.205.11.166 # Ganti

    dengan IP address client

    http_access allow client_pc

    access_log /var/log/squid3/access.log squid

    3 Untuk mengecek konfigurasi squid jika ada error dapat

    dengan perintah:

    # squid3 f /etc/squid3/squid.conf

  • SQUID DAN SARG [email protected]

    4 Terkahir kita butuh directory untuk menyimpan file cache,

    buat directory tersebut dan rubah owner direkotry tersebut

    menjadi squid: # mkdir /var/squid

    # mkdir /var/squid/cache

    # chown R proxy:proxy /var/squid/cache

    5 Matikan service squid, kemudian jalanakan menggunakan

    perintah squid3 z, agar squid dapat membuat cache

    directory:

    # /etc/init.d/squid3 stop

    # squid3 -z

    6 Jalankan service squid

    # /etc/init.d/squid3 start

  • SQUID DAN SARG [email protected]

    7 Coba lakukan testing dengan menggunakan pc user IP

    10.205.11.166, kemudian buka web browser pada bagian

    proxy masukan IP address proxy dan port proxy (default

    port 3128):

  • SQUID DAN SARG [email protected]

    8 Cobalah lakukan buka situs web. www.itb.ac.id

    9 Coba lihat log dari squid dengan perintah:

    # tail f /var/log/squid3/access.log

  • SQUID DAN SARG [email protected]

    Type Perintah Pada Squid

    Sebelum kita lanjut ke lab squid berikutnya, kita harus mengerti ada beberap type perintah

    yang dapat dimasukan dalam file konfigurasi squid.conf, dengan mengerti hal tersebut

    kedepannya kita dapat dengan mudah troubleshoot masalah contohnya.

    Perintah single value

    type perintah ini hanya dapat digunakan satu kali dalam konfigurasi squid.conf, jika ada

    2 perintah yang sama maka akan direplace contohnya adalah perintah logfile_rotate:

    logfile_rotate 10

    # Few lines containing other configuration directives

    logfile_rotate 5

    Perintah Boolean

    Dalam konfigurasi squid juga ada perintah untuk Boolean, yaitu perintah untuk ON/OFF

    sebuah fitur.

    query_icmp on

    log_icp_queries off

    url_rewrite_bypass off

    Perintah Multiple Value

    Type perintah ini dapat kita gunakan beberapa kali dalam konfigurasi squid.conf,

    contohnya:

    dns_nameservers proxy.example.com

    dns_nameservers squid.example.com

  • SQUID DAN SARG [email protected]

    Perintah dengan value ukuran waktu

    Type perintah ini menggunakan nilai waktu sebagai opsinya, seperti seconds, minutes,

    hours. Contoh:

    request_timeout 3 hours

    persistent_request_timeout 2 minutes

    Perintah dengan value ukuran memory

    Type perintah ini menggunakan ukuran memory sebagai opsinya, seperti bytes, KB, MB,

    GB.

    contoh:

    reply_body_max_size 10 MB

    cache_mem 512 MB

    maximum_object_in_memory 8192 KB

  • SQUID DAN SARG [email protected]

    Access Control Pada Squid

    Pada bagian sebelumnya kita mengetahui type perintah apa saja yang dapat dimasukan

    dalam konfigurasi squid.conf. Pada bagian ini kita akan mempelajari bagiamana aplikasi squid

    mengontrol akses client, web, reply dll.

    Ada 2 elemen untuk mengontrol hal tersebut yaitu ACL Type dan access List. Access list

    bekerja untuk meng allow atau deny yang diikuti oleh satu atau sekumpulan ACL Type.

    Contoh ACL type yang tersedia:

    Src : Source (client) IP address.

    Dst : Tujuan (server) IP address.

    Time : ukuran waktu.

    Proto : transfer protocol (http,ftp).

    Arp : Ethernet (mac address).

    Dstdomain : tujuan server berdasarkan domain.

    Srcdomain : source client berdasarkan domain.

    Adapun penulisan untuk ACL Type adalah:

    acl ACL_NAME ACL_TYPE value

    acl ACL_NAME ACL_TYPE "/path/to/filename"

    - ACL_NAME : nama dari acl, bisa ditulis bebas seperti komputer_1, case sensitive.

    - ACL_TYPE : nama dari type acl, contohnya dstdomain.

    - Value : nilai dari acl type tersebut bisa berupa waktu, IP address tergantung dari acl type.

    Value juga dapat disimpan dibeda file.

    Contoh penulisan type acl.

  • SQUID DAN SARG [email protected]

    1. Menggunakan acl type src

    acl komputer_staff src 167.205.84.10

    2. Menggunakan acl type dstdomain dengan multiple value.

    acl blok_website dstdomain kompas.com

    acl blok_website dstdomain facebook.com

    3. Menggunakan acl type arp dengan value ada difile konfigurasi yang berbeda.

    acl mac_dosen arp /etc/squid3/client_dosen

    Access List

    Saat menggunakan squid, access list bertugas untuk mengontrol akses berbagai resource,

    contohnya apkah di allow/deny. Pengontrolan akses ini berdasarkan aturan dari ACL type yang

    kita tulis.

    Ada berbagai macam acess list yang tersedia dalam squid:

    http_access : memperbolehkan http clients (browser) untuk mengakses http port (80). Ini

    adalah access list utama dalam squid.

    http_reply_access: memperbolehkan http client (browser) untuk menerima jawaban dari

    pesan request yang dikirim.

    Icp_access: memperbolehkan neighbor squid untuk mengquery cache kita.

    Always_direct : mengontrol request untuk selalu diforwardkan langsung ke server

    tujuan.

    Never_direct: mengontrol request untuk tidak memforwardkan langsung ke server.

    Cache : mengatur website/server mana yang web documentnya harus di simpan dalam

    cache.

  • SQUID DAN SARG [email protected]

    Format penulisan Access list:

    http_access allow|deny ACL_NAME http_access allow|deny [!]ACL_NAME

    - http_access : kita dapat mengontrol transaksi http lewat squid apakah di allow/deny.

    - ACL_NAME : nama acl type yang sudah dideklarasikan.

    - [!] : artinya kecuali.

    - Jika tidak ada akses yang match berdasarkan access list defaultnya pada akhir baris ada

    http_access deny all. Baris ini untuk mengegaskan bahwa selain aturan yang dibuat

    harus oleh admin di deny.

    Contoh penulisan access type digabung dengan access list

    Kasus 1 : hanya alamat IP 167.205.79.0/24 yang dapat menggunakan squid server, selain

    itu tidak boleh:

    Konfigurasi

    acl client_itb src 167.205.79.0/24

    http_access allow client_itb

    Kasus 2 : alamat website kompas.com dan detik.com tidak boleh di cache pada server.

    acl kompas dstdomain kompas.com

    acl detik dstdomain detik.com

    cache deny kompas detik

  • SQUID DAN SARG [email protected]

    Kasus 3 : mencegah user untuk mengakses situs yang mengandung kata porn dan sex.

    acl sex url_regex sex

    acl porn url_regex porn

    acl client_itb src 167.205.79.0/24

    http_access deny sex

    http_access deny porn

    http_access allow client_itb

    http_access deny all

  • SQUID DAN SARG [email protected]

    Lab Squid berdasarkan skenario.

    Pada modul ini tidak akan dibahas secara detail tentang squid secara detail, tetapi kita

    akan mencoba implementasi squid berdasarkan scenario tertentu.

    Sebelum kita memulai scenario yang pertama dalam squid, kita buat dulu basic

    konfigurasi dari squid. Jika kita buka file /etc/squid3/squid.conf dalam baris tersebut banyak

    baris yang di # artinya konfigurasi tersebut tidak akan dibaca oleh daemon squid. Jika kita lihat

    default konfigurasinya hanya baris konfigurasi dibawah ini yang dibaca oleh squid.

    acl manager proto cache_object

    acl localhost src 127.0.0.1/32 ::1

    acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1

    acl SSL_ports port 443

    acl Safe_ports port 80 # http

    acl Safe_ports port 21 # ftp

    acl Safe_ports port 443 # https

    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

    http_access allow manager localhost

    http_access deny manager

  • SQUID DAN SARG [email protected]

    http_access deny !Safe_ports

    http_access deny CONNECT !SSL_ports

    http_access allow localhost

    http_access deny all

    http_port 3128

    coredump_dir /var/spool/squid3

    refresh_pattern ^ftp: 1440 20% 10080

    refresh_pattern ^gopher: 1440 0% 1440

    refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 refresh_pattern . 0 20% 4320

  • SQUID DAN SARG [email protected]

    LAB 2: Transparent Proxy

    Topology:

    Konsep Transparent Proxy:

    Transparent proxy adalah sebuah teknik untuk memaksa client (PC) menggunakan Proxy

    server tanpa harus mengubah sedikitpun konfigurasi pada sisi client. Konfigurasi disini seperti

    mengubah settingan proxy pada web browser dan juga system komputer.

    Note: Transparent proy sama saja istilahnya dengan intercept proxy.

    Keuntungan :

    - Zero client configuration : client tidak perlu mengkonfigurasi setting proxy, sangat

    berguna jika client proxy kita banyak.

    - Menambah reliability : kita dapat langung memforwardkan request client lewat

    router/switch jika proxy kita dalam keadaan mati.

    Kerugian :

    - Hanya support protocol HTTP.

    - Tidak dapat menggunakan proxy authentikasi

  • SQUID DAN SARG [email protected]

    - Meskipun hanya protocol HTTP yang dapat digunakan untuk pengecekan, ada beberapa

    proctocol yang harus terhubung langsung tanpa melewati server proxy yaitu HTTPS,

    FTP, DNS.

    Cara Kerja

    Dari gambar topology diatas kita akan coba jelaskan cara kerja transparent proxy.

    1. PC client akan browsing website contohnya facebook.com menggunakan http dan https port

    80/443.

    2. Pesan tersebut akan diterima oleh Gateway karena pesan server tersebut berperan sebagai

    jalur untuk keluar jaringan daerah Client.

    3. Saat Gateway menerima pesan dengan port http/https port 80/443 gateway akan

    melamparkan/redirect ke server proxy dengan port 3128.

    4. Server Proxy kemudian akan mengidentifikasi pesan tersebut berdasarkan konfigurasi yang

    dimasukan oleh administrator.

    5. Jika pesan tersebut diperbolehkan oleh proxy untuk dikirim, maka gateway akan

    mengirimkan ke alamat facebook.com.

    Skenario yang akan dibuat:

    - Port proxy = 3128

    - Cache manager = [email protected]

    - Visible host = comlabs.itb.ac.id

    - Website yang diblok = kompas.com dan detik.com

  • SQUID DAN SARG [email protected]

    NO Langkah pengerjaan Screenshoot

    1 Konfigurasi IP address Server

    proxy/gateway sesuai topology.

    # nano

    /etc/network/interfaces

    2 Restart service network

    # /etc/init.d/networking

    restart

    3 Untuk memverifikasi konfigurasi ip

    address dapat menggunakan

    perintah:

    # ifconfig

  • SQUID DAN SARG [email protected]

    4 Untuk memverifikasi IP default

    gateway pada sistem opreasi

    linux/unix

    # netstat nr

    5 Pada topology diatas kita lihat

    bahwa server proxy juga sebagai

    gateway, maka server tersebut harus

    bisa melakukan routing. Untuk

    mengenable fitur routing pada linux

    caranya buka file:

    nano /etc/sysctl.conf

    kemudaian hapus tanda # pada

    baris berikut:

  • SQUID DAN SARG [email protected]

    6 Tambahkan fitur NAT (network

    address translation) agar network

    client dapat terhubung ke alamat IP

    publik menggunakan IPtables

    # iptables -t nat -A

    POSTROUTING -o eth0 -j

    MASQUERADE

    7 Lakukan konfigurasi untuk

    mengarahkan paket dengan port 80

    (http) browsing dari client (eth1)

    untuk diarahkan ke aplikasi squid

    proxy port (3128) menggunakan IP

    tables.

    # iptables -t nat -A

    PREROUTING -i eth1 -p tcp --

    dport 80 -j REDIRECT --to-

    port 3128

  • SQUID DAN SARG [email protected]

    Mari kita membaca apa konfigurasi yang dimasukan.

    - -t = nama table (yaitu table NAT)

    - -A = tambahkan baris firewall

    - PREROUTING = filtering akan dilakukan sebelum routing.

    - -i eth1 = paket yang dating dari eth1 (network client).

    - -p tcp = protocol yang di filter.

    - --dport = protocol port number 80 (http)

    - -j REDIRECT = aksi yang akan dilakukan adalah di REDIRECT / dilemparkan.

    - --to-port 3128= ke port 3128 yaitu aplikasi squid.

    jika kita coba runtunkan maka akan dibaca seperti berikut.

    Tambahkan filter ke dalam table NAT yaitu sebelum paket di routingkan yang datang pada interface eth1 dengan tujuan paket port

    80 (http) akan di REDIRECT/dilemparkan ke port 3128 yaitu aplikasi squid.

  • SQUID DAN SARG [email protected]

    8 Save konfigurasi IP tables yang dibuat

    # iptables-save

    9 Langkah selanjutnya konfigurasi aplikasi

    squid untuk menjalankan fitur transparent

    proxy dan melakukan konfiguras sesuai

    scenario:

    http_port 3128 transparent

    acl manager proto cache_object

    acl localhost src 127.0.0.1/32 ::1

    acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1

    ## ACL BLOK SITE kompas.com dan detik.com ##

    acl blok_site dstdomain kompas.com

    acl blok_site dstdomain detik.com

    ## ACL BLOK regex/url yang mengandung kata facebook dan twitter ##

    acl facebook_regex url_regex -i kompas

    acl twitter_regex url_regex -i detik

    ## ACL IP Komputer yang boleh akses ##

    acl komputer_user src 192.168.0.0/24

  • SQUID DAN SARG [email protected]

    ## informasi email admin saat error/deny page (CACHE MANAGER) ##

    cache_mgr [email protected]

    ## INFORMASI VISIBLE HOSTNAME

    visible_hostname comlabs.itb.ac.id

    ## access list control ##

    http_access allow localhost

    http_access deny blok_site

    http_access deny facebook_regex

    http_access deny twitter_regex

    http_access allow komputer_user

    http_access deny all

  • SQUID DAN SARG [email protected]

    PC Client.

    1. Konfigurasi IP address client seperti dibawah ini.

    2. Testing konfigurasi yang dilakukan untuk transparent proxy menggunakan browser tanpa

    harus setting proxy. Buka alamat itb.ac.id dan kaskus.com harusnya dapat dibuka.

  • SQUID DAN SARG [email protected]

    3. Sekarang coba buka alamat kompas.com dan detik.com pasti diblok.

  • SQUID DAN SARG [email protected]

    SARG (Squid Analysis Report Generator)

    Sarg adalah tool yang dapat melihat user mana saja yang menggunakan proxy squid kita. Sarg

    berisi informasi tentang users, IP address, Bytes, sites dan waktu user mengkases dalam halaman

    website.

    No Langkah Pengerjaan Screenshoot

    1 Untuk menginstall aplikasi sarg serta web servernya pada

    debian dapat dengan

    perintah:

    # apt-get install sarg apache2 libapache2-mod-php5

    2 Konfigurasi aplikasi sarg, konfigurasi sarg sendiri

    banyak opsinya namun kali ini

    kita akan coba merubah :

    - File access log squid - Output directory untuk

    halaman web

    nano /etc/sarg/sarg.conf

    # TAG: access_log file

    # Where is the access.log file

    # sarg -l file

    #

    access_log /var/log/squid3/access.log

    # TAG: output_dir

    # The reports will be saved # in that directory

    # sarg -o dir

    #

    output_dir /var/www/squid-reports

  • SQUID DAN SARG [email protected]

    3 Setelah melakukan konfigurasi, selanjutnya generate sarg.

    Proses ini untuk mengkonversi

    informasi access.log pada squid

    menjadi halaman HTML.

    # sarg x

    3 Buka halama browser dan akses menggunakan alamat:

    http://IP_server_proxy/squid-

    reports

  • SQUID DAN SARG [email protected]

    4 Halaman TOP sites.

    5 Halaman denied access.

  • SQUID DAN SARG [email protected]

    6 Untuk membuat Sarg otomatis generate access.log menjadi

    halaman HTML maka gunakan

    crontab.

    # crontab e

    * */1 * * *

    /usr/bin/sarg -x

    server proxy akan otomatis

    menggenrate access.log

    menjadi halaman html satu

    jam sekali setiap hari.