Proxy server adalah sebuah layanan pada jaringan Internet yang bertindak sebagai perantara antara jarigan lokal dengan Internet. Dengan menggunakan proxy server maka klien atau host yang menggunakan alamat IP Private di dalam jaringan lokal dapat mengakses server di Internet yang menggunakan IP Public walaupun tanpa menggunakan IP Masquerade atau NAT.
Proxy server diimplementasi pada lapisan aplikasi (aplication layer) sedangkan iptables pada lapisan transport (transport layer).
Squid adalah sebuah http proxy server walaupun dapat pula berfungsi sebagai ftp prox server. Selain befungsi sebagai proxy, squid juga berfungsi sebagai cache. Dengan cache maka beberapa obyek seperti file-file .gif,.jpg dll. yang sering di butuhkan oleh jaringan lokal akan disimpan di dalam memori cache sehingga jika suatu saat di butuhkan lagi jaringan lokal tidak usah mengambilnya langsung dari server aslinya tetapi cukup dari cache lokal pada squid. Dengan demikian maka akan dicapai penghematan waktu dan bandwidth, biasanya sekitar 30%-40% dari keseluruhan permintaan akses http.
Beberapa kelebihan Squid dengan http proxy server lainnya adalah:
1. Kestabilannya untuk menghandle sebuah jaringan yang berskala besar, biasanya ISP atau sebuah institusi perguruan tinggi menggunakan Squid sebagai proxy server.
2. Kemampuan filtering yang cukup luas contohnya antara lain:
a. Berdasarkan alamat IP, subnet, domain atau host name komputer lokal.
b. Berdasarkan alamat IP, subnet, domain atau host name server tujuan.
c. Berdasarkan ekstensi file misal: .exe .mp3 dll.
d. Berdasarkan waktu.
e. Dll.
3. Kemampuan parent dan sibling, dengan menerapkan hubungan parent atau sibling antar squid proxy server yang ada maka dapat di bangun sebuah jaringan cache yang tersusun secara hirarki yang dapat lebih menghemat waktu akses dan bandwidth.
4. Relatif mudah untuk dikonfigurasi.
5. Gratis, dibawah GPL/GNU.
Untuk menginstall Squid pada Linux Mandrake 8.1 caranya adalah:
#rpm –ivh squid-2.4.STABLE1-8mdk.i586.rpm
Untuk mengkonfigurasikan squid hanya dilakukan dengan menyalin file squid.conf.default yang terletak pada /etc/squid/squid.conf.default menjadi /etc/squid/squid.conf lalu edit file squid.conf tersebut.
Pada file squid.conf terdiri dari 13 bagian yaitu:
1. Network Options. Berisi konfigurasi alamat IP dan Port yang akan digunakan oleh Squid.
2. Options Which Affect The Neighbor Selection Algorithm. Berisi konfigurasi yang diperlukan untuk menghubungkan squid secara Sibling atau Parent.
3. Options Which Affect The Cache Size. Berisi konfigurasi cache di harddisk maupun di RAM.
4. Logfile Pathnames and Cache Directories. Berisi konfigurasi letak logfile dan letak direktori cache pada harddisk.
5. Options For External Support Programs. Berisi konfigurasi untuk program eksternal yan didukung squid seperti DNS, dan FTP.
6. Options For Tuning The Cache. Berisi konfigurasi untuk lebih mengoptimalkan cache.
7. Timeouts. Berisi konfigurasi untuk menentukan waktu timeout.
8. Access Control. Berisi konfigurasi untuk menentukan hak akses pada Squid.
9. Administrative Parameters. Berisi parameter-parameter yang sifatnya administratif.
10. Options For The Cache Registration Service. Berisi konfigurasi yang diperlukan untuk mendukung administrasi antar cache dalam sebuah hierarki cache.
11. HTTP_Accelerator Options. Berisi konfigurasi yang diperlukan untuk mengaktifkan fitur http accelerator pada Squid.
12. Miscellaneous. Berisi beberapa konfigurasi tambahan
13. Delay Pool Parameters. Berisi parameter-parameter yang diperlukan agar squid dapat menggunakan fitur delay pool yang berfungsi bandwitdh limiting. Untuk keterangan lebih lanjut mengenai delay pool dapat di baca pada: http://jateng.linux.or.id/artikel/network/2001/07/bandwidth-limiting-howto.html
Contoh squid.conf yang penulis gunakan adalah:
# NETWORK OPTIONS
# ———————————————————————-
http_port 3128
icp_port 3130
# OPTIONS WHICH AFFECT THE NEIGHBOR SELECTION ALGORITHM
# ———————————————————————-
cache_peer ns1.cic.ac.id sibling 3128 3130
cache_peer proxy.indo.net.id parent 8080 0 no-query no-delay
icp_query_timeout 0
maximum_icp_query_timeout 2000
dead_peer_timeout 10 seconds
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
acl dst_jaringan_lokal dst 192.168.0.0/255.255.255.0
acl dst_public_ip_kita dst 202.159.127.192/255.255.255.248
no_cache deny QUERY
no_cache deny dst_jaringan_lokal
no_cache deny dst_public_ip_kita
# OPTIONS WHICH AFFECT THE CACHE SIZE
# ———————————————————————-
cache_mem 8 MB
cache_swap_low 90
cache_swap_high 95
maximum_object_size 4096 KB
minimum_object_size 0 KB
maximum_object_size_in_memory 8 KB
cache_replacement_policy lru
memory_replacement_policy lru
# LOGFILE PATHNAMES AND CACHE DIRECTORIES
# ———————————————————————-
cache_dir ufs /var/spool/squid 100 16 256
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
mime_table /etc/squid/mime.conf
pid_filename /var/run/squid.pid
log_fqdn on
# OPTIONS FOR EXTERNAL SUPPORT PROGRAMS
# ———————————————————————-
ftp_user Squid@
ftp_list_width 32
ftp_passive on
dns_retransmit_interval 5 seconds
dns_timeout 5 minutes
dns_nameservers 202.159.127.195 202.159.127.194 202.159.32.2 202.159.33.2
diskd_program /usr/lib/squid/diskd
redirect_children 5
redirect_program /usr/local/adzap/wrapzap
# OPTIONS FOR TUNING THE CACHE
# ———————————————————————-
request_header_max_size 10 KB
request_body_max_size 1 MB
reply_body_max_size 0
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
reference_age 1 year
quick_abort_min 16 KB
quick_abort_max 16 KB
quick_abort_pct 95
negative_ttl 5 minute
positive_dns_ttl 6 hour
negative_dns_ttl 5 minute
range_offset_limit 0 KB
# TIMEOUTS
# ———————————————————————-
connect_timeout 2 minute
peer_connect_timeout 30 seconds
siteselect_timeout 4 second
read_timeout 15 minute
request_timeout 30 second
client_lifetime 1 day
pconn_timeout 120 second
ident_timeout 10 seconds
shutdown_lifetime 30 second
# ACCESS CONTROLS
# ———————————————————————-
acl all src 0.0.0.0/0.0.0.0
acl jaringan_lokal src 192.168.0.0/255.255.255.0
acl public_ip_kita src 202.159.127.192/255.255.255.248
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443 563 10000
acl Safe_ports port 80 81 82
acl Safe_ports port 21
acl Safe_ports port 443 563
acl Safe_ports port 70
acl Safe_ports port 210
acl Safe_ports port 1025-65535
acl Safe_ports port 280
acl Safe_ports port 488
acl Safe_ports port 591
acl Safe_ports port 777
acl CONNECT method CONNECT
acl porn url_regex “/usr/lib/squid/porn.txt”
acl webchat url_regex -i chat chatserver
acl ns1_child_sibling src 202.159.127.194/255.255.255.255
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access deny porn all
http_access deny webchat
http_access allow jaringan_lokal
http_access allow public_ip_kita
http_access allow ns1_child_sibling
http_access deny all
miss_access deny ns1_child_sibling
icp_access allow ns1_child_sibling
icp_access deny all
# ADMINISTRATIVE PARAMETERS
# ———————————————————————-
cache_mgr administrator@cic.ac.id
# OPTIONS FOR THE CACHE REGISTRATION SERVICE
# ———————————————————————-
# HTTPD-ACCELERATOR OPTIONS
# ———————————————————————-
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
# MISCELLANEOUS
# ———————————————————————-
logfile_rotate 10
append_domain .cic.ac.id
acl alldst dst 0.0.0.0/0.0.0.0
always_direct allow dst_jaringan_lokal
always_direct allow dst_public_ip_kita
always_direct deny all
error_directory /etc/squid/errors
minimum_retry_timeout 5 seconds
maximum_single_addr_tries 3
httpd_accel_host virtual
# DELAY POOL PARAMETERS
# ———————————————————————-
Pada file squid.conf.default sebenarnya telah cukup detail di jelaskan fungsi dari masing-masing option (pilihan) yang dapat digunakan pada squid.conf, atau kalau ingin lebih jelas dapat dibaca pada http://www.squid-cache.org/Doc/FAQ
Atau buku Optimasi Akses Internet dengan Squid karangan “Dodi Maryanto” yang diterbitkan oleh Elex Media Komputindo.
Penulis hanya akan menjelaskan beberapa catatan khusus pada konfigurasi squid.conf diatas yaitu:
cache_peer ns1.cic.ac.id sibling 3128 3130
cache_peer proxy.indo.net.id parent 8080 0 no-query no-delay
Artinya ns1.cic.ac.id adalah proxy server lainnya yang dijadikan sebagai sibling dan proxy.indo.net.id adalah proxy server lainnya yang dijadikan sebagai parent. Perbedaan sibling dan parent adalah: sibling hanya memberikan obyek yang ada pada dirinya sedangkan parent bertanggung jawab untuk mengambilkan obyek tersebut jika parent tidak memiliki obyek tersebut. Jika Anda tidak memiliki cache_peer beri tanda “#” didepan baris cache_peer, dengan memberikan tanda “#” berarti baris tersebut tidak akan di baca oleh squid.
Pornografi
Salah satu tantangan seorang admin jaringan adalah membatasi akses situs porno dari jaringannya, terutama bagi sebuah institusi pendidikan.
Dengan squid dapat dilakukan penyaringan terhadap situs-situs porno. Cara yang paling sederhana adalah dengan mendownload dari http://www.squidblock.com/ dengan melakukan registrasi selanjutnya Anda akan menerima email yang berisi username dan password yang diperlukan untuk login ke Squidblock. Setelah Login klik Download dan kemudian download file berikut: http://www.squidblock.com/download/file/Feb06squidblock.tgz
Setelah didownload ekstrak file tersebut dengan cara:
#tar xvfz Feb06squidblock.tgz
Kemudian salin file Pornographic_block.txt menjadi porn.txt dengan cara:
#cp Pornograhic_block.txt /usr/lib/squid/porn.txt
Kemudian tambahkan baris berikut pada squid.conf:
acl porn url_regex “/usr/lib/squid/porn.txt”
dan
http_access deny porn all
http_access deny porn all diletakkan “sebelum” memberikan http_access allow jaringan_lokal agar jaringan_lokal tidak dapat mengakses situs porno yang telah didefinisikan dalam file /usr/lib/squid/porn.txt. Jika http_access deny porn all diletakkan setelah http_access allow jaringan_lokal maka komputer di jaringan_lokal tetap dapat membuka situs porno yang telah didefinisikan dalam file /usr/lib/squid/porn.txt
Jika dibutuhkan cara yang lebih efektif dapat digunakan DansGuardian yang dapat Anda download dari http://www.dansguardian.org/ tetapi berdasarkan pengalaman penulis, dansguardian menggunakan memori RAM yang sangat besar untuk sebuah proxy yang sibuk.
Redirect Adzap
Redirect adzap digunakan untuk mengilangkan banner-banner iklan pada website yang di akses oleh jaringan lokal. Dengan tujuan untuk menghemat bandwidth yang ada.
Untuk mengaplikasikan adzap pada squid, sebelumnya ambil source adzap pada http://www.zip.com.au/~cs/adzap/adzap-20020710.tar.gz lalu ekstrak:
#tar xvfz adzap-20010712.tar.gz
Pindahkan hasil ekstrak adzap ke /usr/local/adzap/
#mv adzap /usr/local/adzap/
Salin file-file .gif .html dan .js ke direktori apache misal ke /var/www/html/adzap sebelumnya direktori adzap dibuat dulu dengan cara:
#cd /var/www/html
#mkdir adzap
#cd /usr/local/adzap
#cp *.gif /var/www/html/adzap/.
#cp *.html /var/www/html/adzap/.
#cp *.js /var/www/html/adzap/.
Edit file /usr/local/adzap/wrapzap pada bagian:
Zapper=/usr/local/adzap/squid-redirect
ZAP_BASE=http://localhost/adzap
Pada bagian ZAP_BASE, masukkan URL lengkap web server yang menampung dokument yang akan ditampilkan redirector.
Pada squid.conf, tambahkan baris berikut:
redirect_children 5
redirect_program /usr/local/adzap/wrapzap
Sebelum squid diaktifkan Anda harus membuat cache direktori dengan mengetik perintah:
#squid –z
Setelah cache direktori terbentuk aktifkan squid dengan cara:
#/etc/rc.d/init.d/squid start
Cek apakah redirector sudah berjalan:
#ps ax | grep squid_re
2368 ? S 0:00 /usr/bin/perl /usr/local/adzap/squid_redirect
2369 ? S 0:00 /usr/bin/perl /usr/local/adzap/squid_redirect
2370 ? S 0:00 /usr/bin/perl /usr/local/adzap/squid_redirect
2372 ? S 0:00 /usr/bin/perl /usr/local/adzap/squid_redirect
2373 ? S 0:00 /usr/bin/perl /usr/local/adzap/squid_redirect
9252 pts/2 S 0:00 grep squid_re
Transparent Proxy
Yang dimaksud dengan transparent proxy adalah sentralisasi konfigurasi proxy pada sebuah jaringan komputer lokal. Dengan transparant proxy maka semua browser pada komputer klient di jaringan lokal tidak usah di setting satu persatu untuk menggunakan proxy server. Atau dengan kata lain secara otomatis seluruh klient akan melewati Squid. Untuk mengimplementasikan transparent proxy pada Linux Mandrake 8.1 paket iptables dan squid harus telah terinstall dengan benar.
Pertama tambahkan baris berikut pada squid.conf:
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
httpd_accel_host virtual
Lalu tambahkan baris berikut pada /etc/rc.local:
iptables -t nat -A PREROUTING -i eth1 -p tcp –dport 80 -j REDIRECT –to-port 3128
Baris tersebut ditulis dalam satu baris
Pada jaringan yang digunakan oleh penulis interface eth1 terhubung ke jaringan lokal, jika yang terhubung ke jaringan lokal adalah eth0 maka ganti eth1 menjadi eth0.
Jalankan /etc/rc.local dengan mengetikkan:
#/etc/rc.local
Kemudian restart squid dengan cara:
#squid –k reconfigure
Pada komputer klient pastikan default gateway mengarah pada IP Squid Proxy Server, dengan demikian maka seluruh komputer klient yang menjadikan Squid Proxy Server sebagai default gateway akan menggunakan Transparent Proxy.
Lebih lengkapnya Transparent Proxy bisa Anda baca di:
http://www.ibiblio.org/pub/Linux/docs/HOWTO/mini/other-formats/html_single/TransparentProxy.html#s4
Membaca logfile Squid
Untuk menganalisa performa dari Squid Proxy Server dapat digunakan cachemgr.cgi atau Calamaris.
File cachemgr.cgi sebenarnya telah tersedia pada /usr/lib/squid pada saat Anda menginstall Squid menggunakan paket RPM.
Salin file cachemgr.cgi pada /usr/lib/squid/cachemgr.cgi ke /var/www/cgi-bin/cachemgr.cgi dengan cara:
#cp /usr/lib/squid/cachemgr.cgi /var/www/cgi-bin/
Selanjutnya pada squid.conf pastikan terdapat baris berikut:
http_access allow manager localhost
Kemudian gunakan browser untuk membuka URL http://192.168.0.253/cgi-bin/cachemgr.ini
Ganti IP 192.168.0.253 dengan IP Squid proxy server Anda.
Klik Continue maka selanjutnya dapat Anda dapatkan keterangan-keterangan yang diambil dari /var/log/squid/access.log
Calamaris
Calamaris adalah sebuah tool untuk mengolah logging yang dihasilkan squid. Untuk menginstall Calamaris di Linux Mandrake 8.1 dapat digunakan paket: calamaris-2.42-2.i386.rpm yang bisa Anda download dari http://rpmfind.net/
Untuk menginstall ketik:
#rpm –ivh calamaris-2.42-2.i386.rpm
Selanjutnya Anda dapat menggunakan Webmin untuk membaca Calamaris. Pada Webmin klik Servers->Squid Proxy Server->Calamaris Log Analysis
Untuk memantau aktivitas Squid secara real time dapat dilakukan dengan cara:
#tail –f /var/log/squid/access.log
sumber: http://kebofunky.wordpress.com/2008/04/07/squid-proxy-server/