Friday, October 29, 2010

Transparent Proxy Menggunakan Squid dan IPTables

Disclaimer: Saya mohon maaf kalau tulisan ini menjurus ke arah teknis, dan mungkin amat sangat membosankan…:D


Squid merupakan aplikasi Proxy Server yang cukup tangguh dan dapat berjalan di platform UNIX maupun Windows. Kelebihan yang ditawarkan aplikasi ini adalah Delay Pools, Cache, Access Control List, dan lain sebagainya. Dan pada kali ini, saya akan membahas tentang cara Mengonfigurasi Transparent Proxy menggunakan Squid sebagai aplikasi proxy server.
Sebelumnya Apa itu Transparent Proxy? Transparent proxy adalah fasilitas dimana router/proxy akan melakukan forward port. Oke, kita ambil contoh seperti ini, hampir setiap proxy server mempunyai port sendiri yang dapat diatur oleh kita sendiri, contohnya 3128, tentunya setiap client yang terhubung ke proxy server harus melakukan konfigurasi port di mesin client itu sendiri. Akan terasa repot jika client yang terhubung itu banyak sekali, maka dari itu, Transparent akan melakukannya secara otomatis, dimana port 80(port standar WWW) akan di-redirect secara otomatis oleh transparent proxy tadi.
Lalu apa yang harus dilakukan pertama kali? Install Squid sebagai proxy servernya. Squid dapat di-download di situs resminya. Saya tidak akan membahas bagaimana cara menginstall Squid, karena cara instalasi berbeda di setiap platform. Pada kali ini penulis menggunakan Squid versi 2.6 STABLE 18 dengan sistem operasi Ubuntu Server 7.04.
Setelah instalasi selesai, sekarang buka file “squid.conf” file ini bisa ditemukan di folder /etc/squid (bisa berbeda, tergantung distro linux yang digunakan). Dan isi dengan script dibawah ini. Anda tentunya dengan bebas dapat memodifikasi script ini.
# Tentukan port yang akan digunakan, dan tambahkan tulisan transparent karena transparent proxy akan diaktifkan
http_port 3128 transparent
# Tentukan memory untuk cache yang akan digunakan, banyak yang bilang 2 kali lipat dari RAM router, tapi itu terserah anda.
cache_mem 100 MB
# Untuk ini sifatnya opsional, aktifkan script ini jika anda ingin mengaktifkan fungsi log.
cache_access_log /var/log/squid/access.log
cache_store_log /var/log/squid/store.log
cache_log /var/log/squid/cache.log
# Untuk yang ini, pengaturan Access Control List, pada contoh kasus kali ini saya menggunakan 1 ethernet interface untuk Internet, dan 2 Ethernet Interface untuk jaringan LAN dan Wireless LAN.
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 lokal src 172.22.0.0/255.255.0.0
acl hotspot src 192.168.0.0/255.255.255.0
acl SSL_ports port 443 563
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 5050 # YahooMessenger
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 CONNECT method CONNECT
http_access allow manager
http_access allow localhost
http_access allow lokal
http_access allow hotspot
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access deny all
#http_access deny !lokal
icp_access allow localhost
icp_access allow lokal
icp_access allow hotspot
icp_access deny all
# Avoid caching cgi scripts
acl QUERY urlpath_regex cgi-bin
no_cache deny QUERY
# akses snmp, silahkan isikan string snmp community.
acl snmppublic snmp_community public
snmp_access allow snmppublic localhost
snmp_access deny all
#silahkan ganti visible hostname dengan domain yang dikehendaki dan
visible_hostname localhost.localdomain
cache_mgr hello@anggiemaya.net
# Isikan dengan DNS server yang diberikan ISP, jika DNS bersifat dynamic tidak perlu diisi.
dns_nameservers 202.46.82.97 202.46.81.88
Simpan file “squid.conf” diatas. Jika anda baru pertama kali menginstall squid, gunakan perintah berikut untuk membuat direktori cache dan swap.
root@proxy.server.local~$ squid -z
Setelah itu, aktifkan Squid dengan menggunakan perintah…
root@proxy.server.local~$ /etc/init.d/squid start
Jika tidak ada pesan error satupun, aplikasi squid sudah berjalan sebagaimana mestinya.
Membuat Transparent Proxy dengan IPTables
Nah, setelah squid berjalan, sekarang kita tinggal aktifkan fungsi redirect port menggunakan IPTables dengan mengetikkan perintah ini di shell.
iptables -A PREROUTING -t nat -j REDIRECT -p tcp -s 192.168.0.0/24 -d 0/0 –dport 80 –to-ports 3128
Note: ganti alamat 192.168.0.0/24 dengan subnet yang akan digunakan pada jaringan LAN anda.
Berjalan? Terkadang bisa berjalan, tapi kalau masih tidak berfungsi Transparent Proxy-nya, ada 2 cara, buat DNS Server di mesin proxy itu sendiri dan redirect DNS Record dari ISP ke DNS Server lokal, atau gunakan NAT untuk me-redirect DNS Record dari ISP dengan cara.
iptables –table nat -A POSTROUTING -o eth0 -j MASQUERADE
Note: eth0 pada contoh diatas dapat diganti dan diarahkan ke interface yang terhubung langsung ke jaringan internet.
Simpan kedua perintah tersebut di file /etc/rc.local agar tidak perlu mengetikkan perintah ini setiap kali mesin di restart.

Selamat Mencoba
:)

Comments
0 Comments

0 comments:

Post a Comment

Related Posts Plugin for WordPress, Blogger...