6
BAB II LANDASAN TEORI
2.1 Jaringan Komputer Jaringan komputer adalah sekelompok komputer otonom yang saling berhubungan atara satu dengan yang lainnya, menggunakan protokol komunikasi melalui media komunikasi baik berupa kabel maupun tanpa kabel sehingga dapat saling berbagi data atau informasi, program, ataupun perangkat keras (hardware) dan sebagainya. Selain itu jaringan komputer dapat juga diartikan sebagai kumpulan sejumlah kumpulan terminal komunikasi yang berada di berbagai lokasi yang berjumlah dua atau lebih komputer yang saling berhubungan. Dua buah komputer dikatakan sudah membentuk suatu jaringan bila melakukan pertukaran data atau informasi. 2.2 Konsep Dasar Protokol Pada tahun 1969, lembaga riset Departemen Pertahanan Amerika, DARPA (Defence Advance Research Project Agency), mendanai sebuah riset untuk
6
7
mengembangkan jaringan komunikasi data antar komputer. Pengembangan jaringan ini ternyata sukses dan melahirkan ARPANET. Aplikasi internet yang pertama kali ditemukan adalah FTP yang disusul dengan E-mail dan telnet. E-mail menjadi aplikasi yang paling populer dimasa ARPANET. Tahun 1979 dicatat sebagai awal berdirinya USENET yang pada awalnya menghubungkan Universitas Duke dan UNC. Grup yang pertama kali dibentuk dalam USENET adalah grup net. Ukuran ARPANET yang semakin lama semakin besar membuat protoko komunikasi data yang digunakan pada waktu itu, yaitu NPC (Network Communication Protocol) tidak sanggup menampung node komputer sebesar itu. DARPA kemudian mendanai pembuatan protokol komunikasi yang lebih umum yang dinamakan TCP/IP. Departemen Pertahanan Amerika menyatakan TCP/IP menjadi standar jaringannya pada tahun 1982. Protokol ini kemudian dijadikan standar ARPANET pada tahun 1983. Tahun 1986, lembaga ilmu pengetahuan nasional Amerika Serikat (NSF) mendanai pembuatan jaringan TCP/IP yang dinamai NSFNET. Jaringan ini digunakan untuk menghubungkan lima pusat komputer super an memungkinkan terhubungnya universitas universitas di Amerika Serikat dengan kecepatan jaringan tulang punggung sebesar 56Kbps. 2.2.1 Model Referensi OSI OSI adalah referensi komunikasi dari Open system Interconnection. OSI model digunakan sebagai titik referensi untuk membahas spesifikasi protokol. 2.2.1.1 Layer Pada OSI
8
OSI model terdiri dari 7 layer. Dimana bagian atas dari layernya (layer 7,6,dan 5) difokuskan untuk bentuk pelayanan dari suatu aplikasi. Sedangkan untuk layer bagian bawahnya (layer 4, 3, 2 dan 1) berorientasikan tentang aliran data dari ujung satu ke ujung yang lainnya.
Gambar 2.1 OSI Reference Model (Sumber : http://upload.wikimedia.org/wikipedia/id/9/98/) Tabel 2.1 Model Reference Model
9
Nama Layer Application
Fungsi Aplikasi yang saling berkomunikasi antar komputer.
Contoh Telnet, HTTP,
( Layer 7)
Aplikasi layer mengacu pada pelayanan komunikasi
FTP, FS,Proxy,
pada suatu aplikasi. Pada layer bertujuan untuk mendefinisikan format
SMTP,SNMP JPEG, ASCII,
data, seperti ASCII text, binary dan JPEG.
TIFF, GIF,
Sesi layer mendefinisikan bagaimana memulai,
MPEG, MIDI RPC, SQL,
( Layer 5 )
mengontrol dan mengakhiri suatu percakapan (biasa
NFS, SCP
Transport
disebut session) Pada layer 4 ini bisa dipilih apakah menggunakan
TCP, UDP
( Layer 4 )
protokol yang mendukung error recovery atau tidak.
Presentation ( Layer 6 ) Session
Melakukan multiplexing terhadap data yang datang, mengurutkan data yang datang apabila datangnya tidak berurutan. Network ( Layer 3 )
Layer ini mendefinisikan pengiriman data dari ujung
IP, IPX
ke ujung. Untuk melakukan pengiriman pada layer ini juga melakukan pengalamatan. Mendifinisikan pengiriman jalur
Data Link
(routing). Layer ini mengatur pengiriman data dari interface
IEEE
( Layer 2 )
yang berbeda. Semisal pengiriman data dari ethernet
802.2/802.3,
802.3 menuju ke High-level Data Link Control
HDLC, Frame,
(HDLC),
relay, PPP,
10
Physical ( Layer 1 )
Layer ini mengatur tentang bentuk interface yang
FDDI EIA/TIA-
berbeda-beda dari sebuah media transmisi.
232,V35,
Spesifikasi yang berbeda misal konektor, pin,
EIA/TIA- 449,
penggunaan pin, arus listrik yang lewat,
V.24, RJ45,
encoding, sumber cahaya dll
Ethernet
2.2.1.2 Konsep dan Kegunaan Layer Banyak kegunaan yang didapat dari pembagian fungsi menjadi yang lebih kecil atau yang disebut layer. Kegunaan yang pasti adalah mengurangi kompleksitas, sehingga dapat didefinisikan lebih detil. Contoh kegunaannya antara lain: •
Manusia dapat membahas dan mempelajari tentang protokol secara detil.
•
Membuat perangkat menjadi bentuk modular, sehingga pengguna dapat menggunakan hanya modul yang dibutuhkan. • Membuat lingkungan yang dapat saling terkoneksi.
•
Mengurangi
kompleksitas
pada
pemrograman
sehingga
memudahkan produksi. •
Tiap layer dapat diberikan pembuka dan penutup sesuai dengan layernya.
•
Untuk berkomunikasi dapat dengan segera menggunakan layer dibawahnya.
11
2.2.2 Model TCP/IP Seperti pada perangkat lunak, TCP/IP dibentuk dalam beberapa lapisan (layer).
Dengan
dibentuk
dalam
layer,
akan
mempermudah
untuk
pengembangan dan pengimplementasian. Antar layer dapat berkomunikasi ke atas maupun ke bawah dengan suatu penghubung interface. Tiaptiap layer memiliki fungsi dan kegunaan yang berbeda dan saling mendukung layer diatasnya. Pada protokol TCP/IP dibagi menjadi 4 layer, tampak pada Gambar 2.2.
Gambar 2.2 Protokol TCP/IP
(Sumber : http://dimas05.files.wordpress.com/2007/11/)
Layer Aplikasi (Aplications) Layer aplikasi digunakan pada program untuk berkomunikasi menggunakan TCP/IP. Contoh aplikasi antara lain Telnet dan File Transfer Protocol (FTP).
12
Layer Transport Layer transport memberikan fungsi pengiriman data secara end-to-end ke sisi remote. Aplikasi yang beragam dapat melakukan komunikasi secara serentak (simulaneously). Protokol pada layer transport yang paling sering digunakan adalah Transmission Control Protocol (TCP), dimana memberikan fungsi pengiriman data secara connectionoriented, pencegahan duplikasi data, congestion control dan flow control. Protokol lainnya adalah User Datagram Protocol (UDP), dimana memberikan fungsi pengiriman connectionless, jalur yang tidak reliabel. UDP banyak digunakan pada aplikasi yang membutuhkan kecepatan tinggi dan dapat mentoleransi terhadap kerusakan data. Layer Internetwork Layer Internetwork biasa disebut juga layer internet atau layer network, dimana memberikan vitual network pada internet. Internet Protocol (IP) adalah protokol yang paling penting. IP memberikan fungsi routing pada jaringan dalam pengiriman data. Protokol lainnya antara lain : IP, ICMP, IGMP, ARP, RARP Layer Network Interface Layer network interface disebut juga layer link atau layer datalink, yang merupakan perangkat keras pada jaringan. Contoh: IEEE802.2, X.25, dll.
2.3 Konsep Dasar Proxy 2.3.1 Definisi
13
Proxy dapat dipahami sebagai pihak ketiga yang berdiri ditengah-tengah antara kedua pihak yang saling berhubungan dan berfungsi sebagai perantara, sedemikian sehingga pihak pertama dan pihak kedua tidak secara langsung berhubungan, akan tetapi masing-masing berhubungan dengan perantara, yaitu proxy. Sebuah analogi, bila seorang mahasiswa meminjam buku di perpustakaan, kadang si mahasiswa tidak diperbolehkan langsung mencari dan mengambil sendiri buku yang kita inginkan dari rak, tetapi kita meminta buku tersebut kepada petugas, tentu saja dengan memberikan nomor atau kode bukunya, dan kemudian petugas tersebut yang akan mencarikan dan mengambilkan bukunya. Dalam kasus diatas, petugas perpustakaan tersebut telah bertindak sebagai perantara atau proxy. Petugas tersebut juga bisa memastikan dan menjaga misalnya, agar mahasiswa hanya bisa meminjam buku untuk mahasiswa, dosen boleh meminjam buku semua buku, atau masyarakat umum hanya boleh meminjam buku tertentu. Mungkin proses tersebut menjadi lebih lama dibandingkan bila kita langsung mencari dan mengambil sendiri buku yang kita inginkan. Namun bila saja setiap kali petugas mencari dan mengambil buku untuk seseorang, si petugas juga membuat beberapa salinan dari buku tersebut sebelum memberikan bukunya kepada orang yang meminta, dan menyimpannya di atas meja pelayanan, maka bila ada orang lain yang meminta buku tertentu, sangat besar kemungkinan buku yang diminta sudah tersedia salinannya diatas meja,
14
dan si petugas tinggal memberikannya langsung. Hasilnya adalah layanan yang lebih cepat dan sekaligus keamanan yang baik. Analogi diatas menjelaskan konsep dan fungsi dasar dari suatu proxy dalam komunikasi jaringan komputer dan internet. Proxy server mempunyai tiga fungsi utama, yaitu, connection sharing, filtering, caching. Masing masing fungsi akan dijelaskan lebih lanjut dibawah. Proxy dalam pengertiannya sebagai perantara, bekerja dalam berbagai jenis protokol komunikasi jaringan dan dapat berada pada level-level yang berbeda pada hirarki layer protokol komunikasi jaringan. Suatu perantara dapat saja bekerja pada layer data-link, layer network dan layer transport, maupun layer aplikasi dalam hirarki layer komunikasi jaringan menurut OSI. Namun pengertian proxy server sebagian besar adalah untuk menunjuk suatu server yang bekerja sebagai proxy pada layer aplikasi. Dalam suatu jaringan lokal yang terhubung ke jaringan lain atau internet, pengguna tidak langsung berhubungan dengan jaringan luar atau internet, tetapi harus melewati suatu gateway, yang bertindak sebagai batas antara jaringan local dan jaringan luar. Gateway ini sangat penting, karena jaringan lokal harus dapat dilindungi dengan baik dari bahaya yang mungkin berasal dari internet, dan hal tersebut akan sulit dilakukan bila tidak ada garis batas yang jelas antara jaringan lokal dan internet. Gateway juga bertindak sebagai titik dimana sejumlah koneksi dari pengguna lokal akan terhubung kepadanya, dan suatu koneksi ke jaringan luar juga terhubung kepadanya. Dengan demikian, koneksi
15
dari jaringan lokal ke internet akan menggunakan sambungan yang dimiliki oleh gateway secara bersama-sama (connection sharing). Dalam hal ini, gateway adalah juga sebagai proxy server, karena menyediakan layanan sebagai perantara antara jaringan lokal dan jaringan luar atau internet. Jaringan lokal Jaringan luar atau Internet
Pengguna Layanan Permintaan layanan Pengguna
Pengguna
Permintaan layanan
Proxy server & gateway/firewall
Permintaan layanan
Proxy server mewakili permintaan dan penerimaan dari penyedia layanan
Layanan
Gambar 2.3 Posisi dan Fungsi dari Server
2.3.2 Proxy, Gateway, dan Firewall Proxy server juga biasanya menjadi satu dengan firewall server, meskipun keduanya bekerja pada layer yang berbeda. Firewall atau packet filtering yang digunakan untuk melindungi jaringan lokal dari serangan atau gangguan yang berasal dari jaringan internet bekerja pada layer network, sedangkan proxy server bekerja pada layer aplikasi. Firewall biasanya diletakkan pada routerrouter, sehingga bisa melakukan filtering atas paket yang lewat dari dan ke jaringan-jaringan yang dihubungkan.
16
Karena firewall melakukan filtering berdasarkan suatu daftar aturan dan pengaturan akses tertentu, maka lebih mudah mengatur dan mengendalikan trafik dari sumbersumber yang tidak dipercaya. Firewall juga melakukan filtering berdasarkan jenis protokol yang digunakan (TCP,UDP,ICMP) dan port TCP atau port UDP yang digunakan oleh suatu layanan (semisal telnet atau FTP). Sehingga firewall melakukan kendali dengan metode boleh lewat atau tidak boleh lewat, sesuai dengan daftar aturan dan pengaturan akses yang dibuat. Bila suatu layanan tertentu atau alamat tertentu merupakan layanan atau alamat yang terpercaya, maka dapat diatur pada firewall agar paket dari sumber terpercaya diperbolehkan lewat. Paket filtering pada firewall mempunyai keunggulan yaitu kecapatan yang lebih dan tidak memerlukan konfigurasi tertentu pada pengguna-pengguna yang terhubung. Namun di sisi lain dapat menimbulkan kesulitan, karena akan sangat sulit bila kita harus membuat satu daftar aturan yang banyak dan kompleks. Disamping itu, yang bisa dilakukan firewall hanya memperbolehkan atau tidak memperbolehkan suatu paket lewat berdasarkan pada alamat IP sumber atau alamat IP tujuan yang ada pada paket tersebut. Penyerang bisa melakukan memalsukan alamat IP pada paket (spoofing) menggunakan alamat IP tertentu yang terpercaya, dan firewall akan melewatkannya. Penyerang juga dapat melakukan penyadapan paket (sniffing) dengan relatif mudah untuk mengetahui struktur alamat IP pada header paket yang lewat di jaringan.
17
Dalam analogi perpustakaan diatas, filtering pada firewall serupa dengan petugas perpustakaan menimpan daftar mahasiswa dan dosen yang terpercaya, dan mereka boleh langsung mengambil sendiri buku yang diinginkan dari rak. Ini bisa menghasilkan proses sirkulasi buku yang lebih cepat, namun memerlukan penanganan khusus atas daftar yang diperbolehkan tersebut. Ini juga beresiko bila ada seseorang yang menggunkan identitas palsu, sehingga seolaholah dia adalah salah satu dari yang ada dalam daftar yang diperbolehkan. Proxy server menggunakan cara yang berbeda. Proxy server memotong hubungan langsung antara pengguna dan layanan yang diakases (atau antara mahasiswa dan buku-buku perpustakaan dalam analogi diatas). Ini dilakukan pertama-tama dengan mengubah alamat IP, membuat pemetaan dari alamat IP jaringan lokal ke suatu alamat IP proxy, yang digunakan untuk jaringan luar atau internet. Karena hanya lamat IP proxy tersebut yang akan diketahui secara umum di internet, maka pemalsuan tidak bisa dilakukan.
2.3.3 Pendekatan Layer OSI Karena proxy bekerja pada layer aplikasi, proxy server dapat berjalan pada banyak aplikasi antara lain HTTP Proxy atau Web Proxy untuk protocol HTTP
18
atau Web, FTP Proxy, SMTP Proxy/ POP Proxy untuk email, NNTP proxy untuk newsgroup, real audio/ real video proxy untuk multi media streaming, IRC proxy untuk Internet Relay Chat (IRC), dan lain-lain. Masing-masing hanya akan menerima,meneruskan atau melakukan filter atas paket yang dihasilkan oleh layanan yang bersesuaian. Proxy dengan aplikasi yang spesifik memiliki pilihan konfigurasi yang sangat banyak. Sebagai contoh, web proxy dapat dikonfigurasi untuk menolak akses ke situs web tertentu pada waktu-waktu tertentu. Demikian juga proxy yang lain, misalnya dapat dikonfigurasi untuk hanya memperbolehkan download
FTP
dan
tidak
memperbolehkan
upload
FTP,
hanya
memperbolehkan pengguna tertentu yang bisa memainkan file-file real audio, mencegah akses ke email server sebelum tanggal tertentu, dan masih banyak lagi. Proxy server juga sangat baik dalam hal kemampuan menyimpan catatan (logging) dari trafik jaringan, dan dapat digunakan untuk memastikan bahwa koneksi untuk jenis trafik tertentu harus selalu tersedia. Namun, sebagaimana biasa, kelemahan dari konfigurasi yang sangat fleksibel dan banyak pilihan adalah timbulnya kompleksitas. Aplikasi pada sisi pengguna seperti web browser atau real audio player harus ikut dikonfigurasi untuk bisa mengetahui adanya proxy server dan bisa menggunakan layanannya. Proses penambahan pengguna dan pendefinisian aturan akses pada suatu proxy juga bisa sangat rumit.
19
Sebagai perantara antara pengguna dan server-server di internet, proxy server bekerja dengan cara menerima permintaan layanan dari user, dan kemudian sebagai gantinya proxy server akan mewakili permintaan pengguna, ke serverserver di internet yang dimaksudkan. Dengan demikian, sebenarnya proxy server hanya meneruskan permintaan pengguna ke server yang dimaksud, akan tetapi disini identitas peminta sudah berganti, bukan lagi pengguna asal, tetapi proxy server tersebut. Server-server di internet hanya akan mengeahui identitas proxy server tersebut, sebagai yang meminta, tetapi tidak akan tahu peminta sebenarnya (yaitu pengguna asalnya) karena permintaan yang sampai kepada server-server di internet bukan lagi dari pengguna asal, tetapi dari proxy server. Bagi penggguna sendiri, proses yang terjadi pada proxy server diatas juga tidak kelihatan (transparan). Pengguna melakukan permintaan atas layananlayanan di internet langsung kepada server-server layanan di internet. Penguna hanya mengetahui keberadaan atau alamat dari proxy server, yang diperlukan untuk melakukan konfigurasi pada sisi pengguna untuk dapat menggunakan layanan dari proxy server tersebut.
2.3.4 Caching Fungsi dasar yang ketiga dan sangat penting pada suatu proxy server adalah caching. Proxy server memiliki mekanisme penyimpanan obyek-obyek yang
20
sudah pernah diminta dari server-server di internet, hal ini biasa disebut caching. Karena itu, proxy server yang juga melakukan proses caching juga biasa disebut cache server. Mekanisme caching akan menyimpan obyek-obyek yang merupakan hasil permintaan dari para pengguna, yang didapat dari internet. Karena proxy server bertindak sebagai perantara, maka proxy server mendapatkan obyek-obyek tersebut lebih dahulu dari sumbernya untuk kemudian diteruskan kepada peminta yang sesungguhnya. Dalam proses tersebut, proxy server juga sekaligus menyimpan obyek-obyek tersebut untuk dirinya sendiri dalam ruang disk yang disediakan (cache). Dengan demikian, bila suatu saat ada pengguna yang meminta suatu layanan ke internet yang mengandung obyekobyek yang sama dengan yang sudah pernah diminta sebelumnya, yaitu yang sudah ada dalam cache, maka proxy server akan dapat langsung memberikan obyek dari cache yang diminta kepada pengguna, tanpa harus meminta ulang ke server aslinya di internet. Bila permintaan tersebut tidak dapat ditemukan dalam cache di proxy server, baru kemudian proxy server meneruskan atau memintakannya ke server aslinya di internet. Proses caching ini juga tidak kelihatan bagi pengguna (transparan), karena bagi pengguna tidak tampak siapa sebenarnya yang yang memberikan obyek yang dimintanya, apakah proxy server yang mengambil dari cache-nya atau
21
server asli di internet. Dari sisi pengguna, semua akan nampak sebagai balasan langsung dari internet. Ketika pengguna membuka browser dan mengetikkan URL, maka konten yang diminta URL tersebut dinamakan Internet Object. Pertama dia akan bertanya terlebih dahulu ke sebuah DNS (Domain Name Server). DNS akan mencari IP Address dari URL tersebut dalam databasenya dan memberi jawaban kepada browser tersebut kembali. Setelah browser mendapatkan IP Address, maka ia akan membuka hubungan ke port http web server tujuan. Web server akan mendengarkan adanya permintaan dari browser lalu memberikan konten yang diminta tersebut. Seteleh browser menerima konten maka hubungan dengan web server bias diputus. Konten lalu ditampilkan dan disimpan didalam hardisk. Konten yang disimpan didalam hardisk biasanya disebut cache object yang natinya akan digunakan jika pengguna kembali mengunjungi situs yang sama, misalnya dengan mengklik tombol back atau melihat history. Dalam kunjungan berikutnya, browser akan memeriksa validasi konten yang disimpannya, validasi ini dilakukan dengan membandingkan header konten yang ada pada cache object dengan yang ada pada web server, jika contect belum kadaluwarsa (expired) maka konten tadi akan ditampilkan kembali ke browser. Cache object yang disimpan dalam hardisk lokal ini hanya bisa dipakai oleh pengguna sendirian, tidak bisa dibagi dengan pengguna yang lainnya, lain hal jika konten tersebut disimpan pada sebuah server, dimana semua komputer
22
terhubung dengan server tersebut, maka cache object tersebut bisa dipakai bersama-sama, server tersebutlah yang nantinya akan dinamakan cache server atau proxy server. Ada dua jenis metode caching, yaitu pasif dan aktif. Seperti telah kita ketahui, object yang disimpan bisa saja mencapai expired, untuk memeriksanya dilakukan validasi. Jika validasi ini dilakukan setelah ada permintaan dari klien, metode ini disebut pasif. Pada caching aktif, cache server mengamati object dan pola perubahannya. Misalkan pada sebuah object didapati setiap harinya berubah setiap jam 12 siang dan pengguna biasanya membacanya jam 14, maka cache server tanpa diminta klien akan memperbaharui object tersebut antara jam 12 dan 14 siang, dengan cara update otomatis ini waktu yang dibutuhkan pengguna untuk mendapatkan object yang fresh akan semakin sedikit. Pada kondisi tertentu, kapasitas penyimpanan akan terkuras habis oleh object. Namun cache server mempunyai beberapa metode penghapusan untuk menjaga kapasitas tetap terjaga, sesuai dengan kopnfigurasi yang telah ditetapkan. Penghapusan ini didasarkan pada umur dan kepopuleran, semakin tua umur object akan tinggi prioritasnya untuk dihapus. Dan juga untuk object yang tidak popular akan lebih cepat dihapus juga.
23
P erm intaan dari pe ngguna w eb brow ser, ra ndom dan tid ak teratur
P erm intaan da ri pro xy/cach e server, teruru t da n tera tu r
internet
P engguna jaringan loka l
sw itch A
B
C
D
E
F
G
F irew all/router
H SELECTED ON-LINE
D ata yang diberikan oleh cache server ke w e b brow ser
W eb P roxy/cache serve r
D ata d ari internet, ketika dim inta, akan disim pan dalam cache
Gambar 2.4 Proses dan Mekanisme Caching
2.3.5 Transparent Proxy Salah satu kompleksitas dari proxy pada level aplikasi adalah bahwa pada sisi pengguna harus dilakukan konfigurasi yang spesifik untuk suatu proxy tertentu agar bisa menggunakan layanan dari suatu proxy server. Bila diinginkan agar pengguna tidak harus melakukan konfigurasi khusus, kita bisa mengkonfigurasi proxy/cache server agar berjalan secara benar-benar transparan terhadap pengguna (transparent proxy). Biasanya cara ini memerlukan bantuan dan konfigurasi aplikasi firewall (yang bekerja pada layer network) untuk bias membuat transparent proxy yang bekerja pada layer aplikasi. Transparent
proxy
dapat
berguna
untuk
“memaksa”
pengguna
menggunakan proxy/cache server, karena pengguna benar-benar tidak mengetahui tentang keberadaan proxy ini, dan apapun konfigurasi pada sisi
24
pengguna, selama proxy server ini berada pada jalur jaringan yang pasti dilalui oleh pengguna untuk menuju ke internet, maka pengguna pasti dengan sendirinya akan menggunakan cache ini. Cara membuat transparent proxy adalah dengan membelokkan arah (redirecting) dari paket-paket untuk suatu aplikasi tertentu, dengan menggunakan satu atau lebih aturan pada firewall/router. Hal ini bisa dilakukan karena setiap aplikasi berbasis TCP akan menggunakan salah satu port yang tersedia, dan firewall dapat diatur agar membelokkan paket yang menuju ke port layanan tertentu, ke arah port dari proxy yang bersesuaian. Sebagai contoh, pada saat klient membuka port 80, firewall pada router yang menerima segera mengenali bahwa ada paket data yang berasal dari klien dengan nomor port 80. Disini kita juga mempunyai satu HTTP proxy server yang berjalan pada port 3130. Maka pada firewall router kita buat satu aturan yang menyatakan bahwa setiap paket yang dating dari jaringan lokal menuju ke port 80 harus dibelokkan ke arah alamat HTTP proxy server port 3130. Akibatnya, semua permintaan web dari pengguna akan masuk dan diwakili oleh HTTP proxy server diatas.
25
Gambar 2.5 Redirecting
2.3.6 Squid Web Proxy Salah satu contoh aplikasi proxy/cache server adalah Squid. Squid dikenal sebagai aplikasi proxy dan cache server yang handal. Pada pihak klien bekerja apliaksi browser yang meminta request http pada port 80. Browser ini setelah dikonfigurasi akan meminta konten, yang selanjutnya disebut object, kepada cache server, dengan nomor port yang telah disesuaikan dengan milik server, nomor yang dipakai bukan port 80 melainkan port 8080 3130 (kebanyakan cache server menggunakan port itu sebagai standarnya). Pada saat browser mengirimkan header permintaan, sinyal http request dikirimkan ke server. Header tersebut diterima squid dan dibaca. Dari hasil pembacaan, squid akan memparsing URL yang dibutuhkan, lalu URL ini dicocokkan dengan database cache yang ada. Database ini berupa kumpulan metadata (semacam header) dari object yang sudah ada didalam hardisk. Jika ada, object akan dikirimkan ke klien dan tercatat dalam logging bahwa klien telah mendapatkan object yang diminta. Dalam log kejadian tersebut akan dicatat sebagai TCP_HIT. Sebaliknya, jika object yang diminta ternyata tidak ada, squid akan mencarinya dari peer atau
26
langsung ke server tujuan. Setelah mendapatkan objectnya, squid akan menyimpan object tersebut ke dalam hardisk. Selama dalam proses download object ini dinamakan object in transit yang sementara akan menghuni ruang memori. Dalam masa download tadi, object mulai dikirimkan ke klien dan setelah selesai, kejadian ini tercatat dalam log sebagai TCP_MISS. Hubungan antar cache atau nantinya disebut peer itu sendiri ada dua jenis, yaitu parent dan sibling. Sibling kedudukannya saling sejajar dengan sibling lainnya, sedangkan parent adalah berada diatas sibling, dua jenis peer ini yang selanjutnya akan bergandengan membentuk jaringan hirarki cache ICP sebagai protokol cache berperan dalam menanyakan ketersediaan object dalam cache. Dalam sebuah jaringan sebuah cache yang mempunyai sibling, akan mencoba mencari yang dibutuhkan ke peer sibling lainnya, bukan kepada parent, cache akan mengirimkan sinyal icp kepada sibling dan sibling membalasnya dengan informasi ketersediaan ada atau tidak. Bila ada, cache akan mencatatkan ICP_HIT dalam lognya. Setelah kepastian object bisa diambil dari sibling, lalu cache akan mengirimkan sinyal http ke sibling untuk mengambil object yang dimaksud. Dan setelah mendapatkannya, cache akan mencatat log SIBLING_HIT. Jika ternyata sibling tidak menyediakan object yang dicari, cache akan memintanya kepada parent. Sebagai parent, ia wajib mencarikan object yang diminta tersebut walaupun ia sendiri tidak memilikinya (TCP_MISS). Setelah object didapatkan dari server origin, object akan dikirimkan ke cache child
27
tadi, setelah mendapatkannya cache child akan mencatatnya sebagai PARENT_HIT. Konfigurasi, penggunaan dan metode Squid Konfigurasi-konfigurasi mendasar squid antara lain : 1.
http_port [nomor port]. Ini akan menunjukkan nomor port yang akan dipakai untuk menjalankan squid.
2.
icp_port [nomor port]. Ini akan menunjukkan nomor port yang akan dipakai untuk menjalankan squid.
3.
cache_peer
[nama_peer]
[tipe_peer]
[nomor_port_http]
[nomor_port_icp] [option]. Sintaks dari cache peer ini digunakan untuk berhubungan dengan peer lain, dan peer lain yang dikoneksikan ini tipenya bergantung dari tipe peer yang telah dideklarasikan ini, bisa bertipe sibling maupun bertipe parent,dan port yang digunakan untuk hubungan ICP maupun HTTP juga dideklarasikan disini, sedangakan untuk parameter option disini ada bermacammacam salah satunya adalah default yang berarti dia adalah satu-satunya parent yang harus dihubungi (jika bertipe parent) dan proxy-only yang berarti bahwa object yang dipata dari peer tersebut tidak perlu disimpan dalam hardisk local. 4.
Cache_mem [jumlah_memori
(dalam bytes)]. Sintaks
ini akan
menentukan batas atas jumlah memori yang digunakan. 5.
Cache_swap_low/high [jumlah (dalam persen)]. Squid akan menghapus object yang ada didalam hardisknya jika media tersebut mulai penuh.
28
Ukuran
penuh
ini
yang
diset
pada
cache_swap_low
dan
cache_swap_high. Bila batas swap_low telah tercapai maka squid mulai menghapus dan jika batas swap_high tercapai maka squid akan semakin sering menghapus. 6.
Cache_dir [jenis_file_sistem] [direktori] [kapasitas_cache] [dir_1] [jumlah] [dir_2]. Sintaks ini akan menjelaskan direktori cache yang dipakai.
ACL (Access Control List) Selanjutnya konfigurasi-konfigurasi lanjutan squid, selain sebagai cache server, squid yang memang bertindak sebagai “parent” untuk meminta object dari kliennya dapat juga dikonfigurasi untuk pengaturan hak akses lebih lanjut, untuk pertama kali yang dibicarakan adalah ACL (access control list), ACL sendiri terdiri dari beberapa tipe antara lain : • Src - IP Address asal yang digunakan klien. • Dst - IP Address tujuan yang diminta klien. • Myip - IP Address local dimana klien terhubung. • srcdomain - Nama domain asal klien. • dstdomain - Nama domain tujuan klien. • srcdom_regex- Pencarian pola secara string dari nama domain asal klien. • dstdom_regex - Pencarian pola secara string dari nama domain tujuan klien. • Time - Waktu dinyatakan dalam hari dan jam.
29 • Proto - Protokol transfer (http, ftp, gopher). • Method - Metode permintaan http (get, post, connect)
Berikutnya adalah control list yang akan digunakan untuk mengatur control dari ACL, control list tersebut antara lain : • http_access - memperbolehkan acess http. • icp_access - memperbolehkan peer untuk mengirimkan icp untuk menquery
object. • miss_access - memperbolehkan klien meminta object yang belum ada
(miss) didalam cache. • no_cache - object yang diminta klien tidak perlu disimpan ke hardisk. • always_direct - permintaan yang ditangani langsung ke server origin
Object Cache Pengaturan object sebuah cache server merupakan salah satu hal yang perlu diperhatikan disini. Telah diketahui sebelumnya bahwa object disimpan pada dua level cache_dir yang besar levelnya didefinisikan pada konfigurasi utama squid. Object itu sendiri berisikan konten URL yang diminta klien dan disimpan dalam bentuk file binary, masing-masing object mempunyai metadata yang sebagian dari isinya disimpan didalam memori untuk memudahkan melacak dimana letak object dan apa isi dari object tersebut.
30
Semakin besar kapasitas cache, berarti semakin lama umur object tersebut bisa disimpan,
jika
pemakaian
hardisk
sudah
mendekati
batas
atas
(cache_swap_high) penghapusan akan semakin sering dilakukan.
Memori Memori dipakai squid dalam banyak hal. Salah satu contoh pemakaiannya adalah untuk disimpannya object yang popular, lazimnya disebut hot object. Jumlah hot object yang disimpan dalam memori bisa diatur dengan option cache_mem pada squid.conf. Sebenarnya yang paling memakan memori adalah metadata object, karena kebanyakan object sendiri sebenarnya disimpan dalam direktori cache_dir hardsik local. Semakin banyak kapasitas cache_dir, semakin banyak pula metadata dan semakin membebani pemakaian memori. Pada kebanyakan kasus untuk setiap 1.000.000 jumlah object, rata-rata dibutuhkan sebesar 72 MB memori untuk keseluruhan object dan 1,25 MB untuk metadata. Jumlah object ini bias didapatkan dari besar cache_dir dibagi dengan jumlah ratarata kapasitas object, biasanya setiap object bernilai 13 KB. Mengingat pentingnya ketersediaan memori, penting untuk melihat sebagus apa aplikasi pengalokasian memori yang ada pada sistem operasi yang sedang bekerja. Secara default pada sistem operasi sudah tersedia rutin program untuk alokasi memori atau malloc (memory allocation). Namun pada beban yang sangat besar dan tanpa diimbangi penambahan memori yang memadai, malloc
31
akan mencapai batas atas performansi dan kemudian mencapai status ketidakstabilan, dan squid akan menuliskan banyak pesan error pada log, misalnya seperti : “xmalloc : Unable to allocate 4096 bytes!”. Jika ini terjadi, langkah yang dapat dilakukan adalah melakukan penambahan memori, dan langkah kedua jika ingin lebih stabil adalah menginstall library untuk rutin program malloc yang lebih baru.
2.4 IP Security Protocol (IPSec) IPSec adalah sekumpulan ekstensi dari keluarga protokol IP. IPSec menyediakan layanan kriptografi untuk keamanan transmisi data. Layanan ini termasuk authenticity, integrity, access control, confidentiality, dab anti replay. Layanan IPSec mirip dengan SSL namun, IPSec melayani lapisan network, dan dilakukan secara transparan. Layanan tersebut dideskripsikan sebagai berikut: •
Confidentiality, untuk meyakinkan bahwa sulit untuk orang lain tetapi
dapat dimengerti oleh penerima yang sah bahwa data telah dikirimkan. Contoh: Kita tidak ingin tahu seseorang dapat melihat password ketika login ke remote server. •
Integrity, untuk menjamin bahwa data tidak berubah dalam perjalan
menuju tujuan. •
Authenticity, untuk menandai bahwa data yang dikirimkan memang
berasal dari pengirim yang benar.
32 •
Anti Replay, untuk meyakinkan bahwa transaksi hanya dilakukan sekali,
kecuali yang berwenang telah mengizinkan untuk mengulang. IPSec bekerja dengan tiga jalan, yaitu: 1. Network-to-network 2. Host-to-network 3. Host-to-host
Contoh koneksi network-to-network, misalnya sebuah perusahaan yang mempunyai banyak kantor cabang dan ingin berbagi data dengan aman, maka tiap cabang cukup menyediakan sebuah gateway dan kemudian data dikirimkan melalui infrastuktur jaringan internet yang telah ada. Semua lalu lintas data antara gateway disebut virtual tunnel. Kedua tunnel tersebut memverifikasi otentifikasi pengirim dan penerima dan mengenkripsi semua lalu lintas. Namun lalu lintas didalam sisi gateway tidak diamankan karena diasumsikan bahwa LAN merupakan segment jaringan yang dapat dipercaya.
Koneksi host-to-network, biasanya digunakan oleh seseorang yang menginkan akses aman terhadap sumberdaya suatu perusahaan. Prinsipnya sama dengan koneksi network-to-network hanya saja salah satu sisi gateway digantikan oleh client.
33
Gambar 2.6 Network-to-Network dan Host-to-Network
Protokol yang berjalan dibelakang IPSec adalah: 1. AH (Authentication header), AH menyediakan layanan authentication, integrity,
dan replay protection, namun tidak dengan confidentiality. AH juga melakukan pengamanan terhadap header IP. 2. ESP (Encasulapted security payload), ESP menyediakan layanan authentication,
integrity, replay protection, dan confidentiality terhadap data (ESP melakukan pengamanan terhadap segala sesuatu dalam paket data setelah header). Secara umum arsitektur IPSec dapat dilihat pada gambar 2.7. Pengamanan
hubungan
associations
(SA).
Tiap
dalam IPSec didefinisikan SA
mendefinisikan
satu
dalam istilah security hubungan
data
secara
unidirectional. Ada tiga fields dalam SA yaitu destination IP address, security parameter index, dan security protocol. 2.4.1 IPSec Modes
34
Berdasarkan fungsi, IPSec diaplikasikan berdasarkan titik akhir dimana IPSec melakukan enkasulapsi. Pembagian berdasarkan fungsi tersebut adalah: •
�
Transport mode. Transport mode digunakan untuk mengenkripsi dan
mengotentifikasi (optional data IP (transport layer).
Gambar 2.7 Arsitektur IPSec
• Tunnel mode. Tunnel mode mengenkripsi seluruh paket IP.
Transport mode biasanya digunakan untuk komunikasi peer-to-peer antara nodes dan tunnel mode biasanya digunakan untuk mengamankan komunikasi gateway dengan yang lainnya. Untuk VPN digunakan tunnel mode. Implementasi AH pada IPv4 dan IPv6 diperlihatkan pada gambar:
35
Gambar 2.8 Paket IP Sebelum Memasukkan AH
Implementasi ESP pada IPv4 dan IPv6 diperlihatkan pada gambar:
Gambar 2.9 Transport Mode dan AH
Gambar 2.10 Tunnel Mode dan AH
36
Gambar 2.11 Transport Mode dan EPS
Gambar 2.12 Tunnel Mode dan EPS
2.4.2 Key Management Secara bersama protokol IPSec AH dan ESP menyediakan privasi, integritas, dan otentifikasi dari paket IP, namun hal tersebut belum lengkap. IETF juga telah menyediakan protokol yang melayani negosiasi antar protokol IPSec, algoritma, dan kunci dalam komunikasi tersebut, verifikasi identitas, dan mengatur pertukaran kunci. ISAKMP(the
internet
security
association
and
key
management
protocol)/Oakley key exchange protocol secara otomatis mengatasi pertukaran kunci rahasia antara pengirim dan penerima. Protokol tersebut memadukan ISAKMP dengan metode Oakley. ISAKMP biasa disebut juga IKE (internet key exchange). ISAKMP didasarkan atas model pembangkitan kunci Diffie-Hellman, dimana dua entitas saling berbagi informasi sebelum yakin identitas entitas yang lainnya. Dengan Diffie-Hellman, dua entitas membangkitkan nilai public
37
mereka, yang kemudian mereka kirim ke entitas yang lain. Dua entitas berkomunikasi melalui UDP. Tiap entitas mengambil kunci public yang telah diterima
dan
mengkombinasikannya
dengan
kunci
private.
Hasilnya
seharusnya sama untuk kedua entitas, namun tidak ada satu pun yang dapat membangkitkan nilai yang sama. Meskipun ISAKMP adalah metode pertukaran kunci secara otomatik, ISAKMP tidak mengijinkan tingkat kepercayaan apapun dalam kunci untuk dikendalikan. Dengan ISAKMP, SPI (32 bit yang berisi informasi protokol keamanan untuk sebuah paket) dapat berubah dalam jangka waktu tertentu. ISAKMP mendukung tiga metode pertukuran kunci yaitu: main mode, aggressive mode, dan quick mode. Main mode membangun yang dikenal sebagai fasa pertama dari ISAKMP SA. SA atau security association, adalah metode untuk menyimpan semua detail mengenai kunci dan algoritma dalam tiap sesi IPSec. SA mencakup informasi yang sangat luas, termasuk algoritma otentifikasi AH dan kunci, algoritma enkripsi ESP dan kunci, berapa sering kunci harus diganti, bagaimana komunikasi diotentifikasi, dan informasi tentang umur SA. Main mode membangun sebuah mekanisme yang digunakan untuk komunikasi diwaktu mendatang. Pada main mode persetujuan dalam otentifikasi, algoritma, dan kunci dilakukan. Main mode membutuhkan tiga tahap pertukuran antara pengirim dan penerima. Langkah pertama, dua entitas setuju dalam menggunakan algoritma dan hash untuk komunikasi. Langkah kedua, bertukar
38
kunci public menggunakan model pertukaran Diffie-Hellman dan kemudian membuktikan identitas mereka kepada yang lain. Langkah terakhir, penerima dan pengirim saling memverifikasi identitas. Pada aggressive mode sama dengan main mode hanya saja jumlah langkah yang dilakukan dua langkah saja, dan yang terakhir pada quick mode dimana dapat digunakan setelah SA ISAKMP telah dibuat menggunakan main mode atau aggressive mode untuk membuat material baru untuk membangkitkan kunci. Ini dikenal sebagai fasa pertukaran kedua. Dalam quick mode, semua paket telah dienkripsi, jadi langkah ini lebih mudah dari main mode dan aggressive mode.
2.4.3 Cara Kerja IPSec Cara kerja IPSec dapat dibagi dalam lima tahap, yaitu: • Memutuskan menggunakan IPSec antara dua titik akhir di internet. • Mengkonfigurasi dua buah gateway antara titik akhir untuk mendukung
IPSec. • Inisialisasi tunnel IPSec antara dua gateway. • Negosiasi dari parameter IPSec/IKE antara dua gateway. • Mulai melewatkan data.
Untuk lebih jelasnya berikut ini diberikan contoh langkah demi langkah IPSec antara Bob yang berada di kota New York dan Alice yang berada di kota San Fransisco (Gambar 2.13)
39
Gambar 2.13 Hubungan IPSec antara Bob dan Alice
Langkah-langkah hubungan tersebut diuraikan sebagai berikut: • SF mengkonfigurasi IPSec dengan NY • NY mengkonfigurasi IPSec dengan SF • Alice mengirimkan data kepada Bob • SF mengenali bahwa data tersebut harus diamankan • SF memulai IKE dengan peer di NY
• SF menawarkan algoritma enkripsi, algoritma hash (untuk otentifikasi), metode otentifikasi, Diffie-Hellman, protokol EPS atau AH • NY setuju dengan tawaran SF lalu meresponnya dengan mengirimkan persetujuan kepada SF •
SF membangkitkan bilangan acak, ’nonce’, dan mengirimkannya bersama kunci public ke NY
•
NY menggunakan kunci public SF untuk mendekrip nonce yang telah dienkrip dan kemudian memverifikasinya ke SF
40 •
SF menggunakan kunci private untuk menandatangani nonce dan mengirimkannya kembali ke NY
•
NY menggunakan kunci private untuk menandatangani nonce dan mengirinkannya kembali ke SF
• SF menggunakan kunci public untuk mendekrip nonce yang dienkrip
kemudian memverifikasi ke NY • NY menggunakan kunci public SF untuk mendekrip nonce yang dienkrip
kemudian memverifikasi ke SF • SF memulai quick mode negotiation dengan NY dengan membangkitkan
dan mengirimkan security parameter index (SPI) • NY
memverifikasi
bahwa
SPI
belum
digunakan
olehnya
dan
mengkonfirmasi bahwa SF dapat menggunakan SPI tersebut, sambil NY juga mengirimkan SPI miliknya sendiri ke SF. • SF mengkonfirmasi SPI milik NY dan mengirimkan alamat dari host Alice
yang akan menggunakan IPSec SA • NY mengkonfirmasi ke SF bahwa dapat mendukung IPSec untuk Alice dan
sekaligus mengirimkan alamat host Bob ke NY • SF mengkonfirmasi ke NY bahwa dapat mendukung IPSec untuk Bob dan
mengirimkan atribut IPSec (umur SA dan algoritma enkripsi ke NY) • NY memverifikasi bahwa atribut IPSec yang dikirimkan SF dan
membangun pasangan SA IPSec (inbound dan outbound) untuk Bob untuk berbicara kepada Alice
41 • SF menerima konfirmasi atribut IPSec NY dan membangun pasangan SA
IPsec (inbound dan outbound) untuk Alice untuk berbicara kepada Bob • Tunnel terbentuk