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
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
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)
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
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)

FreeBSD Proxy Server

  • 1.
    Standar Instalasi FreeBSD @ 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 FreeBSD @ 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 FreeBSD @ 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 FreeBSD @ 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 FreeBSD @ 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)