Anda di halaman 1dari 15

Membangun Proxy Server Yang Handal

Biar ngga salah asumsi antara satu dengan lain, kita samakan dulu persepsinya trutama bentuk
jaringan yang mau dibahas, sebagai berikut :

Adapun tool/bahan yang digunakan dalam pembahasan ini antara lain :


OS : Ubuntu Server (versi bebas)
Proxy : Squid
Firewall : iptables
Spesifikasi server: Intel Celeron 2,6GHz, RAM 512MB, 2 LAN Card, HDD 80GB

STEP 1 : INSTALASI SERVER

Proses instalasi disesuaikan dengan bentuk jaringan yang akan dibuat, meliputi :
1.Pemilihan bahasa
2.Zona lokasi
3.Layout keyboard
4.Penamaan hostname (misal : proxy)
5.Pemartisian. Tahap ini merupakan tahap TERPENTING dari serangkaian proses instalasi.
Detail pemartisian yang ane buat sbb:
Dari HDD 80GB, dipecah menjadi :
/boot____1GB____ext4
Swap____1GB____swap
/________18GB____ext4
/cache1__20GB___ReiserFS
/cache2__20GB___ReserFS
/cache3__20GB___ReiserFS
6.Membuat user Account
7.Memilih paket.(Pilih : DNS Server, OpenSSH Server)
STEP 2 : KONFIGURASI JARINGAN

Setelah tahap instalasi selesai, secara otomatis Ubuntu akan reboot. Selanjutnya kita akan
melakukan login untuk yang pertama kali. Loginlah dengan username dan password yang telah
dibuat sebelumnya pada tahap instalasi. Biar ngga lupa, langsung masuk sebagai root dengan
perintah :
$ sudo su
Setelah itu segera buat password untuk root dengan perintah :
# passwd root

Masih dengan root, edit file /etc/network/interfaces..


# pico /etc/network/interfaces
Perhatikan skema jaringan yang akan kita buat di atas. Pada server(router) terdapat 2 LAN Card.
Dalam Linux, LAN Card dinamakan dengan penamaan "eth". Mulai dari eth0, eth1, eth2], dst.
Oleh karena itu perlu ditentukan eth mana yang menuju akses internet, eth mana yang menuju
akses LAN. Biar nantinya ngga bingung, kita buat kesepakatan sbb :
eth0 > public
eth1 > LAN
Lakukan konfigurasi file utama /etc/network/interfaces sbb:

Code:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.0.2
netmask 255.255.255.252
network 192.168.0.0
broadcast 192.168.0.3
gateway 192.168.0.1
dns-nameservers 192.168.0.1

auto eth1
iface eth1 inet static
address 192.168.2.1
netmask 255.255.255.224
network 192.168.2.0
broadcast 192.168.2.31
dns-nameservers 192.168.2.1

Setelah itu save dan reboot. Lalu amati hasilnya dengan perintah :
# ifconfig

Step 3 : Dial up modem

Dalam kasus ini, saya melakukan dial menggunakan pppoeconf. Perlu diketahui, pppoeconf
merupakan tool dial untuk modem tipe ADSL.
Jalankan peritah pppoeconf, maka akan muncul tampilan berikut :

Ikuti instruksi yang diberikan. Jika sudah, perhatikan kembali file /etc/network/interfaces, maka
akan berubah menjadi :

auto lo
iface lo inet loopback

auto eth0
iface eth1 inet static
address 192.168.1.2
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
dns-nameservers 192.168.1.1

auto eth1
iface eth1 inet static
address 192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
dns-nameservers 192.168.0.1
dns-search dns.persegi.net

auto dsl-provider
iface dsl-provider inet ppp
pre-up /sbin/ifconfig eth0 up # line maintained by pppoeconf
provider dsl-provider

untuk mengetahui apakah koneksi internet sudah berhasil, coba gunakan perintah ping, contoh :
# ping 202.134.0.155
atau
# ping www.detik..com
Jika hasilnya reply, itu berarti koneksi internet sudah terhubung

STEP 4 : UPDATE dan UPGRADE SYSTEM

