Membangun Proxy Server Dengan Ubuntu

Proxy dapat dipahami sebagai pihak ketiga yang berdiri ditengah-tengah antara kedua pihak yang saling berhubungan dan berfungsi sebagai perantara, sedemikian sehingga pihak pertama dan pihak kedua tidak secara langsung berhubungan, akan tetapi masing-masing berhubungan dengan perantara, yaitu Proxy.

Sebuah analogi; bila seorang mahasiswa meminjam buku di perpustakaan, kadang si mahasiswa tidak diperbolehkan langsung mencari dan mengambil sendiri buku yang kita inginkan dari rak, tetapi kita meminta buku tersebut kepada petugas, tentu saja dengan memberikan nomor atau kode bukunya, dan kemudian petugas tersebut yang akan mencarikan dan mengambilkan bukunya. Dalam kasus diatas, petugas perpustakaan tersebut telah bertindak sebagai perantara atau Proxy. Petugas tersebut juga bisa memastikan dan menjaga misalnya, agar mahasiswa hanya bisa meminjam buku untuk mahasiswa, dosen boleh meminjam buku semua buku, atau masyarakat umum hanya boleh meminjam buku tertentu.

Mungkin proses tersebut menjadi lebih lama dibandingkan bila kita langsung mencari dan mengambil sendiri buku yang kita inginkan. Namun bila saja setiap kali petugas mencari dan mengambil buku untuk seseorang, si petugas juga membuat beberapa salinan dari buku tersebut sebelum memberikan bukunya kepada orang yang meminta, dan menyimpannya di atas meja pelayanan, maka bila ada orang lain yang meminta buku tertentu, sangat besar kemungkinan buku yang diminta sudah tersedia salinannya diatas meja, dan si petugas tinggal memberikannya langsung. Hasilnya adalah layanan yang lebih cepat dan sekaligus keamanan yang baik.ok tanpa panjang lebar kita mulai dengan :Bismillahirahmanirahim

* install linux Ubuntu 9

‘- Pilih language english (enter)
‘- Pilih instal ubuntu server (enter)
‘ -Tekan enter pada choose langguage english
‘- Pilih united states
‘- Klik no pada detect keyboard layout?
‘- Klik USA pada ubuntu installer main menu
‘- Klik USA pada keyboard layout
‘- Klik continue pada configure the network
‘- Pilih configure network manually
‘- Pada configure the clok pilih select from worldwide list terus cari Makassar terus enter
‘- Pada menu partition disk pilih manual
‘- Kita hapus partisi lama dulu :
‘-Pilih partisi nya terus enter pilih delete the partion (ulangi perintah ini untuk semua partisi yg tersisa)

‘-Jika telah selesai pilih Guided partitioning, kemudian pilih manual arahkan pada FREE SPACE (enter),
‘- Pilih Create new partition (enter)

New partition size isi 1 GB (pilih continue dan enter), pilih Primary (enter), pilih Beginning (enter), pada Mount point pilih /boot (enter), pd mount option pilih[*] noatime (pilih continue dan enter), pada Bootable Flag rubah menjadi on kemudian pilih done setting up the partition

Arahkan pada FREE SPACE (enter), pilih Create new partition (enter ) new partition size isi 4 GB (pilih continue dan enter), pilih Logikal (enter), pilih Beginning (enter), pada Mount point pilih / (enter), pd mount option pilih[*] noatime (pilih continue dan enter), kemudian Pilih done setting up the partition

Arahkan pada FREE SPACE (enter), pilih Create new partition (enter) new partition size isi 4 GB (pilih continue dan enter), pilih Logikal (enter), pilih Beginning (enter), pada Mount point pilih /usr (enter), pd mount option pilih[*] noatime (pilih continue dan enter), kemudian Pilih done setting up the partition

Arahkan pada FREE SPACE (enter), pilih Create new partition (enter) new partition size isi 4 GB (pilih continue dan enter), pilih Logikal (enter), pilih Beginning (enter), pada Mount point pilih /var (enter), pd mount option pilih[*] noatime (pilih continue dan enter), kemudian Pilih done setting up the partition

Arahkan pada FREE SPACE (enter), pilih Create new partition (enter) new partition size isi 1 GB (pilih continue dan enter), pilih Logikal (enter), pilih Beginning (enter), pada use as pilih swap area (enter), kemudian Pilih done setting up the partition

