14001326 all-about-squid-apache - [the-xp.blogspot.com]

26
Sekilas Proxy Server dan Webserver Dengan Squid dan Apache Galih Satriaji supported by: Net Centric Computing Laboratory Informatics - ITS

Transcript of 14001326 all-about-squid-apache - [the-xp.blogspot.com]

Page 1: 14001326 all-about-squid-apache - [the-xp.blogspot.com]

SekilasProxy Server dan Webserver

Dengan Squid dan Apache

Galih Satriaji

supported by:Net Centric Computing Laboratory

Informatics - ITS

Page 2: 14001326 all-about-squid-apache - [the-xp.blogspot.com]

Proxy Server dan Web Server

Kerugian dan Keuntungan Proxy ServerKeuntungan menggunakan proxy server:

✗ Dapat menghemat biaya bandwidth.

✗ Mempercepat koneksi karena file-file web yang direquest (selanjutnya disebut object)

disimpan di dalam cache sehingga tidak perlu keluar menuju internet.

✗ Dapat mengatur kecepatan bandwidth untuk subnet yang berbeda-beda (mirip

dengan HTB atau zaper).

✗ Dapat melakukan pembatasan untuk file-file tertentu.

✗ Dapat melakukan pembatasan akses kepada situs-situs tertentu (misalnya situs

porno).

✗ Dapat melakukan pembatasan download untuk file-file tertentu (misalnya file-file

mp3, wav, dsb).

✗ Dapat melakukan pembatasan waktu-waktu yang diperbolehkan untuk download.

✗ Dapat melakukan pembatasan siapa saja yang boleh mengakses internet dengan

menggunakan autentikasi. Autentikasi yang biasa digunakan bisa basic, digest,

ataupun ntlm.

✗ Dapat melakukan pembatasan-pembatasan lainnya.

Kerugian menggunakan proxy server:

– Pintu keluar menuju gerbang internet hanya lewat proxy, sehingga ketika terjadi

overload, akses internet menjadi lambat

– User akan melihat file yang kadaluarsa jika cache expire time-nya terlalu lama,

sehingga meskipun di website file tersebut sudah berubah, user masih melihat file

yang tersimpan di cache memory

– Karena koneksi internet harus melalui gerbang proxy terlebih dahulu, maka

kecepatan akses bisa jadi lebih lambat daripada kita melakukan koneksi langsung.

Dalam hal ini keduanya akan mengakses file internet secara langsung

Beberapa proxy yang sering digunakan:

Page 3: 14001326 all-about-squid-apache - [the-xp.blogspot.com]

– Squid Web-cache: merupakan proxy server open source dan didesain untuk berjalan

di sistem UNIX dan keluarganya.

– WinProxy: proxy server berbasis windows yang sifatnya free.

– WinGate Proxy Server: proxy server berbasis windows yang bersifat komersial.

– Microsoft Proxy: proxy server buatan Microsoft Corporation. Tentu saja sangat

komersial :p

– dan lain-lain.

Squid Proxy ServerSquid web-cache proxy server adalah software proxy server yang bersifat open source

yang didesain untuk berjalan di sistem UNIX dan keluarganya (tentu saja termasuk

Linux). Squid tidak hanya dapat meng-cache objek-objek web saja, namun juga dapar

meng-cache DNS dan network lookup lainnya. Meskipun pada awalnya didesain untuk

sistem UNIX, namun Squid dapat pula diport ke Windows NT, namanya menjadi

SquidNT.

Cara Kerja Squid

Squid pertama-tama akan memeriksa request yang datang. Jika squid diset dengan

autentikasi tertentu, squid akan memeriksa autentikasi user terlebih dahulu.

Autentikasi ini termasuk subnet area, user account, jenis file yang direquest, alamat

situs tujuan, dan properti-properti yang telah diset pada file konfigurasi squid. Jika

lolos dan telah sesuai dengan konfigurasi, request tersebut kembali diperiksa apakah

objek yang diminta telah berada di cache. Jika sudah ada maka proxy server tidak perlu

melanjutkan request ke internet tetapi langsung mereply request dengan objek yang

diminta.

ICP (Internet Cache Protocol)ICP merupakan kependekan dari Internet Cache Protocol, yaitu merupakan protokol

yang digunakan untuk mengkoordinasikan antara dua web cache atau lebih agar dapat

bekerjasama dan berkomunikasi. Tujuan web-cache bekerja sama ini adalah supaya

dapat mencari letak yang tepat untuk menerima objek yang direquest. Protokol ini tidak

Page 4: 14001326 all-about-squid-apache - [the-xp.blogspot.com]

reliable namun memiliki time out yang sangat pendek sehingga cocok untuk web-cache.

Protokol ini tidak cocok untuk delivery – UDP adalah protokol yang lebih umum

digunakan untuk delivery protocol.

Access Control ListAccess Control List (ACL) adalah daftar rule yang menyatakan pembagian previleges,

untuk mencegah orang yang tidak memiliki hak akses menggunakan infrastruktur

cache. ACL adalah konfigurasi yang paling penting dalam sebuah web-cache. Dalam

Squid, ACL digunakan untuk mendefinisikan rule yang diterapkan dalam web-cache

tersebut.

Squid mendukung tipe-tipe ACL seperti di bawah ini:

– Network, subnet, baik tujuan maunpun asal

– Waktu, dalam hal ini adalah hari dan jam (bisa merupakan selang waktu)

– Alamat website yang terangkum dalam regular expression (regex)

– Port yang dituju, bisa merupakan daftar port atau selang port sekian hingga sekian

– Protokol, misalnya HTTP, FTP, SNMP, dsb

