FreeBSD Proxy Server

4,066 views
3,932 views

Published on

a tutorial guide explaining how to install FreeBSD as a proxy server, an experience at IMTelkom (http://www.imtelkom.ac.id)

Published in: Education, Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,066
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
167
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

FreeBSD Proxy Server

  1. 1. Standar Instalasi FreeBS D @ Institut Manajemen Telkom ( http://www.imtelkom.ac.id)Instalasi Proxy Server : SquidSquid adalah aplikasi web proxy server untuk keperluan 3A (authentication,authorization, accounting), traffic shaper, dan web caching, dimana denganmenggunakan proxy, semua user dapat mengakses Internet hanya melalui 1public 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 squidsquid_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 8080cache_peer 10.1.1.4 parent 8080 3130 no-querymaximum_object_size 16384 KBminimum_object_size 0 KBmaximum_object_size_in_memory 8 KBcache_dir ufs /webcache 73728 256 256acl local-servers dstdomain .imtelkom.ac.idacl 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.0acl dosen src 172.16.1.0/255.255.255.0acl karyawan src 172.16.2.0/255.255.255.0acl kaunit src 172.16.3.0/255.255.255.0acl sisfo src 172.16.4.0/255.255.255.0
  2. 2. Standar Instalasi FreeBS D @ Institut Manajemen Telkom ( http://www.imtelkom.ac.id)http_access allow notpornhttp_access deny pornhttp_access allow user_vpnhttp_access allow dosenhttp_access allow karyawanhttp_access allow kaunithttp_access allow sisfohttp_access deny allalways_direct deny dosenalways_direct deny karyawanalways_direct deny kaunitalways_direct deny sisfoalways_direct allow allalways_direct allow local-serversnever_direct allow dosennever_direct allow karyawannever_direct allow kaunitnever_direct allow sisfonever_direct deny allreply_body_max_size 100000000 allow dosenreply_body_max_size 100000000 allow karyawanreply_body_max_size 0 allow kaunitreply_body_max_size 10000000 allow allKarena webcache dari squid akan disimpan di folder /webcache sebaiknya foldertersebut adalah suatu hard disk dedicated, hal ini untuk memudahkan instalasiulang proxy server (object yg di-cache tetap ada).Untuk membuat transparent proxy dimana user tidak perlu melakukan settingproxy 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-stateDan squid.conf :http_port 172.16.1.1 8080 transparentLangkah selanjutnya setelah membuat file konfigurasi adalah membuat web cache# /usr/local/sbin/squid –f /usr/local/etc/squid/squid.conf –z2006/06/28 13:55:43| Creating Swap DirectoriesFATAL: Failed to make swap directory /webcache/00: (13) Permission deniedSquid Cache (Version 2.5.STABLE12): Terminated abnormally.CPU Usage: 0.001 seconds = 0.000 user + 0.001 sysMaximum Resident Size: 0 KBPage faults with physical i/o: 0Error disebabkan karena squid tidak boleh menulis di folder webcache# chown squid:squid /webcache# /usr/local/sbin/squid –f /usr/local/etc/squid/squid.conf –z2006/06/28 13:57:51| Creating Swap Directories
  3. 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/logstotal 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.logKetiga file tersebut akan bertambah besar dengan cepat sekitar 400Mbyte setiapharinya. Untuk keperluan maintenance log file tersebut, perlu dibuat shell scriptuntuk memproses file access.log :# cat /root/process_squid_log.sh#!/bin/sh########################################################################## shell script ini melakukan 5 fungsi dgn urutan sbb : ## ## 1. membackup squids 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 squids 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-reformatmenggunakan awk# untuk menghasilkan 5 file tambahan dgn format informasi yg lebihsederhana# 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_ADDRESSACCESSED_SITE)
  4. 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 dihitungpenggunaannya# krn jk HIT berarti akses tsb tidak akan membebani link Internet (hanyamengakses 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 ygdikunjungi oleh user# dimana semua akses kecuali yg DENIED yg akan direkam/bin/cat /usr/local/squid/logs/access.log.0 | /usr/bin/grep -vTCP_DENIED | /usr/bin/awk {print $1 "t" $3 "t" $7} >${TEMP_FOLDER}/situs.txt# membuat hit.txt dan miss.txt untuk keperluan menganalisa performansiwebcache# yaitu apakah jumlah HIT > jumlah MISS#/bin/cat /usr/local/squid/logs/access.log.0 | /usr/bin/grep -c MISS >${TEMP_FOLDER}/miss.txtHIT=`/bin/cat /usr/local/squid/logs/access.log.0 | /usr/bin/grep -cHIT`MISS=`/bin/cat /usr/local/squid/logs/access.log.0 | /usr/bin/grep -cMISS`OTHER=`/bin/cat /usr/local/squid/logs/access.log.0 | /usr/bin/grep -vHIT | /usr/bin/grep -v MISS | /usr/bin/grep -c `/usr/local/bin/mysql -u manager -pmanager -Dstatus --execute="insert intohitmiss 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 keuser/usr/local/bin/php /root/update_situs.phpsleep 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. 5. Standar Instalasi FreeBS D @ Institut Manajemen Telkom ( http://www.imtelkom.ac.id)Sementara untuk reverse proxy (proxy untuk akses dari luar/internet kedalam/intranet) dapat menggunakan aplikasi squid yg sama hanya dengan filekonfigurasi yang berbeda. Squid yg dipekerjakan sbg reverse proxy sering disebutdengan Squid-Accellerator. Disarankan untuk tidak menjalankan squid-accellerator pada server yg sama dimana squid juga berjalan (berdasarkanpengalaman, salah satu squid akan di-shutdown)

×