1. Standar Instalasi FreeBS D @ Institut Manajemen Telkom ( http://www.imtelkom.ac.id)
Instalasi Proxy Server : Squid
Squid adalah aplikasi web proxy server untuk keperluan 3A (authentication,
authorization, accounting), traffic shaper, dan web caching, dimana dengan
menggunakan proxy, semua user dapat mengakses Internet hanya melalui 1
public IP Address (IP Address dari user akan tersembunyi di belakang web proxy).
Instalasi Squid dilakukan dengan cara :
# cd /usr/ports/www/squid
# make install clean
……… <tunggu sampai selesai, jika ada pertanyaan gunakan default saja> ………
# cat /etc/rc.conf | grep squid
squid_enable="YES"
Edit file konfigurasi squid di /usr/local/etc/squid/squid.conf
# cat /usr/local/etc/squid/squid.conf
……… (hanya entry yg perlu di-edit)
http_port 172.16.1.1 8080
cache_peer 10.1.1.4 parent 8080 3130 no-query
maximum_object_size 16384 KB
minimum_object_size 0 KB
maximum_object_size_in_memory 8 KB
cache_dir ufs /webcache 73728 256 256
acl local-servers dstdomain .imtelkom.ac.id
acl porn url_regex "/usr/local/etc/squid/porn"
acl notporn url_regex "/usr/local/etc/squid/notporn"
acl user_vpn src 172.16.0.0/255.255.0.0
acl dosen src 172.16.1.0/255.255.255.0
acl karyawan src 172.16.2.0/255.255.255.0
acl kaunit src 172.16.3.0/255.255.255.0
acl sisfo src 172.16.4.0/255.255.255.0
2. Standar Instalasi FreeBS D @ Institut Manajemen Telkom ( http://www.imtelkom.ac.id)
http_access allow notporn
http_access deny porn
http_access allow user_vpn
http_access allow dosen
http_access allow karyawan
http_access allow kaunit
http_access allow sisfo
http_access deny all
always_direct deny dosen
always_direct deny karyawan
always_direct deny kaunit
always_direct deny sisfo
always_direct allow all
always_direct allow local-servers
never_direct allow dosen
never_direct allow karyawan
never_direct allow kaunit
never_direct allow sisfo
never_direct deny all
reply_body_max_size 100000000 allow dosen
reply_body_max_size 100000000 allow karyawan
reply_body_max_size 0 allow kaunit
reply_body_max_size 10000000 allow all
Karena webcache dari squid akan disimpan di folder /webcache sebaiknya folder
tersebut adalah suatu hard disk dedicated, hal ini untuk memudahkan instalasi
ulang proxy server (object yg di-cache tetap ada).
Untuk membuat transparent proxy dimana user tidak perlu melakukan setting
proxy di client (di level platform OS atau web browser), maka edit firewall :
# Forwarding all traffic to Squid (transparent proxy).
${fwcmd} add fwd 127.0.0.1,3128 tcp from 172.16.0.0/16 to any 80
${fwcmd} add fwd 127.0.0.1,3128 tcp from 172.16.0.0/16 to any 443
${fwcmd} add allow tcp from 172.16.0.0/16 to any setup keep-state
Dan squid.conf :
http_port 172.16.1.1 8080 transparent
Langkah selanjutnya setelah membuat file konfigurasi adalah membuat web cache
# /usr/local/sbin/squid –f /usr/local/etc/squid/squid.conf –z
2006/06/28 13:55:43| Creating Swap Directories
FATAL: Failed to make swap directory /webcache/00: (13) Permission denied
Squid Cache (Version 2.5.STABLE12): Terminated abnormally.
CPU Usage: 0.001 seconds = 0.000 user + 0.001 sys
Maximum Resident Size: 0 KB
Page faults with physical i/o: 0
Error disebabkan karena squid tidak boleh menulis di folder webcache
# chown squid:squid /webcache
# /usr/local/sbin/squid –f /usr/local/etc/squid/squid.conf –z
2006/06/28 13:57:51| Creating Swap Directories
3. Standar Instalasi FreeBS D @ Institut Manajemen Telkom ( http://www.imtelkom.ac.id)
Saat beroperasi, squid akan membuat 3 buah file :
# ls -l /usr/local/squid/logs
total 360340
-rw-r--r-- 1 squid squid 103106164 Jun 28 14:00 access.log
-rw-r--r-- 1 squid squid 4771743 Jun 28 14:00 cache.log
-rw-r--r-- 1 root squid 6 Jun 28 11:08 squid.pid
-rw-r--r-- 1 squid squid 121467833 Jun 28 14:00 store.log
Ketiga file tersebut akan bertambah besar dengan cepat sekitar 400Mbyte setiap
harinya. Untuk keperluan maintenance log file tersebut, perlu dibuat shell script
untuk memproses file access.log :
# cat /root/process_squid_log.sh
#!/bin/sh
#########################################################################
# shell script ini melakukan 5 fungsi dgn urutan sbb : #
# #
# 1. membackup squid's access.log menjadi access.log.0 #
# (dgn fasilitas rotate dari Squid) #
# 2. memproses access.log.0 dgn webalizer untuk mendapatkan statistik #
# 3. memproses access.log.0 dgn PHP script untuk akunting Internet #
# (berdasarkan login VPN) #
# 4. mengkompresi access.lo.0 dan memberi nama sesuai timestamp-nya #
# 5. memblok login VPN yg sudah over quota dgn menggunakan firewall #
# shell script ini membutuhkan : #
# - /usr/bin/grep & /usr/bin/awk (bawaan dari FreeBSD) #
# - update_usage_n_block.php (PHP script untuk perhitungan (akunting) #
# penggunaan Internet #
# - update_situs.php (PHP script untuk melakukan rekap situs yg diakses #
# - update_hitmiss.php (PHP script untuk melakukan rekap jumlah HIT #
# dan MISS dr webcache #
# shell script ini harus dijalankan setidaknya setiap 1 jam #
#########################################################################
############################# S E T T I N G #############################
WEBALIZER="/usr/local/bin/webalizer"
WEBALIZER_OPTION="-Q -F squid -c /usr/local/etc/webalizer-proxy.conf"
TODAY=`date "+%Y%m%d%H%M"`
SQUID="/usr/local/sbin/squid"
SQUID_OPTION="-f /usr/local/etc/squid/squid.conf -k rotate"
TEMP_FOLDER="/data/log"
################# FUNGSI 1 : backup squid's access.log ##################
# memindahkan log aktif /usr/local/squid/logs/access.log ke
/usr/local/squid/logs/access.log.0
${SQUID} ${SQUID_OPTION}
sleep 30
############# FUNGSI 2 : proses access.log.0 dgn webalizer ##############
# menganalisa access.log.0 menggunakan aplikasi webalizer
${WEBALIZER} ${WEBALIZER_OPTION} /usr/local/squid/logs/access.log.0
######## FUNGSI 3 : proses access.log.0 untuk akunting Internet #########
# access.log.0 akan diparsing menggunakan grep dan di-reformat
menggunakan awk
# untuk menghasilkan 5 file tambahan dgn format informasi yg lebih
sederhana
# untuk mempercepat pemrosesan dgn PHP script. Ke-lima file tsb :
# 1. ${TEMP_FOLDER}/usage.txt (format : IP_ADDRESS OBJECT_SIZE)
# 2. ${TEMP_FOLDER}/situs.txt (format : TIMESTAMP IP_ADDRESS
ACCESSED_SITE)
4. Standar Instalasi FreeBS D @ Institut Manajemen Telkom ( http://www.imtelkom.ac.id)
# 3. ${TEMP_FOLDER}/hit.txt (jumlah HIT pada webcache)
# 4. ${TEMP_FOLDER}/miss.txt (jumlah MISS pada webcache)
# 5. ${TEMP_FOLDER}/other.txt (jumlah non-HIT dan non-MISS pada webcache
: ex. DENIED)
# FUNGSI 3a : menghapus 4 file hasil dari proses sebelumnya
/bin/rm ${TEMP_FOLDER}/usage.txt
/bin/rm ${TEMP_FOLDER}/situs.txt
/bin/rm ${TEMP_FOLDER}/hit.txt
/bin/rm ${TEMP_FOLDER}/miss.txt
/bin/rm ${TEMP_FOLDER}/other.txt
# FUNGSI 3b : membuat 4 file yg baru
# membuat usage.txt untuk keperluan akunting penggunaan Internet
# dimana hanya akses yg tidak menggunakan webcache (TCP_MISS) yg dihitung
penggunaannya
# krn jk HIT berarti akses tsb tidak akan membebani link Internet (hanya
mengakses webcache)
/bin/cat /usr/local/squid/logs/access.log.0 | /usr/bin/grep 'MISS' |
/usr/bin/awk '{print $3 "t" $5}' > ${TEMP_FOLDER}/usage.txt
# membuat situs.txt untuk keperluan menganalisa situs apa saja yg
dikunjungi oleh user
# dimana semua akses kecuali yg DENIED yg akan direkam
/bin/cat /usr/local/squid/logs/access.log.0 | /usr/bin/grep -v
'TCP_DENIED' | /usr/bin/awk '{print $1 "t" $3 "t" $7}' >
${TEMP_FOLDER}/situs.txt
# membuat hit.txt dan miss.txt untuk keperluan menganalisa performansi
webcache
# yaitu apakah jumlah HIT > jumlah MISS
#/bin/cat /usr/local/squid/logs/access.log.0 | /usr/bin/grep -c 'MISS' >
${TEMP_FOLDER}/miss.txt
HIT=`/bin/cat /usr/local/squid/logs/access.log.0 | /usr/bin/grep -c
'HIT'`
MISS=`/bin/cat /usr/local/squid/logs/access.log.0 | /usr/bin/grep -c
'MISS'`
OTHER=`/bin/cat /usr/local/squid/logs/access.log.0 | /usr/bin/grep -v
'HIT' | /usr/bin/grep -v 'MISS' | /usr/bin/grep -c ''`
/usr/local/bin/mysql -u manager -pmanager -Dstatus --execute="insert into
hitmiss set time=${TODAY},hit=${HIT},miss=${MISS},other=${OTHER}"
# FUNGSI 3c : memproses usage.txt untuk akunting dan membuat
/root/block.sh untuk blocking user
/usr/local/bin/php /root/update_usage_n_block.php
# FUNGSI 3d : memproses situs.txt untuk analisa dan croscek via email ke
user
/usr/local/bin/php /root/update_situs.php
sleep 300
########## FUNGSI 4 : simpan access.log.0 sesuai timestamp-nya ##########
# simpan access.log.0 ke folder /data/log
/bin/mv /usr/local/squid/logs/access.log.0 /data/log/squid-
access/access.log.${TODAY}
/bin/rm /usr/local/squid/logs/cache.log.0
/usr/bin/gzip /data/log/squid-access/access.log.${TODAY}
# FUNGSI 5 : bloking akun VPN over quota (hasil kalkulasi di fungsi 3) #
#/bin/chmod 700 /root/block.sh
#/root/block.sh
/bin/rm /root/block.sh
5. Standar Instalasi FreeBS D @ Institut Manajemen Telkom ( http://www.imtelkom.ac.id)
Sementara untuk reverse proxy (proxy untuk akses dari luar/internet ke
dalam/intranet) dapat menggunakan aplikasi squid yg sama hanya dengan file
konfigurasi yang berbeda. Squid yg dipekerjakan sbg reverse proxy sering disebut
dengan Squid-Accellerator. Disarankan untuk tidak menjalankan squid-
accellerator pada server yg sama dimana squid juga berjalan (berdasarkan
pengalaman, salah satu squid akan di-shutdown)