Arahkan pada FREE SPACE (enter),
pilih Create new partition (enter) new partition size isi 10 GB (pilih continue dan enter), pilih Logikal (enter), pilih Beginning (enter), pada use as pilih reiserFS (enter), pada Moun point enter manually buat menjadi /home/proxy1, pd mount option pilih[*] noatime dan[*] notail kemudian Pilih continue dan done setting up the partition

Arahkan pada FREE SPACE (enter),
pilih Create new partition (enter) new partition size isi 10 GB (pilih continue dan enter), pilih Logikal (enter), pilih Beginning (enter), pada use as pilih reiserFS (enter), pada Moun point enter manually buat menjadi /home/proxy2, pd mount option pilih[*] noatime dan[*] notaill kemudian Pilih continue dan done setting up the partition

Arahkan pada FREE SPACE (enter),
pilih Create new partition (enter) new partition size isi 10 GB (pilih continue dan enter), pilih Logikal (enter), pilih Beginning (enter), pada use as pilih reiserFS (enter), pada Moun point enter manually buat menjadi /home/proxy3, pd mount option pilih[*] noatime dan[*] notail kemudian Pilih continue dan done setting up the partition

Arahkan pada FREE SPACE (enter), pilih Create new partition (enter) new partition size isi sesuai sisanya (pilih continue dan enter), pilih Logikal (enter), pilih Beginning (enter), pada Moun point enter manually buat menjadi /data kemudian Pilih continue dan done setting up the partition

Kemudian pilih finis partitioning and write changes to disk

write the changes to disk pilih yes

pada full name for the new user isi dg Server, terus continue & enter
pada Username for your account isi dg windrautama, terus continue & enter
pada a password for the new user isi dg (terserah), terus continue & enter
pada re-enter password to verify isi dg (Ulang Paswordnya), terus continue & enter
pada use weak password pilih yes
pada encrypt your home directory pilih no
pada HTTP proxy information KOSONGIN SAJA
pada configurasi apt 43% tekan enter, juga pada 81% tekan enter
pilih no automatic update
pada choose software to install pilih OpenSSH server
pilih continus pd finis the installation

PENTING....!!! setelah restart
login dg Windrautama
password ( .... )
ketik sudo su -
isi Password lagi ( ... )

ketik passwd
enter new UNIX password isi dg proxyku
retype new UNIX password isi proxyku

Selanjutnya Konfigurasi Proxy server

* install linux server
* konfigurasi kartu jaringan

$ sudo nano /etc/netwotk/interfaces

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.1.4
netmask 255.255.255.0
gateway 192.168.1.1

auto eth1
iface eth1 inet static
address 192.168.10.2
netmask 255.255.255.0
gateway 192.168.1.1
* masukkan dn-nameserver

$ sudo nano /etc/resolv.conf

nameserver 192.168.1.1

* restart network-nya

$ sudo /etc/init.d/networking restart
$ ping 192.168.1.1
$ ping 192.168.0.3

* edit sysct1.conf

$ sudo nano /etc/sysct1.conf

hilangkan tanda # pada "net.ipv4.ip_fordward=1"

* sharing internet eth0 ke eth1

$ sudo iptables -F
$ sudo iptables -X
$ sudo iptables -t nat -F
$ sudo iptables -t nat -X
$ sudo iptables -t mangle -F
$ sudo iptables -t mangle -X
$ sudo iptables -P INPUT ACCEPT
$ sudo iptables -P FORWARD ACCEPT
$ sudo iptables -P OUTPUT ACCEPT

$ sudo echo 1 > /proc/sys/net/ipv4/ip_forward

$ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

* agar setiap server start perintah itu dijalankan, masukkan perintah tersebut ke /etc/rc.local

$ sudo nano /etc/rc.local

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

exit 0

* sampai disini pembuatan router telah selesai, selanjutnya tinggal install squid dan konfigurasi proxy

* install squid

$ sudo apt-get install squid

* buat directory cache untuk proxy

$ sudo mkdir /cache

$ sudo chmod 777 /cache

* konfifgurasi /etc/squid/squid.conf

$ sudo nano /etc/squid/squid.conf

# WELCOME TO SQUID 2.7 HIGH PERFORMANCES By:Abienickirhaby
# ......

#==============================================
# TAG: http_port
# Daftar port koneksi squid.
#==============================================
http_port 3128 transparent
icp_port 0

