Sekilas Squid & Apache Server

January 26, 2010 at 1:44 am (Computer Networking)

Proxy Server dan Web Server
Kerugian dan Keuntungan Proxy Server
Keuntungan 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:
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 Server
Squid 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
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 List
Access 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
yang sesuai dengan aturan, dan sebagainya.
Delay Pool
Delay 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 Squid
Squid 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.
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 Server
Reverse 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 Caching
Ketika kita menggunakan squid untuk melakukan caching dari web traffic, browser
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

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

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
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:
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/4000
Angka 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
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.

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
<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 Apache
Virtual 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
host tidak akan berjalan dengan sempurna
<VirtualHost ip.address.of.host.some_domain.com>
<VirtualHost ip.address.of.host.some_domain.com>
ServerAdmin webmaster@host.some_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 http://www.its.ac.id
DocumentRoot /var/www/new.its.ac.id
ServerAdmin gailh@its.ac.id
CustomLog /var/log/apache-ssl/its.ac.id.log common
</VirtualHost>
Workshop
Kita 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:

Problem 1: Setting Proxy Server
Perusahaan PT. Tata Surya memutuskan berlangganan internet ke
PT. AJK.Net dengan bandwith 512 Kbps. Dengan demikian diperlukan
pengaturan atau manajemen bandwith di dalam jaringan PT. TataSurya.
Setelah dilakukan rapat direksi. Diputuskan bahwa :
a. Semua workstation yang terhubung dengan internet, baik selama jam
kerja saja maupun tidak, harus melewati proxy, dan diputuskan
workstation tidak perlu menambah konfigurasi apapun. ( transparent
proxy ). 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
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 kerja
saja maupun tidak, harus melewati proxy, dan diputuskan workstation
tidak perlu menambah konfigurasi apapun. ( transparent proxy )
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
Konfigurasi 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:
acl lokal src 10.17.42.0/24
acl uranus src 10.17.42.168/255.255.255.248
acl icpajk src 10.126.13.220/32
Kemudian 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 8
http_access allow koneksi
ACL 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 \.exe
acl filegede url_regex -i \.mp3
acl filegede url_regex -i \.vqf
acl filegede url_regex -i \.gz
acl filegede url_regex -i \.rpm
acl filegede url_regex -i \.zip
acl filegede url_regex -i \.rar
acl filegede url_regex -i \.avi
acl filegede url_regex -i \.mpeg
acl filegede url_regex -i \.mpe
acl filegede url_regex -i \.mpg
acl filegede url_regex -i \.qt
acl filegede url_regex -i \.ram
acl filegede url_regex -i \.rm
acl filegede url_regex -i \.iso
acl filegede url_regex -i \.raw
acl filegede url_regex -i \.wav
Kita 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
mendefinisikan aturan tambahan jika user mendownload file-file yang didefinisikan
dalam ACL url_regex dengan bandwidth maksimal 2 Kbps.
delay_pools 2
delay_class 1 3
delay_parameters 1 32000/32000 8000/8000 250/250
delay_access 1 allow lokal filegede
delay_access 1 deny all
delay_class 2 2
delay_parameters 2 32000/32000 8000/8000
delay_access 2 allow lokal
delay_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 porno
Karena 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:
http://www.justmarriedsex.com
freeadultvideo
http://www.sexitalia.com
http://www.bikinidesk.com
russiankiss
breatneyspears
0km
amateur
amateurs
amateurpages
Setelah itu kita tinggal melakukan denying pada http_access untuk ACL ini.
Semua workstation subnet Uranus tidak dapat menggunakan akses proxy.
acl uranus src 10.17.42.168/255.255.255.248
http_access deny uranus
Kita 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 dengan
ip 10.126.13.220 HTTP port 3128, ICP port 3130.
cache_peer 10.126.13.220 sibling 3128 3130
acl icpajk src 10.126.13.220/32
icp_access allow icpajk
Di    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 uranus
http_access deny porno
http_access allow koneksi
http_access allow filegede
http_access allow localhost
http_access allow lokal
Problem 2: Setting Virtual Host pada webserver Apache di Saturnus
PT.Tata Surya juga memutuskan membuat beberapa website internal yang
dipasang di saturunus. Website tsb diantaranya
– website utama : http://www.klpXX.com yang merupakan CNAME dan ALIAS
dari klpXX.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: http://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.com
venus           IN      A       10.17.42.130
matahari        IN      A       10.17.42.131
reverse         IN      CNAME   matahari
bridge          IN      A       10.17.42.133
proxy           IN      CNAME   bridge
titan           IN      A       10.17.42.134
#sub              IN    CNAME   titan
mars            IN      A       10.17.42.143
saturnus        IN      A       10.17.42.146
www             IN      CNAME   saturnus
marketing       IN      CNAME   saturnus
accounting        IN        CNAME    saturnus
riset             IN        CNAME    saturnus
neptunus          IN        A        10.17.42.147
uranus            IN        A        10.17.42.162
metis             IN        A        10.17.42.170
asteroid          IN        A        10.17.42.171
bumi              IN        A        10.17.42.167
pluto             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.178
jupiter           IN        A        10.17.42.190
Perhatikan entry yang dicetak tebal. Entry pada SOA yang berbunyi:
IN       A        10.17.42.146
menunjukkan 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.146
www               IN        CNAME    saturnus
marketing         IN        CNAME    saturnus
accounting        IN        CNAME    saturnus
riset             IN        CNAME    saturnus
kita 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
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 http://www.accouting.klp17.com
DocumentRoot /var/www/accounting.klp17.com/
</VirtualHost>
<VirtualHost 10.17.42.146:80>
ServerName marketing.klp17.com
ServerAlias http://www.marketing.klp17.com
DocumentRoot /var/www/marketing.klp17.com/
</VirtualHost>
<VirtualHost 10.17.42.146:80>
ServerName riset.klp17.com
ServerAlias http://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 http://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! 😀
Problem 3: Setting Reverse Proxy untuk Webserver Saturnus di host Matahari
Untuk memperingan kerja webserver saturunus serta supaya website
internal bisa diakses dari internet ( AJK ). settinglah Matahari
sebagai reverse proxy server (http accelerator) dari webserver
saturunus.
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 80
Kita 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.146
acl acelPort port 80
http_access allow acelTujuan acelPort
Kita 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 on
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header off
httpd_accel_host 10.17.42.146
Baris 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.

Leave a comment