Senin, 02 November 2009

Instalasi slackware

Instalasi Slackware 12.0 menggunakan Virtual Box
Slackware 12.0
Disini saya akan memaparkan cara instalasi linux slackware menggunakan virtual box
Instalasi Awal
Install virtual box terlebih dahulu,selanjutnya pilih menu new pada virtual box anda.
Disana akan mucul tampilan seperti ini,beri nama mesin virtual anda (bebas),lalu pilih Linux sebagai operating system dan other linux sebagai versionnya.















Pilih next,lalu isi memori anda sebesar 256 MB.













Pilih next,lalu pilih baru. Disana anda di minta untuk membuat sebuah hardisk virtual. Isi jumlah hardisk virtual anda antara 6GB – 8GB(disarankan). Selanjutnya pilih next dan finish.















Anda telah membuat mesin virtual,langkah selanjutnya adalah mengambil iso ataupun berupa DVD dengan cara mount Drive. Pilih menu setting,lalu pilih host drive apabila slackware anda berupa DVD dan File Image ISO apabila slackware anda berupa file ISO.
Setelah di Mount berarti anda telah siap memulai instalasi slackware.













Persiapan Instalasi
1. Pilih menu mulai pada virtual box anda













2. Selanjutnya tunggu hingga muncul prompt slackware.













Tekan Enter untuk melanjutkan. 
3. Memilih tipe keyboard secara default adalah US keyboard (map = 1), umumnya keyboard di Indonesia menggunakan US map, jadi anda dapat memasukkan nilai '1' (angka satu) dan tekan Enter.














4. Sekarang anda login dengan menggunakan user root.














Partisi Hardisk
Pada umumnya hardisk slackware terbagi 2 :
1. Untuk Linux swap
2. Untuk Linux System Data.

1. Selanjutnya kita akan mempartisi hardisk dengan menggunakan perintak cfdisk /dev/sda(IDE MASTER).














atau dengan perintah cfdisk saja(default).

2. Selanjutnya perhatikan besar HDD(di bagian kanan dalam satuan MB). Jika sudah sesuai pilih new (gunakan tombol panah kanan- kiri) kita akan membuat partisi untuk LINUX SWAP.














3. Pilih primary dan ketikkan 512 sebagai LINUX SWAP.














4. Pilih menu Type ,lalu pilih angka 82 sebagai file sytem LINUX SWAP.














5. Selanjutnya pilih new lalu isi sisa HDD pada bagian freespace sebagai primary dan isi seluruh sisa HDD apabila tidak ada partisi lagi, lalu pilih write.














Ketik yes untuk memproses partisi. 

Memulai Instalasi
1. Pilih menu quit, lalu ketikkan perintah setup.














2. Pilih menu ADDSWAP untuk mengaktifkan LINUXSWAP.














3. Pastikan lokasi sudah sesuai dengan yang di partisi.














4. Selanjutnya instalasi akan meminta pengecekkan BAD BLOCK,pilih ‘Yes‘ jika mau atau pilih ‘No’(disarankan).




























5. Pilih partisi untuk menginstal System Linux.














6. Format partisi dan pilih ext3 sebagai filesystem.



























7. Pilih SOURCE MEDIA install from slackware CD/DVD.














8. Pilih auto (disarankan).














9. Pilih paket Linux, yang ditampilkan adalah pilihan default (disarankan memilih base linux system).















10. Pilih full untuk mempermudah instalasi (Disarankan).




11. Tunggu sampai selesai.



Konfigurasi Instalasi

1. Skip making USB boot stick.



2. Pilih no modem jika tidak memiiki, atau pilih sesuai PORT.



3. Install LILO sebagai boot loader dan pilih simple untuk mempermudah instalasi.


4. LILO frame buffer disarankan pilih standard atau disesuaikan dengan spesifikasi computer.


5. Optional LILO,biasanya dikosongkan saja.Lalu pilih OK.



6. Pilih MBR pada LILO destination.



7. Selanjutnya pilih PS/2 atau USB.


8. Lalu pilih ‘Yes’ pada GPM Configuration.





