Kamis, 20 November 2008

Security Untuk Newbie

Panduan Security untuk Newbie Print E-mail
Written by Administrator
Thursday, 21 October 2004
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

Tips Mencegah Crash Pada Linux

Tips mencegah crash pada Linux Print E-mail
Written by Administrator
Saturday, 28 August 2004
Walau di klaim Linux memiliki kestabilan tinggi dan sangat jarang terjadi crash tapi hal itu tetap dapat terjadi. Oleh karena itu strategi yang baik adalah bersiap-siap dan mencegah hal itu terjadi. Persiapan bisa dengan cara membuat backup sistem, membuat emergency boot disk, atau membuat salinan file-file penting. Berikut ini tips menjaga sistem agar terhindar dari masalah: Jangan login sebagai root bila tidak perlu
Buat backup setelah instalasi atau setup
Buat emergency boot disk dengan kernel terbaru
Jangan mematikan komputer dengan tombol power on/off
Gunakan perintah shutdown
Gunakan UPS bila perlu
Jangan menghapus e2fsck dari /etc/rc.d/rc.sysinit
Gunakan fsck atau badblocks untuk mengecek disket
Jangan menjalankan fsck pada filesystem yang di mount
Buat backup file penting pada disket
Jangan pedulikan fragmentasi pada partisi Linux
Gunakan tool-tool filesystem
Jangan menginstalasi program-program yang tidak diperlukan
Gunakan flash RAM
Baca Lars Wirzenius's Linux System Administrators' Guide 0.5 (Saya tidak tahu dimana memperoleh buku atau file ini)
Login sebagai Root
Bila tidak perlu sebaiknya jangan login sebagai root sepanjang hari. Root memiliki kekuasaan terhadap sistem, jadi root bisa melakukan apa saja terhadap sistem tapi yang namanya manusia suatu saat bisa lupa. Maunya memperbaiki sistem tapi ternyata salah memasukkan perintah yang akhirnya menghancurkan sistem.

Contohnya tanpa sengaja, root bisa saja mengetikkan perintah:

rm -rf /*

Akibatnya sangat fatal, perintah tersebut tidak saja menghapus habis sistem Linux tapi juga seluruh partisi DOS atau Windows bila saat itu sedang di mount.

Membuat Boot Disk
Setelah melakukan instalasi atau setup, buatlah boot disk menggunakan kernel terbaru. Ini untuk persiapan bila suatu saat kita gagal saat recompile kernel.

Pastikan kernel sudah menunjuk ke device root dengan perintah:

# rdev zImage

Selanjutnya, format disket dengan perintah (misalkan disket 1.44MB di drive A):

# fdformat /dev/fd0H1440

Copy kernel ke disket tersebut:

# dd if=zImage of=/dev/fd0

Coba reboot komputer dengan disket boot tetap di drive A:

# shutdown -r now

Dengan cara demikian kita tidak saja memiliki emergency boot yang berisi kernel tapi juga filesystem minimal untuk melakukan recovery sistem.

Mengembalikan File Teks yang Terhapus
Bila tanpa sengaja sebuah file teks terhapus, jangan panik. Ada tips yang namanya "Desperate person's text file undelete" dari Paul Anderson's "The Linux Tips HOWTO" milik Michael Hamilton.

Bila bisa mengingat beberapa teks dari file, tahu di partisi mana file itu sebelum terhapus dan masih tersisa space di partisi tersebut maka masih ada kemungkinan mengembalikan file tersebut. Michael Hamilton menggunakan perintah egrep dan strings untuk menyelesaikan kasus ini.

Misal, kita kehilangan 100 baris file dengan frase "Xena", diikuti oleh "Lawless" dan masih ada sisa space di partisi DOS maka untuk mendapatkan 100 baris teks tersebut dengan cara:

# egrep -100 'Xena.+Lawless' /dev/hda3 /mnt/dos/lucy

Mudah-mudahan ke 100 baris teks tersebut bisa dibaca disini:

# strings /mnt/dos/lucy | less

File Toolbox
RedHat menyediakan beberapa file tool yang sangat berguna untuk memeriksa dan memperbaiki masalah sistem. File tersebut diantaranya adalah e2fsck yang dapat berjalan secara otomatis dari script rc.sysinit. File lain seperti badblocks sangat berguna bagi pemilik hard disk non-IDE.

Selengkapnya file-file tools tersebut adalah sebagai berikut:

e2fsck Kebanyakan user Linux memilih second extended partition karena e2fs ini robust, efisien, cepat dan relatif tidak banyak mengalami fragmentasi. Untuk memeriksa dan memperbaiki partisi e2fs, sebaiknya partisi tersebut di unmount dulu. Misal, untuk memberbaiki partisi /dev/hda3:

# e2fsck -p /dev/hda3

badblocks Perintah ini untuk mencari bad block pada sebuah device. Memiliki beberapa option yang dapat dipilih sesuai keperluan. Hati-hati dengan option -w, ini adalah 'write-mode' test yang dapat menghapus data pada sebuah partisi.

fsck Sama seperti e2fsck. Hati-hati juga dengan option -P. Lebih jelasnya baca man page. Bila filesystem root yang mengalami corrupted, menjalankan fsck dari floppy adalah langkah yang paling berhasil untuk dilakukan. (Syafrudin, haydin@arjuna.csc.ui.ac.idThis e-mail address is being protected from spam bots, you need JavaScript enabled to view it )

dump dan restore Program dump digunakan untuk membackup filesystem. Sedangkan restore merupakan program pasangannya. Keduanya dapat bekerja melalui network.

dumpe2fs Untuk menghasilkan informasi filesystem seperti inode count, block count, block size, last mount dan write time. Untuk partisi sebesar 450MB akan dihasilkan laporan sebesar 26.000 karakter.

tune2fs Untuk mengatur parameter agar performa sistem meningkat. Hanya untuk filesystem ext2. Gunakan tune2fs pada saat e2fsck berjalan pada sebuah partisi dan jangan jalankan tune2fs bila sebuah partisi sedang di mount.

mke2fs Sahabat para Linux Hacker! Untuk membuat second extended filesystem pada sebuah partisi. Berguna saat pembuatan compressed filesystem pada emergency disk atau pada saat instalasi hard disk baru.

debugfs Debugger untuk ext2 filesystem. Memiliki 34 perintah built-in.

# debugfs /dev/hda3

Sistem tidak bisa Boot
Mudah saja bila punya emergency boot disk. Lakukan seperti ini:

Boot Linux dari disket boot disk
Pada prompt lilo boot:, ketik rescue; ini untuk meload kernel dari disket tadi
Ikuti saja perintahnya sampai diminta memasukkan Supplemental Disk
Proses pemuatan filesystem ditandai grafik batang; Prompt menandai proses loading sudah selesai.
Program-program yang berguna untuk perbaikan ada di direktori sbin dan usr/bin. Sekarang tinggal di coba mendapatkan partisi dan sebisanya dapat di mount
Bila partisi ada pada /dev/hda3 lakukan dengan
# mount -t ext2 /dev/hda3 tmp

untuk memount partisi di tmp, dan segera dapat diperbaiki.

Bagaimana bila tidak memiliki boot disk? Mudah juga, coba dengan boot dari CD-ROM kemudian jalankan AUTOBOOT dari DOS.

Untuk masalah-masalah lain seperti lupa apa password untuk root, lakukan boot dan ketikkan 'linux single' pada saat lilo boot. Perhatikan bahwa ini seharusnya hanya boleh dilakukan oleh root atau administrator sistem atau super user yang memiliki akses ke mesin server. Setelah masuk ke dalam mode single user, buat lagi password baru dengan perintah passwd.

Bila sistem Anda hanya menampilkan 'Li' pada saat boot, kemungkinan besar terjadi ketidak-sesuaian parameter geometri hard disk(cylinder/head/sector) antara versi BIOS dan versi MBR. (Syafrudin, haydin@arjuna.csc.ui.ac.idThis e-mail address is being protected from spam bots, you need JavaScript enabled to view it )