– Method form HTML, yaitu POST dan GET

– Daftar browser yang digunakan client yang terangkum dalam regular expression

(regex)

– User Name

– Nomor kode negara, baik yang dituju maupun negara asal

– Autentikasi user name

– SNMP agent

– Maksimal koneksi untuk setiap IP address

– Maksimal jumlah IP address yang diperbolehkan untuk user name yang sama

– MIME yang direquest yang terangkum dalam regular expression

– Header dari request yang terangkum dalam regular expression

Squid akan memeriksa setiap request yang datang dengan ACL yang ada pada

konfigurasi dan mencocokannya dengan aturan yang ada. Pencocokan ini bisa

berakibat diizinkan atau ditolaknya suatu koneksi dari user, pemberian bandwidth

Page 5: 14001326 all-about-squid-apache - [the-xp.blogspot.com]

yang sesuai dengan aturan, dan sebagainya.

Delay PoolDelay Pool adalah suatu cara untuk menurunkan kecepatan akses untuk suatu alamat

website dari ACL tertentu. Squid tidak hanya mendukung delay pool hanya untuk

subnet saja, namun untuk semua ACL yang telah dibahas di atas.

Dalam squid, Delay Pool dispesifikasi dalam beberapa konfigurasi, yaitu:

Delay Pool

Menspesifikasi berapa jumlah pool atau kelompok bandwidth yang akan digunakan

dalam squid

Delay Class

Menspesifikasi masing-masing kelompok pool untuk masuk dalam class apa. Dalam

squid ada beberapa class yang memiliki fungsi yang berbeda-beda, yaitu class 1, class 2,

dan class 3. Class-class ini dispesifikasi berdasarkan IP address dari ACL.

Delay Parameter

Delay parameter menspesifikasi berapa jumlah transfer rate atau lebih sering disebut

bandwidth untuk suatu pool. Bandwidth dispesifikasi dalam transfer rate rata-rata dan

transfer rate maksimum yang dapat dicapai suatu pool.

Delay Access

Delay Access adalah parameter untuk memasukkan suatu ACL ke pool tertentu. Di sini

juga disebutkan apakah ACL diterima atau ditolak untuk masuk ke pool tersebut.

Autentikasi pada SquidSquid mendukung beberapa cara untuk autentikasi, yaitu basic, digest, dan NTLM.

Cara basic paling sering digunakan karena hampir semua browser mendukung

autentikasi ini, meskipun dari segi keamanan kurang dapat dijamin keamanannya.

NTLM adalah kependekan dari NT Lan Manager, autentikasi yang dikembangkan oleh

Microsoft yang digunakan oleh produk-produk Microsoft, dan akhirnya digunakan

banyak software lain sebagai standar autentikasi, seperti misalnya Mozilla dan Apache

WebServer.

Page 6: 14001326 all-about-squid-apache - [the-xp.blogspot.com]

Sebenarnya tidak hanya NTLM saja yang didukung squid untuk melakukan autentikasi

user. Program kita juga bisa digunakan sebagai media autentikasi karena parameter di

file konfigurasi Squid sangat liberal. Pada prinsipnya program yang digunakan bisa

menerima input dari realm browser dan mencek dengan passwordnya dan mereturn

sebuah value: OK atau ERR. Squid akan membaca kedua return value tersebut. Oleh

karena itu kita dapat membuat program untuk autentikasi Squid, misalnya autentikasi

IMAP, sehingga yang digunakan adalah user dan password di mail server. Contoh

program untuk autentikasi ini ada di http://www.sokam.or.id/artikel/squidimap.pl.

Httpd Accelerator / Reverse Proxy ServerReverse proxy server adalah proxy server yang terinstall di dalam satu neighbourhood

dengan satu atau lebih webserver. Semua request dari internet yang berasal dari

internet yang menuju ke salah satu webserver akan dilayani lewat proxy server, yang

bisa jadi request tersebut ke dirinya sendiri atau diteruskan ke webserver seluruhnya

atau sebagian saja.

Ada beberapa alasan kenapa kita memakai reverse proxy server, diantaranya adalah;

• Alasan keamanan: Proxy server adalah lapisan keamanan tambahan sebelum masuk

lapisan webserver.

• Enkripsi/SSL accelerator: Ketika website yang aman dibentuk, enkripsi SSL mungkin

tidak dikerjakan oleh webserver untuk mengurangi beban kerja webserver, tetapi

dilakukan oleh proxy server yang dilengkapi dengan hardware acceleration untuk

SSL.

• Load distribution: Reverse proxy dapat mendistribusikan beban ke beberapa

webserver, sehingga masing-masing webserver hanya bekerja di areanya sendiri-

sendiri.

• Caching content yang statis. Reverse proxy dapat meng-cache content-content yang

statis seperti image, sehingga memperingan beban kerja webserver.

Transparent CachingKetika kita menggunakan squid untuk melakukan caching dari web traffic, browser

Page 7: 14001326 all-about-squid-apache - [the-xp.blogspot.com]

harus dikonfigurasi agar menggunakan squid sebagai proxy. Transparent caching

adalah metode agar browser tidak perlu dikonfigurasi menggunakan proxy, namun

secara otomatis telah menggunakan proxy. Web traffic yang menuju ke port 80

diarahkan menuju ke port yang didengarkan oleh squid, sehingga squid bertindak

sebagai layaknya standar web server untuk browser.

Cara Kerja:

Dengan menggunakan iptables atau ipchain, kita “rampok” request ke port 80

membelok ke arah port yang didengarkan oleh squid, misalnya port 3128 (port default

Squid). Kemudian squid kita konfigurasi untuk menerima request HTTP disamping

