Apr 11, 2012

Panduan Security untuk Newbie

 ImageMenjadi Newbie bukanlah alasan untuk mengecilkan arti sekuriti dalam Linux, justru masalah sekuriti ini harus mulai dari awal kamu ketahui. Tulisan ini akan membahas apa saja yang perlu kamu ketahui dan lakukan untuk memiliki Linux yang secure.
Alkisah, seorang jagoan Linux membuat sayembara barang siapa bisa membobol mesin Linuxnya akan mendapatkan hadiah $ 1000. Peminat pun datang dari segala penjuru negeri. Mesin Linuxnya ini terhubung ke internet dan diletakkan di dalam ruangan tertutup. Selama berhari-hari, para cracker yang berusaha membobol lewat internet tidak berhasil. Namun ada seorang cracker muda yang mempunyai ide lain. Ia berhasil membujuk petugas pembersih tempat mesin Linux tersebut ditempatkan dengan bayaran $500 untuk membawanya masuk ke dalam ruangan tersebut. Dan setelah berhasil masuk ke dalam ruangan, ia segera menekan tombol reset mesin Linux tersebut, dan memboot masuk ke dalam mode Linux Single! Dengan masuk ke mode Linux Single ini, ia dengan bebas mengubah password root dan dengan demikian, bobol-lah mesin Linux tersebut. Dan ia pun masih mendapat untung $500. Sang jagoan Linux tidak menyangka bahwa akan ada orang yang berusaha membobol Linuxnya dengan cara "fisik".

Cerita tersebut memang merupakan rekaan saja. Namun dari cerita tersebut bisa kita dapatkan  gambaran bahwa masalah sekuriti Linux (dan server lainnya pada umumnya), tidak sebatas pada sekuriti dari sisi software saja, tapi juga dari sisi fisik (hardware). Marilah kita bahas masalah sekuriti ini dengan lebih dalam.

Pendahuluan : Root (Super User) dan Normal User
Sebagai sistem operasi yang di desain dengan konsep yang secure, di dalam Linux, dikenal 2 golongan user, yaitu: Super User atau sering disebut juga dengan Root, dan Normal User atau User Biasa. Apa beda antara kedua golongan user ini? Perbedaan mendasar di antara keduanya adalah bahwa Super User / Root memiliki hak dan kemampuan untuk melakukan APAPUN terhadap sistem Linux itu sendiri. Jadi, dengan menggunakan account root, kamu bisa mengubah konfigurasi Linux, menambah/menghapus user, dan bahkan memformat harddisk. Sedangkan User Biasa secara default tidak mempunyai hak dan kemampuan untuk mengubah konfigurasi-konfigurasi penting dari Linux, ataupun hal lain yang berbahaya bagi sistem seperti menghapus file-file sistem atau memformat harddisk. Jadi sebagai contoh, user biasa secara default tidak bisa mengubah tanggal dan waktu dari sistem Linux tempatnya berada. Mungkin ada di antara kamu yang berpikir mengapa untuk mengubah tanggal dan waktu saja harus memakai account Root? Repot amat! Hal ini harus dimaklumi bahwa konsep penggunaan Linux dari awalnya adalah sebagai server yang secure, dan bagi server, tanggal dan waktu ini merupakan komponen yang sangat vital, terutama server-server yang memiliki proses rutin harian seperti proses end of day, dll. Jadi dapat dibayangkan betapa kacaunya kalau user biasa bisa mengubah tanggal / jam di server. Namun jangan khawatir, nanti kita akan pelajari bagaimana memberikan hak-hak "khusus" kepada user sehingga tidak memerlukan account root lagi untuk melakukannya.

Prinsip Dasar Sekuriti : Principle of least Priviledge dan Principle of Minimum Access.
Nah, lho! Apaan tuh! Tenang, kamu akan segera memahaminya. Di dalam sekuriti Linux, terdapat 2 prinsip atau panduan yang harus kita pahami, yaitu Principle of least Priviledge dan Principle of Minimum Access.

Principle of least Priviledge terjemahan bebasnya kira-kira adalah: Prinsip Hak Paling Sedikit. Disini maksudnya adalah, kita harus memberikan sesedikit mungkin hak pada user, program-program, dan bahkan system Linux itu sendiri di dalam menjalankan fungsinya. Pemakaian prinsip ini berguna untuk mencegah bobolnya sistem Linux kita secara tidak sengaja. Jadi misalnya User A hanya akan memakai Linux untuk browsing internet dan chatting, maka jangan berikan hak lainnya yang tidak perlu, misalnya hak untuk mendownload file dari internet, ataupun menjalankan program file manager.

