A. Latar Belakang
Suatu program dapat kita jalankan melalui perantara jaringan walaupun program tersebut tidak ada pada komputer kita. Dengan adanya sistem Remote Procedure Call (RPC) yang telah terintegrasi pada perangkat lunak sistem operasi. Dengan RPC ini suatu program dalam jaringan (komunikasi antar proses) dapat berjalan pada suatu komputer tanpa terasa adanya eksekusi kode pada remote system. Dengan RPC inilah semua komputer dalam jaringan dapat saling berkomunikasi/berbagi Resources yang ada pada setiap komputer dalam jaringan tersebut. Untuk mengetahui dan mengenal karakteristik dari RPC tersebut, maka kami menyusun makalah ini. Dan selain itu, kami menyusun makalah ini untuk memenuhi tugas yang diberikan oleh pembimbing mata kuliah Distributed System.
B. Pengertian RPC (Remote Procedure Call)
Gagasan tentang RPC (Remote Procedure Call) pertama kali ditemukan pada tahun 1976. Perusahaan yang pertama kali menggunakan RPC adalah Xerox pada tahun 1981. RPC di implementasikan pertama kali di sistem operasi Unix, Sun's RPC (sekarang disebut ONC RPC). ONC RPC masih banyak digunakan saat ini pada beberapa platform. Implementasi Unix yang lain digunakan oleh Apollo Computer Network Computing System (NCS). NCS kemudian digunakan sebagai dasar fondasi DCE/RPC di OSF Distributed Computing Environment (DCE). Satu dekade kemudian diadopsi oleh perusahaan Microsoft DCE/RP, Microsoft RPC (MSRPC) sebagai dasar mekanisme mereka, dan berjalan pada DCOM (Distributed Object Component Model). Sekitar waktu yang sama pertengahan tahun 90-an, Xerox PARC's ILU, dan Object Management Group CORBA, menawarkan paradigma RPC yang lain berdasarkan objek terdistribusi dengan mekanisme yang menggunakan metode warisan.
Remote Procedure Call adalah suatu protokol yang menyediakan suatu mekanisme komunikasi antar proses yang mengizinkan suatu program untuk berjalan pada suatu komputer tanpa terasa adanya eksekusi kode pada sistem yang jauh (remote system). (Newmarch, 1995). RPC mengasumsikan keberadaan dari low-level protokol transportasi seperti TCP atau UDP untuk membawa pesan data dalam komunikasi suatu program. Protokol RPC dibangun di atas protokol eXternal Data Representation (XDR), yang merupakan standar dari representasi data dalam komunikasi remote. Protokol XDR mengubah parameter dan hasil dari tiap servis RPC yang disediakan.
Protokol RPC mengizinkan pengguna untuk bekerja dengan prosedur remote sebagaimana bekerja dengan prosedur lokal. Prosedur panggilan remote didefinisikan melalui rutin yang terkandung di dalam protokol RPC. Tiap pesan dari panggilan akan disesuaikan dengan pesan balikan. Protokol RPC sendiri sebenarnya adalah suatu protokol untuk ”meneruskan pesan” yang mengimplementasikan protokol non-RPC lain seperti panggilan remote batching dan broadcasting. Protokol ini juga mendukung adanya prosedur callback dan select subroutine pada sisi server. (Spangler, 2004).
C. Client dan Server
Client adalah komputer atau proses yang mengakses suatu layanan, resources dari proses atau komputer pada suatu jaringan. Server adalah komputer yang menyediakan servis/layanan dan resources, dan yang mengimplementasikan servis jaringan. Tiap servis pada network adalah susunan dari program remote, dan tiap program remote mengimplementasi prosedur remote. Semua prosedur berikut parameternya dan hasilnya didokumentasi secara spesifik pada protokol suatu program.
Gambar Prinsip RPC pada Client-Server
D. Fitur Dalam RPC
1. Batching Calls
Fitur Batching calls mengizinkan klien untuk mengirim message calls ke server dalam jumlah besar secara sequence (berurutan). Batching menggunakan protokol streaming byte seperti TCP/IP sebagai mediumnya. Pada saat melakukan batching, klien tidak menunggu server untuk memberikan reply terhadap tiap messages yang dikirim, begitu pula dengan server yang tidak pernah mengirimkan messages reply. Fitur inilah yang banyak digunakan klien, karena arsitektur RPC didesain agar pada tiap call message yang dikirimkan oleh klien harus ada proses menunggu balasan dari server. Oleh karena itu maka pihak klien harus dapat mengatasi error yang kemungkinan terjadi karena pihak klien tidak akan menerima peringatan apabila terjadi error pada message yang dikirim.
2. Broadcasting Calls
Fitur Broadcasting mengizinkan klien untuk mengirimkan paket data ke jaringan dan menunggu balasan dari network. Fitur ini menggunakan protokol yang berbasiskan paket data seperti UDP/IP sebagai mediumnya. Broadcast RPC membutuhkan layanan port mapper RPC untuk mengimplementasikan fungsinya.
3. CallBack Procedures
Fitur Callback Procedures mengizinkan server untuk bertindak sebagai klien dan melakukan pemanggilan RPC kembali ke proses yang dijalankan oleh klien.
4. Select Subroutine
Fitur ini akan memeriksa deskripsi dari suatu file dan messages dalam antrian untuk melihat apakah mereka siap untuk dibaca (diterima) atau ditulis (dikirim), atau mereka dalam kondisi ditahan sementara. Prosedur ini mengizinkan server untuk menginterupsi suatu aktivitas, memeriksa datanya, dan kemudian melanjutkan proses aktivitas tersebut.
E. Otentifikasi RPC
Proses otentifikasi adalah proses yang digunakan untuk mengidentifikasi server dan klien pada RPC. (Newmarch, 1995). Untuk setiap prosedur remote yang dilakukan protokol RPC menyediakan slot yang dipakai sebagai parameter otentifikasi yang berfungsi agar pemanggil (caller) dapat memberikan identitasnya kepada server. Parameter otentifikasi ini dibuat di paket klien. Otentifikasi RPC terdiri atas beberapa bagian. Berikut ini adalah bagian-bagian pada otentifikasi RPC:
1. Protokol Otentifikasi RPC
Protokol Otentifikasi RPC disediakan sebagai bagian dari protokol RPC. Untuk setiap prosedur remote, semuanya diotentifikasi oleh paket RPC pada server. Parameter yang digunakan adalah respon verifier. Sedangkan pada pihak klien, setiap paket RPC diberikan parameter otentifikasi dan parameter yang digunakan adalah credential dan verifier.
2. Otentifikasi NULL
Otentifikasi NULL digunakan pada sistem dimana pemanggil (caller) RPC tidak mengetahui identitasnya sendiri dan server tidak membutuhkan identitas pemanggil.
3. Otentifikasi Data Encryption Standard (DES)
Otentifikasi DES membutuhkan keyserv daemon yang harus berjalan baik di sisi server maupun klien. Tiap pengguna pada sistem ini harus memiliki kunci publik (public key) yang disahkan pada database kunci publik oleh Administrator jaringan tersebut.
4. Protokol Otentifikasi DES
Protokol Otentifikasi DES meliputi protokol penanganan DES pada proses otentifikasi RPC. Protokol ini mencakup 64-bit blok data DES yang terenkripsi dan menentukan panjang maksimum untuk user name pada jaringan yang digunakan.
5. Enkripsi Diffie-Hellman
Enkripsi Diffie-Hellman digunakan pada pembuatan kunci publik pada otentifikasi DES dengan menggunakan 192-bit kunci. Enkripsi ini memiliki dua buah variabel konstan, yaitu BASE dan MODULUS yang digunakan pada protokol otentifikasi DES.
RPC hanya berhubungan dengan proses otentifikasi, tidak dengan control akses terhadap servis/layanan individual yang diberikan. Tiap layanan mengimplementasikan peraturan mengenai kontrol akses masing-masing. Subsistem otentifikasi pada paket RPC bersifat open-ended, artinya beberapa otentifikasi dapat diasosiasikan pada RPC klien.
F. Implementasi RPC
1. Bahasa RPC
Bahasa RPC (RPC Language - RPCL) merupakan bahasa yang dikembangkan dari bahasa XDR. Bahasa RPC memiliki kemiripan dengan bahasa XDR namun dengan beberapa penambahan yaitu program definisi. Implementasi layanan protokol dan rutin menggunakan command rpcgen yang berkorespondensi dengan bahasa pemprograman C.
2. Port Mapper
Port adalah kanal komunikasi diantara klien dan server. Port-port komunikasi ini dibedakan berdasarkan nomor yang dimilikinya dengan fungsi masing-masing. Namun nomor-nomor port ini, terutama yang memberikan layanan RPC, tidak diberikan pada jaringan transport. Jaringan transport hanya menyediakan layanan pemprosesan message di dalam jaringan. (Spangler, 2004)
Untuk mengatasi hal ini, maka program pada komputer klien harus mampu untuk mencari nomor port untuk tiap program di server yang hendak digunakan. Protokol port mapper adalah suatu layanan pada jaringan yang dapat mengatasi masalah ini. Protokol ini memberikan hak pada klien untuk mencari nomor port untuk semua program remote yang disediakan oleh server. Dengan demikian maka implementasi protokol ini pada suatu program port mapper akan memetakan tiap-tiap program RPC dan nomor versinya dengan nomor-nomor port yang spesifik.
a. Meregister Port
Port Mapper terletak pada nomor port 111 pada setiap mesin (host maupun server) dan merupakan satu-satunya layanan jaringan yang mempunyai port yang khusus dan tetap. Sedangkan untuk jenis layanan jaringan lainnya, nomor port-nya dapat statis atau berubah-ubah asalkan kesemuanya terdaftar pada TypeDef, pada bahasa ini memiliki syntax yang sama dengan typedef pada bahasa C. port mapper. Penempatan nomor port untuk tiap program remote ke dalam port mapper akan mengotomatisasi administrasi nomor-nomor port. Hasilnya akan disimpan dalam satu file dimana file ini akan diduplikat ke setiap klien. Sehingga akan terjadi proses pembaruan data (update) setiap kali ada program remote baru yang disediakan oleh jaringan. Salah satu cara alternatif agar sistem tidak harus selalu meng-update file mapper-nya adalah dengan menempatkan hasil pemetaan port program remote pada suatu file Network File System (NFS) yang di-sharing. Namun hal ini membawa masalah apabila server tidak dapat berfungsi, maka seluruh jaringan juga tidak dapat menggunakan fungsi ini.
Pemetaan port program yang disimpan pada suatu port mapper di server disebut dengan portmap. Port mapper ini akan dijalankan secara otomatis tiap kali mesin server dijalankan. Lalu baik program server maupun klien akan memanggil prosedur port mapper. Kemudian sebagai bagian dari proses inisialisasi, program server akan memanggil port mapper pada host untuk membuat entri pada portmap. Setelah itu, program server akan meng-update entri pada portmap, sedangkan program klien akan memanggil query dari entri portmap ini. Untuk mencari nomor port yang diinginkan, program klien kemudian mengirimkan RPC call message ke port mapper pada server. Apabila proses ini berhasil (server mendukung remote program yang diminta), port mapper server akan mengirimkan nomor port yang sesuai pada RPC reply message. Kemudian proses remote dapat dilakukan dengan menggunakan nomor port tersebut. Proses ini akan selalu dijalankan setiap kali ada permintaan remoteprogram dari klien ke server. Namun untuk meminimalisasi
pemanggilan port mapper, pada sisi klien disediakan cache untuk menyimpan nomor-nomor port yang sering digunakan.
b. Prosedur Port Mapper
Program port mapper mendukung dua protokol, yaitu UDP dan TCP/IP. Program ini terhubung pada port 111 untuk kedua protokol ini. Berikut ini adalah prosedur-prosedur yang digunakan program port mapper pada kedua protokol ini:
NULL
Prosedur ini tidak berfungsi, prosedur ini tidak memberikan parameter dan juga tidak memberikan hasil.
SET
Prosedur ini akan meregister program pada port mapper dengan memberikan parameter sebagai berikut: program number (prog), version number (vers), transport protocol number (prot), dan nomor port yang diminta untuk layanan ini. Hasil dari prosedur ini berupa Boolean True atau False yang mengindikasikan sukses tidaknya proses mapping.
UNSET
Prosedur ini digunakan untuk me-unregister program pada port mapping jika program remote tidak lagi digunakan. Parameter yang dibawa sama dengan prosedur SET dikurangi nomor protokol dan nomor port.
GETPORT
Prosedur ini memberikan parameter berupa nomor program (prog), version number (vers), dan transport protocol number (prot) untuk mendapatkan hasil berupa nomor port untuk program yang diminta.
DUMP
Prosedur ini akan mencatat semua entri dalam database port mapper. Prosedur ini tidak membutuhkan parameter dan memberikan hasil berupa (prog), (prot), (vers), dan nomor port.
CALLIT
Prosedur ini digunakan untuk memanggil suatu program remote lain padamesin yang sama tanpa harus mengetahui nomor port dari program yang diminta.
3. Lapisan RPC
Bagian antar-muka (interface) dari RPC dibagi menjadi 3 lapisan/bagian (layer) yaitu:
a. Lapisan Tertinggi (Highest Layer)
Lapisan ini merupakan lapisan yang bersentuhan langsung dengan sistem operasi, mesin dan jaringan tempat RPC berjalan. Layer ini umumnya banyak digunakan pada pembuatan dan pemprograman RPC karena penggunaan layer ini sama saja dengan penggunaan RPC. Banyak servis/layanan pada layer ini yang berhubungan langsung dengan informasi yang banyak dibutuhkan.
b. Lapisan Menengah (Intermediate Layer)
Lapisan ini merupakan implementasi dari RPC sesungguhnya. Pada layer ini, seorang user tidak harus berhubungan dengan soket, sistem operasi atau implementasi lo-level lainnya. Pada layer ini, seorang user hanya melakukan proses remote pada suatu mesin. Layer ini merupakan layer yang digunakan untuk semua program RPC.
c. Lapisan Terendah (Lowest Layer)
Lapisan ini merupakan lapisan yang mengatur tentang soket dan sistem call. Lapisan ini tidak memberikan data dan servis secara detail untuk dapatdigunakan. Umumnya program yang dibuat untuk lapisan ini merupakan program yang paling efisien. Permasalahan yang timbul pada sistem ini berkaitan dengan penyesuaian implementasi RPC untuk sistem operasi yang berbeda.
4. Model dan Cara Kerja RPC
Prosedur call umumnya berkaitan dengan penggunaan stack, penyimpanan parameter yang diterima dalam stack tersebut dan pengalokasian ruang untuk lokal variabel. Namun selain itu ada yang disebut dengan Prosedur Call remote, yang berarti pelaksanaan proses diatas namun pada suatu sistem lain yang berhubungan melalui suatu jaringan. Sistem prosedur remote ini memiliki cara kerja yang sedikit banyak mirip, namun berbeda dengan prosedur call biasa. Berikut adalah gambar cara kerja dari RPC.
Gambar Cara Kerja RPC
Tiap prosedur yang dipanggil dalam RPC, harus berkoneksi dengan server remote de-ngan mengirimkan semua parameter yang dibutuhkan, menunggu balasan dari server dan melakukan proses kemudian selesai. Proses di atas disebut juga dengan stub pada sisi klien. Sedangkan Stub pada sisi server adalah proses menunggu tiap message yang berisi permintaan mengenai prosedur tertentu. (Newmarch, 1995).
Server harus membaca tiap parameter yang diberikan, kemudian memberikan prosedur lokal yang sesuai dengan permintaan dan parameter. Kemudian setelah eksekusi, server harus mengirimkan hasil kepada pihak pemanggil proses.
Gambar Remote Procedure Call Flow
Diagram diatas memberikan gambaran mengenai flow dari eksekusi dalam proses RPC. Berikut ini adalah diagram yang akan menjelaskan secara rinci mengenai proses yang terjadi pada klien dan server dalam eksekusi suatu prosedur RPC.
Gambar Proses RPC
Penjelasan:
Klien memanggil prosedur stub lokal. Prosedur Stub akan memberikan parameter dalam suatu paket yang akan dikirim ke jaringan. Proses ini disebut sebagai marshalling.
Fungsi Network pada O/S (Operating System - Sistem Operasi) akan dipanggil oleh stub untuk mengirim suatu message.
Kemudian Kernel ini akan mengirim message ke sistem remote. Kondisi ini dapat berupa connectionless atau connection-oriented.
Stub pada sisi server akan melakukan proses unmarshals pada paket yangdikirim oleh network.
Stub pada server kemudian mengeksekusi prosedur panggilan lokal.
Jika eksekusi prosedur ini telah selesai, maka eksekusi diberikan kembali ke stub pada server.
Stub server akan melakukan proses marshals lagi dan mengirimkan message nilai balikan (hasilnya) kembali ke jaringan.
Message ini akan dikirim kembali ke klien.
Stub klien akan membaca message ini dengan menggunakan fungsi pada jaringan.
Proses unmarshalled kemudian dilakukan pada message ini dan nilai balikan akan diambil untuk kemudian diproses pada proses lokal.
G. Kelemahan dan Pencegahan Eksploitasi RPC
Tujuan utama penggunaan protokol RPC adalah untuk mempermudah komunikasi dalam pembangunan aplikasi klien-server yang terdistribusi. Namun dalam perkembangannya, seiring dengan perkembangan sistem operasi, protokol ini banyak disalahgunakan. Hal ini terkait dengan kelemahan protokol ini yang dimanfaatkan oleh
pihak-pihak tertentu untuk mendapatkan keuntungan atau sekedar untuk mengacaukan sistem yang berlaku. Tindakan ini disebut juga dengan eksploitasi RPC.
1. Kelemahan RPC pada Sistem Operasi Windows
Sistem operasi Microsoft Windows adalah salah satu sistem operasi yang mendukung protokol RPC. Sebagai sistem operasi yang paling banyak digunakan di seluruh dunia baik untuk PC Desktop maupun server, sistem operasi Windows menjadi salah satu sistem operasi yang banyak dijadikan target mulai dari serangan virus, worm, sampai trojan. Protokol RPC juga tidak luput menjadi sasaran serangan oleh pihak yang tidak bertanggung jawab.
Alasan penyerangan pada protokol ini disebabkan karena kemudahan ketergantungan sistem operasi Windows pada servis/layanan RPC. Banyak layanan pada sistem operasi ini yang didesain untuk bergantung pada layanan RPC, baik digunakan maupun tidak. Pengguna sistem operasi ini tidak dapat mengdisfungsikan layanan RPC. Pengguna bisa saja menggunakan firewall untuk memblok port RPC, namun karena sistem operasi Windows terlalu bergantung pada mekanisme RPC sebagai fungsi dasarnya maka hal ini kadang-kadang tidak berhasil. Bahkan sebagai studi kasus, pada sistem operasi Windows Server 2003 terdapat kelemahan pada fungsi RPC itu sendiri.
Kelemahan protokol RPC pada sistem operasi ini terletak pada fungsi RPC yang berhubungan dengan pertukaran message melalui protokol TCP/IP. Hal ini mempengaruhi bagian antar-muka Distributed Component Object Model (DCOM) yang berhubungan dengan RPC, yang akan mendengarkan (listen) port-port RPC yang tersedia. DCOM adalah protokol yang berfungsi untuk mengaktifkan komponen pada perangkat lunak (software) agar dapat berkomunikasi langsung dengan jaringan. Protokol ini didesain untuk penggunaan
jaringan multi transport termasuk protocol Internet misalnya HTTP. RPC melalui HTTP v1 (pada sistem operasi WIndows NT 4.0, Windows 2000) dan v2 (Windows XP, Windows Server 2003) mempunyai suatu fitur baru yaitu mendukung protokol transportasi RPC yang mengijinkan RPC untuk beroperasi melalui port TCP 80 dan 443. Hal ini menyebabkan komunikasi antara klien dan server dapat dilakukan walaupun dalam pengawasan server proxy dan firewall. COM Internet Services (COM) mengijinkan DCOM untuk melakukan RPC melalui HTTP untuk komunikasi DCOM klien dan DCOM server.
Port Portmap 111 adalah nomor port yang paling banyak diakses, namun umumnya nomor port ini telah difilter oleh firewall. Kecenderungan lain berpindah pada nomor port lain yang dapat digunakan untuk mengirim pesan tertentu yang telah dimanipulasi, seperti port 135, 139, 445, 593 pada remote komputer. Melalui port-port ini maka seorang user dapat melakukan permintaan yang dapat mengekploitasi dengan menjalankan kode dengan hak sistem lokal. Berikut ini tabel protokol yang sering dimanfaatkan pada ekploitasi RPC:
Tabel Port dan Protokol yang umum dieksploitasi
Urutan Protokol yang digunakan oleh Endpoint Mapper
Urutan Protokol yang
digunakan oleh Endpoint Mapper
Port TCP atau UDP
ncacn ip tcp
TCP/135
ncacn ip udp
ncacn np pipe emapper
TCP/139 dan TCP/445
ncacn http
TCP/593
ncacn http dengan servis COM
Internet aktif
TCP/180
Masalah ini semuanya disebabkan oleh kelemahan pada servis RPCSS. Servis ini berhubungan dengan aktivasi DCOM. Kegagalan terjadi pada penanganan messages yang salah sehingga mempengaruhi aktivasi DCOM yang mendengarkan port UDP 135, 137, 138, 445 dan port TCP 135, 139, 445, 593. Ditambah port 80 dan 443 (CIS atau RPC over HTTP) jika diaktifkan. Dengan kesalahan ini, maka seorang klien dapat menggunakan kegagalan ini untuk mengeksekusi kode yang dapat dijalankan pada server.
Urutan Protokol yang
digunakan oleh Endpoint Mapper
Port TCP atau UDP
ncacn ip tcp
TCP/135
ncacn ip udp
ncacn np pipe emapper
TCP/139 dan TCP/445
ncacn http
TCP/593
ncacn http dengan servis COM Internet aktif
TCP/180
2. Pencegahan Eksploitasi RPC
Pentingnya nilai informasi yang terkandung dalam suatu server atau sebuah computer pribadi mengharuskan penggunanya baik user atau Administrator harus melakukan tindakan preventif guna menghindari adanya kebocoran informasi ini. RPC sendiri adalah suatu layanan yang vital dan ada di dalam setiap sistem operasi, khususnya sistem operasi Microsoft Windows yang bergantung pada jenis layanan ini. Oleh karena itu menghilangkan layanan RPC pada sistem operasi terasa lebih susah ketimbang dilakukan pengawasan ekstra terhadap layanan ini. Berikut ini adalah beberapa cara yang dapat digunakan untuk melakukan hal ini (Microsoft, 2003):
Memblokir port 135, 137, 138 dan 445 pada UDP dan port 135, 149, 445, dan 593 pada TCP melalui Firewall. Disfungsikan COM Internet Services (CIS) dan RPC melalui HTTP yang menggunakan port 80 dan 443 terutama pada jaringan remote yang menggunakan VPN (Virtual Private Network) atau sejenisnya.
Gunakan personal Firewall seperti Internet Connection Firewall.
Blokir semua port sering diekploitasi dengan menggunakan filter IPSEC.
Disfungsikan fitur DCOM pada setiap komputer atau server.
Khusus sistem operasi buatan Microsoft, selalu update security patch untuk meningkatkan keamanan sistem operasi tersebut.
H. Distributed Component Object Model (DCOM)
Distributed Component Object Model adalah protokol yang berfungsi untuk mengaktifkan komponen pada perangkat lunak (software) agar dapat berkomunikasi langsung dengan jaringan. (Spangler, 2004). Tujuan DCOM adalah agar komponen yang telah dibuat dapat diregister di suatu komputer dan di akses oleh banyak komputer lain. Protokol yang digunakan oleh DCOM dapat meliputi:
Protokol TCP/IP
Protokol UDP/IP
Protokol HTTP
Protokol RPC
Tidak ada komentar:
Posting Komentar