Mengetahui Resiko Keamanan Sebuah Server

Tulisan ini sebenarnya posting saya di Jasakom, namun gak ada salahnya saya posting disini juga, ya minimal bisa jadi arsip pribadi gitu loh smile

Tidak ada maksud lain bagi saya, kecuali membagi sedikit pengetahuan yang saya punya kepada orang lain.

Jika diamati berita seputar keamanan internet, maka banyak sekali informasi tentang bug/hole ataupun exploit yang beredar di Internet. Semuanya hadir dengan informasi yang cukup detail dan membuat SysAdmin harus terus berlomba dengan para Cracker/Hacker dalam mengamankan server yang dikelola.


Jika diamati banyak sekali cara yang dilakukan oleh cracker untuk masuk ke sebuah komputer. Cara yang tercepat dan paling mudah serta yang dulu paling sering dilakukan adalah dengan menggunakan exploit yang sudah tersedia di internet. Instant sekali. Kita cukup cari target, scanning, compile exploit, execute exploit dan hapalkan dasar-dasar perintah OS yang digunakan, so anda sudah memiliki server tersebut.

Secara garis besar exploit yang dipergunakan oleh cracker untuk masuk ke sebuah server dapat dibagi dalam dua bagian yaitu :

1. Lokal Exploit
Yang dimaksud dengan lokal exploit adalah exploit yang hanya dapat diexecute pada komputer itu sendiri. Artinya exploit ini tidak dapat diexecute dari komputer pribadi untuk memasuki komputer lain. Biasanya lokal exploit diexecute dan akan bisa menguasai sistem dengan memanfaatkan kelemahan yang ada pada sistem operasi ataupun pada aplikasi yang dijalankan oleh server.

2. Remote Exploit
Remote exploit adalah exploit yang dapat diexecute dari jarak jauh. Artinya dengan menggunakan exploit ini, maka anda dapat masuk ke komputer lain melalui komputer pribadi dengan memanfaatkan kelemahan aplikasi yang berjalan di komputer lain tersebut. Bagi sebagian orang lebih menyenangkan untuk menggunakan remote exploit daripada lokal exploit karena biasanya remote exploit juga bisa menjadi lokal exploit dan tidak berlaku sebaliknya.

Terlepas dari itu semua, sebenarnya ada resiko keamanan yang tetap dimiliki sebuah komputer ketika telah berisikan Sistem Operasi beserta aplikasi yang digunakan. Sebagai contoh, ketika kita telah menginstall sebuah server dengan Sistem Operasi Linux Redhat 7.0 dengan berbagai aplikasi misalkan apache web server, database mysql dan php. Maka Anda sebagai SysAdmin secara ‘sadar’ telah membuka diri (komputer server) kepada orang orang lain agar dapat berkomunikasi dengannya. Ada satu pameo yang saya ingat, bahwa tidak ada satupun komputer yang aman ketika sudah terkoneksi dengan sebuah jaringan. Apalagi jika jaringannya adalah internet!. Dan ini juga berlaku untuk server yang telah kita koneksikan ke internet.

Dari contoh di atas, ada beberapa hal yang menjadi catatan penting bagi saya dan (mungkin) ini akan menjadi pedoman penting bagi SysAdmin untuk tahu tingkat resiko keamanan pada server yang ia kelola. Misalkan saja informasi server yang dikelola seperti tercantum di bawah ini :

1. Sistem Operasi yang digunakan adalah Redhat Linux 7.0
2. Aplikasi Web Server yang digunakan adalah Apache Web Server (Misalkan saja versi 1.3.20)
3. Database Mysql versi 3.2.23
4. PHP Engine versi 4.1.x
5. Aplikasi web base yang menggunakan PHP dan MySQL.

Jika digambarkan dalam bentuk diagram pohon kurang lebihnya adalah sebagai berikut :

Sistem Operasi [Level 1] :
   + Apache [Level 2]
      + Engine PHP [Level 3]
         + Aplikasi Web Based/Scripting PHP [Level 4]
   + MySQL [Level 2]

Dari informasi spesifikasi diatas maka dapat diketahui tingkat keamanan komputer tersebut :