Konfigurasi Network
Disini adalah konfigurasi awal network pada linux. Anda dapat memilih ‘yes’ jika ingin konfigurasi atau pilih ‘ No’ jika ingin konfigurasi setelah selesai instalasi.
Disini saya memilih ‘No’ untuk mempercepat Instalasi.



Konfigurasi Services
Anda dapat memilih service yang akan dijalankan otomatis di slackware. Anda dapat menjalankan sesudah instalasi kecuali service yang berikut ini:
• Rc.syslog
• Rc.sshd



Kita pilih rc.sshd.


Konfigurasi Lanjutan
1. Console Font Configuratation: Pilih 'No'
2. Hardware Clock set to UTC:Pilih 'NO' Hardware clock is set to localtime
3. Kita akan memilih zona waktu (sesuaikan dengan tempat tinggal)contoh, Asia/jakarta.





Set Password
Anda akan diminta memasukkan password root sebagai login,pilih ‘yes’ lalu masukkan password anda. Ingat anda sebagai root!

Setup Complete
Anda dapat mengedit waktu timeout LILO.
Login sebagai 'root'
# pico /etc/lilo.conf
Edit bagian timeout = 1200
Jika 1200 = 120sec = 2mnt, jadi jika ingin timeout 2 detik ganti nilai 1200 menjadi 20. Contoh dibawah timeout = 100 = 10sec



Setelah itu tekan Ctrl + X, pilih 'Y' untuk menyimpan kemudian ketik
#lilo
#restart

Setelah itu login kembali sebagai root dan masukkan password sesuai yang anda buat. Lalu ketikkan
#startx
Dan anda akan masuk ke dalam slackware.
Selamat Mencoba ! ! ! ! ! ! ! !
Apabila ada yang kurang jelas atau terdapat kesalahan mohon di ingatkan. .

Jumat, 30 Oktober 2009

Buffer Overflow

BUFFER OVERFLOW

1. Apa itu Buffer Overflow ?

Dalam dunia keamanan sistem komputer dan pemrograman, istilah buffer overflow atau buffer overrun merupakan istilah yang cukup terkenal. Buffer overflow merupakan sebuah keadaan anomali di mana sebuah proses menunjukkan perilaku yang aneh disebabkan karena adanya data-data yang disimpan melebihi kapasitas buffer memorinya. Perilaku yang ditunjukkan oleh sebuah proses yang mengalami buffer overflow bisa jadi merupakan sebuah celah keamanan yang dapat dimanfaatkan oleh pihak-pihak yang tak bertanggung jawab.

Buffer overflow seringkali dieksploitasi dengan mengirimkan input-input yang sengaja dirancang untuk memicu keadaan buffer overflow tersebut. Input-input tersebut juga dirancang sedemikian rupa sehingga saat terjadi keadaan buffer overflow maka proses tersebut akan berkelakuan seperti yang diinginkan oleh sang penyerang. Bila keadaan ini telah terjadi maka bukan tidak mungkin informasi-informasi penting yang tersimpan di dalamnya bisa diambil, digunakan atau diubah sekehendak hati oleh sang penyerang.

2. Bagaimana Buffer Overflow dapat terjadi ?

Software apapun cepat atau lambat akan dihampiri oleh titik lemah buffer overflow. Pasalnya, salah satu penyebab buffer overflow adalah prinsip aktivitas dari setiap software, yakni hasil salinan data yang dikirim oleh user dari suatu tempat ke tempat lainnya. Jika developer suatu program menguji semua data sebelum disalin, maka bisa jadi buffer overflow masuk ke dalam library yang digunakan oleh program tersebut.

Hal ini dapat terjadi karena seringkali developer software lupa menguji batas buffer/array. Keterbatasan memory membatasi ukuran dari buffer/array, contohnya bila kita membuat suatu program dengan salah satu isinya sebagai berikut:

char userid[20];

char password[20];

Pertanyaannya bagaimana bila “userid” atau “password” di atas diberi masukan lebih dari 20 karakter?

