Rabu, 02 Juni 2010

कामानां web

Dasar-Dasar Keamanan Web



Last Updated Monday, 14 July 2008
Belakangan ini, dunia IT underground semakin marak saja. Sering kita saksikan baik di media cetak, elektronik, dan
dunia maya, begitu banyak berita yang memuat aksi-aksi penyerangan, baik dalam bentuk deface sampai dDos yang
meminta banyak korban. Tidak tanggung-tanggung, bahkan web pemerintah pun, baik pusat sampai daerah juga sudah
banyak yang jadi korbannya. Seperti yang sudah dibahas sebelumnya, mencari suatu bugs atau kelemahan keamanan
dan melakukan audit terhadap suatu website jauh lebih mudah daripada membangun sebuah sistem keamanan itu
sendiri. Bagaimana tidak, ada begitu banyak di internet maupun buku-buku yang membahas aneka macam teknik
hacking itu sendiri.
Lalu, apakah dengan kenyataan yang seperti ini para webmaster ataupun praktisi keamanan web harus diam dan
bersikap pesimis? Tentu saja tidak, justru sebaliknya, meski dengan mengaplikasikan berbagai teknik keamanan tidak
menjamin web kita aman 100% (karena tidak pernah ada suatu sistem yang 100% sempurna), namun celah-celah yang
demikian ini bukan mustahil untuk diminimalisir. Setiap pengembang web, sebaiknya yang pertama kali harus
dilakukan yaitu memperbaiki pengamanan terhadap web yang dibangunnya. Pengamanan harus diterapkan sejak awal
karena penerapannya akan sangat sulit jika telah terjadi masalah di kemudian hari. Dalam pengamanan dikenal
dengan beberapa tingkat dan tipe. Tingkat dan tipe yang diperlukan untuk aplikasi kita akan berbeda-beda bergantung
bagaimana aplikasi itu bekerja, tipe dan nilai data yang disimpan, jumlah resiko yang biasa dihadapi, usaha, serta biaya
yang dipakai untuk menghasilkan aplikasi yang aman. Misalnya, pengamanan yang dibutuhkan untuk web perorangan
akan sangat berbeda dibanding untuk situs perusahaan atau situs e-commerce. Meskipun saya sendiri masih sangat
awam (baca : newbie) dalam masalah ini, namun tidak ada salahnya bukan saya sedikit berbagi beberapa kiat yang
mungkin bisa diterapkan untuk memperkuat sistem keamanan web kita. Sehingga lebih tepatnya tulisan ini bukan
ditujukan buat temen-temen semua, namun juga lebih kepada pribadi saya sendiri. Semua yang akan saya tulis di
bawah ini merupakan kumpulan dari beberapa tulisan para webmaster-webmaster yang memang memiliki kapabilitas
dalam bidang keamanan web, yang saya ringkas kemudian saya bahasakan dan susun sedemikian rupa sehingga lebih
tertata dan mudah dipahami. A. Faktor-Faktor Timbulnya Serangan 1. Scripting Kesalahan dalam scripting
pembuatan web adalah hal terbanyak yang dimanfaatkan oleh para attacker, sehingga rata-rata web yang berhasil
diserang melalui lubang ini. Kelemahan-kelemahan scripting yang ditemukan pada proses vulnerabilities scanning
misalnya, XSS, SQL Injection, PHP Injection, HTML Injection, dan lain sebagainya. Begitu pula pada CMS semisal
Mambo, Joomla, WordPress, dan lainnya. CMS tersebut memiliki banyak komponen pendukung di internet yang bisa kita
download, install dan konfigurasi. Sehingga sangat memungkinkan sekali terdapat bug pada scriptingnya. Langkah
terbaik tentunya melakukan pembedahan (oprek) terhadap script serta melakukan pengujian sebelum komponen
tersebut kita gunakan pada web yang sebenarnya. Pengujian bisa dilakukan melalui localhost pada komputer dengan
menginstall PHP, apache, dan mySQL, atau menginstall software semisal WAMP ataupun XAMPP yang merupakan
paket all in one. Untuk mengatasi hal tersebut sebaiknya kita harus mulai belajar dan memahami scripting-scripting
secara bertahap, baik HTML, PHP, javascript, dan sebagainya. CMS tersebut sebenarnya cukup aman, namun
komponen tambahan yang tidak dibuat dengan baik, tentu saja bisa menimbulkan masalah besar bagi sistem secara
keseluruhan. 2. Lubang pada Situs Tetangga Ini merupakan salah satu faktor yang jarang mendapat perhatian.
Sebagian webmaster kadang tidak begitu peduli ketika web lain yang satu hosting dihacked. Mereka berpikiran,
“Ah, toh bukan web saya yang kena.” Padahal justru di sinilah letak kesalahannya. Logikanya, misal web
kita ditempatkan pada perusahaan hosting A. itu artinya web kita bertetangga dengan web milik orang lain yang berada
dalam 1 hosting. Jika web tetangga tersebut memiliki celah fatal, sehingga attacker bisa menanam program yang
dijadikan backdoor. Dengan backdoor inilah attacker bisa masuk ke dalam web kita bahkan web lainnya. Bukan itu saja,
tidak mustahil attacker melakukkan defacing massal, termasuk web kita tentunya. 3. Tempat Hosting yang
Bermasalah Pada beberapa kasus justru tempat hosting yang bermasalah menjadi sebab dihackednya banyak situs
yang berada di bawah pengelolaannya. Pernah terjadi situs milik sebuah perusahaan dideface. Kemudia setelah
diperbaiki, dideface lagi. Kemudian lapor ke admin perusahaan hosting, justru balik menyalahkan pemilik situs dengan
alasan yang nggak masuk akal. Kenyataannya, justru web hosting itu yang nggak pernah di administrasi dengan baik,
jarang diupdate, dan jarang dipatch, sehingga mudah terkena serangan. Dengan model pengelolaan yang seperti ini
jangan berharap web kita akan aman. Karena itu, pastikan tempat hosting yang digunakan benar-benar memperhatikan
tingkat keamanan bagi pelanggannya. B. Macam-Macam Tindakan Hacking Dari kelemahan-kelemahan tersebut di
atas, maka terjadilah beberapa tindakan hacking terhadap web yang kita miliki. Apa saja tindakan-tindakan hacking
tersebut? Berikut beberapa di antaranya : 1. Memodifikasi Validasi Input Biasanya para attacker mencoba menguji
validasi-validasi input yang diterapkan pada form dan parameter buangan pada address bar dalam melakukan proses
attacking. Penanganan yang harus diperhatikan adalah memperhatikan validasi yang terdapat pada form, baik itu
validasi angka maupun validasi string, batasi jumlah karakter yang bida dimasukkan, batasi jumlah karakter yang bisa
dimasukkan, batasi kegiatan-kegiatan injeksi dengan : strip_tags(), htmlspecialchars(), gunakan variable global
sebagaimana mestinya dan gunakan wordfilter untuk memfilter berbagai inputan yang berbahaya. 2. Cross-Site
Scripting (XSS) Salah satu vulnerabilities dalam website adalah Cross-Site Scripting (XSS). Ada 2 jenis aksi yang biasa
dilakukan dalam XSS, yaitu - Direct Action, merupakan injeksi kode yang dilakukan oleh attacker, tetapi hasil injeksinya
hanya ditampilkan pada komputer user bersangkutan. - Stored Action, merupakan injeksi kode yang dilakukan oleh
attacker dan hasil injeksinya bisa dinikmati oleh banyak pengunjung. Bagaimana mengatasi hal ini? Usahakan semua
kode-kode spesial yang mempunyai arti dalam scripting HTML seperti < (kurang dari), > (lebih dari), & (ampersand),
Sobat Muda
http://sobat-muda.com Powered by Joomla! Generated: 3 June, 2010, 00:08
“ (kutip dua) dan ‘ (kutip satu) tidak dieksekusi sebagai karakter spesial. Semua karakter spesial tersebut
harus diubah. Semua karakter spesial tersebut harus diubah dan dikonversi ke entitas HTML. 3. SQL Injection
Kegiatan attacking yang banyak dilakukan akhir-akhir ini adalah SQL Injection, karena SQL Injection merupakan teknik
hacking yang sudah tersebar luas dan relatif mudah dipahami. Attacker melakukan proses attacking dengan
menyisipkan perintah-perintah SQL pada form ataupun pada address bar. Untuk mengatasi hal ini, sebaiknya kita
membatasi inputan dengan : htmlspecialchars(), mysql_escape_string() dan hubungi administrator hosting kita untuk
merubah : magic_quotes_gpc=on. 4. PHP Injection web yang kita miliki bisa dideface, didirect dan dikuasai orang
lain? Ya, ada teknik PHP Injection. Attacker mempergunakan sploit yang sudah ditanam di remote server miliknya dan
hanya dengan mengeksekusi sript sploit tersebut melalui address bar dan melakukan connect back, maka terkuasailah
web kita. Untuk mengatasi hal ini, pastikan penggunaan file direct dengan include () harus dikurangi dan seringseringlah
melakukan update terhadap aplikasi yang kita gunakan. Jika kita memakai CMS, sering-seringlah melakuakn
update CMSnya, begitu pula dengan komponen yang digunakan.C. Dasar-Dasar Pengamanan Setelah sedikit
mengetahui hal-hal di atas, maka sekarang kita membahas tentang strategi dasar pengamanan web. Pada dasarnya,
strategi pengamanan web yang dapat kita lakukan di antaranya sebagai berikut : 1. Pemilihan Sistem Operasi (OS),
Setting Server, dan Desain Aplikasi Salah satu hal penting yang harus dicermati adalah pemilihan sistem operasi (OS).
Seberapa besar pengamanan yang dibutuhkan sangat berhubungan dengan sistem operasi. Sebagai ilustrasi, meskipun
sistem operasi semisal Windows 9x bisa dijadikan sebagai server web dengan keterbatasannya melalui Personal Web
Service (PWS), sistem ini tidak cukup apabila pengamanan merupakan faktor penting. Salah satu kelemahannya
Windows 9x tidak dapat menyediakan NTFS yang sangat penting untuk kontrol akses. Setting konfigurasi pada server
yang tidak memadai dan hanya mengandalkan default merupakan faktor utama penyebab server yang dibangun tidak
terjamin keamanannya. Penentuan kebijakan dalam menerapkan sistem pengamanan ini merupakan kunci utama yang
harus diperhatikan untuk diterapkan pertama kali. Ironisnya justru hal ini merupakan hal yang paling sering diabaikan.
2. Instalasi Patch Idealnya, software yang kita pakai mestinya sudah sempurna sejak awal. Namun kenyataannya tidak
pernah ada software yang benar-benar 100% bugs free. Ada saja bagian program yang rawan keamanan. Pada saat
kerawanan tersebut ditemukan biasanya perusahaan pembuat software akan mengeluarkan aplikasi baru untuk
memperbaiki kesalahan software terdahulu. Aplikasi inilah yang dikenal dengan nama patch. Meskipun penggunaan
istilah ini sekarang juga digunakan bagi para cracker untuk membajak sebuah software resmi. Penerapan patch ini
harus dilakukan pada sistem operasi, server web, add on, maupun file-file komponen lain yang terintegrasi dengan web
kita. Kemalasan, ketidaktahuan, serta kesibukan admin server membuat mereka tidak konsisten menerapkan patch ini.
Sangat ironis jika dibandingkan dengan kemudahan dalam instalasi patch tersebut. 3. Kontrol Akses Penentuan siapa
yang dapat mengakses server harus dilakukan dengan menggunakan kontrol akses, baik dengan autentikasi maupun
otorisasi. Autentikasi adalah proses validasi identitas yang dilakukan dengan membandingkan data user yang dikirim
dengan data yang terdapat dalam database. Setelah melakukan autentikasi, langkah selanjutnya yaitu melakukan
otorisasi yang merupakan proses untuk menentukan apakah pengguna memiliki ijin untuk melakukan tindakan yang
diminta. Ada dua tipe dasar autentikasi, yaitu berbasiskan akses direktori dan autentikasi berbasiskan form. Khusus
untuk Windows ada tipe autentikasi lain yaitu autentikasi passport. Sedangkan otorisasi terbagi dua bentuk, yaitu ACL
(Access Control Listi) dan hostname. 4. Audit dan Log File Audit diperlukan untuk menunjang cara-cara pengamanan
yang telah dijelaskan di atas. Proses monitoring aktivitas tertentu seperti usaha login (berhasil atau gagal), dan
kemudian menuliskannya ke dalam log ini merupakan proses audit. Sebagai contoh, kita dapat menganalisa dengan
mengaudit kegagalan usaha login dalam log, memungkinkan kita menentukan saat seseorang berusaha menyerang
server. Untuk mengaktifkan sistem audit dan log sangat bergantung pada sistem operasi, aplikasi server yang
dijalankan, database yang digunakan, dll. Pada sistem Posix (*nix: unix dan variannya (linux, FreeBSD)), log defaultnya
berada di /var/log yang pengaktifannya bergantung pada aplikasi atau proses apa yang ingin diaudit. Log server web
yang kita jalankan dikonfigurasikan di file konfigurasi server apache (defaultnya httpd.conf) 5. Menerapkan Kriptografi
Selanjutnya, juga perlu diketahui bagaimana proses pengiriman lewat protokol http, baik permintaan layanan maupun
respon berupa teks biasa (plaintext). Kemungkinan attacker untuk melakukan tindakan kriminal dengan mencuri data
sensitif seperti password, e-mail atau nomor kartu kredit sangat besar kemungkinannya. Untuk menjaga informasi
semacam ini tetap aman, diperlukan enkripsi yang membuat plaintext menjadi ciphertext (teks yang tidak terbaca akibat
proses enkripsi). Proses kebalikan dari enkripsi yaitu deskripsi. Ilmu yang mempelajari tentang keamanan informasi
inilah yang disebut kriptografi. Pada level sistem operasi, penerapan yang dilakukan untuk mengamankan server web
adalah dengan menggunakan SSL. Secara default komunikasi SSL terjadi pada port 443 dengan prefiks https:// untuk url
yang menggunakan SSL. Untuk mengaktifkan SSL pada server diperlukan sertifikat server. Pembuatan server ini dapat
diajukan kepada pemegang sertifikat pihak ketiga yang sudah terkenal seperti Verisign atau bahkan bisa juga dengan
membuat sendiri. Secara default konfigurasi SSL pada apache terletak pada direktori httpd di mana server apache
diinstall. D. Penerapan Dasar-Dasar Pengamanan Dari dasar-dasar pengamanan di atas, kita dapat menerapkan ke
dalam 3 level keamanan sebagai berikut : 1. Level Sistem Operasi (OS) dan Hardware Cakupan level akses ini
menjangkau hadware server, network, dan sistem operasi yang digunakan. Jika web kita pengelolaannya dilakukan oleh
perusahaan hosting, maka tanggung jawab ini ada pada admin sistem perusahaan hosting tersebut. Oleh karena itu kita
harus tahu dengan yakin apakah perusahaan hosting tempat web kita berada cukup terpercaya dan dapat diandalkan.
Terutama jika web kita dinilai memang cukup berharga. Namun sebaliknya, jika pengelolaan web kita pegang sendiri,
atau dengan kata lain kitalah yang menjadi adminnya, ada baiknya jika melakukan hal-hal sebagai berikut : - Back up
full dan differential secara periodik dan otomatis - Mengaktifkan firewall - Mengaktifkan sistem loging yang baik dan
efektif untuk keperluan audit dan monitoring - Untuk OS *nix, mengaktifkan Intrusion Detection atau akan lebih baik jika
menggunakan IPS - Untuk OS *nix, mengaktifkan detektor malicious code seperti Tripwire atau dengan membuat sendiri
- Untuk OS *nix, mengaktifkan detektor scan, SATAN, seperti courtney, icmpinfo, klaxon, snort, atau dengan membuat
Sobat Muda
http://sobat-muda.com Powered by Joomla! Generated: 3 June, 2010, 00:08
script sendiri - Menerapkan otorisasi ACL dengan melakukan restriksi pada user, direktori, dan file dengan akses paling
terbatas. Semua akses --rwx group, sebaiknya di nonaktifkan dan akses untuk other sebaiknya tidak bisa melakukan
write - Untuk OS *nix, sebaiknya menggunakan perintah chown dan chmod - Untuk OS Windows, menggunakan
properti file atau direktori dan menyetting user serta hak aksesnya - Selalu melakukan patching atau upgrade dengan
versi yang lebih baru atau stabil - Tidak memperbolehkan user menggunakan program remote seperti telnet. Jika
terpaksa, lebih baik diganti dengan menggunakan service yang lebih aman seperti SSH dan mengubah port defaultnya
(port 22) menjadi port lain. - Menonaktifkan semua service yang tidak diperlukan - Jika perlu menggunakan SSL 2.
Level Akses Host Level berikutnya untuk memperkuat keamanan web yaitu mengaktifkan restriksi akses level host.
Dengan kata lain, implementasi otorisasi host dilakukan di sini. Pertama, kita harus menentukan dahulu IP/host atau ID
network mana saja yang boleh mengakses web kita. Atau bahkan bisa juga untuk memblokir IP/host yang tidak
diharapkan. Untuk mengaktifkannya, kita harus menambahkan perintah seperti berikut : “[Path]/administrator”> Order deny,allow Deny from all Allow 123.123.123.123 Yang dapat disisipkan dikonfigurasi daemon http (defaultnya httpd.conf) maupun di file
.htaccess. Atau jika menggunakan fasilitas CPanel, dapat melakukan konfigurasi pada menu yang tersedia. 3. Level
Akses Direktori dan File Level Akses Direktori Lakukan proteksi pada direktori yang dianggap penting dan bukan untuk
konsumsi umum, seperti direktori administrator, login, dll. Keamanan direktori tersebut yang umumnya hanya 1 level
keamanan, bisa ditingkatkan menjadi 2 level keamanan dengan menambah 1 level akses keamanan lagi, yaitu
autentikasi akses direktori. Sehingga ketika akan melakukan login, sebelum masuk ke menu login administrator, akan
muncul terlebih dahulu jendela autentikasi yang berisi user dan password. Di mana sebaiknya user dan passwordnya
berbeda dengan user dan password untuk login pada direktori web. Cara mengatifkannya cukup dengan melakukan
konfigurasi autentikasi user dan password pada Cpanel web kita, jika kendali web ada pada kita. Level Akses File -
Selalu melakukan back up secara berkala (full dan differential) - Menghapus file instalasi dan direktorinya - Aktif di
forum yang membahas tentang keamanan website - Mengganti user admin menjadi nama yang tidak menunjukkan
account admin - Jika menggunakan CMS sebaiknya tidak menginstall komponen yang masih versi beta, kecuali kita
yakin tidak ada bugs yang berkaitan dengan keamanan atau kita sendiri yang telah melakukan modifikasi. - Tidak
mengaktifkan komponen yang tidak diperlukan. Bahkan lebih baik lagi jika di uninstall atau dihapus - Jika menggunakan
fasilitas registrasi member pada forum atau semacamnya, sebaiknya tidak memberikan akses registrasi user, kecuali jika
memberlakukan sistem registrasi yang ketat. Misalnya dengan mengaktifkan e-mail activation pada user yang
melakukan registrasi. - Tambahkan perintah : Disallow: /administrator/ atau Disallow: /[nama_direktori]/ pada file
robots.txt [nama_direktori] adalah direktori yang tidak ingin ditampilkan pada search engine - Setelah selesai
melakukan development, jangan lupa melakuakn restriksi attribut untuk semua file dan direktori. Semua akses --rwx
group, sebaiknya di nonaktifkan dan akses untuk other sebaiknya tidak bisa melakukan write, kecuali untuk direktori
cache ataupun direktori upload dan semacamnya yang memang diperlukan oleh server web - Jika situs kita
memberikan fasilitas kepada pengunjung untuk mengupload file, pastikan bahwa fasilitas tersebut tidak dapat digunakan
untuk mengupload file script seperti php, cgi, pl, sh, dll. - Mengaktifkan sef dan alias manager - Mengubah nama
direktori administrator menjadi nama direktori yang tidak mencerminkan direktori admin. Nama direktori administrator
dapat saja tetap dipertahankan untuk membuat suatu fake atau decoy seolah-olah direktori tersebut yaitu direktori
admin. Dan untuk lebih meyakinkan, dapat kita proteksi juga direktori fake ini dengan .htaccess - Jika menggunakan
CMS dan berniat membuat komponen sendiri, pastikan selalu menambahkan perintah : defined( ‘_VALID_MOS )
or die( ‘Direct Access to this location is not allowed.’ ) di awal baris setiap file PHPnya - Jika
memungkinkan, pindahkan direktori administrator sedemikian rupa sehingga direktori tersebut sejajar dengan direktori
root file inti web kita secara fisik. Gunakan alias untuk membuat direktori pada konfigurasi server apache kita agar
direktori ini dapat diakses. Apa yang telah saya tulis di atas, bukanlah suatu hal yang mutlak harus dilakukan
keseluruhannya. Namun lebih kepada kebutuhan kita sendiri. Mungkin memang sedikit terkesan phobia dan berlebihan.
Tapi bagi web yang memiliki tingkat bisnis dan reputasi tinggi, mempertahankan keamanannya adalah suatu hal yang
mutlak. Mudah-mudahan apa yang saya tulis ini bisa bermanfaat bagi para pecinta dunia IT, terlebih bagi para
webmaster pemula seperti saya. Ditulis ulang oleh : Andita SB Original Concept by : I Made Gunadi, Lirva32, Adhi
Rachdian, and Andy Sikumbang.

0 Komentar:

Posting Komentar

Berlangganan Posting Komentar [Atom]

<< Beranda