Proxy Server
1.
Pendahuluan
Proxy server sudah
menjadi hal yang popular di kalangan para pengguna internet saat ini, berkaitan
dengan kemampuannya untuk menghemat bandwith, meningkatkan keamanan, dan
menambah kecepatan web-surfing.
Dalam jaringan
yang menerapkan sistem proxy, hubungan komunikasi ke internet dilakukan melalui
sistem pendelegasian. Komputer-komputer yang dapat dikenali oleh internet
bertindak sebagai wakil.
2.
Proxy Server Squid
Proxy server yang
cukup popular saat ini adalah squid, karena selain gratis juga mendukung ICP.
ICP digunakan untuk pertukaran data tentang suatu URL dengan cache-cache
lainnya. Secara sederhana, squid dapat dikatakan sebagai software yang
diaplikasikan untuk membuat http atau ftp cache. Cara kerja squid dapat
dianalogikan seperti browser (IE/Opera/Netscape) yang menyimpan data suatu site
di hardisk sehingga untuk menampilkan site yang sama tinggal mengambil data di
cachenya.
Squid dapat
dikonfigurasikan sebagai :
§
Mode httpd-accelerator untuk meningkatkan performansi web server kita.
§
Proxy caching-server agar seluruh user dalam jaringan kita dapat
menggunakan squid untuk mengakses internet.
Pada konfigurasi
pertama, squid server berlaku seperti reverse proxy-cache, squid akan menerima
permintaan client, memberikan data di cachenya, jika tidak ada akan mengambil
langsung dari server aslinya (reverse proxy).
Sebagai proxy
cache server, kita dapat mengontrol secara keseluruhan kinerja jaringan kita
dan memberlakukan beberapa aturan dalam memberkian data yang dapat
dilihat, diakses atau didownload. Kita juga dapat mengontrol penggunaan
bandwith, waktu koneksi dan sebagainya. Sebuah proxy cache dapat
dikonfigurasikan sebagai Squid dapat menghemat bandwith dapat
diterangkan sebagai berikut :
Misal suatu host
memin ta www.detik.com, maka squid akan mengambil dan
meletakkannya di hardisk server untuk selanjutnya diambil oleh host yang
bersangkutan. Bila ada host lain yang meminta data yang sama, server tidak
perlu lagi mendownloadnya dari www.detik.com, tapi cukup memberikan data yang
ada di cachenya sehingga akan lebih cepat dan menghemat bandwith. Untuk lebih
jelasnya perhatikan gambar berikut ini:
Gambar
Posisi host di internet
Gambar Posisi host di
internet
Selain itu, squid
dapat melakukan filtering, yaitu squid dapat memblok permintaan cliet terhadap
URL-URL tertentu, sehingga pengelola jaringan dapatlebih santai tanpa khawatir
adanya penyalahgunaan yang tidak dikehendaki. Dalam squid dikenal istilah
parent dan sibling. Parent akan mengambil langsung ke web site yang diminta,
sedangkan sibling akan mencarinya dulu ke parent. Bila tidak ada, maka sibling
mencarinya langsung ke web site yang bersangkutan.
Sebuah proxy cache
dapat dikonfigurasikan untuk berjalan standalone server atau sebagai hierarki
cache dengan dengan proxy-proxy lainnya, yang akan kita bahas lebih lanjut
berikut ini.
Standalone server, tanpa parent dan sibling
Ini merupakan konfigurasi yang
paling sederhana yang biasa dipakai oleh ISP (Internet Service
Provider) dan warung internet dimana squid server local akan langsung
mencari ke web server www.detik.com untuk memenuhi permintaan
client bila data tidak terdapat di cache.
§ Sibling tanpa
parent
Biasanya konfigurasi ini
dipakai untuk jaringan yang tidak terlalu besar. Permintaan oleh klien pada
suatu URL akan diterima lokal yang akan mencarinya ke sibling , bila tidak ada,
lokal akan langsung mencarinya langsung ke webserver yang bersangkutan.
§ Parent dan
sibling
Biasanya konfigurasi ini
diterapkan untuk jaringan yang besar. Efisiensi jaringan ini cukup baik, karena
yang bekerja untuk mendapatkan halaman web keluar jaringan hanyalah parent
sisanya sibling dan para client tidak dapat memperolehnya secara langsung (dengan
firewall). Klien yang meminta halaman web www.detik.com akan diterima squid server
lokal yang kemudian akan memeriksa cachenya, bila tidak ada dia akan mencari ke
sibling, bila ada sibling akan memberikannya ke lokal, namun bila tidak ada
lokal akan meminta ke parent. Sebagai parent ia harus melayani permintaan ini.
Walaupun ia tidak memiliki halaman yang diminta, ia harus memenuhinya dengan
mengambil langsungke www.detik.com. Setelah itu permintaan dikembalikan ke
lokal dan akhirnya ke klien.
1. Hierarki Squid
Server proxy dapat
dihubungkan dengan server-server proxy lain dan membentuk hierarki
seperti pada sebuah organisasi. Jika server proxy bergabung dalam sebuah
hierarki, sebuah server proxy bisa memilih untuk mengambil dokumen yang
diinginkan dari server proxy lain dalam hierarki atau mengambil dari server
asal. Hierarki ini terdiri dari cache pada tingkat nasional, regional, dan
organisasi. Dalam prototipe ini cache pada tingkat nasional melayani permintaan
akses untuk domain negara tersebut. Misalnya terdapat permintaan dokumen dari
URL http://www.republika.co.id yang berada di bawah domain id (Indonesia), maka
dokumen tersebut diminta dari cache tingkat nasional di Indonesia.
Gambar 4. Prototipe
hierarki cache
1.
Instalasi Squid
Untuk mendapatkan
source squid terbaru dapat download di ftp://squid.nalr.fr/squid/ atau
homepage squid http://www.squid-cache.org/. Dalam modul ini kita
akan melakukan instalasi secara manual yaitu squid-2.3.STABLE2-src.tar.gz.
Sebelum instalasi pastikan source ini sudah ada (misal di direktori
/usr/local).
1. Masuklah ke
direktori /usr/local/ dan ekstark source dengan perintah:
# cd /usr/local
# tar zxvf
squid-2.3.STABLE2-src.tar.gz
2. Squid
proxy-server tidak dapat berjalan sebagai sebagai super user root, oleh karena
itu kita harus membuat account khusus tanpa shell untuk menjalankan Squid Proxy
Server :
# useradd –d /cache/
-r –s /dev/null 2>&1
# mkdir /cache/
# chown –R
squid.squid /cache/
Perintah pertama
akan menambahkan user “squid” ke file /etc/passwd, lalu membuat direktori
“/cache” (jika belum ada) kemudian mengubah kepemilikan direktori
“/cache” ke user “squid”.
3. Setelah
proses ekstarksi akan terbentuk direktori squid-2.3.STABLE2-src, masuk ke
direktori tersebut dan lakukan konfigure otomatis yang akan memberikan output
berupa file Makefile.
#
./configure --prefix=/usr/local/squid
4. Selanjutnya lakukan
kompilasi dan install sbb:
# make
# make install
Hasil instalasi bisa
dilihat di direktori /usr/local/squid. Di dalamnya terdapat direktori /bin,
/logs dan /etc.
2.
Konfigurasi
Squid
Setelah proses
instalasi selesai, langkah selanjutnya adalah mengkonfigurasi squid. File
konfigurasi ini biasanya terletak pada direktori
/usr/local/squid/etc. Squid biasanya sudah menyediakan file
konfigurasi default yaitu squid.conf.default, yang berisi parameter-parameter
squid secara lengkap, berikut deskripsi serta contoh penggunaannya.
5.1. Konfigurasi file Squid.conf
Dalam direktori /usr/local/squid/bin akan terdapat
file-file sbb:
squid program
utama
dnsserver server
untuk melayani request
pemetaan ip
<-> nama tiap child proses squid
cachemgr program
tambahan untuk memantau server secara
otomatis
runchace script
untuk memulai squid
Sedangkan dalam direktori /usr/local/squid/etc akan
terdapat file-file konfigurasi sbb :
squid.conf.default file
konfigurasi squid default
mime.conf.default file
konfigurasi mime default
Sedangkan
file-file log akan terdapat pada direktori /usr/local/squid/logs, yaitu :
access.log mencatat
log aktivitas-aktivitas yang dilakukan oleh klien.
cache.log mencatat
log yang dicatat oleh cache server.
store.log mencatat
setiap log yang berhubungan dengan database.
5.2. Konfigurasi Mode Httpd-Accelerator
Berikut kita akan
membahas bagian-bagian yang perlu diedit pada file squid.conf :
http_port 80
Option ini menyatakan nomor port yang akan digunakan
Squid untuk permintaan HTTP client. Jika diset 80, client akan seolah-olah
terkoneksi dengan Webserver Apache.
icp_port 0
Option ini menentukan nomor port tempat Squid mengirim
dan menerima permintaan ICP dari cache lainnya. Untuk mendisable kita set 0, karena kita
mengkonfigurasi Squid sebagai mode accelerator Web Server. ICP diperlukan hanya
pada multilevel cache dengan multilevel siblings dan parent.
acl QUERY urlpath_regex cgi-bin \? and no_cache deny
QUERY
Option ini menyatakan objek yang tidak pernah
dicached.
cache_mem 16 MB
Option ini menyatakan jumlah memori (RAM)
yang digunakan untuk caching. Squid menggunakan memori lebih besar dari nilai
yang tertera. Sebaiknya jumlah ini sepertiga dari memori total.
cache_dir ufs /cache 200 16 256
Option “cache_dir” menyatakan jenis sistem
storage yang digunakan (ufs). Space disk sebesar 200 MB, jumlah
subdirektori tingkat pertama dalam direktori cache adalah 16 dan jumlah
subdirektori tingkat kedua yang dibuat dalam direktori cache tingkat pertama
adalah 256. Dalam mode accelerator hal ini berkaitan dengan besar dan jumlah
file yang ingin di tampilkan pada webserver Apache.
emulate_httpd_log on
Jika option ini dibuat “ON”, Squid akan membuat format
file log yang sama dengan Webserver Apache. Hal ini berguna terutama jika kita
ingin menggunakan program seperti Webalizer.
redirect_rewrites_host_header off
Jika diset “OFF”, Squid tidak akan menulis ulang suatu
host.
replacement_policy GDSF
Option “replacement_policy” menyatakan
objek dalam cache yang akan dihapus Squid saat proxy membutuhkan ruang disk
yang lebih banyak.
acl all src 0.0.0.0/0.0.0.0 and http_access allow all
Options “acl” and “http_access” mengatur batasan akses
terhadap Proxy server Squid. Pada contoh di atas, kita berarti mengijinkan
setiap orang terkoneksi lewat proxy.
cache_mgr admin
Option “cache_mgr” menyatakan alamat e-mail
administrator yang bertanggung-jawab pada server.
cache_effective_user squid and cache_effective_group
squid
Options ini menyatakan UID/GID dimana cache
berjalan.
httpd_accel_host 167.205.206.100 and httpd_accel_port
80
Dari option ini, Squid akan mengetahui nomor port HTTP
server yang sebenarnya dan IP address yang digunakan. Pada contoh di atas IP
address webserver adalah 167.205.206.100 pada port 80.
log_icp_queries off
Jika kita tidak menggunakan ICP sebaiknya option ini
diset “OFF”.
cachemgr_passwd my-secret-pass all
Option “cachemgr_passwd” menyatakan password yang
diperlukan untuk mengakses utilitas program “cachemgr.cgi”. Isilah
<my-secret-pass> dengan password yang diinginkan. Keyword <all>
akan membuat password yang sama untuk semua
buffered_logs on
Option “buffered_logs” yang diset “ON”
dapat menambah kecepatan penulisan beberapa file log.
5.3. Konfigurasi Mode Proxy-Caching Mode
Pada proxy-caching
server, semua user dalam network kita menggunakan Squid untuk mengakses
Internet. Tentu saja kita dapat menerapkan beberapa aturan dan
menghemat bandwith. Konfigurasi Squid sebagai proxy-caching mode tidak jauh
berbeda dengan mode sebelumnya, hanya mungkin ada beberapa option yang diubah
atau ditambahkan. Perbedaan utama dengan mode sebelumnya adalah adanya
access control list (ACL). ACL berguna untuk merestriksi akses berdasarkan IP
address asal (src), IP address tujuan (dst), domain asal, domain tujuan,
berdasarkan waktu akses, dsb. Konfigurasi ACL yang umum digunakan adalah
sebagai berikut :
§ Akses berdasarkan IP address asal
acl [alamat] src a.b.c.d/e.f.g.h
§ Akses berdasarkan IP address tujuan
acl [alamat] dst a.b.c.d/e.f.g.h
§ Akses berdasarkan domain asal
acl [alamat] srcdomain [nama.domain]
§ Akses berdasarkan domain tujuan
acl [alamat] dstdomain [nama.domain]
Untuk lebih jelasnya perhatikan contoh isi file
konfigurasi proxy-cache server berikut ini :
# pico squid.conf
icp_port 0
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
cache_mem 16 MB
cache_dir ufs /cache 200 16 256
redirect_rewrites_host_header off
replacement_policy GDSF
Misalkan kita ingin agar proxy server Squid hanya
membolehkan akses untuk client dalam jaringan kita dan proxy server itu sendiri
dengan menggunakan port-port tertentu yaitu 80 (http), 21 (ftp), 23 (telnet) 25
(smtp), dan 443 (https). Selain itu, proxy Squid akan meolak setiap IP address
asal dan semua port yang mencoba terkoneksi.Bila jaringan kita menggunakan IP
Private kelas C 192.168.1.0 kita dapat membuat konfigurasi sbb :
acl localnet src 192.168.1.0/255.255.255.0
acl localhost src 127.0.0.1/255.255.255.255
acl Safe_ports port 80 443 210 119 70 21 1025-65535
acl CONNECT method CONNECT
acl all src 0.0.0.0/0.0.0.0
http_access allow localnet
http_access allow localhost
http_access deny !Safe_ports
http_access deny CONNECT
http_access deny all
cache_mgr admin@nama.domain
cache_effective_user squid
cache_effective_group squid
log_icp_queries off
cachemgr_passwd my-secret-pass all
buffered_logs on
Sedangkan option-option yang lain sama seperti yang
sudah dijelaskan untuk mode sebelumnya.
3.
Menjalankan Squid
Setelah membuat konfigurasi Squid lewat
file squid.conf, selanjutnya kita harus menstart squid agar server itu dapat
berjalan dengan baik. Proses squid sebaiknya dijalankan oleh user squid dan
bukan oleh root demi keamanan.
• To run Squid server in httpd-accelerator
mode, the following files are required and must
be created or copied to the appropriate
directories on your server.
Copy the squid.conf file
in the “/etc/squid/” directory.
Copy the squid script
file in the “/etc/rc.d/init.d/” directory.
Copy the squid file in
the “/etc/logrotate.d/” directory.
• To run Squid server in proxy-caching
mode, the following files are required and must be
created or copied to the appropriate
directories on your server.
Copy the squid.conf file
in the “/etc/squid/” directory.
Copy the squid script
file in the “/etc/rc.d/init.d/” directory.
Copy the squid file in
the “/etc/logrotate.d/” directory.
Create the squid script
file (touch /etc/rc.d/init.d/squid) and add:
#!/bin/bash
# squid This shell script takes care of
starting and stopping
# Squid Internet Object Cache
#
# chkconfig: - 90 25
# description: Squid - Internet Object
Cache. Internet object caching is \
# a way to store requested Internet
objects (i.e., data available \
# via the HTTP, FTP, and gopher protocols)
on a system closer to the \
# requesting site than to the source. Web
browsers can then use the \
# local Squid cache as a proxy HTTP
server, reducing access time as \
# well as bandwidth consumption.
# pidfile: /var/run/squid.pid
# config: /etc/squid/squid.conf
Untuk menjalankan squid Pertama-tama kita
harus membuat user squid yang akan menjalankan proses Squid proxy server.
Loginlah sebagai user squid dan lakukan perintah berikut ini :
# squid –z
Perintah ini akan membuat direktori cache
sebanyak dan sedalam yang telah dideklarasikan pada file squid.conf. Lalu jalankan
program squid :
# /usr/loacl/squid/bin/squid –sY &
Perhatikan pesan yang muncul pada console,
dan perhatikan juga file /usr/local/squid/log/cache.log barangkali terjadi
suatu kegagalan atau error. Agar saat sistem direboot program Squid akan
langsung berjalan secara otomatis, tambahkan baris berikut ini pada file /etc/rc.d/rc.local/
:
# pico /etc/rc.d/rc.local
Tambahlah baris-baris berikut ini :
/usr/local/squid/bin/squid –sY &