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 ………
………
# 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
Standar Instalasi FreeBS D @ Institut Manajemen Telkom ( http://www.imtelkom.ac.id) http_access http_access http_access http_access http_access http_access http_access http_access
allow notporn deny porn allow user_vpn allow dosen allow karyawan allow kaunit allow sisfo deny all
always_direct always_direct always_direct always_direct always_direct always_direct never_direct never_direct never_direct never_direct never_direct
deny dosen deny karyawan deny kaunit deny sisfo allow all allow local-servers allow dosen allow karyawan allow kaunit allow sisfo deny all
reply_body_max_size reply_body_max_size reply_body_max_size reply_body_max_size
100000000 allow dosen 100000000 allow karyawan 0 allow kaunit 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 ${fwcmd} add ${fwcmd} add ${fwcmd} add
all traffic to Squid (transparent proxy). fwd 127.0.0.1,3128 tcp from 172.16.0.0/16 to any 80 fwd 127.0.0.1,3128 tcp from 172.16.0.0/16 to any 443 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
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 -rw-r--r-- 1 squid squid 4771743 -rw-r--r-- 1 root squid 6 -rw-r--r-- 1 squid squid 121467833
Jun Jun Jun Jun
28 28 28 28
14:00 14:00 11:08 14:00
access.log cache.log squid.pid 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)
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/squidaccess/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
#
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 squidaccellerator pada server yg sama dimana squid juga berjalan (berdasarkan pengalaman, salah satu squid akan di-shutdown)