Biasanya, pada pemrograman yang menggunakan C/C++ lah banyak terjadi kasus- kasus buffer overflow, tetapi tidak tertutup kemungkinan oleh bahasa pemrograman lain. Disini dapat dilihat banyak sekali fungsi- fungsi yang berbahaya yang ada pada C/C++ (atau yang sering kali menggunakan library- library).

Fungsi- fungsi tersebut yang termasuk adalah strcpy(), strcat(), gets(), sprintf() ,scanf(), fscanf() ,sscanf(), vscanf(), vsscanf(), vfscanf(). Fungsi- fungsi tersebut dapat menyebabkan masalah karena fungsi tersebut mudah menggunakan format yang tidak mendefinisikan nilai maksimum formatnya(menggunakan format “%s” adalah hamper selalu merupakan kesalahan apabila membaca input yang tidak valid). Fungsi- fungsi berbahaya lainnya adalah
realpath(), getopt(), getpass(), streadd(), strecpy(), dan trtrns(). Sebagai contoh implementasi buffer overflow dapat dilihat dari script dibawah ini :

Code : Buffer.c

#include

void duplikasi(char *st)

{

char buffer_overflow[30];

strcpy(buffer_overflow, st);

printf("Anda telah memasukan data ke variabel buffer_overflow dengan :\n%s\n", buffer_overflow);

return;

}

int main()

{

char pesan[100];

printf("Masukkan karakter, kemudian tekan Enter : ");

gets(pesan);

duplikasi(pesan);

return 0;

}

Dari kode di atas variabel pesan diduplikasikan ke variabel buffer_overflow yang memiliki kapasitas 30 karakter. Lalu apa yang terjadi jika kita masukkan karakter di atas 30 karakter? Sebelumnya kompile kode Buffer.c dengan gcc compiler.

gcc -o

Kita bisa mencoba program input yang kita buat di shell Linux atau Unix. Dari contoh di atas kita bisa melihat ketika dimasukkan karakter sebanyak 25 karakter aplikasi berjalan normal tetapi ketika dicoba dengan karakter di atas 30 yang terjadi adalah aplikasi mengalami stack smashing, inilah yang dimaksud dengan kondisi buffer overflow. Lalu apa yang terjadi di memori ketika terjadi buffer overflow? Kita akan mencoba menganalisisnya dengan program gdb (program debuger Linux dan Unix).

Dari data diatas dapat dilihat terjadinya stack smashing karena tidak ditemukannya instruksi pada alamat 0xb7fc0410. Biasanya, para cracker atau hacker yang ingin menyusup lebih dalam pada suatu system akan menganalisa hasil debug diatas dan membuat algoritma untuk membuat exploit(program untuk melakukan ekploitasi) untuk system tersebut.

3. Bagaimana cara mengatasi buffer overflow ?

3.1 Validasi Jangkauan Data

Saat kita menggunakan bahasa pemrograman tertentu maka pastinya kita akan dihadapkan dengan berbagai tipe data yang masing-masing memiliki jangkauan tertentu. Jangkauan nilai yang ditawarkan oleh tipe-tipe data tersebut merupakan sesuatu yang dapat didukung oleh hardware dan "dianggap cukup" untuk memenuhi kebutuhan kita. Sebagai contoh jika kita menggunakan tipe data integer 32 bit maka kita dapat memasukkan nilai mulai dari -2.147.483.648 sampai 2.147.483.647 yang dianggap komputer cukup untuk memenuhi kebutuhan kita. Pada kenyataannya terdapat beberapa program yang menemukan bahwa jangkauan nilai ini terkadang tidak cukup untuk memenuhi kebutuhannya.

Di saat terdapat kemungkinan di mana aplikasi yang anda rancang akan menerima input dari pengguna berupa nilai yang tidak seharusnya (melebihi jangkauan tipe data) maka ada baiknya jika kita menambahkan sepotong kode program untuk memeriksa/memvalidasi input yang diberikan pengguna sebelum diproses lebih lanjut. Jika proses validasi gagal maka program akan mengeluarkan peringatan/ pesan error atau mungkin program akan dihentikan secara otomatis.