# Mengatasi Facebook Blank setelah login
server_http11 on

#==============================================
# TAG: hierarchy_stoplist
# Daftar kata2 yg, jika ditemukan dalam sebuah URL, menyebabkan obyek
# akan ditangani langsung oleh squid. Opsi dapat ditulis beberapa kali
#==============================================
hierarchy_stoplist cgi-bin ? localhost
acl QUERY urlpath_regex cgi-bin \? localhost
no_cache deny QUERY

#==============================================
# OPTIONS WHICH AFFECT THE CACHE SIZE
#==============================================
# Ukuran memory (RAM) yang digunakan untuk men-cache obyek. Jangan
# terlalu besar, Idealnya 60-70% dari total Memory yang terpasang
#==============================================
cache_mem 1024 MB
#Cache_mem 8 MB

# Ukuran maksimum suatu obyek yang di-cache ke hd & Memory. Ukurannya terserah
# tergantung kebutuhan.
maximum_object_size 50 MB
maximum_object_size_in_memory 128 KB

# Ini adalah trik yg menyebabkan squid selalu berusaha menyimpan obyek
# dalam memory dan baru akan men-swap data ke hd jika cache_mem sudah
# penuh.
cache_swap_low 98%
cache_swap_high 99%

# Bagian ini adalah metode swapping data dari memory ke cache hd. LFUDA
# brarti menyebabkan squid akan men-cache obyek2 berukuran besar,
# sebaliknya GDSF men-cache obyek2 kecil secara progresif. Saran saya
# cache hd menggunakan LFUDA dan cache memory menggunakan GDSF karena
# pembacaan/penulisan ke memory (RAM) jelas lebih cepat daripada hd.
cache_replacement_policy heap LFUDA
memory_replacement_policy heap GDSF

# Ini adalah pembatasan maksimum memory yg dipakai oleh squid. Saran saya
# sekitar 60-70% dari ukuran RAM.
##high_memory_warning 70 MB

# FIXME!
ipcache_size 16384
fqdncache_size 16384

# Sama seperti cache_swap_low/high, hanya saja obyeknya adalah IP.
ipcache_low 98
ipcache_high 99

#==============================================
# LOGFILE PATHNAMES AND CACHE DIRECTORIES
#==============================================
# Bagian ini adalah konfigurasi direktori cache (hd). Urutannya adalah:
# Untuk Cache Size squid idealnya 60% dari Partisi Size squid yang di sediakan.
cache_dir aufs /cache/squid 20400 48 256

# Ini adalah konfigurasi peletakan log squid. lokasinya terserah.
cache_access_log /var/log/squid/access.log
cache_log none
cache_store_log none

# Ini daftar mime squid. Selalu gunakan agar proses filtering obyek
# lebih cepat.
mime_table /usr/share/squid/mime.conf

# Lokasi PID squid.
pid_filename /var/run/squid.pid
coredump_dir /var/spool/squid/

# Beberapa log yg tidak signifikan karena opsi2-nya jarang digunakan.
log_fqdn off
log_icp_queries off
buffered_logs off
emulate_httpd_log off

#==============================================
# FTP section
#==============================================
# Selalu gunakan opsi ini untuk mengurangi beban trafik. FTP mode pasif
# menyebabkan client tidak berhubungan langsung dengan FTP Server tujuan
# dan menggunakan squid sebagai relay sehingga bandwidth utk koneksi FTP
# bisa dikontrol mungkin dengan kombinasi IP filtering (PF (BSD)/ IPTABLES).
ftp_list_width 32
ftp_passive on
ftp_sanitycheck on

#==============================================
# DNS resolution section
#==============================================
# Isikan IP (BUKAN NAMA) untuk mempercepat resolusi query dns dari client.
# Menggunakan OpenDNS untuk settingan di bawah ini
##dns_nameservers 208.67.222.222 208.67.220.220

#==============================================
# Filesystem section
#==============================================
#diskd_program /usr/bin/diskd

#==============================================
# AUTH section
#==============================================
# Sistem autentikasi client-server yg di-relay oleh squid. Gunakan jika
# perlu. Tidak saya gunakan agar tidak membebani kerja squid dan bw.
#auth_param basic children 5
#auth_param basic realm Squid proxy-caching web server
#auth_param basic credentialsttl 2 hours
#auth_param basic casesensitive off