1. Keamanan pada Sistem Operasi (Versi Kernel yang digunakan) -Tingkat Keamanan Level 1-
Jantung dari sistem operasi linux adalah kernel. Kesalahan pemrograman yang terjadi pada kernel akan berakibat fatal dengan tidak berjalannya sistem secara maksimal. Untuk hal ini coba cari tahu kernel yang digunakan versi berapa dan apakah memiliki bug/hole?. Jika memang terbukti memiliki bug/hole, maka sebaiknya secepatnya di upgrade dengan versi yang lebih tinggi. Biasanya pada level ini lokal exploit yang paling sering berperan untuk mendapatkan akses ke sebuah sistem, walaupun tidak menutup kemungkinan bagi remote exploit untuk mendapatkannya.

2. Keamanan pada Aplikasi Web Server (Versi Apache yang digunakan) -Tingkat Keamanan Level 2-
Apache adalah salah satu aplikasi web server yang banyak digunakan di dunia. Pada level ini yang harus anda perhatikan adalah versi apache yang digunakan. Jika memang terbukti versi ini memiliki bug/hole, segeralah upgrade apache yang anda miliki. Sesuaikan lagi konfigurasi apache dengan keinginan anda. Matikan module-module apache yang memang tidak digunakan. Ganti username dan group aplikasi ini ke user yang tidak memiliki akses shell seperti nobody. Jangan pasrahkan konfigurasi apache dengan konfigurasi default dari proses instalasi. Pada level ini exploit yang paling sering dipergunakan adalah remote exploit, karena pada level ini aplikasi apache terbuka pada port 80, sehingga ada kemungkinan untuk dibobol/disusupi dari jarak jauh.

3. Keamanan pada Aplikasi MySQL (versi MySQL yang digunakan) -Tingkat Keamanan Level 2-
MySQL adalah salah satu database SQL yang cukup populer dan banyak dipergunakan di internet. Integrasinya yang simple, clean and fast dengan PHP membuktikan salah satu kelebihan PHP untuk menguasai pasar aplikasi berbasis web based. Tidak berbeda jauh dengan Apache dan PHP, maka hal terpenting yang harus dilihat disini adalah versi MySQL yang anda gunakan. Pastikan bahwa pada versi ini tidak memiliki bug/hole. Hal lainnya yang perlu menjadi perhatian adalah segera merubah password default administrator database MySQL. Default instalasi MySQL memberikan hak akses kepada user root dengan priveleges penuh dan tanpa password!. Bayangkan jika anda lalai untuk merubahnya?

Jika database ini terkoneksi dengan internet/web, buatlah user MySQL dengan priveleges yang berbeda dengan priveleges administrator (don’t ask me how to do this, please ask to uncle google :)). Database MySQL membuka port 3306. Sehingga ada kemungkinan untuk di exploitasi dengan menggunakan remote exploit ataupun lokal exploit.

Secara umum pada level 2 yang harus diperhatikan bahwa semua exploit yang beredar di internet sangat banyak sekali yang memanfaatkan bug/hole pada level aplikasi. Anda dapat mengikuti berita keamanan aplikasi yang anda gunakan melalui situs-situs resmi aplikasi tersebut. Disini dibutuhkan kecermatan dan kecepatan anda dalam mengikuti informasi tentang keamanan internet. Jangan pernah lupa untuk mengupgrade, jika memang situs resmi aplikasi tersebut menyarankannya. Jadi pada level ini salah satu cara untuk menghindari berperang dengan cracker adalah dengan selalu mengikuti berita/news untuk aplikasi yang anda jalankan. Lengah sedikit, bisa jadi server anda yang menjadi target :-).

4. Keamanan pada Aplikasi PHP (Versi PHP yang digunakan) -Tingkat Keamanan Level 3-
PHP adalah sebuah bahasa pemrograman yang saat ini banyak sekali dipergunakan di internet. banyak sekali situs komersial yang menggunakan PHP agar situsnya terlihat dinamis dan lebih interaktif. Namun pada level 2, PHP yang dibicarakan disini bukan pada kode pemrograman (scripting) yang telah dilakukan, namun pada engine PHP yang digunakan. Sama seperti pada apache di level ini harus diperhatikan apakah versi php yang digunakan memiliki bug/hole. Jika memang terbukti segeralah uprade versi php tersebut. Selain itu jangan serahkan konfigurasi php pada hasil default instalasi. Rubahlah beberapa variabelnya sesuai dengan keinginan anda. Beberapa hal yang terpenting pada konfigurasi php antara lain adalah SAFE_MODE dan REGISTER_GLOBAL. Cobalah bertanya lebih lanjut tentang konfigurasi PHP pada paman google :-). AFAIK, engine PHP tidak dapat diexploitasi dengan remote exploit karena engine PHP tidak pernah membuka diri pada port tertentu. Jadi kalaupun ingin mengexploitasi engine! PHP hanya dapat menggunakan lokal exploit. CMIIW.