request proxy biasa seperti layaknya webserver. Dalam file konfigurasi squid, ada

empat parameter yang perlu dikonfigurasi untuk menjadikan transparent proxy, yaitu:

httpd_accel_host,

httpd_accel_port,

httpd_accell_with_proxy, dan

httpd_accel_uses_host_header

Keuntungan memakai transparent caching:

– Kita tidak perlu mengkonfigurasi browser untuk memakai proxy tertentu karena

sudah otomatis. Teknik ini cocok jika pengguna dari suatu subnet sangat awam dan

tidak mau melakukan konfigurasi terlalu rumit pada browsernya.

– Pengendalian yang terpusat oleh administrator

Kerugian memakai transparent caching:

– Fungsi autentikasi menjadi tidak berjalan

– Request untuk HTTPS tidak akan di-cache

– Tidak kokoh, karena transparent proxy sangat bergantung pada kestabilan jalur

network (karena adanya pengalihan request)

– Ketergantungan terhadap browser tertentu. Proxy server melayani request

berdasarkan HTTP header dari browser dan beberapa browser yang kuno tidak

menyediakan informasi ini.

– Jika ada suatu webserver yang tidak mendengarkan di port 80, request jelas akan

Page 8: 14001326 all-about-squid-apache - [the-xp.blogspot.com]

tidak pernah dilayani.

Konfigurasi Dasar Squid

http_port

Port HTTP yang didengarkan oleh Squid. Defaultnya adalah 3128. Biasanya port yang

umum untuk sebuah proxy server adalah 8080. Terkadang Squid juga memakai port 80

kalau sedang berfungsi sebagai reverse proxy server

acl src ipaddress/netmask

Access Control List untuk alamat network asal. Biasanya digunakan untuk

mengidentifikasi subnet yang digunakan user. ACL ini bisa berupa alamat network dan

subnet mask atau alamat IP address tertentu saja

acl dst ipaddress/netmask

ACL untuk alamat network yang dituju oleh user/client. Lihat bagian acl src

acl srcdomain .foo.com

ACL untuk nama domain asal.

acl dstdomain .foo.com

ACL untuk nama domain tujuan.

acl srcdom_regex [-i] xxx

ACL domain asal yang difilter oleh sebuah regular expression.

acl dstdom_regex [-i] xxx

ACL domain tujuan yang difilter oleh sebuah regular expression.

acl time [singkatan-hari] [h1:m1-h2:m2]

ACL untuk mendefinisikan waktu. Singkatan hari didefinisikan di bawah ini:

– S: Sunday

– M: Monday

– T: Tuesday

– W: Wednesday

– H: Thursday

– F: Friday

– A: Saturday

Page 9: 14001326 all-about-squid-apache - [the-xp.blogspot.com]

Waktu 1 harus lebih kecil dari waktu 2 dan memakai sistem waktu 24 jam

acl url_regex [-i] ^http://..

URL yang difilter dengan regular expression didefinisikan dalam ACL ini

acl urllogin [-i]

URL yang memakai autentikasi difilter dengan regular expression yang didefinisikan

dalam ACL ini

acl port

Definisi port yang dituju oleh client

acl proto

Protokol yang digunakan oleh client, misalnya FTP, HTTP

acl method

Method yang digunakan oleh client, misalnya GET, POST

acl browser [-i] regex

Jika Anda ingin memfilter browser yang digunakan oleh client, Anda dapat

menggunakan ACL ini dengan menambahkan regular expression di belakangnya.

acl ident username

ACL untuk mendefinisikan user yang login di Squid. Untuk itu Anda harus

menerapkan fungsi autentikasi di Squid

acl proxy_auth username

ACL untuk autentikasi user. Gunakan REQUIRED pada username untuk menerima

user name yang valid. Catatan: ACL ini tidak akan berjalan pada transparent proxy.

acl maxconn

ACL untuk maksimum koneksi yang digunakan oleh satu host yang melakukan

koneksi ke internet lewat proxy server.

icp_port

Port yang digunakan Squid untuk melakukan kerjasama dengan Squid yang lain. Secara

default, Squid bekerjasama pada port 3130

Page 10: 14001326 all-about-squid-apache - [the-xp.blogspot.com]

cache_mem

Memory fisik ideal yang digunakan Squid untuk menangani objek-objek In-Transit, Hot

Object, dan Negative Cache Object

maximum_object_size

Besar maksimum objek yang disimpan dalam cache. Dalam bytes

cache_dir

Directory yang digunakan Squid sebagai tempat penyimpanan objek-objek. Defaultnya

berada di directory /var/spool/squid

auth_param

Parameter yang digunakan untuk autentikasi. Untuk menjalankan autentikasi di Squid,

ACL proxy_auth REQUIRED harus didefinisikan dan diberi hak akses pada http_access.

Ada 3 mode parameter yang digunakan dalam autentikasi, yaitu basic, digest, dan

NCSA.

http_access

Http Access adalah parameter untuk mengizinkan atau menolak akses dari ACL-ACL

yang telah didefinisikan. Di sini hany ada dua opsi yaitu allow untuk mengizinkan

akses ACL dan deny untuk menolak akses dari ACL terhadap Squid.

reply_header_max_size

Opsi ini digunakan untuk membatasi jumlah ukuran file yang diizinkan untuk

didownload. Parameter allow menunjukkan bahwa suatu ACL dibatasi jumlah

maksimum download-nya. Request yang terlalu besar akan menyebabkan Squid

mengirimkan pesan “the request or reply is too large”.

delay_pools

