Senin, 02 Maret 2009

Proxy Server

Anda mungkin pernah mendengar tentang proxy server, tetapi apa itu sebenarnya? Dan bagaimana cara kerjanya? Apakah ia hanya untuk mempercepat koneksi ke Internet?

Proxy server mula-mula dikembangkan untuk menyimpan halaman web yang sering diakses. Pada masa awal Internet, koneksi sangat lambat, Internet masih relatif kecil, dan halaman web masih statis. Keseluruhan Internet hanya terdiri dari beberapa ribu situs yang sebagian besar untuk para ilmuwan dan akademisi. Kapanpun ada berita penting pada suatu situs web, banyak ilmuwan dari organisasi yang sama akan mengunjungi halaman tersebut (berapa kali Anda memforward link di dalam perusahaan Anda?).

Proxy dan Web Caching
Dengan menyimpan halaman tersebut pada server lokal, proxy dapat menghilangkan akses Internet yang berlebih untuk mengambil kembali halaman yang sama berulang-ulang. Jadi, proxy mula-mula sangat efektif untuk web caching. Namun, Internet sekarang sudah cepat, halaman web bersifat dinamis dan kepentingan user di dalam satu organisasi hanya terdiri dari ratusan halaman web. Faktor-faktor ini menyebabkan caching proxy menjadi tidak efektif, kecuali pada organisasi yang sangat besar atau ISP. Meskipun semua browser standar mempunyai dukungan terhadap proxy server, sejak 1996 jarang digunakan.

Proxy = HTTP?
Banyak alternatif layanan proxy, mulai dari fungsi filter pada Application layer untuk firewall seperti Checkpoint Firewall-1, sampai aplikasi umum yang murni “hanya proxy” seperti WinGate dan proxy satu layanan seperti Jigsaw untuk HTTP.

Proxy server sering kali dihubungkan dengan layanan HTTP karena proxy kali pertama dikembangkan untuk layanan ini. Sejak saat itu, fungsi proxy telah diaplikasikan ke layanan Internet lain yang paling umum. Contoh pada artikel ini akan menggunakan layanan HTTP, tetapi fungsionalitas pada umumnya sama dengan layanan yang lain.

Bagaimana Cara Kerja Proxy?
Proxy bekerja dengan mendengarkan request dari client internal dan mengirim request tersebut ke jaringan eksternal seolah-olah proxy server itu sendiri yang menjadi client. Pada waktu proxy server menerima respon dan server publik, ia memberikan respon tersebut ke client yang asli seolah-olah ia public server.

Proxy dan Keamanan
Internet yang sekarang juga mempunyai cirinya sendiri, dan proxy server menunjukkan efek samping yang sungguh tak terduga: mereka dapat menyembunyikan semua user di belakang satu mesin, mereka dapat memfilter URL, dan mereka dapat membuang content yang mencurigakan atau ilegal. Jadi meskipun mula-mula dibuat sebagai cache nonsekuriti, tujuan utama proxy server sekarang menjadi firewalling.

Proxy server memperbarui request layanan pada jaringan eksternal atas nama client mereka pada jaringan private. Ini secara otomatis menyembunyikan identitas dan jumlah client pada jaringan internal dari jaringan eksternal. Karena posisi mereka di antara client internal dan server publik, proxy juga dapat menyimpan content yang sering diakses dari jaringan publik untuk mengurangi akses ke jaringan publik tersebut. Kebanyakan implementasi nyata proxy sekuriti meliputi pemilteran paket dan Network Address Translation untuk membangun firewall yang utuh. Teknologi tersebut dapat digabungkan dengan proxy untuk menghilangkan serangan yang terhadapnya proxy rentan.

Menyembunyikan Client
Fitur keamanan utama proxy server adalah menyembunyikan client. Seperti Network Address Translation, proxy server dapat membuat seluruh jaringan internal muncul sebagai satu mesin dari Internet karena hanya satu mesin yang melewatkan request ke Internet.

Seperti Network Address Translatation, proxy server mencegah host eksternal untuk mengakses layanan pada mesin internal. Pada proxy server, tidak ada routing ke client karena domain alamat jaringan internal dan eksternal bisa saja tidak kompatibel dan karena transport layer routing tidak ada di antara kedua jaringan.

Proxy melakukan fitur ini dengan memperbarui request, bukan mengganti dan menghitung ulang header alamat. Sebagai contoh, pada waktu client membuat request melalui proxy server, proxy server menerima request tersebut seolah-olah web server tujuan pada jaringan internal. Ia kemudian memperbarui request ke jaringan eksternal seolah web browser biasa. Pada waktu proxy menerima respon dari web server yang sebenarnya, ia memberikan respon tersebut kepada client internalnya. Hanya HTTP yang dilewatkan melalui proxy, bukan TCP atau IP. TCP/IP (dan protokol low-level lainnya) diperbarui oleh proxy; mereka tidak akan dilewatkan melalui proxy.