#==============================================
# Refresh Rate
#==============================================
# Ini adalah bagian yg sering diutak-atik karena menyangkut lamanya
# sebuah obyek dicatat dalam cache (hd). Cari nilainya secara
# trial n error karena tidak ada angka pasti. Urutannya adalah:
#
# refresh_pattern REGEX MIN_MINUTES VALIDITY(%) MAX_MINUTES
refresh_pattern -i \.(class|css|js|gif|jpg|ps)$ 1440 50% 43200
refresh_pattern -i \.(jpe|jpeg|png|bmp|tif)$ 1440 50% 43200
refresh_pattern -i \.(tiff|mov|avi|qt|mpeg|flv|ra|rm|wmv|divx)$ 1440 50% 43200
refresh_pattern -i \.(mpg|mpe|wav|au|mid|mp3|mp4|ac4|swf)$ 1440 50% 43200
refresh_pattern -i \.(zip|gz|arj|lha|lzh|7z)$ 1440 50% 43200
refresh_pattern -i \.(rar|tgz|tar|exe|bin|rpm|iso)$ 1440 50% 43200
refresh_pattern -i \.(hqx|pdf|rtf|doc|swf|xls|ppt|pdf|docx|xlsx)$ 1440 50% 43200
refresh_pattern -i \.(inc|cab|ad|txt|dll|dat)$ 1440 50% 43200

#youtube's videos
refresh_pattern -i (get_video\?|videodownload\?|videoplayback\?) 161280 50000% 525948 override-expire ignore-reload

# add from H4ck3rKu

refresh_pattern ^http\:\/\/*\.facebook\.com\/ 10080 80% 43200 reload-into-ims
refresh_pattern ^http\:\/\/*\.kaskus\.us\/ 10080 80% 43200 reload-into-ims
refresh_pattern ^http\:\/\/*\.google\.co\*.*/ 10080 90% 43200 reload-into-ims
refresh_pattern ^http\:\/\/*\.yahoo\.co*\.*/ 10080 90% 3200 reload-into-ims
refresh_pattern ^http\:\/\/.*\.windowsupdate\.microsoft\.com\/ 10080 80% 43200 reload-into-ims
refresh_pattern ^http\:\/\/office\.microsoft\.com\/ 10080 80% 43200 reload-into-ims
refresh_pattern ^http\:\/\/windowsupdate\.microsoft\.com\/ 10080 80% 43200 reload-into-ims
refresh_pattern ^http\:\/\/w?xpsp[0-9]\.microsoft\.com\/ 10080 80% 43200 reload-into-ims
refresh_pattern ^http\:\/\/w2ksp[0-9]\.microsoft\.com\/ 10080 80% 43200 reload-into-ims
refresh_pattern ^http\:\/\/download\.microsoft\.com\/ 10080 80% 43200 reload-into-ims
refresh_pattern ^http\:\/\/download\.macromedia\.com\/ 10080 80% 43200 reload-into-ims
refresh_pattern ^ftp\:\/\/ftp\.nai\.com/ 10080 80% 43200 reload-into-ims
refresh_pattern ^http\:\/\/ftp\.software\.ibm\.com\/ 10080 80% 43200 reload-into-ims
refresh_pattern ^http\:\/\/*\.friendster\.com\/ 10080 80% 43200 reload-into-ims
refresh_pattern ^http\:\/\/*\.detik\.com\/ 10080 80% 43200 reload-into-ims
refresh_pattern ^http\:\/\/*\.kaskus\.us\/ 10080 80% 43200 reload-into-ims
refresh_pattern ^http\:\/\/*\.google\.co\*.*/ 10080 90% 43200 reload-into-ims
refresh_pattern ^http\:\/\/*\.yahoo\.co*\.*/ 10080 90% 43200 reload-into-ims