Setelah koneksi internet tersambung, saatnya kita melakukan upgrade OS. Pertama-tama, update
terlebih dahulu database repositori, perintahnya sbb :
# apt-get update
Setelah database repositori terupdate, saatnya melakukan upgrade dengan menjalankan perintah :
# apt-get upgrade
Lumayan memakan waktu gan. ane yg punya akses 384kbps membutuhkan skitar 4jam
Mudah2an anda bisa bersabar deh...
Setelah sistem "naek kelas", sekarang coba melakukan upgrade kernel, perintahnya :
# apt-get -y install linux-image-server linux-server
Sudah upadate, upgrade OS, upgrade kernel, trakhir kita install beberapa repositori penting yang
akan sering terpakai…
# apt-get install iptraf iftop whois sysstat snmp snmpd rrdtool dbconfig-common libphp-adodb
php5-cli php5-gd
php-pear php5-snmp php5-adodb phpmyadmin make rpm alien subversion sysvconfig nmap
hping2 libnet-netmask-perl
curl
Restart komputer gan
# reboot

Step 5 : Dhcp server

Biar client bs langsung konek n ngga perlu seting IP sana-sini, server yang kita bangun harus
difungsikan sebagai DHCP server.
Lakukan instalasi paket dhcp3-server.
# apt-get install dhcp3-server
Setelah instalasi paket, lakukan konfigurasi file utama /etc/dhcp3/dhcpd.conf. Kembali kita harus
eprhatikan skema jaringan kita. Pada gambar, kita hendak memberikan Range IP client antara
192.168.2.10 - 192.168.2.30
# pico /etc/dhcp3/dhcpd.conf

Code:

ddns-update-style none;

subnet 192.168.2.0 netmask 255.255.255.224 {


option broadcast-address 192.168.2.31;
option subnet-mask 255.255.255.224;
option domain-name-servers 192.168.2.1;
option routers 192.168.2.1;

default-lease-time 600;
max-lease-time 604800;

log-facility local7;

range 192.168.2.10 192.168.2.30


}

Setelah itu edit file /etc/default/dhcp3-server dan disinilah settingan DHCP default interfaces.
# pico /etc/default/dhcp3server
Rubah atau isi INTERFACES‐nya seperti dibawah ini
INTERFACES="eth1"
Restart DHCP Server
# /etc/init.d/dhcpd restart
Untuk mengetahui apakah DHCP Server sudah berjalan, coba lakukan koneksi dari komputer
client, lalu ping ke IP Server. Jika reply, selamat anda berhasil..

Step 6 : Remote server dengan openssh-server