Aspek lain dari penyembunyian client adalah penyebaran koneksi; proxy server dapat digunakan untuk membagi satu koneksi Internet dan alamat IP ke seluruh jaringan. Oleh karena itu, proxy server seperti WinGate sangat populer di lingkungan rumahan dan kantor kecil di mana hanya ada satu koneksi dial-up atau dedicated yang tersedia.

Pemblokiran URL
Pemblokiran URL memungkinkan administrator untuk menolak situs tertentu berdasarkan URL mereka. Secara teori, ini akan menjauhkan pegawai Anda dari situs web yang tidak boleh mereka akses. Fungsi ini mudah diimplementasikan. Proxy mengecek setiap request dengan daftar halaman yang ditolak sebelum ia memperbarui request tersebut. Jika URL diblokir, proxy tidak akan meminta atau memberikan halaman tersebut.

Namun, pemblokiran URL mudah diatasi, karena situs web bisa ditulis dengan menggunakan alamat IP atau bahkan keseluruhan nomor alamat. User dapat mengetik apa saja dalam web browser mereka untuk mengakses halaman yang sama, namun URL blocker Anda (mungkin) hanya akan mengecek alamat lengkap URL.

Masalah lain dengan pemblokiran URL adalah memperbarui situs yang diblokir. Situs seperti hacking, pornografi, dan situs game mempunyai masa hidup yang singkat, mereka dapat muncul dan hilang dengan cepat. Sulit rasanya untuk memblokir mereka dengan database pemblokiran URL Anda. Kebanyakan orang akan menggunakan search engine atau berita Usenet untuk mengetahui keberadaan situs.

Pemilteran Content
Karena proxy memperbarui semua muatan protokol dan protokol spesifik, proxy dapat digunakan untuk mencari muatan content yang mencurigakan. Ini berarti Anda dapat mengonfigurasi layanan proxy HTTP untuk mempreteli kontrol ActiveX, applet Java, atau bahkan gambar berukuran besar jika Anda rasa mereka bisa menyebabkan masalah keamanan. Anda juga bisa menggunakan proxy SMTP utuk mempreteli attachment berupa file executable dan file arsip zip jika Anda rasa mereka menyebabkan masalah.

Pemfilteran content juga dapat digunakan untuk mengecek halaman web akan adanya kata atau kalimat tertentu, seperti merk dagang kompetitor Anda atau sejumlah berita hangat. Anda harus memfilter control ActiveX, applet Java, dan file executable dalam e-mail karena mereka dapat digunakan untuk menginstalasi Trojan horse.

Jika ada user yang perlu mentransfer file executable, minta mereka untuk mentransfernya dalam file zip atau gunakan BinHex atau encoder yang lain untuk mentransfernya dalam format teks. File akan perlu di-decode, sehingga mencegah pentransferan virus atau Trojan horse.

Pengecekan Konsistensi
Pengecekan konsistensi merupakan pengecekan content protokol untuk memastikan itu dapat dimengerti oleh protokol. Pengecekan konsistensi memastikan bahwa jenis content tertentu tidak dapat digunakan untuk mengeksploitasi kelemahan sistem keamanan dalam jaringan internal Anda.

Sebagai contoh, daemon SMTP Sendmail Unix dulunya terkenal peka terhadap masalah buffer overflow. Ini terjadi pada waktu e-mail dikirim dan membutuhkan waktu lebih lama dari yang ditentukan. Sendmail akan mengalokasikan bagian memory sebesar yang diminta oleh e-mail tersebut, tetapi kemudian memeriksa e-mail sampai akhirnya tiba di bagian akhir. Jika di antara bagian yang diminta dan bagian akhir berisi kode executable, hacker bisa mendapatkan akses root ke e-mail server Anda.

Anda tentu pernah mendengar tentang banyaknya jumlah eksploitasi buffer overflow yang dilakukan oleh hacker untuk melawan IIS. Dengan menggunakan URL yang lebih panjang dari yang bisa ditangani IIS dan eksploitasi terhadap DLL pendukung, hacker dapat membuat serangan otomatis terhadap IIS yang bekerja sebagai worm pada Internet dan menyebabkan kerusakan secara luas. Microsoft telah meluncurkan perbaikan keamanan untuk mengatasi masalah ini.

Pengecekan konsistensi dengan proxy dapat memastikan bahwa masalah semacam ini bisa dihilangkan pada proxy sehingga mereka tidak akan mempengaruhi mesin internal. Sayangnya, masalah yang harus dicek biasanya tidak diketahui sampai hacker mengeksploitasi mereka, jadi kebanyakan pengecekan konsistensi hanya dilakukan setelah ditemukan adanya eksploitasi.

Pemblokiran Routing
Paket Transport layer perlu diarahkan karena request semuanya diperbarui. Hal ini menghilangkan eksploitasi Transport layer seperti routing, fragmentasi, dan beragam serangan denialof-service. Dengan menghilangkan routing, Anda juga dapat memastikan bahwa semua protokol yang belum Anda tentukan tidak akan dilewatkan ke jaringan publik. Pemblokiran routing mungkin merupakan keuntungan proxy server yang paling penting. Karena paket TCP/IP sebenarnya lewat antara jaringan internal dan eksternal, banyak serangan denial-of-service dan eksploitasi yang dapat dicegah.

