Anda di halaman 1dari 34

SQUID DAN SARG Gulam@staff.itb.ac.

id

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 Gulam@staff.itb.ac.id

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 Gulam@staff.itb.ac.id

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 Gulam@staff.itb.ac.id


No
Langkah Pengerjaan
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,

install aplikasi Squid


# apt-get install squid3

- tekan tombol y untuk memulai installasi.

Screenshoot

SQUID DAN SARG Gulam@staff.itb.ac.id


3

Untuk melihat apakah squid sudah dinstall dapat


menggunakan peritah:
# dpkg --get-selections |grep squid

Untuk melihat versi squid yang diinstall dan opsi apa


saja yang dipasang saat installasi dapat dilihat
menggunakan perintah:
# squid3 v

SQUID DAN SARG Gulam@staff.itb.ac.id

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 Gulam@staff.itb.ac.id

Quick Start Squid

NO
Langkah pengerjaan
Screenshoot
Konfigurasi Quick Start Squid
Sebelum mengetahui squid lebih jauh, kita buat dahulu
1.
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 Gulam@staff.itb.ac.id

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

Untuk mengecek konfigurasi squid jika ada error dapat


dengan perintah:
# squid3 f /etc/squid3/squid.conf

SQUID DAN SARG Gulam@staff.itb.ac.id

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

Matikan service squid, kemudian jalanakan menggunakan


perintah squid3 z, agar squid dapat membuat cache
directory:
# /etc/init.d/squid3 stop
# squid3 -z

Jalankan service squid


# /etc/init.d/squid3 start

SQUID DAN SARG Gulam@staff.itb.ac.id

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 Gulam@staff.itb.ac.id

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

Coba lihat log dari squid dengan perintah:


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

SQUID DAN SARG Gulam@staff.itb.ac.id

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 Gulam@staff.itb.ac.id

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 Gulam@staff.itb.ac.id

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 Gulam@staff.itb.ac.id

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 Gulam@staff.itb.ac.id

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 Gulam@staff.itb.ac.id

 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 Gulam@staff.itb.ac.id

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 Gulam@staff.itb.ac.id


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%

refresh_pattern .

4320

20%

SQUID DAN SARG Gulam@staff.itb.ac.id

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 Gulam@staff.itb.ac.id

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 = admin@comlabs.itb.ac.id

Visible host = comlabs.itb.ac.id

Website yang diblok = kompas.com dan detik.com

SQUID DAN SARG Gulam@staff.itb.ac.id

NO

Langkah pengerjaan

Konfigurasi IP address Server


proxy/gateway sesuai topology.
# nano
/etc/network/interfaces

Restart service network


# /etc/init.d/networking
restart

Untuk memverifikasi konfigurasi ip


address dapat menggunakan
perintah:
# ifconfig

Screenshoot

SQUID DAN SARG Gulam@staff.itb.ac.id

Untuk memverifikasi IP default


gateway pada sistem opreasi
linux/unix
# netstat nr

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 Gulam@staff.itb.ac.id

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

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 --toport 3128

SQUID DAN SARG Gulam@staff.itb.ac.id

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 Gulam@staff.itb.ac.id

Save konfigurasi IP tables yang dibuat


# iptables-save

Langkah selanjutnya konfigurasi aplikasi

http_port 3128 transparent

squid untuk menjalankan fitur transparent


acl manager proto cache_object

proxy dan melakukan konfiguras sesuai


acl localhost src 127.0.0.1/32 ::1

scenario:

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 Gulam@staff.itb.ac.id


## informasi email admin saat error/deny page (CACHE MANAGER) ##
cache_mgr admin@comlabs.itb.ac.id
## 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 Gulam@staff.itb.ac.id

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 Gulam@staff.itb.ac.id


3.

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

SQUID DAN SARG Gulam@staff.itb.ac.id

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
1

Screenshoot

Untuk menginstall aplikasi


sarg serta web servernya pada
debian dapat dengan
perintah:
# apt-get install
sarg apache2
libapache2-mod-php5

Konfigurasi aplikasi sarg,


konfigurasi sarg sendiri
banyak opsinya namun kali ini
kita akan coba merubah :

# TAG:

access_log file

Where is the access.log file

sarg -l file

File access log squid


Output directory untuk
halaman web

nano
/etc/sarg/sarg.conf

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 Gulam@staff.itb.ac.id

Setelah melakukan konfigurasi,


selanjutnya generate sarg.
Proses ini untuk mengkonversi
informasi access.log pada squid
menjadi halaman HTML.

# sarg x

Buka halama browser dan akses


menggunakan alamat:
http://IP_server_proxy/squidreports

SQUID DAN SARG Gulam@staff.itb.ac.id

Halaman TOP sites.

Halaman denied access.

SQUID DAN SARG Gulam@staff.itb.ac.id

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.