Opsi ini untuk menspesifikasi berapa jumlah pool yang digunakan untuk membatasi

jumlah bandwidth dari ACL. Opsi ini akan dirangkaikan bersama opsi delay_class dan

delay_parameters yang akan dibahas di bawah ini.

delay_class

Opsi ini menspesifikasikan kelompok dari masing-masing pool yang telah didefinisikan

pada opsi delay-pools. Ada tiga class yang didukung Squid, antara lain:

Page 11: 14001326 all-about-squid-apache - [the-xp.blogspot.com]

– class 1: Semua akses dibatasi dengan single bucket, artinya hanya bisa

mendefinisikan overall bandwidth untuk suatu ACL saja, tidak bisa mendefinisikan

bandwidth dengan lebih mendetail

– class 2: Semua akses dibatasi dengan single agregate dengan dua parameter

bandwidth. Parameter pertama mendefinisikan berapa bandwidth maksimal yang

didapatkan ACL, parameter kedua mendefinisikan berapa bandwidth overall untuk

ACL yang spesifik yang ada pada network tersebut.

– class 3: Kelompok yang definisi bandwidth-nya paling mendetail. Parameter pertama

mendefinisikan berapa bandwidth maksimal yang didapatkan ACL, parameter

kedua mendefinisikan berapa bandwidth normal yang didapatkan ACL secara

umum, dan parameter yang ketiga adalah mendefinisikan bandwidth yang

didapatkan ACL jika mengakses ACL-ACL tertentu yang spesifik, misalnya file mp3.

delay_parameters

Opsi ini menspesifikasikan rumus bandwidth yang akan didapatkan oleh ACL yang

akan memasuki delay_pool. Misalnya ada entry berikut ini pada delay_parameters:delay_parameters 1 -1/-1 2100/4000Angka 1 berarti rumus ini berlaku untuk pool 1

Angka -1/-1 berarti bandwidth maksimal yang diberikan Squid adalah tidak terbatas

untuk pool ini.

Angka 2100/4000 berarti bandwidth yang didapatkan oleh ACL setelah masuk ke pool

ini. Angka ini berada dalam kelipatan 8 b, sehingga untuk mendapatkan nilai

bandwidth yang sebenarnya harus dikalikan delapan.

Angka 2100 adalah bandwidth yang didapatkan ACL pada masa-masa normal. Jika

dikalikan 8, maka bandwidth normal yang akan didapatkan ACL sekitar 18 Kbps.

Angka 4000 adalah bandwidth maksimal yang didapatkan ACL pada masa-masa jalur

sedang kosong. Jika dikalikan 8, maka bandwidth yang didapatkan sekitar 32 Kbps.

delay_access

Opsi ini mendefinisikan siapa-siapa ACL yang akan dimasukkan ke pool tertentu untuk

mendapatkan “perlambatan” bandwidth. Bentuk umumnya adalah seperti ini:

delay_access 1 allow labprog

Page 12: 14001326 all-about-squid-apache - [the-xp.blogspot.com]

Opsi di atas berarti kita memasukkan ACL labprog ke dalam pool 1.

opsi yang sangat khusus! lihat komentarnya di file /etc/squid.conf

# TAG: incoming_icp_average

# TAG: incoming_http_average

# TAG: incoming_dns_average

# TAG: min_icp_poll_cnt

# TAG: min_dns_poll_cnt

# TAG: min_http_poll_cnt

# Heavy voodoo here. I can't even believe you are reading this.

# Are you crazy? Don't even think about adjusting these unless

# you understand the algorithms in comm_select.c first!

#

WebServer, Apakah itu?Webserver adalah suatu daemon atau service yang bekerja untuk mendengarkan

request di port 80 dan melayani permintaan tersebut lewat protokol HTTP sehingga

webserver juga disebut HTTP server. Permintaan tersebut dapat bersifat statis (file

HTML atau image biasa) ataupun bersifat dinamis. Untuk request yang bersifat

dinamis, webserver memprosesnya terlebih dahulu dengan program yang tertanam

didirinya yang khusus melayani request dinamis tersebut. Request dinamis bisa berupa

script ASP, PHP, ColdFusion, JSP, ataupun JSF dan script-script web dinamis yang lain.

Beberapa web server yang kami ketahui:

– Apache

– Microsoft Internet Information Server (IIS)

– Weblogic BEA

– IBM Websphere

– Sun J2EE Server

– dll.

Page 13: 14001326 all-about-squid-apache - [the-xp.blogspot.com]

Konfigurasi Dasar Apache

ServerRoot

Menunjukkan letak directory Apache berada. Defaultnya berada di directory /

etc/apache

TimeOut

Menunjukkan berapa lama waktu pengiriman dan penerimaan request diizinkan.

Defaultnya adalah 300 detik

MaxClients

Menunjukkan berapa jumlah maksimal client yang diperbolehkan untuk mengadakan

koneksi dengan Apache secara simultan. Defaultnya adalah sebanyak 150

Port

Menunjukkan di port berapa Apache akan mendengarkan request. Sebagai webserver

biasa, biasanya Apache akan dikonfigurasi di port 80, yaitu port HTTP, namun jika

keadaan khusus, Apache bisa dikonfigurasi di port yang lain sesuai kebutuhan dengan

parameter ini.

User dan Group

Menspesifikasi siapa user dan group yang menjalankan daemon Squid. Defaultnya

adalah www-data.

ServerAdmin

Menspesifikasi alamat email yang harus dihubungi ketika server mengalami gangguan.

Biasanya alamat dari ServerAdmin ini ditampilkan pada halaman error ketika server

terjadi kesalahan atau masalah.

DocumentRoot