refresh_pattern ^http://*.apps.facebook.*/.* 720 80% 4320
refresh_pattern ^http://*.profile.ak.fbcdn.net/.* 720 80% 4320
refresh_pattern ^http://*.creative.ak.fbcdn.net/.* 720 80% 4320
refresh_pattern ^http://*.static.ak.fbcdn.net/.* 720 80% 4320
refresh_pattern ^http://*.facebook.poker.zynga.com/.* 720 80% 4320
refresh_pattern ^http://*.statics.poker.static.zynga.com/.* 720 80% 4320
refresh_pattern ^http://*.zynga.*/.* 720 80% 4320
refresh_pattern ^http://*.texas_holdem.*/.* 720 80% 4320
refresh_pattern ^http://*.google.*/.* 720 80% 4320
refresh_pattern ^http://*.indowebster.*/.* 720 80% 4320
refresh_pattern ^http://*.4shared.*/.* 720 80% 4320
refresh_pattern ^http://*.yahoo.com/.* 720 80% 4320
refresh_pattern ^http://*.yimg.*/.* 720 80% 4320
refresh_pattern ^http://*.plasa.com/.* 720 80% 4320
refresh_pattern ^http://*.boleh.*/.* 720 80% 4320
refresh_pattern ^http://*.detik.*/.* 180 80% 4320
refresh_pattern ^http://*.detikinet.*/.* 180 80% 4320
refresh_pattern ^http://*.detikhot.*/.* 180 80% 4320
refresh_pattern ^http://*.detiportal.*/.* 180 80% 4320
refresh_pattern ^http://*.kompas.*/.* 180 80% 4320
refresh_pattern ^http://*.kapanlagi.*/.* 720 80% 4320
refresh_pattern ^http://*.google-analytics.*/.* 720 80% 4320


refresh_pattern ^ftp: 1440 95% 12960 reload-into-ims
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320

quick_abort_min 0 KB
quick_abort_max 0 KB
quick_abort_pct 100%

#==============================================
# ACL section
#==============================================
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localnet src 192.168.10.0/24
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443 563 # https, snews
acl Safe_ports port 80 81 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl purge method PURGE
acl CONNECT method CONNECT

# Yahoo! Messenger
acl ym dstdomain .messenger.yahoo.com .psq.yahoo.com
acl ym dstdomain .us.il.yimg.com .msg.yahoo.com .pager.yahoo.com
acl ym dstdomain .rareedge.com .ytunnelpro.com .chat.yahoo.com
acl ym dstdomain .voice.yahoo.com

acl ymregex url_regex yupdater.yim ymsgr myspaceim

# Other protocols Yahoo!Messenger uses ??
acl ym dstdomain .skype.com .imvu.com

acl porno url_regex -i "/etc/squid/porno.txt"
no_cache deny porno
http_access deny porno all

acl situslarangan dstdomain "/etc/squid/situs.txt"
no_cache deny situslarangan
http_access deny situslarangan all

always_direct allow localnet localhost
always_direct deny all
http_access allow manager all
http_access deny !Safe_ports
http_access allow purge localhost
http_access deny purge
http_access allow localhost
http_access allow localnet
http_access deny all
http_reply_access allow all
icp_access allow all
miss_access allow localnet
miss_access deny all
visible_hostname proxy
header_access Accept-Encoding deny all

#==============================================
# MISCELLANEOUS
#==============================================
logfile_rotate 7
negative_ttl 2 minutes
client_persistent_connections on
server_persistent_connections on
pipeline_prefetch on
vary_ignore_expire on
reload_into_ims on
nonhierarchical_direct off
prefer_direct off
memory_pools off
ie_refresh on
cache_mgr Abienickirhaby
cache_effective_user proxy
cache_effective_group proxy

* buat file porno.txt di /etc/squid/ untuk memasukkan daftar kata-kata yg akan diblokir

$ sudo nano /etc/squid/porno.txt

* buat file situ.txt di /etc/squid/ untuk memasukkan daftar situs-situs yang diblokir

$ sudo nano /etc/squid/situs.txt

* edit kembali rc.local yg dibuat tadi dan masukkan script untuk membelokkan request dari port 80 ke port proxy 3128

$ sudo nano /etc/rc.local

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to 192.168.10.2:3128
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# Dan ini buat configurasi satu arah
# Tambahkan 3 baris di bawah ini di rc.local

#squid start
#iptables -t nat -I PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
#iptables -t nat -I PREROUTING -i eth0 -p udp -m udp --dport 80 -j REDIRECT --to-ports 3128

exit 0

* restart server

* cek file access.log

$ sudo nano /var/log/squid/access.log
atau
$ sudo tail -f /var/log/squid/access.log

jika squid berjalan normal maka akses terhadap proxy akan tersimpan di file ini

SEMOGA BERMANFAAT...!!!

powered by Blogger | WordPress by Newwpthemes | Converted by BloggerTheme