Pada umumnya, seorang network administrator dalam memaintenance jaringannya (baca :


server) tidak langsung bersentuhan dengan server secara fisik. Kenapa? coba anda bayangkan
jika seorang admin harus terus berlama-lama di ruang server, bisa beku gan.
Ane sendiri kalo mau melakukan apapun yang berhubungan dengan server biasa dilakukan
dengan cara remote, yaitu mengendalikan server dari jarak jauh. Jadi walopun ane ngga lagi ngga
masuk kerja, tp si BOS minta melakukan sesuatu berhubungan dengan server ane ngga perlu
masuk ke kantor, cukup dari rumah aja deh...
Adapun protokol yang biasa digunakan dalam melakukan remote adalah protokol SSH.
Protokokl ini berjalan pada port 22 (default). Namun, bisa kita rubah sesuai kebutuhan, misalnya
dengan alasan security. Paket yang diperlukan adalah OpenSSH. Secara default paket ini sudah
terinstal dalam Ubuntu Server.
Lakukan konfigurasi file utama /etc/ssh/sshd_config
# pico /etc/ssh/sshd_config
hilangkan tanda (#) pada baris port 22. Tujuannya adalah untuk mengaktifkan SSH Server pada
port 22.
Restart service SSH
# /etc/init.d/sshd restart
Nah, sekarang kita udah nga perlu "bersentuhan" dengan server gan. Cukup dilakukan dari meja
kerja kita aja. Aplikasi remote yang biasa ane pake adalah PUTTY. Beruntung, PUTTY bisa kita
download secra FREE disini

jika PUTTY adalah aplikasi remote berbasis text, ada satu lagi aplikasi remote yang dh berbasis
GUI gan, namanya WinSCP. Lagi2 kita beruntung, karna si pembuat aplikasi memberikannya
secara CUMA-CUMA disini
nah, sekarang silahkan bereksplorasi dengan "maenan" baru ini...

Step 7 : Ip forwarding & routing nat

Suatu komputer jika hendak "berhubungan" dengan dunia luar (baca : internet), maka ia WAJIB
memiliki IP public. Kenapa IP public? Namanya juga public gan, jd tuh IP bisa "dikenali" di
dunia luar. Kebalikan IP public adalah IP local.
PErmasalahannya adalah, apa jadinya kalo setiap orang menginginkan akses internet. Bayangkan
jika satu orang meiliki satu komputr/laptop, berapa miliyar IP yang dibutuhkan? Sedangkan
ketersediaan IP (IPv4) sangatlah terbatas yaitu "hanya" 4.294.967.296 alamat. Tentunya jumlah
ini tidak sebandig dengan jumlah manusi yang megakses internet bukan?
Ada dua solusi dalam memecahkan masalah di atas :
1. Beralih ke IPV6
2. NAT
Adapun yang akan dibahas pada sesi sharing ini adalah pada poin 2, yaitu NAT. Apa inu NAT?
Silahkan baca referensi berikut :
1. Referensi A
2. Referensi B
Intinya adalah, suatu teknik translasi IP local menjadi IP public agar IP local dapat
"dikenali" oleh dunia luar
Kembali ke pembahasan...
Agar client bisa terkoneksi dengan internet maka kita harus mengaktifkan ip forward.
Edit file /etc/sysctl.conf, cari teks # net.ipv4.ip_forward=1, hilangkan tanda (#). Tujuannya
adalah untuk mengaktifkan IP FORWARD
Membuat NAT dengan iptables. Perintahnya adalah :
# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUEADE
Restart komputer
# reboot
Sekarang, lakukan test koneksi internet pada sisi client dengan cara ping ke 202.134.0.155 atau
www.detik..com, jika hasilnya adalah reply, SELAMAT ANDA BERHASIL

Step 8 : Squid proxy

Dalam implementasinya, proxy sering dibuat sebagai cache server. Pada kenyataannya proxy
dirancang ngga hanya buat itu gan. Masih bnyak hal laen bisa dilakukan proxy.

Pada dasarnya dan secara garis besarnya, fungsi proxy antara lain : (sumber)

1. Connection Sharing. Berisi segala policy tentang pembagian akses. Termasuk di


dalamnya Access List (ACL), yaitu IP/network mana saja yang diperbolehkan melakukan
koneksi, dan msh banyak contoh lain..
2. Caching. Fitur utama dari suatu proxy. Digunakan untuk menyimpan objek yang berasal
dari internet, sehingga ketika dibutuhkan kembali cukup mengambil dari cache server
tanpa melakukan koneksi ke internet. Otomatis akan mempercepat proses request dan
menghemat bensin bukan?? mksd ane bandwidth gan...
3. Filtering. Berisi tentang segala policy yang ebrhubungan tentang pembatasan suatu
konten. Objeknya bermacam-macam, bisa suatu alamat (baca : URL) ataupun jenis file
(misal : membatasi download file tertentu)
Kembali ke pembahasn utama. Pertama2 install dahulu paket squid
# apt-get install squid squid-common squid-cgi squidclient
Edit file configurasi squid proxy di /etc/squid/squid.conf

Code:

###==================================$
### Proxy Server Versi 2.7. Stable6
### Muhandis
###==================================$

### Konfigurasi Port


http_port 3128 transparent
prefer_direct off

### Tuning Cache & Objek


cache_mem 64 MB
cache_swap_low 91
cache_swap_high 97
max_filedesc 8192
maximum_object_size 128 MB
minimum_object_size 0 bytes
maximum_object_size_in_memory 256 KB

ipcache_size 4096
ipcache_low 97
ipcache_high 99
fqdncache_size 4096
cache_replacement_policy heap LFUDA
memory_replacement_policy heap GDSF

### Lokasi Cache


cache_dir aufs /cache1 20000 46 256
cache_dir aufs /cache2 20000 46 256
cache_dir aufs /cache3 20000 46 256

###LOG
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
cache_swap_log /var/log/squid/swap.state

### DNS Server & Cache Queries


dns_nameservers 202.134.0.155

### Cache Options


emulate_httpd_log off
hosts_file /etc/hosts

### Objek-objek statis waktu peyimpanannya diperlama


refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i \.(iso|avi|wav|mp3|mp4|mpeg|mpg|swf|flv|x-flv)$
43200 90% 432000 override-expire ignore-no-cache ignore-private
refresh_pattern -i \.(gif|png|jpg|jpeg|ico)$ 10080 90% 43200
override-expire ignore-no-cache ignore-private
refresh_pattern -i \.(deb|rpm|exe|zip|tar|tgz|ram|
rar|bin|pdf|ppt|doc|tiff)$ 10080 90% 43200 override-expire ignore-
no-cache ignore-private
refresh_pattern -i \.index.(html|htm|php|asp|aspx)$ 0 40% 10080
refresh_pattern -i \.(html|htm|css|js) 1440 40% 40320
refresh_pattern . 0 40% 40320
#half_closed_clients off

### Access Control


acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563 # https, snews
acl SSL_ports port 873 # rsync
acl Safe_ports port 80 # 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 Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 631 # cups
acl Safe_ports port 873 # rsync
acl Safe_ports port 901 # SWAT
acl purge method PURGE
acl CONNECT method CONNECT

http_access allow manager localhost


http_access deny manager
http_access allow purge localhost
#http_access deny inputIP
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

acl mynet src 192.168.2.0 255.255.255.224


http_access allow mynet
http_access deny all
http_reply_access allow all
icp_access deny all
always_direct deny all

cache_mgr muhandis.u.a@gmail.com
cache_mgr muhandis.u.a@gmail.com
cache_effective_user proxy
cache_effective_group proxy
coredump_dir /var/spool/squid
shutdown_lifetime 10 seconds
logfile_rotate 14
#pid_filename /var/run/squid.pid

### Monitoring SNMP


snmp_port 3401
acl snmpsquid snmp_community public
snmp_access allow snmpsquid localhost
snmp_access deny all

Code:

cache_dir aufs /cache1 20000 46 256


cache_dir aufs /cache2 20000 46 256
cache_dir aufs /cache3 20000 46 256

Step 8 : Squid proxy

Dalam implementasinya, proxy sering dibuat sebagai cache server. Pada kenyataannya proxy
dirancang ngga hanya buat itu gan. Masih bnyak hal laen bisa dilakukan proxy.

Pada dasarnya dan secara garis besarnya, fungsi proxy antara lain : (sumber)

1. Connection Sharing. Berisi segala policy tentang pembagian akses. Termasuk di


dalamnya Access List (ACL), yaitu IP/network mana saja yang diperbolehkan melakukan
koneksi, dan msh banyak contoh lain..
2. Caching. Fitur utama dari suatu proxy. Digunakan untuk menyimpan objek yang berasal
dari internet, sehingga ketika dibutuhkan kembali cukup mengambil dari cache server
tanpa melakukan koneksi ke internet. Otomatis akan mempercepat proses request dan

menghemat bensin bukan?? mksd ane bandwidth gan...


3. Filtering. Berisi tentang segala policy yang ebrhubungan tentang pembatasan suatu
konten. Objeknya bermacam-macam, bisa suatu alamat (baca : URL) ataupun jenis file
(misal : membatasi download file tertentu)

Kembali ke pembahasn utama. Pertama2 install dahulu paket squid


# apt-get install squid squid-common squid-cgi squidclient
Edit file configurasi squid proxy di /etc/squid/squid.conf

Code:

###==================================$
### Proxy Server Versi 2.7. Stable6
### Muhandis
###==================================$

### Konfigurasi Port


http_port 3128 transparent
prefer_direct off

### Tuning Cache & Objek


cache_mem 64 MB
cache_swap_low 91
cache_swap_high 97
max_filedesc 8192
maximum_object_size 128 MB
minimum_object_size 0 bytes
maximum_object_size_in_memory 256 KB

ipcache_size 4096
ipcache_low 97
ipcache_high 99
fqdncache_size 4096
cache_replacement_policy heap LFUDA
memory_replacement_policy heap GDSF

### Lokasi Cache


cache_dir aufs /cache1 20000 46 256
cache_dir aufs /cache2 20000 46 256
cache_dir aufs /cache3 20000 46 256

###LOG
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
cache_swap_log /var/log/squid/swap.state

### DNS Server & Cache Queries


dns_nameservers 202.134.0.155

### Cache Options


emulate_httpd_log off
hosts_file /etc/hosts

### Objek-objek statis waktu peyimpanannya diperlama


refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i \.(iso|avi|wav|mp3|mp4|mpeg|mpg|swf|flv|x-flv)$
43200 90% 432000 override-expire ignore-no-cache ignore-private
refresh_pattern -i \.(gif|png|jpg|jpeg|ico)$ 10080 90% 43200
override-expire ignore-no-cache ignore-private
refresh_pattern -i \.(deb|rpm|exe|zip|tar|tgz|ram|rar|bin|pdf|
ppt|doc|tiff)$ 10080 90% 43200 override-expire ignore-no-cache
ignore-private
refresh_pattern -i \.index.(html|htm|php|asp|aspx)$ 0 40% 10080
refresh_pattern -i \.(html|htm|css|js) 1440 40% 40320
refresh_pattern . 0 40% 40320
#half_closed_clients off

### Access Control


acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563 # https, snews
acl SSL_ports port 873 # rsync
acl Safe_ports port 80 # 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 Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 631 # cups
acl Safe_ports port 873 # rsync
acl Safe_ports port 901 # SWAT
acl purge method PURGE
acl CONNECT method CONNECT

http_access allow manager localhost


http_access deny manager
http_access allow purge localhost
#http_access deny inputIP
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

acl mynet src 192.168.2.0 255.255.255.224


http_access allow mynet
http_access deny all
http_reply_access allow all
icp_access deny all
always_direct deny all

cache_mgr muhandis.u.a@gmail.com
cache_mgr muhandis.u.a@gmail.com
cache_effective_user proxy
cache_effective_group proxy
coredump_dir /var/spool/squid
shutdown_lifetime 10 seconds
logfile_rotate 14

#pid_filename /var/run/squid.pid

### Monitoring SNMP


snmp_port 3401
acl snmpsquid snmp_community public
snmp_access allow snmpsquid localhost
snmp_access deny all

Code:

cache_dir aufs /cache1 20000 46 256


cache_dir aufs /cache2 20000 46 256
cache_dir aufs /cache3 20000 46 256

Pada baris ini menentukan lokasi cache (baca kembali step 1). Namun terlebih dahulu perlu
dibuat permissionnya agar objek yang nantinya tersimpan di dalam partisi tsb dpt diakses.
Matikan dulu service squid
# /etc/init.d/squid stop
Memberikan permission pada folder cache
# chown -R proxy.proxy /cache1
# chown -R proxy.proxy /cache2
# chown -R proxy.proxy /cache3
Membuat dan mengaktifkan folder cache yang akan dibuat
# squid -f /etc/squid/squid.conf -z
Jalankan service squid
# /etc/init.d/squid start
Buat firewall yang bertujuan "membelokkan" port 80 menuju port 3128
(proxy)
# 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
Sampai sini, fungsi proxy pada poin 1&2 sudah berhasil. Pembahasan selanjunya kita akan
membuat filtering pada proxy...
STEP 9 : SITES FILTER (basic)

Di awal dh ane jelasin fungsi proxy secara globa. Pada tutorial sebelmunya kita sdh membuat
proxy sebagai connection sharing dan caching. Sekarang kita akan membuat filter.
Filter? Maksudny apa gan?
Kita akan bikin si squid menyaring beberapa konten agar tidak bisa diakses. Misalnya kita mau
memblok akases menuju situs playboy.com. Langkah2nya adalah sbb:
Buat file yang berisi daftar situs2 yang mau diblok. Misal :
playboy.com
sex.com
porn.com
Simpan dengan nama blok.list di dalam direktory /etc/squid
Buat Access List ACL pada squid.conf :
acl situs dstdomain "/etc/squid/blok.list"
Lalu tentukan nasib ACL tadi, apakah deny atao allow
http_access deny blok
Sampai sini situs playboy.com seharusnya sudah terblokir. Apakah cukup sampai sini? Belum
gan.
Agan2 pasti tau kan, ketika kita melakukan koneksi ke suatu situs, misalnya detik..com, pada
dasarnya alamat yang dicari adalah IP dari server detik..com, diantaranya 203.190.241.43 (detik
memiliki beberapa IP yg bs diakses)
Nah, masalahnya skrg adalah, rule yang sudah kita buat barusan adalah blok akses berdasarkan
URL (playboy.com). Bagaimana jika yang diketik di browser bkn URL melainkan IP
216.163.137.68? tentu situs playboy.com tetap bkl bisa diakses gan...
Nah, sekarang, tugas agan2 sekalian membuat ACL pada squid.conf tentang filter berdasarkan IP
(ky kuliah aja pke tugas segala )..
Ane ksh bantuan nih gan : untuk mengetahui IP suatu situs, bisa dg perintah
#nslookup<SPASI>URL (berlaku untuk semua OS)

Anda mungkin juga menyukai