Opsi ini menspesifikasi dimana letak dokumen-dokumen HTML yang akan

ditampilkan pada halaman web diletakkan. Tanpa menggunakan virtual host, Apache

akan meload dokumen-dokumenyang diminta browser. Defaultnya terletak di /

var/www. Jika opsi DocumentRoot berubah, maka opsi pada tag <Directory /

var/www> juga harus diubah sesuai dengan path yang ditunjukkan di opsi

DocumentRoot

Page 14: 14001326 all-about-squid-apache - [the-xp.blogspot.com]

<IfModule mod_userdir.c>

Tag ini mendefinisikan dimana directory public dari user jika browser meminta URL

yang mengarah ke user directory – di Apache menggunakan tanda '~' (baca: tilde bukan

dibaca cacing).

<IfModule mod_dir.c>

Tag ini mendefinisikan dokumen-dokumen yang menjadi pre-written directory index atau

halaman depan dari suatu halaman web dimana user tidak perlu mengetikkan nama

dokumen yang direquest. Dokumen-dokumen yang umum menjadi index adalah

index.htm, index.html, index.shtml, default.htm (halaman HTML), index.cgi (dokumen CGI),

index.asp (dokumen ASP), index.php (dokumen PHP), dll.

AccessFileName .htaccess

Nama file yang digunakan untuk mencari directory-directory yang memerlukan

autentikasi untuk dapat dibuka

<IfModule mod_alias.c>

Tag ini mendefinisikan nama-nama alias didefinisikan seperti misalnya directory alias

dsb.

Virtual Host pada ApacheVirtual host adalah suatu teknik dimana satu web server dengan satu IP address dapat

memiliki lebih dari satu nama domain. Virtual host dalam apache dikonfigurasikan

dalam file httpd.conf. Jika nama virtual host terlalu banyak, definisi mengenai virtual

host dapat dipisahkan dalam file tersendiri dan di file httpd.conf disebutkan bahwa

definisi virtual host terdapat di dalam file tersebut.

Virtual Host menggunakan protokol HTTP/1.1 dimana protokol ini mengirimkan

header tentang alamat URL yang diketik user pada address bar browser. Browser yang

tidak mendukung HTTP/1.1 tidak akan dapat merequest alamat yang menggunakan

virtual host.

NameVirtualHost <ipAddress>

Tag ini harus di-uncomment jika server dikonfigurasi untuk meng-host Virtual Host –

minimal satu IP Address harus didefinisikan dan biasanya yang disebutkan di situ

adalah server yang menangani virtual host. Jika tag ini tidak didefinisikan, maka virtual

Page 15: 14001326 all-about-squid-apache - [the-xp.blogspot.com]

host tidak akan berjalan dengan sempurna

<VirtualHost ip.address.of.host.some_domain.com><VirtualHost ip.address.of.host.some_domain.com>

ServerAdmin [email protected]_domain.com

DocumentRoot /www/docs/host.some_domain.com

ServerName host.some_domain.com

ErrorLog logs/host.some_domain.com-error.log

CustomLog logs/host.some_domain.com-access.log common

</VirtualHost>

Baris di atas mendefinisikan virtual host dari domain tertentu. Ada beberapa tag yang

harus diisi yaitu IP Address dari domain, email dari administrator server, letak

dokumen yang akan ditampilkan, nama domain dari server virtual, error log, dan

custom log. Selain itu, semua opsi-opsi dan tag-tag yang ada pada httpd.conf bisa di-

override menurut kebutuhan dari virtual host.

Contoh konfigurasi virtual host:<VirtualHost 202.154.63.13:80> SSLDisable ServerName its.ac.id ServerAlias www.its.ac.id DocumentRoot /var/www/new.its.ac.id ServerAdmin [email protected] CustomLog /var/log/apache-ssl/its.ac.id.log common</VirtualHost>

WorkshopKita akan mencoba mempraktikkan segala teori di atas dalam UML yang telah kita