Principle of Minimum Access, seperti yang telah dapat kamu duga, memiliki terjemahan kira-kira sebagai berikut: Prinsip Akses Minimum. Agak sulit menjelaskan hal ini. Tapi secara sederhana maksudnya adalah seperti ini: "Kecuali diizinkan secara spesifik, maka secara default semua hal akan ditolak." Masih bingung? Coba bayangkan Linux kamu pada awalnya adalah tertutup 100% bagi user biasa. User biasa tidak mempunyai akses sama sekali pada Linux tersebut. Bila ia mencoba login, maka ia akan ditolak. Lho, lalu bagaimana caranya ia memakai Linux tersebut? Caranya adalah dengan menentukan SATU per SATU hal apa saja yang bisa ia lakukan. Jadi pada prinsip akses minimum ini, kita menentukan secara sistematis hak apa saja yang ingin kamu berikan pada user yang pada awalnya diset tidak memiliki hak apapun. Jadi mulai dari nol.

Catatan: pengertian "user" di atas, tidak hanya terbatas pada user "orang", tapi juga pada program-program, dan sistem Linux itu sendiri. Untuk mudahnya, kita bisa mengganti kata "user" dengan "program", "browser", dll.

Berdasarkan kedua prinsip di atas, ada beberapa hal yang harus mendapatkan perhatian di dalam sekuriti Linux:
1. Mengamankan Akses User (User Access)
Jika kamu ingin benar-benar membuat sebuah komputer aman, kamu dapat menaruh komputer tersebut sedemikian rupa sehingga tidak ada seorang pun bisa menjangkaunya. Namun tentu saja hal ini akan juga membuat komputer tersebut tidak berguna bagi orang lain. Jadi, yang dapat kamu lakukan adalah membatasi Akses User sehingga system Linux kamu aman, sambil tetap dapat menjalankan fungsinya. Berkaitan dengan mengamankan Akses User ini, terdapat 4 hal yang harus kamu lakukan:
  • Batasi Akses Fisik ke komputer tersebut. Seperti ilustrasi di atas, walaupun dari sisi software aman, tapi secara fisik komputer tersebut dapat dibobol. Oleh karena itu lakukanlah hal berikut ini untuk mengamankan komputer kamu secara fisik:
  • Hidupkanlah Password BIOS. Hal ini untuk mencegah orang iseng masuk ke BIOS dan mengunci komputer kamu.
  • Matikan option untuk boot dari floppy disk dan juga CDROM. Hal ini untuk mencegah orang menggunakan disket atau CDROM untuk memboot komputer kamu.
  • Edit atau buatlah file /etc/shutdown.allow (jika belum ada) yang berisi nama-nama user siapa saja yang berhak mengshutdown komputer kamu. Jika kamu menginginkan hanya Root yang bisa mengshutdown, buatlah file tersebut kosong. Jadi ketika seseorang yang tidak berhak mencoba menekan tombol Ctrl+Alt+Del untuk merestart, Linux akan menolaknya. Tentu saja orang tersebut masih bisa menggunakan cara lain yaitu dengan cara menekan tombol reset ataupun mencabut kabel power komputer kamu, jadi pastikan bahwa kedua hal ini pun kamu amankan.
  • Taruhlah komputer kamu terkunci pada sebuah perabotan yang besar, sehingga jika ada orang yang berusaha mengambilnya akan mengalami kesulitan. Hal ini sama seperti jika kita ingin mengamankan sepeda kita dengan jalan menguncinya pada tiang listrik.
  • Membatasi Akses User Biasa. Berdasarkan kedua prinsip sekuriti di atas, kamu harus membatasi hak seorang user biasa sampai seminimum mungkin sambil memperhatikan bahwa ia masih tetap bisa melakukan tugasnya. Jadi misalnya ada seorang user biasa yang hanya membutuhkan fasilitas email dan browsing internet, janganlah kamu berikan hak Telnet (mengkonek Linux dari jauh/ remote).
  • Membatasi Akses Super User (root). Karena sifatnya yang sangat powerful, account super user ini harus kamu gunakan jika HANYA perlu saja, misalnya ketika ingin menginstall software tertentu, atau tugas administrasi lainnya. Jangan gunakan account ini untuk melakukan tugas non-administratif seperti browsing internet, chatting IRC, dll, sebab ada kemungkinan seorang cracker berhasil mencuri password super usermu.
  • Membatasi semua akses pada saat terjadi keadaan darurat / serangan. Jika suatu ketika kamu menyadari bahwa Linuxmu telah berhasil dibobol orang, hal pertama yang harus kamu lakukan adalah menghentikan semua akses (login) terlebih dahulu, sampai kamu mengetahui apa saja yang telah dibobol dan kamu telah berhasil mengatasinya. Cara menghentikan semua login adalah dengan membuat sebuah sebuah file bernama /etc/nologin. Di dalam file ini kamu bisa masukan pesan bahwa untuk sementara Linux tidak bisa diakses, dan juga waktu perkiraan kapan bisa diakses kembali. Pembuatan file ini mengakibatkan semua user biasa tidak dapat login, dan juga super user hanya bisa login melalui console fisik (keyboard).