5. Keamanan pada Aplikasi Web Based yang berjalan -Tingkat Keamanan Level 4-
Membangun sebuah aplikasi yang berbasis web adalah hal yang menyenangkan. Bagaimana tidak?, dengan membangun aplikasi berbasis web, maka aplikasi tersebut akan berjalan pada berbagai platform sistem operasi, selain itu untuk pengembangan lebih lanjut juga akan mudah sekali. Namun dibalik itu semua, ternyata aplikasi berbasis web juga menyimpan sebuah bahaya yang sangat besar bagi keamanan komputer. Tercatat pada memori saya beberapa hal yang dapat dilakukan hanya karena kesalahan scripting aplikasi web based, antara lain :

1. Mengupload file seperti eggdrop, psybnc, dll.
2. Mendownload backdoor seperti bindtty, yang berakibat cracker akan memiliki akses shell dan selanjutnya tinggal mencari lokal exploit.
3. Mengacak-acak database MySQL
4. Mengintip nama-nama user yang berada pada /etc/passwd
5. Mendefaced website

Sehebat apapun proteksi sebuah sistem tidak dapat menutupi kelemahan yang ada pada aplikasi web based. Salah satu contoh konkret yang terlihat sampai dengan saat ini adalah bobolnya Situs KPU karena bug/hole SQL Injection. Dani Firman Syah a.k.a xnuxer berhasil dengan baik memanfaatkan kesalahan scripting yang dilakukan oleh Tim IT KPU, sehingga dia berhasil merubah nama-nama partai yang ada dalam database.

Kelemahan web based biasanya bisa terjadi karena :

1. Kurang mampu dalam menganalis algoritma pemrograman web based.
2. Penggunaan fungsi-fungsi pemrograman web based yang tidak sesuai dengan tempatnya.
3. Ketidakhati-hatian dalam menggunakan CMS yang sudah jadi seperti Php-Nuke, Post-Nuke, Mambo, dll.
4. Tidak adanya perbedaan method POST dan GET pada aplikasi web based yang digunakan
5. Masih banyak lagi yang lain 🙂

Saran saya untuk level ini (jika anda membuat sendiri aplikasi web based). Coba dan cobalah terus berlatih untuk membuat sebuah algoritma pemrograman web yang ‘bersih’, ‘rapi’, ‘teratur’ dan sesuai dengan fungsinya. Jangan pernah merasa bahwa aplikasi yang anda buat adalah aplikasi yang handal dan tidak bisa ditembus orang lain. Kalau perlu mintalah tolong kepada orang lain untuk mengecek algoritma pemrograman anda dan mengetest kode pemrograman anda. Jangan publish aplikasi web based tersebut jika anda belum yakin dengan algoritma yang telah anda susun.

Jika menggunakan CMS yang sudah jadi, cobalah ikuti berita bug/hole yang dimilikinya. Sampai dengan saat ini seperti Php-Nuke sudah sering sekali memiliki kelemahan pada bug/hole SQL injection. Kelemahan yang ada pada Php-Nuke ini dimanfaatkan beberapa gelintir orang untuk membuat remote exploitnya yang berbasis pada pemrograman perl ataupun php. Untuk hal ini saya cuma bisa menyarankan jangan pernah anda lengah dengan menggunakan versi CMS yang ternyata memiliki bug/hole :).

Untuk lebih tahu detail tentang bahayanya aplikasi web based dengan menggunakan PHP, silahkan buka arsip diskusi milis jasakom-perjuangan@yahoogroups.com beberapa bulan yang lalu, disitu dibahas tentang bahayanya beberapa hal seperti GET, POST, INCLUDE, REFERRER (based on PHP), atau kalau belum puas silahkan cari tutorial di google untuk membuat aplikasi web based yang ‘bersih’.