bangun (Lihat modul 1 (Subnetting dan Desain Jaringan) dan 2 (DNS dan Iptables).

Map dari network kita tercantum di bawah ini:

Page 16: 14001326 all-about-squid-apache - [the-xp.blogspot.com]

Problem 1: Setting Proxy ServerPerusahaan PT. Tata Surya memutuskan berlangganan internet kePT. AJK.Net dengan bandwith 512 Kbps. Dengan demikian diperlukanpengaturan atau manajemen bandwith di dalam jaringan PT. TataSurya.Setelah dilakukan rapat direksi. Diputuskan bahwa :a. Semua workstation yang terhubung dengan internet, baik selama jamkerja saja maupun tidak, harus melewati proxy, dan diputuskanworkstation tidak perlu menambah konfigurasi apapun. ( transparentproxy ). Proxy tersebut mempunyai rule sbb : - Maksimum download dibatasi 2 MB - Maksimum koneksi per host/workstation dibatasi 8 koneksi simultan. - Batas kecepatan koneksi overall adalah 256 Kbps. per-network

Page 17: 14001326 all-about-squid-apache - [the-xp.blogspot.com]

adalah 64 kbps. Sedangkan per-user/host dibatasi 2 Kbps jika digunakan untuk download file bertipe exe, mp3, vqf, tar.gz, gz, rpm, zip, rar, avi, mpeg, mpe, mpg, qt, ram, rm, iso, raw, dan wav. Jika tidak, maka koneksi perhost HANYA mengikuti aturan per- Network saja. - Diputuskan juga para user TIDAK BOLEH membuka situs situs terlarang. Jenis situs2 terlarang tsb diantaranya : situs porno, situs spam, dan situs situs lain yang ditentukan oleh direksi (baca:asisten) tips ( gunakan regular expresion file shg bisa ditambah atau dikurangi ) - semua workstation subnet Uranus tidak dapat menggunakan akses proxy. - Proxy PT. Tata Surya di sibling kan dengan proxy nya ISP PT. AJK dengan ip 10.126.13.220 HTTP port 3128, ICP port 3130.

Penyelesaian:

Kita akan memasang Squid yang bertindak sebagai transparent proxy pada bridge,

karena posisi bridge berada di bawah gateway matahari sehingga semua request yang

keluar pasti akan melewati bridge.

Semua workstation yang terhubung dengan internet, baik selama jam kerjasaja maupun tidak, harus melewati proxy, dan diputuskan workstation tidak perlu menambah konfigurasi apapun. ( transparent proxy )

httpd_accel_host virtualhttpd_accel_port 80httpd_accel_with_proxy onhttpd_accel_uses_host_header onKonfigurasi di atas menyebabkan proxy bertindak sebagai transparent proxy dengan

membackup semua request ke port 80 (HTTP) lewat dirinya. Agar proxy berfungsi

sebagai transparent proxy, konfigurasi tambahan pada iptables perlu diberikan agar

semua request yang lewat dengan tujuan port 80 diredirect ke port milik Squid.

Perintah iptables-nya seperti di bawah ini:iptables -t nat -A PREROUTING -i br0 -p tcp --dport 80 -j REDIRECT \ --to-port 3128

Maksimum download dibatasi 2 MB

Sebelum kita melakukan pembatasan, kita perlu mendefinisikan ACL network yang

kita perlukan terlebih dahulu. ACL yang didefinisikan pada host bridge seperti di

bawah ini:

Page 18: 14001326 all-about-squid-apache - [the-xp.blogspot.com]

acl lokal src 10.17.42.0/24acl uranus src 10.17.42.168/255.255.255.248acl icpajk src 10.126.13.220/32Kemudian kita membatasi maksimum download dengan tag di bawah ini:reply_body_max_size 2MB allow all

Maksimum koneksi per host/workstation dibatasi 8 koneksi simultan.

acl koneksi maxconn 8http_access allow koneksiACL koneksi mendefinisikan bahwa jumlah koneksi simultan maksimum sebanyak

delapan koneksi. ACL ini kemudian di-allow pada bagian http_access

Batas kecepatan koneksi overall adalah 256 Kbps. per-network adalah 64 kbps. Sedangkan per-user/host dibatasi 2 Kbps jika digunakan untuk download file bertipe exe, mp3, vqf, tar.gz, gz, rpm, zip, rar, avi, mpeg, mpe, mpg, qt, ram, rm, iso, raw, dan wav. Jika tidak, maka koneksi perhost HANYA mengikuti aturan per-Network saja.

acl filegede url_regex -i \.exeacl filegede url_regex -i \.mp3acl filegede url_regex -i \.vqfacl filegede url_regex -i \.gzacl filegede url_regex -i \.rpmacl filegede url_regex -i \.zipacl filegede url_regex -i \.raracl filegede url_regex -i \.aviacl filegede url_regex -i \.mpegacl filegede url_regex -i \.mpeacl filegede url_regex -i \.mpgacl filegede url_regex -i \.qtacl filegede url_regex -i \.ramacl filegede url_regex -i \.rmacl filegede url_regex -i \.isoacl filegede url_regex -i \.rawacl filegede url_regex -i \.wavKita buat dulu ACL untuk mendefinisikan file-file di atas dengan menggunakan regular

expression. Kemudian kita mendefinisikan 2 delay pool untuk menampung bandwidth.

Satu pool masuk dalam kategori class 2 untuk mendefinisikan aturan overall 256 Kbs

dan per-network 64 Kbps. Satu pool lainnya masuk kategori class 3 untuk

Page 19: 14001326 all-about-squid-apache - [the-xp.blogspot.com]

mendefinisikan aturan tambahan jika user mendownload file-file yang didefinisikan

dalam ACL url_regex dengan bandwidth maksimal 2 Kbps.

delay_pools 2delay_class 1 3delay_parameters 1 32000/32000 8000/8000 250/250delay_access 1 allow lokal filegededelay_access 1 deny all

delay_class 2 2delay_parameters 2 32000/32000 8000/8000delay_access 2 allow lokaldelay_access 2 deny all

Diputuskan juga para user TIDAK BOLEH membuka situs situs terlarang. Jenis situs2 terlarang tsb diantaranya : situs porno, situs spam, dan situs situs lain yang ditentukan oleh direksi (baca:asisten)tips (gunakan regular expresion file shg bisa ditambah atau dikurangi)

acl porno url_regex -i "/etc/squid/webterlarang"http_access deny pornoKarena jumlah web-web terlarang (termasuk web-web porno) sangat banyak, maka

tidak akan praktis jika kita mendefinisikannya dengan cara seperti kita mendefinisikan

file-file yang akan didownload. Untuk itu kita mendefinisikan web terlarang tersebut di

file /etc/squid/webterlarang. Beberapa baris teratas dari isi file tersebut adalah seperti

di bawah ini:www.justmarriedsex.comfreeadultvideowww.sexitalia.comwww.bikinidesk.comrussiankissbreatneyspears0kmamateuramateursamateurpages

Setelah itu kita tinggal melakukan denying pada http_access untuk ACL ini.

Semua workstation subnet Uranus tidak dapat menggunakan akses proxy.

Page 20: 14001326 all-about-squid-apache - [the-xp.blogspot.com]

acl uranus src 10.17.42.168/255.255.255.248http_access deny uranusKita tinggal mendefinisikan network 10.17.42.168/29 yang merupakan subnet Uranus

pada ACL dan menolaknya pada tag http_access. Sederhana saja, tidak ada konfigurasi

tambahan.

Proxy PT. Tata Surya di sibling kan dengan proxy nya ISP PT. AJK denganip 10.126.13.220 HTTP port 3128, ICP port 3130.

cache_peer 10.126.13.220 sibling 3128 3130acl icpajk src 10.126.13.220/32icp_access allow icpajkDi sini kita bermain-main cache peer. Tag cache_peer digunakan untuk

menyambungkan proxy 10.126.13.220 milik PT. AJK dengan hubungan sejajar atau

sibling. Kemudian kita harus mengizinkan akses dari proxy ajk agar bisa saling

berkomunikasi. Untuk itu kita memerlukan tag acl dan icp_access. Sebenarnya untuk

hubungan sibling, kita juga perlu menambahkan tag icp_access allow bridge pada proxy

milik PT. AJK.

Demikian konfigurasi yang diperlukan untuk menyelesaikan problem yang telah

disebutkan di atas. Satu hal penting lainnya adalah letak susunan dan urutan dari

http_access. Pada prinsipnya Squid akan memeriksa tiap-tiap tag dari atas ke bawah dan

spasi dianggap sebagai AND. Berikut ini adalah urut-urutan dari tag http_access pada

file squid.conf di bridge. Perhatikan betul jika Anda tidak ingin sengsara!http_access deny uranushttp_access deny pornohttp_access allow koneksihttp_access allow filegedehttp_access allow localhosthttp_access allow lokal

Problem 2: Setting Virtual Host pada webserver Apache di SaturnusPT.Tata Surya juga memutuskan membuat beberapa website internal yangdipasang di saturunus. Website tsb diantaranya - website utama : www.klpXX.com yang merupakan CNAME dan ALIAS dari klpXX.com

Page 21: 14001326 all-about-squid-apache - [the-xp.blogspot.com]

- website marketing : marketing.klpXX.com - website accounting : accounting.klpXX.com - website riset dan development : riset.klpXX.com

Penyelesaian:

Langkah Pertama: Setting DNS Server di Bridge

Untuk menyelesaikan soal ini, kita perlu menambahkan beberapa entry domain di DNS

Server yang telah kita buat (Baca Modul 2: Sekilas DNS Server dan Iptables) yang berisi

domain-doman yang telah disebutkan dalam soal yaitu: www.klp17.com, klp17.com,

marketing.klp17.com, accounting.klp17.com, riset.klp17.com. Setting DNS-nya

dilakukan di file database DNS, dalam hal ini di /etc/bind/klp17.com pada host bridge

yang merupakan Primary DNS Server untuk zona klp17.com;; BIND data file for klp17.com;@ IN SOA bridge.klp17.com. galih.klp17.com ( 200504233 ; Serial 7200 ; Refresh 3600 ; Retry 604800 ; Expire 86410 ) ; Negative Cache TTL

IN NS bridge.klp17.com. IN NS pluto.klp17.com. IN A 10.17.42.146 ;; tempat secondary name server;

;; anggota-anggota klp17.comvenus IN A 10.17.42.130matahari IN A 10.17.42.131reverse IN CNAME mataharibridge IN A 10.17.42.133proxy IN CNAME bridgetitan IN A 10.17.42.134#sub IN CNAME titanmars IN A 10.17.42.143saturnus IN A 10.17.42.146www IN CNAME saturnusmarketing IN CNAME saturnus

Page 22: 14001326 all-about-squid-apache - [the-xp.blogspot.com]

accounting IN CNAME saturnusriset IN CNAME saturnus

neptunus IN A 10.17.42.147uranus IN A 10.17.42.162metis IN A 10.17.42.170asteroid IN A 10.17.42.171bumi IN A 10.17.42.167pluto IN A 10.17.42.140

sub IN NS titan.klp17.com.suryo IN NS titan.klp17.com.demo IN NS pluto.klp17.com.merkurius IN A 10.17.42.178jupiter IN A 10.17.42.190

Perhatikan entry yang dicetak tebal. Entry pada SOA yang berbunyi:IN A 10.17.42.146menunjukkan bahwa zona klp17.com memiliki webserver yang berada di IP Address

10.17.42.146 yang merupakan IP Address dari host Saturnus. Kemudian perhatikan

entry yang dicetak tebal yang berada pada daftar-daftar anggota zona yang berbunyi:saturnus IN A 10.17.42.146www IN CNAME saturnusmarketing IN CNAME saturnusaccounting IN CNAME saturnusriset IN CNAME saturnuskita mendefinisikan saturnus sebagai pemilik IP Address dari 10.17.42.146. Sub www

merupakan canonical name dari host Saturnus. Entry ini perlu dimasukkan agar alamat

http://www.klp17.com dapat diakses seperti halnya alamat http://klp17.com.

Kemudian subdomain lainnya seperti marketing, accounting, dan riset juga merupakan

canonical name dari saturnus karena letak webserver mereka juga berada di host

saturnus yang akan kita set untuk menangani semua domain tersebut dengan cara

menerpakan virtual host pada Apache.

Langkah kedua: Setting Virtual Host Apache pada Saturnus

Untuk dapat membawahi domain yang cukup banyak pada satu server, Apache perlu

dikonfigurasi sebagai virtual host. Langkah-langkahnya dijelaskan di bawah ini:NameVirtualHost 10.17.42.146:80

Page 23: 14001326 all-about-squid-apache - [the-xp.blogspot.com]

Tag di atas wajib kita beri agar virtual host apache dapat berfungsi dengan baik. Jika

tidak dispesifikasi, maka web yang muncul adalah web dari virtual host yang pertama

kali didefinisikan pada file /etc/apache/httpd.conf.

Kemudian kita tinggal mengkonfigurasi virtual host masing-masing. Konfigurasinya

seperti di bawah ini:<VirtualHost 10.17.42.146:80> ServerName accounting.klp17.com ServerAlias www.accouting.klp17.com DocumentRoot /var/www/accounting.klp17.com/</VirtualHost>

<VirtualHost 10.17.42.146:80> ServerName marketing.klp17.com ServerAlias www.marketing.klp17.com DocumentRoot /var/www/marketing.klp17.com/</VirtualHost>

<VirtualHost 10.17.42.146:80> ServerName riset.klp17.com ServerAlias www.riset.klp17.com DocumentRoot /var/www/riset.klp17.com/</VirtualHost>Subdomain accounting.klp17.com, marketing.klp17.com, riset.klp17.com masing-

masing berada di directory

/var/www/accounting.klp17.com

/var/www/marketing.klp17.com

/var/www/riset.klp17.com

Untuk website www.klp17.com sendiri diletakkan pada document root – tidak

memerlukan virtual host – yaitu berada di directory /var/www.

Demikian setting yang diperlukan untuk membuat host saturnus menjadi sebuah

webserver yang dapat meng-host beberapa domain sekaligus. Selamat mencoba! :D

Page 24: 14001326 all-about-squid-apache - [the-xp.blogspot.com]

Problem 3: Setting Reverse Proxy untuk Webserver Saturnus di host MatahariUntuk memperingan kerja webserver saturunus serta supaya websiteinternal bisa diakses dari internet ( AJK ). settinglah Mataharisebagai reverse proxy server (http accelerator) dari webserversaturunus.

Penyelesaian:

Reverse Proxy Server pada Matahari menyebabkan Saturnus yang memiliki IP Address

private dapat diakses dari dunia luar lewat host matahari yang memiliki IP Address

public. Berikut adalah konfigurasinya:http_port 80Kita harus mengubah port default Squid (3128) menjadi 80 agar semua request HTTP ke

port 80 akan dilayani oleh Squid.

acl acelTujuan dst 10.17.42.146acl acelPort port 80http_access allow acelTujuan acelPortKita mendefinisikan ACL agar request yang bertujuan ke web saturnus (10.17.42.146)

dengan port 80 diperbolehkan dan diteruskan oleh Squid

httpd_accel_single_host onhttpd_accel_port 80httpd_accel_with_proxy onhttpd_accel_uses_host_header offhttpd_accel_host 10.17.42.146Baris di atas adalah baris yang membuat Squid berubah tugas menjadi sebuah httpd

accelerator atau reverse proxy server untuk web saturnus (10.17.42.146). Cara terbaik

untuk memeriksa konfigurasi ini adalah dengan mengakses web saturnus lewat dunia

luar (tentu saja yang satu network dengan IP Live dari Matahari – dalam kasus ini

adalah network lab NCC yang memiliki address 10.126.13.x). Jika Squid pada Matahari

dihidupkan, maka reply-nya adalah isi web dari saturnus dan jika Squid pada Matahari

dimatikan maka tidak akan ada reply atau muncul pesan error bahwa tidak ada layanan

yang bisa memproses request.

PenutupPada modul ini kita telah belajar bagaimana membangun proxy server dan webserver

Page 25: 14001326 all-about-squid-apache - [the-xp.blogspot.com]

pada sebuah jaringan dengan menggunakan Squid dan Apache serta bagaimana

membuat Squid dan Apache bisa saling bekerja sama. Kesulitan yang ada mungkin

terletak pada bagaimana melakukan pemeriksaan dan testing karena pada beberapa

kasus seperti delay pool memerlukan keadaan yang sebenarnya, bukan hanya simulasi

pada UML saja. Selebihnya tidak ada masalah yang serius.

Ucapan Terimakasih

Ucapan terima kasih yang sebesar-besarnya saya ucapkan kepada:

– Allah SWT, Tuhan Semesta Alam

– Mas Cukris (Ahmad Kristiono), asisten pembimbing modul 3, yang dengan sabar

dan senang hati membimbing dan menuruti permintaan saya untuk melakukan

penundaan demo praktikum

– Mas Kamas Muhammad (http://www.sokam.or.id), yang telah membimbing sejak

awal, membuatkan UML tempat latihan di host Triana (alm.) (10.100.1.42), yang

dengan sabar melayani pertanyaan-pertanyaan yang kadang-kadang nyleneh. ^_^.

– Host triana.its.ac.id (alm). Kepergianmu telah membawa kesedihan yang mendalam

buatku. Sedikit kebersamaan denganmu telah banyak membuka pengetahuan

buatku.

– Host yudowati, tempat simulasi UML dilakukan

– Dan tentu saja, nirmaladewi.its.ac.id dan eliza, dua kekasihku tercinta...

Daftar Pustaka

– Tentu saja, Mbah Google (http://www.google.com)

– http://www.squid-cache.org/

– http://squid-docs.sourceforge.net/latest/html/book1.html

– http://www.faqs.org/docs/securing/chap28sec231.html

Words of the day:

-- 05 Mei 2005

Int, nomor Hpmu berapa? kenapa dua nomormu tidak aktif semua?Bagaimana aku

Page 26: 14001326 all-about-squid-apache - [the-xp.blogspot.com]

mengubungimu? Tak tahukah kalau aku benar-benar merindukanmu??