2. Mengamankan Proses Otorisasi User. Secara tradisional semua sistem yang berbasis UNIX menyimpan info user di dalam file /etc/passwd. File ini berisi username, password yang terenkripsi, user ID, group ID dari user tersebut, dan default shell. Nah, file /etc/passwd ini disetel agar bisa dibaca oleh semua program (world readable) yang membutuhkan proses otorisasi. Hal ini mengakibatkan seoarang cracker yang handal bisa mengelabui program-program yang dibuat secara kurang baik, untuk mengirimkan file tersebut ke email sang cracker! Setelah dia berhasil mendapatkan file tersebut, dia bisa menggunakan program pembobol password untuk mengetahui password-password yang ada dalam file tersebut. Bayangkan apa saja yang bisa dilakukan olehnya setelah dia berhasil mengetahui password user ataupun root.

Lalu apa yang bisa kita lakukan untuk mengatasi kelemahan ini? Kita bisa menggunakan yang namanya Shadow password. Dengan program ini, kita bisa "memindahkan" password-password yang tersimpan di dalam file /etc/passwd ke dalam file /etc/shadow. File shadow ini hanya bisa dibaca oleh root atau program yang dijalankan dengan ID root. Dengan demikian bila seorang cracker tetap berhasil memperoleh file /etc/passwd kita, dia tidak akan mendapatkan password apapun di dalamnya sebab semua password telah dipindahkan ke dalam file /etc/shadow.

Masih belum yakin akan keamanan proses otorisasi Linuxmu? Atau kamu ingin mengatur bahwa user A hanya bisa login pada jam 10-12 hari Senin, dan Rabu saja, dsbnya. Untuk melakukan hal ini, kamu bisa menggunakan program bernama PAM (Pluggable Authentication Method). Dengan menggunakan program ini maka tanggung jawab proses otorisasi diserahkan dari program yang bersangkutan (misalnya program login) ke program PAM. Keunggulan dari PAM ini adalah, tersedia banyak modul-modul tambahan yang memberikan tambahan fungsi di dalam proses otorisasi login, seperti mengatur waktu kapan user boleh login (jam, tanggal, hari), servis-servis apa saja yang diminta oleh user, dari terminal mana ia login, dll.

3. Mengamankan Servis (Service) yang berjalan. Sering kali cracker berhasil masuk ke dalam system Linux kita karena kita lalai mematikan servis-servis yang sebenarnya tidak kita perlukan. Lalu bagaimanakah cara kita mengamankan Linux kita dari sisi servis? Kita harus melakukan langkah pengamanan ini mulai dari proses installasi. Jika kita menginstall Linux hanya untuk dijadikan web server, maka otomatis kita tidak memerlukan servis lainnya seperti mail server, news server, dll. Berkaintan dengan hal ini, alangkah baiknya jika kamu berniat memakai Linuxmu sebagai server, kamu TIDAK menginstall program-program berikut ini:
  • Semua yang berkaitan dengan XWindows, dan XWindows itu sendiri.
  • Semua program yang berkaitan dengan multimedia.
  • Semua interpreter (program bantu penterjemah proses), kecuali jika benar-benar dibutuhkan. Misalnya jika web servermu hanya melayani Perl, maka jangan install yang lainnya.
  • Semua server lainnya yang tidak kamu perlukan, misalnya kamu ingin memakai web server saja, maka jangan install server lain seperti mail server, NIS (Network Information System), Samba, dll.
  • Semua file editor lainnya yang tidak kamu pakai.
  • Semua program client seperti email client yang tidak akan kamu pakai.
Demikianlah kira-kira pembahasan mengenai security untuk newbie. Artikel ini masih sebagian kecil saja dari aspek security yang ada, dan tentunya PENGALAMAN kita sebagai admin akan juga memberikan andil di dalam setting security.

Referensi:
http://linux.about.com/library/bl/open/newbie/blnewbie_toc.htm
http://www.linuxquestions.org/questions/showthread.php?s=&postid=1198783#post1198783
http://www.linuxlinks.com/Beginners/
http://www.faqs.org/docs/lnag/lnag_commands.html

0 comments:

Post a Comment