3.2 Verifikasi Panjang Data

Bahasa pemrograman C dan turunannya seringkali bermasalah jika harus bekerja dengan tipe data String. String pada bahasa C dianggap sebagai array of Character sehingga tidak ada yang membatasi panjangnya kecuali diterminasi dengan karakter NULL atau dibatasi dengan kemampuan hardware sistem itu sendiri.

Dalam imlementasinya pada sebuah program, jarang sekali dibutuhkan panjang string yang tak terhingga. Pengembang program pada umumnya hanya membutuhkan alokasi string dalam jangkauan tertentu agar programnya dapat bekerja dengan baik dan sesuai harapan. Oleh karena itu untuk menghindari serangan buffer overflow ada baiknya dalam sebuah program ditentukan secara pasti berapa batas maksimum dan juga batas minimum dari jumlah string yang akan dipakai. Selanjutnya terhadap input yang dimasukkan dilakukan pemeriksaan apakah input memenuhi syarat jumlah karakter yang digunakan atau tidak. Jika jumlah karakter memenuhi syarat maka program dapat dilanjutkan, sebaliknya jika panjang karakter tak memenuhi syarat maka penguna akan diberi error message atau program dihentikan.

3.3 Mengantisipasi Karakter-karakter Ilegal

Cara yang paling sederhana dalam menguji keamanan sebuah sistem atau aplikasi yaitu dengan memasukkan input berupa karakter-karakter yang merupakan bagian dari program tersebut (misalnya :ls pada UNIX/Linux, $ pada php, cout<<>

Untuk mengatasi masalah-masalah akibat adanya karakter ilegal yang dimasukkan maka diperlukan mekanisme untuk memeriksa input apakah mengandung karakter-karakter yang tidak diperbolehkan atau tidak. Masing-masing bahasa pemrograman umumnya memiliki mekasnisme tersendiri dalam memeriksa masalah ini.

3.4 Beberapa pendekatan lain

Beberapa pendekatan untuk mencegah terjadinya buffer overflow pada level aplikasi telah dibicarakan di atas. Bagian berikut ini akan memberikan beberapa pendekatan tambahan yang sifatnya lebih rumit. Pendekatan yang disajikan di bawah ini diambil dari sudut pandang kompiler dan sistem secara umum namun sifatnya tetap mendukung keamanan aplikasi yang akan kita jalankan nantinya.

3.4.1 Canary-based Defense

Metode Canary-based defense dicetuskan oleh seorang peneliti bernama Crispen Cowan melalui pendekatan yang disebut StackGuard. Konsep dari pendekatan ini yaitu memodifikasi kompiler C sehingga saat dilakukan kompilasi maka ada sebuah nilai yang ditambahkan di depan return address yang disebut "canary" value. Saat sebuah fungsi telah selesai dijalankan dan akan kembali ke return address maka terlebih dahulu nilai "canary" tersebut akan diperiksa. Jika terjadi serangan buffer overflow yang mengubah nilai return address maka nilai "canary" juga akan berubah karenanya. Nilai "canary" yang berubah akan segera diketahui program dan program

akan dihentikan secara otomatis.

Perlindungan dengan metoda canary sangat bermanfaat untuk mencegah terjadinya serangan buffer overflow pada stack (stack overflow). Sayangnya metode ini tidak dapat melindungi aplikasi dari serangan-serangan buffer overflow lain seperti serangan buffer overflow yang mengubah nilai variabel akibat letaknya berdampingan dengan buffer variabel lain yang overflow. Meskipun demikian, konsep ini terus dikembangkan sehingga diharapkan kemampuannya dapat diperluas untuk mengatasi jenis serangan buffer overflow yang lain.

Metode ini meskipun masih memiliki beberapa kelemahan telah diadopsi oleh

beberapa kompiler C. Pengembangan dari konsep StackGuard yaitu ProPolice / Stack Smashing Protector (SSP) telah diimplementasikan pada GNU C Compiler (gcc) yang terdapat pada distribusi OpenBSD semenjak bulan Mei 2003. Selain itu perusahaan Microsoft juga telah menambahkan sebuah flag kompiler (/GS) sebagai implementasi konsep canary pada kompiler C yang dirilisnya.

3.4.2 ASCII Armor Region

Pendekatan ini didasari suatu ide yaitu membuat eksekusi kode saat berada dalam stack menjadi tidak mungkin. Ide ini mengalami banyak masalah dalam implementasinya, terlebih lagi ide ini sangat sulit diimplementasikan dalam mesin-mesin berprosesor x86 (prosesor yang umum digunakan saat ini).

Setelah dilakukan penelitian lebih lanjut maka muncul pendekatan yang lebih masuk akal untuk diimplementasikan yaitu memindahkan semua kode yang executable ke dalam area memori yang disebut "ASCII armor region". Konsep ini didasari pemikiran bahwa kebanyakan penyerang yang memanfaatkan buffer overflow mengalami kesulitan jika harus membuat sebuah program kembali ke sebuah return address dengan angka 0 di dalamnya. Oleh karena itu dengan memindahkan kode-kode program yang executable ke dalam sebuah area memori di mana terdapat alamat-alamat yang memiliki angka 0 akan lebih mempersulit si penyerang jika ingin merusak program dengan serangan buffer overflow.

Namun pendekatan ASCII armor ini tetap saja memiliki beberapa kelemahan. Daerah ASCII armor yang terentang antara alamat memori 0 sampai 0x01010100 terkadang tidak mencukupi untuk program-program berukuran besar sehingga perlindungannya tidak akan terlalu efektif. Meskipun demikian konsep ini tetap dipakai oleh beberapa distro Linux di antaranya Fedora Core (versi gratis dari Red Hat) dan OpenWall GNU/Linux(OWL) sebagai pengaman dari serangan buffer overflow.

3.4.3 Penggunaan library yang lebih aman

Library standar bahasa C yang memungkinkan terjadinya operasi pada strings merupakan celah untuk terjadinya buffer overflow. Untuk lebih meningkatkan keamanan aplikasi yang kita buat maka akan lebih baik jika kita menggunakan library yang labih baik dan mendukung perlindungan terhadap buffer overflow. Salah satu library yang dapat digunakan adalah SafeStr library. SafeStr menyediakan implementasi dari ukuran string yang dapat berubah-ubah dalam bahasa C. Library ini juga menyediakan mekanisme perhitungan alokasi dan ukuran sebenarnya dari setiap string. Jika terjadi hal-hal yang menyebabkan ukuran string bertambah melebihi alokasi memori untuk string tersebut maka library ini secara otomatis akan menaikkan pula alokasi memori untuk string sekurang-kurangnya sampai ukurannya menyamai ukuran string. Karena pengaturannya yang dinamis inilah maka penggunaan library SafeStr dianggap dapat mengurangi resiko terjadinya buffer overflow pada aplikasi.

4. Kesimpulan

Berdasarkan pembahasan terhadap buffer overflow tadi maka dapat diambil beberapa kesimpulan sebagai berikut:

1. Masalah buffer overflow merupakan masalah yang masih sering terjadi saat ini dan sampai saat ini masih dilakukan penelitian tentang cara yang efektif untuk menangani masalah ini

2. Buffer overflow dapat menyebabkan aplikasi atau program yang kita buat berkelakuan tidak semestinya. Hal ini sering dimanfaatkan oleh beberapa orang untuk menyerang sistem sehingga sistem dapat berkelakuan sesuai keinginan penyerang.

3. Bahasa pemrograman C dan turunannya merupakan bahasa pemrograman yang paling rentan terhadap ancaman buffer overflow terutama bila berkaitan dengan masalah operasi string

4. Terdapat beberapa pendekatan yang bisa digunakan untuk mengatasi masalah buffer overflow baik itu dari aplikasi itu sendiri, kompiler, library yang digunakan ataupun sistem operasi.

5. Meskipun demikian pendekatan-pendekatan yang digunakan tidak menjamin sistem aman 100 persen. Masih ada celah-celah lain yang mungkin belum tereksploitasi atau belum ditemukan solusi untuk mencegahnya.