Home

Kamis, 03 Juli 2008

Squid Proxy Server

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/

 
©  Jurnalistik Lintas Warga Powered by Blogspot tutorial