Sayangnya, pemblokiran routing tidak begitu sering digunakan karena banyaknya protokol yang ada. Sedapat mungkin jangan perbolehkan paket low-level melewati proxy server kita. Kebanyakan proxy server memperbolehkan Anda untuk membuat proxy TCP generik untuk semua port yang enggunakan proxy SOCKS generik atau utiiliti redir Unix. Proxy generik ini, meskipun mereka tidak dapat melakukan pemfilteran content, tetapi memungkinkan Anda untuk mencegah paket TCP/IP berlalu-lalang antarjaringan Anda.

Logging dan Alerting
Manfaat keamanan terakhir dari proxy adalah fasilitas logging dan alerting yang mereka sediakan. Proxy memastikan bahwa semua content mengalir melalui satu poin, yang bisa
menjadi tempat pemeriksaan data jaringan. Kebanyakan proxy server akan mencatat penggunaan proxy oleh user dan dapat dikonfigurasi untuk mencatat situs yang mereka kunjungi. Ini akan memungkinkan Anda untuk mengatur ulang cara browsing user jika Anda curiga akan adanya aktivitas yang ilegal atau tidak semestinya.

Fasilitas alert disediakan oleh beberapa proxy untuk memperingatkan Anda atas serangan yang terjadi, meskipun proxy umumnya bukan sasaran penyerangan. Namun, fasilitas ini bisa digunakan untuk meningkatkan kewaspadaan Anda pada interface eksternal, yang sering kali dicoba untuk dieksplotiasi oleh hacker.

Proxy dan Kinerja
Selain aspek keamanan, proxy server juga dapat memberikan peningkatan kinerja yang penting. Pertama, proxy dapat menyimpan data yang sering direquest untuk meningkatkan kinerja dengan menghilangkan akses berlebih ke jaringan eksternal (yang kecepatannya lebih lambat). Kedua, proxy dapat menyeimbangkan beban service ke sejumlah server internal.

Caching
Seperti yang telah disebutkan di bagian awal artikel ini, proxy mula-mula dikembangkan sebagi peningkat kinerja, bukan sebagai perangkat pengaman. Pada awal Internet, hanya ada ribuan situs web. Mereka kebanyakan bersifat ilmiah dan tidak sering berubah. Karena koneksi ke Internet lambat, proxy dapat digunakan untuk menyimpan sebagian besar Internet secara lokal, sehingga pengguna internal cukup browsing ke proxy lokal. Content tidak berubah dengan sangat cepat, jadi ini masih masuk akal.

Sekarang caching hanya masuk akal jika ada user dalam jumlah besar yang mengakses halaman web yang sama berulang-ulang. Pola penggunaan seperti ini sekarang sudah jarang, jadi segi caching proxy server sudah mulai usang.

Dengan e-commerce yang semakin umum, caching akan kembali menjadi fungsi yang penting karena banyak orang akan melakukan pekerjaan mereka dengan menghadapi beberapa situs yang sering diakses. Sebagai contoh, ambil agen perjalanan yang menggunakan Expedia.com dan Travelocity.com untuk melakukan pekerjaan mereka. Banyak agen akan mengakses dua situs yang sama berulang-ulang, sehingga menyimpan elemen situs utama, gambar, dan applet adalah masuk akal.

Reverse Proxy Load Balancing
Proxy server sekarang ini dapat digunakan untuk melakukan “reverse proxy,” atau menyediakan layanan proxy ke client eksternal untuk server internal. Fungsi ini digunakan untuk menyeimbangkan beban klien ke sejumlah web server. Banyak situs web yang fungsionalitasnya tinggi menggunakan aplikasi kompleks seperti ISAPI, Active Server Pages, Java servlet, atau CGI. Aplikasi ini dijalankan pada server, sehingga mereka sangat mengurangi banyaknya client yang mampu ditangani oleh satu server. Sebagai contoh, Windows 2000 server yang menjalankan IIS yang bisa menangani sampai 100.000 browser untuk halaman HTML standar hanya bisa menangani 5000 browser halaman ASP.

Ini berarti bahwa kebanyakan fungsi e-commerce sebenarnya tidak bisa ditangani oleh satu server, jadi situs tersebut harus dijalankan secara paralel ke sejumlah mesin. Sebagai contoh, http://www.microsoft.com/ dijalankan pada 30 server DNS yang identik. DNS menyediakan skema dasar load-sharing di mana akses ke nama DNS akan mendapatkan salah satu alamat IP, tetapi ini belum benar-benar menyeimbangkan beban.

Proxy server dapat digunakan untuk merespon ke satu alamat IP dan kemudian mengarahkan koneksi client ke salah satu server di belakangnya. Proxy server dapat menggunakan beberapa tolak ukur yang disediakan oleh semua web server untuk mengtahui server mana yang mempunyai sisa kapasitas paling banyak. Setiap client yang terhubung kemudian dapat diarahkan ke web server mana pun yang mempunyai kapasitas yang cukup untuk menanganinya.

0 komentar:

Posting Komentar