51 thoughts on “Mengetahui Resiko Keamanan Sebuah Server

  1. Emang sih soal keamanan ini hal yang kompleks, karena mencakup banyak aspek. Percuma penjaganya keren-keren, bonafid, kalo pelayannya culun, gitu juga sebaliknya. Butuh keahlian antar-ruang-lingkup.

    Meski begitu, yang saya lihat sih kebanyakan bug atau hole itu seringkali justru muncul pada, kalau ngikut gambaran yang dideskripsikan itu, level 3. Mudah saja, karena emang kebanyakan developer ndak terbiasa menulis kode secara aman, kemudahan language Tool (dalam hal ini PHP) yang hanya dalam beberapa tahun bisa melahirkan segudang PHP based programmer baru justru seringkali menjadi bumerang. Saya ndak bilang PHP itu jelek, bukan PHP-nya yang jelek, seperti halnya bahasa BASIC banyak programmer PHP adalah programmer baru yang bisa dikatakan instan dan ndak terbiasa nulis kode secara aman, dan dengan modal nekat mereka nulis program kompleks untuk unjuk gigi mencoba nyaingin rekan mereka, programmer PHP yang udah senior. Yang disayangkan ujung-ujungnya, bukan programmernya yang kena masalah, justru administrator dan perusahaan yang jadi korbannya.

  2. Bener jaim (baca: jem). Yang paling banyak bermasalah biasanya itu metode INCLUDE, POST dan GET di PHP. Tapi aku pikir gak hanya di PHP aja, di ASP pun koding yang buruk bisa jadi malapetaka, seperti contohnya kasus KPU waktu itu.

    Sebenernya modal nekat itu boleh-boleh aja, tapi harus didukung dengan kemampuan lain untuk memahami fungsi-fungsi dan keamanannya.

    Hmm, saya jadi inget kata-kata “Sekuriti itu bukanlah produk melainkan sebuah proses”

  3. hi hi ..
    wingi 20 feb 2005 via online .. disamperin gak di YM …
    nek ga disamperin ya wes lali berarti .. 🙂

  4. Hubungan MySQL, PHP dan Apache apa aja yah? Kalo ada yang tahu email mengenai ini harap kasih tahu ke alamat email saaya yah! Tolong! Sekalian ama cara mengaksesnya dan hubungan mereka dalam suatu aplikasi database. Tolong segera diberitahu!

  5. kemarin saya sempat x( dikerjain…………..saya pake wireless lan…..nembak jaringan kampus,,,(kebetulan kampus menyediakan layanan gratis untuk radius 1 km)
    data saya pernah dishare…yg dishare..nya foto2 saya. data d saya ada gambar tangan dibawahnya. yg paling buat saya kesel…kadang2 di matiin komputer saya.dan jg dia buat user name baru ditempat saya…. yg bikin kesel saya ga tau pelakunya……kek mn supaya tahu ip pelakunya.?karena saya belum begitu mengerti soal jaringan.
    bagaimana agar saya tidak diganggu lagi…?sebelumnya saya ucapkan terimakasih:)

  6. apakah masih ada kelemahan di dalam web server apa aja dan versi apa aja, dan jika ada bagaimana cara pemeriksaannya? PLEASE jawab…

  7. apakah arti dari CMS? dan apa kelemahan dari CMS serta bagaimana cara pemeriksaannya? tolong jawab ya PENTING

  8. Tolong kasih tau gw dong soal pengertian mysql&cara instalnya.klo bs skalian ksh softwarenya y ke gw.pliz…secepatnya dibalas……..:-?

  9. halooo
    met soreee
    numpang lewat
    mau tanya ney

    tentang kaht ada yang bisa kasih conton ndak
    klo tv7 pernah di hack itu pakai unicode apa pakai kaht keliatannya pakai iis tuh

    makacih
    solohackerlinkcrew
    allnetwork.org

  10. SAYA MAU TANYA BAGAIMANA MASUK BILLING DALAM WARNET
    SAYA DAH PUNYA PROGRAM KAHT

    MAKLUM SAYA BARU BELAJAR DI DUNIA UNDERGROUND

  11. Pak, bu, maz, mbak, zapa aza d, gw punya tugaz nge-hack site .asp ada yang praktiz? Pls d, ajarin pls…

  12. gw mau nanya ni gimana sich buat
    tampilan online yahoo mesenger di halaman web kita dengan bahasa cSS..!!
    Piliz kasih tau saudara – saudari ku
    thenk before

  13. tolongin dunk email (plasa, yahoo , google )and friendter ku da yang bajak? gimana cara ambil lage?

  14. terima kasih pak, eh pak ato om ya? 😕 om aja de… saya lagi nyari artikel-artikel soal exploit. Rada gak mudenk neh baca-baca di forum tapi kagak donk exploit :d. Sekali lagi makasih om..

  15. aku mau hancurin isp LC net gimana caranya ??……harus pake bom molotof atau nuklir…..x(#-o:p:d

  16. ADA YANG BISA BANTUIN SAYA………. ADA SEBUAH ISP DI JOGJA YANG LAGAKNYA AMAT MENJENGKELKAN….BAIK ITU BOSSNYA ATAU KARYAWANNYA , TEKNISINYA…SEMUANYA TAE’..DIA MERASA ISP PALING BAIK, CEPAT MURAH…….???!!! PADAHAL BOBROK DAN DIBENCI BUANYAK ORANG…:-? ..HERANNYA KOK TIDAK ADA ISP LAIN YG MENGEBOM DIA….SEMOGA ADA YANG ……………??

  17. Saya lagi cari artikel tentang kelemahan / bug PHp versi terbaru beserta mengatasinya.thank ,please help me

  18. Bos, saya lagi mau bikin website pake mambo tapi saya gak tau dari mana mau mulainya jd tolong kalo ada yang punya tutorial ttg mambo dari dasar sampe advance plss….saya di share donk!

  19. om bagaimana caranya untuk melindungi data mysql dari local exploit, karena user (OS) bisa mengakses semua data dibandingkan user (DBA), kalau dilihat dari kacamata kita si user tentu bisa mengcopy data mysql (lngkp dgn foldernya) ke server lain. ada solusi ngk ya

  20. Pak saya mau tanya:)
    Saya sekarang lagi buat skripsi menggunakan php. Saya mau menggunakan metode Decision Tree. Yang saya mau tanyakn, gimn cara buat Tree di PHP?Terima Kasih sebelumnya:)

  21. pak saya mau tanya tentang artikel keamanan sistem operasi,bapak bisa bantu?? penting ne pak buat presentasi saya minggu depan….please:d:);)

  22. duh ni g br aj gabung dsni…g mo minta bantuan ni.ada bs bantu ga?
    g lg ngerjain tgs n g ga ngerti ttg port 80(web), port 25, port 21(ftp), port 23(telnet)?
    tlg donk ada yg tau ga apa pengertian ny.trims…

  23. segera merubah password default administrator database MySQL. Default instalasi MySQL memberikan hak akses kepada user root dengan priveleges penuh dan tanpa password!. oke deh kakak doe-che
    :-s

  24. terima kasih banyak atas informasi yang diberikan saya harap anda bisa membantu saya untuk memberitahukan informasi-informasi tentang teknik informasi dan komunikasi terutama yang berbasis jaringan

  25. apa seh pengertian dari mysql itu sendiri,,soal’a saya dah nyari jawabannya dibuku ga ada pengertian mysql itu sendiri,,terima kasih ya,,di tunggu jawabannya..

  26. Artikel yang bagus bos.
    Jadi tau ternyata script yang bikin sendiri tanpa engine masih gampang di bobol juga ya.
    coba kalo ngga ada orang iseng ng crack, aman sentosa lah hidup ini.
    piss

  27. Artikelnya Ok punya mas,
    tapi aku mau nanya neh yang dimaksud dengan exploit tuh apa?
    semacam program ya?

    maklum br belajar…….

  28. mas, thanks yoW to artikelX
    keyen bgt….
    jagain jaringan, biar g di bobol orang tu susah juga ya…….
    banyak aja celah yang di pakai.

Leave a Reply

Your email address will not be published. Required fields are marked *

This is not spam