Sabtu, 27 November 2010

MODEL MANAJEMEN EXCEPTION

Strategi Manajemen Transaksi dalam Java
(Java Transaction Management Strategies)
Resource
“Transaksi” adalah suatu proses penggunaan resource (database, JMS, dll) pada suatu aplikasi. Jadi manajemen transaksi (transaction management) adalah pengaturan transaksi-transaksi yang digunakan/diakses oleh suatu aplikasi/sistem. Transaksi-transaksi ini perlu diatur untuk mempertahankan ACID (atomicity, consistency, isolation, and durability).
Pemahaman mengenai strategi-strategi manajemen transaksi dibutuhkan untuk mempertahankan konsistensi resource yang digunakan. Kesalahan dalam memilih strategi manajemen transaksi tentu saja akan membuat proses bisnis yang diharapkan tidak berjalan dengan semestinya. Mulai dari kegagalan eksekusi hingga integritas database yang rendah.
Beberapa hal yang perlu dimengerti sebelumnya memahami manajemen transaksi ini adalah :
  • Konsep ACID (Atomicity, Concistency, Isolation, Durability)
  • JTA (Java Transaction API) dan JTS (Java Transaction Service)
Local Transaction Model
Pada Local Transaction Model, manajemen transaksi diatur oleh DBMS. Developer yang mengatur koneksi. Transaksi secara otomatis diatur oleh DBMS karena adanya variabel auto commit yang secara default di-set dengan nilai “true”. Maksudnya adalah setiap kali transaksi terjadi, maka secara otomatis transaksi itu di-commit.
Jika hanya satu eksekusi dalam satu transaksi yang terjadi, maka ini otomatisasi ini mempermudah. Tapi jika dalam satu transaksi terjadi lebih dari satu eksekusi pengubahan resource (Create, Update, Delete) dan antar eksekusi itu memiliki hubungan logik (misalkan penambahan record pada tabel penjualan harus didahului oleh penambahan record pada tabel pemesanan), maka yang terjadi adalah jika eksekusi SQL pertama sukses namun eksekusi SQL kedua gagal, maka yang di-rollback hanyalah eksekusi SQL kedua. Eksekusi SQL yang pertama akan lolos (commited). Ini tidak sesuai dengan konsep ACID. Proses tidak atomic dan resource tidak konsisten.
Untuk menghindari hal itu, maka sebaiknya flag (penanda) auto commit di-set “false” : setAutoCommit(false). Dan eksekusi-eksekusi yang dilakukan terhadap resource dibuat atomic. Sehingga transaksi itu akan bersifat digital : 1/0. Berjalan seluruhnya (commit) atau tidak sama sekali (rollback).
Kemudian pada Local Transaction Model, developer perlu mengatur buka-tutup koneksi. Misalnya membuka koneksi dengan perintah :
DataSource ds = (DataSource) (new InitialContext()).lookup(“jdbc/MasterDataSource”);
Connection conn = ds.getConnection();
Dan menutupnya :
conn.close();
Untuk aplikasi berskala besar, kedua hal ini (membuat auto commit = false dan buka-tutup koneksi) tentu dapat menyulitkan developer. Besar kemungkinan terjadinya kesalahan akibat kelalaian melakukan kedua hal ini. Karena itulah, Local Transaction Model memang disarankan digunakan untuk aplikasi sederhana yang hanya terdiri dari eksekusi-eksekusi resource yang (tentu saja) sederhana. Untuk aplikasi dengan tingkat kerumitan transaksi yang lebih tinggi, sebaiknya menggunakan Programatic ataupun Declarative Transaction (sesuai kebutuhannya) yang akan dibahas sebentar lagi.
Oh ya, satu lagi kekurangan dari Local Transaction Model ini adalah ia tidak mendukung XA Global Transaction.
Programmatic Transaction Model
Pada Programmatic Transaction Model, developer mengatur transaksi, bukan koneksi. Hal ini kebalikan dari Local Transaction Model. Jadi developer bertanggung jawab untuk memulai (begin), mengakhiri (commit), dan rollback suatu transaksi.
Kekurangan Programmatic Transaction Model yang pertama adalah kenyataan bahwa dengan tipe manajemen transaksi ini developer menjadi harus memberikan perhatian ekstra pada exception handling. Mengapa? Karena error yang seringkali terjadi (terutama jika developer lupa membuat “commit“) adalah runtime exception yang tidak terdeteksi ketika melakukan proses pengetesan aplikasi (testing).
Kekurangan kedua dari Programmatic Transaction Model adalah tidak mendukung komunikasi transaction context (transaction context tidak dapat digunakan antar bean). Jadi jika ada dua atau lebih bean yang mempunyai hubungan logik, masing-masing bean akan membuat transaction context sendiri. Data menjadi tidak konsisten ketika bean pertama memanggil bean kedua, dan bean pertama baru akan melakukan eksekusi pada resource setelah eksekusi resource pada bean kedua berhasil dilakukan. Masalahnya, jika saja eksekusi pada bean kedua sukses, namun setelah itu eksekusi pada bean pertama gagal dan harus rollback, perubahan yang terjadi pada bean kedua sudah bersifat permanen. Dus, data menjadi tidak konsisten. Integritas data pun otomatis menurun.
Lalu kapankah Programmatic Transaction Model digunakan?
Programmatic Transaction Model sebaiknya digunakan ketika menghadapi tiga skenario berikut :
  1. Client-initiated transactions (transaksi yang diinisiasi client)
  2. Pada transaksi ini, client membuat banyak (lebih dari satu) remote call untuk sebuah business request. Pada skenario seperti ini, tentu saja dibutuhkan model transaksi yang memungkinkan developer untuk mengatur agar transaksi memungkinkan diinisiasi di sisi client. (menggunakan interface UserTransaction) Karena itulah Programmatic Transaction Model menjadi pilihan. Namun karena pada Programmatic Transaction Model tidak memungkinkan pertukaran transaction context (seperti yang sudah dijelaskan di atas), maka EJB pada client menggunakan Programmatic Transaction Model sedangkan EJB pada remote client ataupun server menggunakan Declarative Transaction Model (yang sebentar lagi akan dijelaskan).
  3. Localized JTA transactions (lokalisasi transaksi JTA)
  4. Ketika alokasi resource yang terpakai amat diperhitungkan, maka diperlukan efisiensi pada penggunaan JTA transaction karena transaksi JTA menghabiskan resource yang cukup banyak dan amat mempengaruhi performansi. Lokalisasi transaksi JTA maksudnya adalah menggunakan transaksi seperlunya saja. Transaksi JTA dimulai hanya sebelum aplikasi akan melakukan perubahan pada resource, dan transaksi JTA tersebut langsung ditutup ketika transaksi sudah selesai. Hal ini tentu saja memerlukan pemodelan transaksi yang memungkinkan fleksibilitas untuk melakukan pemulaian dan pengakhiran transaksi. Dan kebutuhan ini terjawab melalui Programmatic Transaction Model .
  5. Long-running JTA transactions (transaksi JTA yang berdaur hidup panjang)
Ada kalanya JTA transaction akan berlangsung dalam rentang waktu yang lama. Dalam EJB, hal ini diimplementasikan dengan menggunakan Stateful Session Bean. Ketika melakukan JTA transaction, yang menggunakan resource (database, JMS), dalam rentang waktu yang panjang ini, boleh jadi pengawalan dan pengakhiran transaksi terjadi pada method yang berbeda dalam satu bean. Hal ini mungkin saja dilakukan dengan Declarative Transaction Model, namun merupakan desain yang buruk. Karena itulah pada skenario ini sebaiknya digunakan Programmatic Transaction Model .
Declarative Transaction Model
Tidak seperti Localized Transaction Model yang mengharuskan developer mengatur koneksi ataupun Programmatic Transaction Model yang mewajibkan developer untuk mengatur transaksi, Declaratice Transaction Model membebaskan developer dari kerepotan mengatur koneksi dan transaksi. Pada Programmatic Transaction Model , transaksi “diurus” oleh container, bukan developer. Akan tetapi, si-container ini perlu diberitahu oleh developer mengenai “bagaimana mengatur transaksi tersebut”. Contohnya : kapankah suatu transaksi itu akan dimulai? Method manakah yang membutuhkan transaksi? Apa yang akan container lakukan jika transaksi belum ada?
Bagaimanakah cara memberitahukan hal-hal tersebut? Cara memberitahukannya melalui pengaturan pada XML konfigurasi dari framework yang digunakan. Misalkan pada XML application context di Spring. Pengaturan terletak pada atribut dari transaksi. Atribut transaksi ini digunakan untuk satu buah bean. Namun begitu dalam satu bean dapat saja method-methodnya memiliki sifat atribut yang berbeda. Hal ini dapat dilakukan dengan override atribut transaksi di level method.
Jenis-jenis transaksi yang dapat digunakan pada Declarative Transaction Model adalah :
  • Required : Method pada bean membutuhkan transaction context. Jika transaction context sudah diinisiasi container maka transaction context itulah yang akan digunakan. Jika belum maka container akan menginisiasi transaction context baru.
  • Mandatory : Method pada bean membutuhkan transaction context yang sudah ada. Jika belum ada transaction context yang diinisiasi oleh container, maka container akan mengeluarkan TransactionRequiredException.
  • RequiresNew : Method pada bean membutuhkan transaction context baru. Walaupun sudah ada transaction context yang diinisiasi oleh container, container wajib untuk menginisiasi transaction context baru.
  • Supports : Method pada bean membutuhkan tidak membutuhkan transaction context. Tapi jika transaction context sudah ada, maka transaction context tersebut akan digunakan dalam method.
  • NotSupported : Method pada bean tidak membutuhkan transaction context. Namun jika transaction context sudah ada, maka transaksi yang sedang berjalan akan ditangguhkan (suspend) sampai method ini selesai dieksekusi. Tipe ini dibutuhkan jika ada suatu proses dalam method yang akan menghasilkan exception jika ada transaction context yang sedang aktif.
  • Never : Method pada bean SAMA SEKALI tidak membutuhkan transaction context. Jika transaction context yang aktif dalam container maka akan menghasilkan exception. Tipe ini jarang sekali digunakan.Ada keterbatasan dalam pemilihan tipe atribut transaksi ini. Untuk Entity Bean, tipe atribut transaksi yang dapat dipilih adalah Required, Mandatory, dan RequiresNew. Sedangkan pada Message Driven Bean, tipe atribut yang dapat dipilih hanyalah Required dan NotSupported. Jika EJB mengimplementasikan interface Synchronization maka tipe atribut transaksi yang dapat digunakan adalah Required, Mandatory, dan RequiresNew.
Walau pada Declarative Transaction Management ini developer tidak lagi perlu mengatur koneksi dan transaksi, akan tetapi developer masih perlu menambahkan code agar model transaksi ini berjalan dengan baik. Developer perlu memperhatikan exception handling dan setRollBackOnly(). Method setRollbackOnly() akan me-rollback semua eksekusi-eksekusi resource yang terjadi pada method tersebut ketika terjadi exception.
Misalkan dalam suatu method ada dua perintah eksekusi resource. Yang satu adalah eksekusi ke database dan yang satunya lagi eksekusi ke JMS. Eksekusi ke database berjalan dengan baik. Namun kemudian ketika akan mengirimkan email notifikasi ke admin (eksekusi JMS) ternyata server STMP sedang tidak menyala. Sehingga email tidak berhasil dikirim. Kegagalan ini tentu saja akan menghasilkan exception. Nah, jika exception handling tidak diatur dengan baik (apapun exception-nya, pasti akan berujung pada setRollbackOnly() ) maka hanya karena kegagalan mengirim email notifikasi segala eksekusi yang telah dilakukan pun ditolak (rollback). Padahal, bisa saja developer mengakali kondisi ini dengan mengirimkan email notifikasi nanti, setelah server STMP aktif (suspend atau on schedule). Dan eksekusi resource ke database menjadi permanen. Triknya adalah dengan membuat penanganan exception dengan benar. Tidak semua exception langsung mengakibatkan setRollbackOnly().

Sabtu, 13 November 2010

DEFINISI MANAJEMEN OLEH EXCEPTION

I.     Pendahuluan        
         Indonesia ternyata tidak hanya dikategorikan sebagai salah satu negara terkorup di dunia. Dalam soal kejahatan dunia maya (cyber crime), Indonesia juga menempati peringkat teratas. Ironisnya, dari segi penetrasi internet, Indonesia termasuk kategori terendah.
         Berdasarkan laporan Federal Bureau of Investigation (FBI)- organisasi intelijen resmi Amerika Serikat, Indonesia hanya kalah dari Ukraina dalam soal kejahatan dunia maya.
         Ada dua modus kejahatan dunia maya yang paling sering dilakukan adalah  carding atau memalsukan nomor kartu kredit orang lain untuk mendatangkan berbagai produk komersial yang diperjual belikan lewat internet. Modus ke dua adalah cracking atau merusak/mengacaukan jaringan komputer pihak lain.  
         Menurut Pusat Koordinasi CERT® yang mulai beroperasi tahun 1988, jumlah peristiwa keamanan yang dilaporkan telah meningkat secara dramatis. Tahun 1988 trerjadi serangan kurang dari 100, tetapi meningkat hampir 2,500 insiden di tahun 1995. Peningkatan serangan sepanjang tahun 1994 sejalan dengan pertumbuhan internet selama kurun waktu tersebut. Pada  Gambar 1 menunjukkan grafik hubungan pertumbuhan Internet dan peningkatan laporan insidenn keamanan internet. Data untuk tahun 1995 dan data parsial tahun  1996 menunjukkan melambatnya tingkat insiden yang dilaporkan ke CERT/CC, hal ini dimungkinkan adanya usaha meningkatkan keamanan pada situs-situs atau peningkatan secara signifikan dari response team untuk menangani insiden-insiden yang terjadi. Namun demikian, banyaknya insiden yang terjadi terus meningkat khususnya peristiwa-peristiwa serius, seperti  root compromises, service outages dan packet sniffers.





Selama akhir tahun 1980 dan awal tahun 1990, gangguan yang terjadi umumnya secara terang-terangan. Pengganggu paling sering memanfaatkan kelemahan yang relatif sederhana, seperti lemahnya sistem password dan kesalahan sistem konfigurasi, sehingga terjadi akses yang lebih besar terhadap sistem secara tidak disengaja. Sekali penyusup dapat mengeksploitasi  kelemahan suatu sistem, maka akan dengan mudah mereka menggunakan sistem tersebut sesuai keinginannya.
Pembuat software biasanya memasarkan produknya dengan setting yang mudah ditembus atau di susup keamanannya. Mengamankan sistem bukanlah suatu hal yang sederhana, dan kebanyakan administrator sistem tidak banyak memiliki waktu, keahlian dan alat-alat bantu untuk memonitor sistem mereka secara baik dari serangan-serangan atau penyusupan.
Selama delapan tahun terakhir, penyusup menggunakan teknik dan pengetahuan yang semakin meningkat untuk melakukan penyusupan, mengeskploitasi kelemahan sistem dan membuat perangkat lunak guna menyerang sistem secara otomatis. Pada waktu yang sama, penyusup yang memiliki kemampuan yang rendah akan leluasa dan makin efektif melakukan penyusupan, disebabkan penyusup yang berpengalaman membagikan pengetahuannya kepada penyusup dengan pengetahuan yang rendah.  
Data/ informasi di era informasi seperti sekarang ini, sudah menjadi suatu aset yang sangat berharga. Bahkan bisa dikatakan sangat fital sehingga kebocoran, kehilangan ataupun kerusakan terhadap data/informasi dari suatu organisasi dapat mengancam kelangsungan hidup orgabisasi yang bersangkutan. Mengingat begitu berharganya suatu data/informasi maka tidaklah heran jika bermunculan beberapa pihak yang tidak bertanggung jawab yang berusaha mencuri maupun mengubah dan merusak data/informasi dari sistem komputer milik suatu organisasi tertentu.
Ketika sebuah komputer terhubung ke dalam sebuah jaringan komputer baik secara lokal ataupun ke dunia melewati internet, maka yang harus diperhatikan adalah keamanan dari komputer server tersebut. Selain komputer server tersebut tidak boleh luput dari perhatian keamanan dari komputer-komputer lain yang juga terhubung dengan komputer server tadi.
            Namun yang akan dibahas disini adalah gangguan apa saja yang dapat terjadi pada sebuah komputer server apabila terhubung dalam sebuah jaringan atau internet, Kebanyakan orang berfikir bahwa gangguan keamanan yang mungkin terjadi adalah disebabkan oleh hacker dari luar. Dalam bahasan tentang keamanan sistem perlu diperhatikan semua sebab yang mungkin menjadi faktor gangguan keamanan itu terjadi. Sebagai contoh adalah seorang penyusup yang mempunyai dendam, ketidak sengajaan seorang pegawai, bug pada sistem operasi dan aplikasi di dalamnya atau kesalahan dalam konfigurasi.
            Berikut ini akan dipaparkan gangguan keamanan yang berpengaruh bagi keamanan pada komputer server.


II.      Tinjauan Buffer Overflow Dan Denial Of Service
1.           Eksploitasi Buffer Overflow
Dari sekian banyak penyebab masalah keamanan pada komputer, baik yang bersifat lokal maupun jaringan, buffer overflow termasuk salah satu penyebab yang paling banyak dilakukan. Menurut laporan CERT/CC, buffer overflow  merupakan penyebab  dari 50% semua bug keamanan yang dilaporkan dan dijadikan advisori oleh CERT/CC. Lebih jauh lagi, riset yang dilakukan oleh Crispin Cowan dan kawan-kawan, menganggap buffer overflow sebagai vulnerability of the Decade.
Buffer overflow merupakan sebuah kelemahan yang mudah untuk ditemukan dan dimanfaatkan oleh penyerang  dalam sebuah sistem. Aplikasi dan Operating System (OS) menyimpan untuk sementara perintah yang mereka dapat di memori tertentu yang biasa disebut buffer memory. Kalau OS atau program tidak bisa dikode secara sempurna maka penyerang bisa membuat komputer korban jadi terganggu dengan mengirimkan perintah yang dibuat khusus,  membuat gangguan jadi berlangsung lebih lama. Windows 95 paling rentan kalau sudah berhadapan dengan serangan seperti “buffer overflow” yang banyak dilancarkan lewat internet ini. Saat ini serangan serupa sudah jarang dilancarkan pada sebuah komputer. Namun terkadang penyerang masih sering melakukannya untuk memperlambat kinerja sebuah situs.

a.                  Deskripsi Buffer Overflow
      Untuk mengetahui apakah sebenarnya buffer overflow dan bagaimana cara kerja untuk mengekploitasinya, maka diperlukan pemahaman tentang cara kerja sistem processor di level bawah, seperti pemrograman assembly, manajemen memory text, stack, data dan sebagainya. Selain itu bagi pengguna sistem operasi Linux, pengalaman program debug gdb akan sangat membantu.
            Berikut ini istilah-istilah dasar untuk memahami penjelasan berikut mengenai buffer overflow.




a.1    Manajemen memori pada proses
         Sebuah proses jika dilihat dari sudut manajemen memori, dapat dibedakan menjadi tiga bagian .
·         Text, memuat instruksi kode program. Bagian ini biasanya hanya bisa dibaca dan setiap usaha untuk menuliskan data ke bagian ini akan menyebabkan kesalahan segmentation violation.
·         Data,  memuat data, baik yang telah diinisialisasikan maupun yang belum. Selain dapat dibaca, biasanya bagian ini juga dimanipulasi suatu instruksi untuk melakukan penulisan padanya.
·         Stack, yang dapat dialokasikansecara dinamis, biasanya dimanfaatkan untuk menyimpan variabel lokal maupun untuk melewatkan parameter fungsi. Pengaksesan data kebagian ini menggunakan metode yang disebut LIFO (Last In First Out) seperti yang nanti akan diterangkan secara lebih rinci. Jenis data yang juga patut diketahui adalah sebagai buffer yang pada bahasa C diimplementasikan sebagai array. Array dapat dibedakan ke dalam dua jenis berdasarkan metode pengalokasiannya, yaitu array statis dan array dinamis.  Array statis dialokasikan dibagian data saat program dimuat ke memory, sedangkan array dinamis dialokasikan di dalam stacj saat run time.

a.2    Stack
         Stack dapat dibayangkan sebagai sebuah blok dan memori yang dapat memuat data secara dinamis. Beberapa hal yang patut diketahui pada processor Intel sehubungan dengan stack adalah sebagai berikut.
q  Penggunaan metode Big Endian dalam mengorganisasikan sistem memori. Disini MSB (Most Significant Bit) terletak pada alamat memori yang lebih kecil dibandingkan LSB (Low Significant Bit).
q  Penambahan besar stack dilakukan ke arah alamat memori yang lebih kecil. Disini posisi bawah dari stack mempunyai alamat yang tetap. Posisi atas stack yang alamat memorinya lebih kecil dari posisi bawah selalu berubah.
q  Register stack pointer (SP) selalu menunjuk keposisi atas dari stack.
q  Untuk memindahkan data ke stack digunakan instruksi PUSH yang secara otomatis akan menurunkan nilai SP sebesar 4 byte. Sedangkan untuk mengambil data dari stack digunakan instruksi POP yang secara otomatis juga akan menaikkan nilai SP sebesar 4 byte.
    



         Blok memori dari stack ini biasanya dibagi lagi menjadi apa yang disebut dengan register stack frame. Setiap register stack frame  berisi data yang berhubungan dengan pemanggilan suatu fungsi. Biasanya posisi awal dari frame ini ditunjukkan oleh frame pointer (FT).
         Dengan bantuan FP ini, maka pengaksesan ke variabel lokal maupun parameter fungsi dapat dilakukan menggunakan sistem pengalamatanm relatif. Pada CPU Intel, register EBP berfungsi sebagai frame pointer.
         Setelah bahasan di atas, sekarang akan dijelaskan pengertian buffer overflow. Buffer overflow  memiliki arti suatu keadaan di mana data yang diisikan ke suatu buffer mempunyai ukuran yang lebih besar dari dibandingkan ukuran buffer  itu sendiri. Untuk lebih memahami buffer overflow,  mungkin dapat kita temukan padanannya dalam kehidupan sehari-hari, yaitu saat ember diisi  dengan air, sehingga air yang dituangkan sampai meluap ( overflow).
         Sedangkan pada eksploitasi buffer overflow, secara prinsip ada dua hal penting yang harus dilakukan dalam proses eksploitasi buffer overflow, yaitu sebagai berikut.
1.            Pertama harus membuat instruksi yang kita kehendaki agar dijalankan setelah buffer ter overflow. Instruksi ini biasanya berupa kode assembly ini harus dikonversi ke data heksadesimal.
2.            Kedua, harus memperhitungkan alamat posisi RET dalam stack dan alamat kode instruksi tersebut. Kemudian alamat kode instruksi ini harus dimasukkan ke dalam nilai RET, sehingga jika buffer ter overflow instruksi tersebut dijalankan .

a.            Bahaya Buffer Overflow
Dari deskripsi di atas dapat disimpulkan bahaya yang bisa ditimbulkan oleh eksploitasi buffer overflow adalah sebagai berikut.
b.1    Pemanipulasian dan pengrusakan data stack dimemori sehingga suatu program yang memerlukan data tersebut akan mengalami gangguan dalam prosesnya.
b.2    apabila suatu program atau aplikasi dijalankan maka instruksi-insruksi dari program tersebut akan disimpan dalam memori. Dengan memanfaatkan eksploitasi buffer overflow seorang pengganggu dapat memanipulasi instruksi-instruksi pada memori dengan instruksi yang diinginkannya.

c.      Contoh Eksploitasi Buffer Overflow
Berikut adalah contoh program yang ditulis dengan bahasa C yang mengandung buffer overflow.


         Program di atas apabila dikompilasi dan dijalankan pada sistem operasi Linux akan didapatkan pesan segmentation violation. Hal ini disebabkan pada fungsi fungsi() bariabel array buffer didefinisikan hanya berukuran 4 byte, sedangkan data yang disalinkan kepadanya berukuran 17 byte.

         Program di atas merupakan program kecil untuk memodifikasi nilai RET (return address) sehingga instruksi yang seharusnya dikerjakan setelah pemanggilan suatu fungsi akan dilompati. Seharusnya karena nilai a terakhir di isi dengan nilai 2, tapi pada program di atas instruksi a=2 yang seharusnya dikerjakan setelah kembali dari fungsi akan dilompati. Sehingga nilai dari a yang dikeluarkan pada layar adalah 1.

d.      Cara Penanggulangan
         Berikut adalah tindakan yang bisa dilakukan untuk menghindari terjadinya eksploitasi buffer overflow. Dari sisi seorang pemrogram.

d.1    Memvalidasi Data
         Sebuah program yang berjalan dengan privilge tinggi, mengharuskan untuk melindungi semua data dan harus menganggap semua data yang masuk patut dicurigai.
         Perhatikan contoh potongan program berikut.
        


         Kode di atas berbahaya karena array nama tidak dibatasi besarnya. Solusi yang lebih baik adalah sebagai berikut.
        
         Yang membatasi string nama yang dimaksukkan sebesar 255 karakter.
         Selain memeriksa ukuran input yang dimasukkan, program juga harus memeriksa bahwa data yang dimasukkan adalah data yang valid. Misalnya, jika program meminta input berupa tipe data interger, maka program harus memastikan bahwa input yang diberikan  oleh user benar-benar bertipe integer, bukan tipe lainnya.

                  Konsepnya adalah membuat segment data sebuah program tidak dapat dieksekusi. Dengan menjadikannya tidak dapat dieksekusi, maka tidaklah mungkin bagi penyerang untuk mengeksekusi kode yang mereka masukkan ke buffer input  program korban.
         Cara ini digunakan pada sistem operasi komputer lama, tetapi pada sistem operasi UNIX dan MS Windowsteknik ini tidak digunakan, karena keduanya tergantung pada kemampuan memasukkan kode dinamis ke dalam segment data program untuk mendukung berbagai optimisasi kinerja.

d.3    Array Bounds Checking
                  Meskipun memasukkan kode adalah sebuah tindakan pilihan bagi serangan buffer overflow, pengkorupsian aliran kendali merupakan hal yang penting. Dengan menggunakan metode array bound checking akan menghentikan vunerability dan serangan buffer overflow.Jika sebuah array tidak dapat di-overflow, maka array tidak dapat digunakan untuk mengkorupsi program yang terletak di alamat memori berikutnya. Untuk mengimplementasikan metode ini, semua pembacaan dan penulisan ke array yang harus diperiksa untuk memastikan bahwa mereka tidak melampaui batasan array.



 d.4   Code Pointer Integrity Checking
                  Tujuan dar metode ini agak berbeda dengan bounds cheking. Alih-alih berusaha mencegah korupsi kode pointer, ia berusaha mendeteksi bahwa sebuah kode pointer telah terkorupsi sebelum ia dideferensikan. Jadi meskipun penyerang sukses dalam mengkorupsi kode pointer, kode pointer yang terkorupsi tidak akan digunakan karena korupsi terdeteksi setiap saat sebelum digunakan.

d.5    Memeriksa Index
                  Indeks yang digunakan untuk memanipulasi sebuah array harus diperiksa dengan teliti. Perhatikan contoh kode di bawah ini.

2.    Denial Of Service Attack
.        Sumber daya jaringan yang sangat berharga antara lain komputer, database dan layanan-layanan lain yang disediakan oleh jasa jaringan. Jaringan ini sangat dibutuhkan oleh user dikarenakan layanan-layanan tersebut memudahkan pekerjaan sehingga pekerjaan tersebut lebih efisien. Bila layanan ini rusak atau tidak dapat bekerja, maka akan menyebabkan hilangnya produktifitas. Hal-hal yang menyebabkan jaringan tidak bekerja dapat berupa apa saja termasuk worm yang seringkali melumpuhkan sejumlah besar komputer di dunia.
         Penyebab denial of service diantaranya adalah sebagai berikut.
ü  Kemungkinan jaringan menjadi tidak befungsi disebabkan kebanjiran jalur lalu lintas.
ü  Kemungkinan jaringan dipartisi dengan cara membuat komponen jaringan seperti router ang menjadi penghubung jaringan tidak berfungsi.
ü  Kemungkinan ada virus yang menyebar dan menyebabkan sistem komputer menjadi lambat atau bahkan lumpuh.
ü  Kemungkinan device yang melindungi jaringan dirusakkan.

Penggunaan sumber daya yang illegal dapat pula mengakibatkan denial of service . Sebagai contoh, suatu penyerang dapat menggunakan wilayah ftp area tak bertuan sebagai tempat untuk menyimpan salinan yang tidak sah suatu perangkat lunak komersil, memanfaatkan ruang disk dan memadatkan lalu lintas jaringan.
a.      Deskripsi
Denial of Service Attack lebih dikenal dengan istilah DoS attack. Serangan ini dilakukan untuk tujuan mematikan salah satu atau semua layanan yang ada pada suatu sistem tanpa permisi dari penguasa sistem.
Denial-of-service attack  merupakan sebuah upaya serangan dengan jalan menurunkan kinerja sebuah web site dengan terus menerus mengulang request ke server dari banyak sumber secara simultan. Tujuan serangan seperti ini berakibat server korban jadi kewalahan melayani request yang terkirim dan berakhir dengan menghentikan aktivitas atau berhenti dengan sendirinya karena tak mampu melayani request. Kadang serangan yang dilakukan dengan cara ini dapat merusak atau mematikan sistem secara keseluruhan.
Denial-of-service merupakan  serangan dengan ditandai oleh suatu usaha yang eksplisit dari penyerang untuk mencegah para pemakai yang sah menggunakan jasa pelayanan jaringan. Contohnya meliputi :
Ø  mencoba untuk membanjiri suatu jaringan, dengan demikian menghambat lalu lintas jaringan yang ada,
Ø  mencoba untuk mengganggu koneksi antar komputer, sehingga jasa pelayanan menjadi terhambat,
Ø  mencoba untuk mencegah individu tertentu  untuk mengakses suatu layanan,
Ø  mencoba untuk mengganggu pelayanan seseorang  atau suatu sistem yang spesifik.

         Jenis serangan lainnya dapat meliputi denial of service sebagai komponen, tetapi denial of service  dapat berupa bagian dari serangan yang lebih besar.
          Penggunaan sumber daya yang illegal dapat pula mengakibatkan denial of service . Sebagai contoh, suatu penyerang dapat menggunakan wilayah ftp area tak bertuan sebagai tempat untuk menyimpan mencuri data suatu perangkat lunak komersil, memanfaatkan ruang disk dan memadatkan lalu lintas jaringan.



b.      Target dan Bahaya Denial of Service Attack
         Serangan Denial-Of-Service utamanya bertujuan  melumpuhkan komputer atau jaringan. Tergantung pada sifat alami perusahaan, hal ini yang secara efektif melumpuhkan organisasi..
         Beberapa serangan denial-of-service dapat dieksekusi dengan sumber daya terbatas melawan terhadap suatu situsbesar yang canggih . Serangan jenis ini   kadang-kadang disebut/dipanggil suatu " serangan tidak simetris (asymmetric attack)." Sebagai contoh, suatu penyerang dengan sebuah PC tua dan sebuah modem yang lambat mungkin mampu melumpuhkan banyak jaringan atau mesin yang lebih canggih dan lebih cepat.
Serangan Denial-Of-Service terdiri dari  berbagai bentuk dan jenis layanan. Ada tiga jenis dasar  serangan yaitu :

ü  penggunaan hal yang langka, terbatas, atau sumber daya  tidak dapat diperbarui,
ü  perusakan atau perubahan konfigurasi informasi,
ü  perusakan secara fisik atau perubahan komponen-komponen jaringan.

 b.1      Penggunaan Sumber daya Langka

Komputer Dan Jaringan memerlukan berbagai hal tertentu untuk beroperasi: bandwith jaringan, memori dan ruang penyimpan, CPU time, struktur data, mengakses ke komputer dan jaringan lainnya, dan sumber daya lingkungan tertentu seperti power, pendingin udara, atau bahkan air.
b.1.1    Jaringan Terhubung
         Serangan Denial-Of-Service yang paling sering dilakukan yaitu menyerang hubungan komunikasi antara server dan client. Tujuannya adalah untuk mencegah host atau jaringan saling berkomunikasi. Suatu contoh serangan jenis ini  adalah " SYN Flood" membanjiri dengan request. Untuk lebih jelasnya dapat dilihat pada situs berikut. {terdapat juga pada Lampiran 1)
         Pada serangan jenis ini, penyerang memulainya dengan proses menetapkan suatu koneksi kepada mesin korban. Meskipun demikian maksud penyerang sebenarnya akan menghambat komputer korban berkomunikasi dengan komputer lain. .Pada saat komputer korban memesan sejumlah struktur data yang diperlukan. Setelah proses permintaan selesai, komputer korban menyudahi koneksi. Hasilnya adalah bahwa koneksi yang sah ditolak pada saat komputer korban sedang menanti untuk melengkapi koneksi.
         Perlu dicatat bahwa serangan jenis ini  tidak tergantung pada penyerang tersebut  memakai besarnya bandwidth jaringan. Dalam hal ini, pengganggu sedang menggunakan  kernel struktur data dengan melibatkan suatu koneksi jaringan. Akibatnya  adalah bahwa pengganggu dapat melaksanakan penyerangan dari suatu dial-up koneksi menyerang  suatu mesin  jaringan sdengan sangat cepat. ( Ini adalah suatu contoh yang baik dari suatu serangan asymetric.)



            Pengganggu dapat juga menggunakan sumber daya milik kita melawan kita sendiri dengan cara yang tak diduga. Satu contoh diuraikan pada web berikut ini. (Dapat pula dilihat pada Lampiran 2).
            Penyerang menggunakan paket UDP untuk menghubungkan getaran pelayanan  pada suatu mesin ke mesin lain. Hasilnya adalah dua penguna yang mengkonsumsi semua bandwidth yang tersedia. Sehingga koneksitas jaringan untuk semua komputer pada jaringan yang sama akan saling mempengaruhi utamanya pada komputer target.


            Seorang penyerang dapat memakan semua bandwidth yang tersedia pada  jaringan dengan mengirimkan  sejumlah besar paket yang langsung diarahkan pada jaringan tersebut. Secara khusus, paket ini adalah paket ICMP ECHO, tetapi pada prinsipnya mereka dapat berupa apapun. Lebih lanjut, pengganggu tidak perlu beroperasi dari sebuah komputer; bisa jadi ia bekerja dari beberapa komputer yang beroperasi dijaringan yang berbeda dengan efek yang sama

b.1.4.   Konsumsi Resource Yang Lain
            Penyerang  dapat pula  memnfaatkan  sumber daya lain dalam jaringan untuk menyerang. Sebagai contoh, dalam beberapa sistem, terdapat struktur data berupa proses informasi seperti proses identifikasi, proses masukan data dan sebagainya.Seorang penyerang dengan menggunakan hanya beberapa perintah singkat dapat menyalin catatatan-catatan tersebu berulang-ulangt.  Banyak sistem operasi modern mempunyai fasilitas kuota untuk melindungi dari masalah ini, tetapi tidak semua dilakukan.
 Penyerang dapat pula untuk menggunakan  ruang disk dengan  cara-cara lain, seperti.
q     Meningkatkan  jumlah pesan mail secara  berlebihan (email Bombing). Untuk informasi lebih jauh dapat dilihat.pada site berikut. (dapat pula dilihat pada Lampiran 3).
q  dengan sengaja meningkatkan kesalahan yang harus dicatatm
q     menempatkan file pada wilayah  ftp tanpa nama dalam jaringan atau pada jaringan bersama, Untuk informasi bentuk wujud ftp tanpa nama, dapat dilihat pada site berikut atau pada Lampiran 4.
         Secara umum, apapun yang mengijinkan data untuk ditulis ke disk dapat digunakan untuk melaksanakan suatu serangan denial-of-service jika tidak ada batas berapa  jumlah data yang dapat ditulis.
         Juga, banyak situs merancang  menempatkan  "lockout" suatu account setelah sejumlah login gagal dicoba. Suatu kunci dapat dipasang 3 sampai 5 kali login, jika gagal user tidak diperkenankan lagi bekerja. Seorang penyerang mungkin mampu menggunakan rancangan ini untuk mencegah para pemakai yang sah untuk masuk. Dalam beberapa kasusl, bahkan account yang diistimewakan, seperti administrator, dapat dijadikan subyek serangan jenis ini. Pastikan kita  mempunyai suatu metoda untuk memperoleh akses ke sistem bila terjadi keadaan darurat. Konsultasikan pada penjual sistem operasi atau baca manual sistem operasi secara cermat untuk fasilitas larangan bekerja dan masukan dalam keadaan darurat.
         Seorangpenyerang  dapat) menyebabkan sistem hancur atau menjadi tidak stabil dengan pengiriman data tak diduga (tas jaringan]. Sebagai  contoh tentang serangan seperti diuraikan diatas dapat dilihat pada web berikut (dapat dilihat pula pada Lampiran 5)..
Jika sistem  yang sedang berjalan mengalami kerusakan  dengan tidak ada penyebabnya yang jelas, bisa jadi itu adalah hasil serangan jenis ini .
 Ada berbagai hal lain yang mungkin peka terhadap denial of service, meliputi :
§  alat pencetak,
§  peralatan tape,
§  network connections,
§  Resources yang penting dalam operasi organisasi.
b.2.   Perusakan atau Mengubah Konfigurasi Informasi
Sebuah komputer yang kurang bak untuk dioperasikan sebaiknya tidak dioperasikan sama sekali. Seorangpenyerang dapat mengubah atau menghancurkan konfigurasi informasi dan menghambat dari penggunaan jaringan atau komputer.
Sebagai contoh, jika perusak  dapat merubah informasi routing pada router, jaringan menjadi lumpuh (disabled). Jika penyerang dapat memodifikasi registry pada komputer Windows NT, berakibat fungsi tertentu menjadi hilang (unvailable).
 Untuk informasi tentang configurasi UNIX dapat dilihat pada web berikut atau pada Lampiran 6 :
Untuk informasi tentang configurasi Microsoft Windows NT dapat dilihat pada: http://www.microsoft.com/security/

         Perhatian yang utama dengan  jenis serangan ini adalah keamanan secara fisik. Perlu menjaga komputer dari akses yang tidak bertanggung jawab seperti, router, wiring closet, jaringan backbone, power dan stasiun pendingin, dan komponen lain yang peka pada jaringan.
         Keamanan secara fisik merupakan suatu komponen yang penting untuk dijaga dari jenis serangan denial of service. Untuk informasi keamanan terhadap komponen fisik ini, disarankan untuk berkonsultasi  terhadap perusahaan keamanan jaringan.
           
c.      Pencegahan dan Penanggulangan
Serangan denial of service dapat mengakibatkan hilangnya waktu berharga dan biaya suatu organisasi. Serangan ini dapat dipertimbangkan untuk ditanggulangi bila tidak ingin menghadapi resiko yang lebih besar.
Beberapa pertimbangn berikut dapat diikuti sebagai saran mengatasi serangan denial of service.
ü   Menerapkan router filters untuk mengurangi ekspose  denial-of-service.
ü      Instal program guard untuk menjaga dari membanjirnya e-mail yang tidak dikehendaki. Pada hakekatnya cara ini dapat mengurangi serangan  denial of service.
ü      Buang beberapa servis jaringan yang tidak diperlukan atau tak terpakai. Hal ini dapat membatasi kemampuan penyerang untuk mengambil keuntungan dari semua servis itu  guna melaksanakan suatu serangan denial-of-service.
ü      Buatlah sistem kuota pada  sistem operasi jika layanan tersebut tersedia. Sebagai contoh, jika sistem operasi mendukung kuota penyimpanan, memungkinkan  untuk mengijinkan pemakaian jaringan, khususnya account yang diijiinkan mengoperasikan jaringan. Sebagai tambahan, jika sistem operasi  mendukung partisi atau volume ( yaitu., sistem file secara terpisah dengan atribut mandiri) dapat dipertimbangkan mempartisi sistem file supaya dipisahkan antara fungsi yang peka  dari  aktivitas lainnya.
ü      Amati terus kegiatan sistem dan tetapkan batas-batas untuk aktivitas biasa. Gunakan batasan untuk mengukur tingkatan aktivitas disk yang tidak lazim, pemakaian CPU, atau lalu lintas jaringan.
ü      Secara rutin menguji keamanan fisik komputer berkenaan dengan kebutuhan saat ini. Pertimbangkan server, router, terminal tanpa kendali, jaringan acces point, wire closet, sistem lingkungan seperti udara dan power, dan komponen lain dari sistem.
ü      Gunakan Tripwire atau suatu alat serupa untuk mendeteksi perubahan konfigurasi informasi atau file lainnya. Untuk  informasi lebih lanjut , lihat pd web berikut atau Lampiran 7
ü      Menyiapkan modal untuk penggantian perangkat dan pemeliharaan mesin yang dapat dioperasikan sewaktu-waktu bila ada komputer yang mengalami serangan.
ü      Secara reguler ditetapkan jadual pemeliharaan  dan backup data terutama informasi-informasi yang penting.
ü      Tentukan kebijakan  pembaharuan kata sandi yang sesuai dan memperbaiki sandi secara reguler terutama bagi account yang khusus seperti administrator.

                 
d.      Target dan bahaya Denial of Service pada Linux
                        Pada sistem operasi Linux banyak target yang bisa digunakan untuk tujuan mematikan service pada sistem atau sistem secara keseluruhan. Berikut adalah target yang dapat digunakan sasaran serangan.

d.1    Ruang Swap
         Ruang swap pada sistem operasi Linux  biasanya digunakan sebagai Ivirtual memory. Ruang ini akan menyimpan file-file sementara yang biasa digunakan pada saat suatu program dijalankan.
         Dengan cara menghabiskan ruang kosong pada swap akan ada program-program yang tidak dapat dijalankan karena tidak adanya ruang untuk menampung file-file sementara dari aplikasi tersebut.
         Selain hal tersebut gangguan yang lain adalah matinya  service-service yang ada pada sistemdan tidak dapat dipenuhinya request dari user karena penuhnya ruang swap ini.

d.2    Bandwidth

         Target lain dari serangan DoS adalah dengan cara memenuhi bandwidth yang tersedia hingga komunikasi pada jaringan menjadi berat atau mati.

d.3    Tabel Kernel
         Alokasi memory pada kernel merupakan salah satu target yang dapat digunakan sasaran serangn. Kernel mempunyai batas pada kernel map, jika sistem telah mencapai batasnya dan tidak bisa memakai memori kernel lagi maka yang harus dilakukan adalah me-reboot sistem. Memori kernel tidak hanya digunakan oleh RAM dan CPU saja , tapi juga digunakan oleh proses biasa. Sehingga dengan pemakaian proses yang terlalu banyak akan menyebabkan sistem harus di reboot.

d.4    RAM (Random Access Memory)
          Penggunaan sejumlah besar RAM akan menyebabkan masalah pada sistem. Penggunaan RAM yang berlebihan pada sistem tentnya akan menyebabkan sistem bekerja berat dan untuk menguranginya, sistem dengan sendirinya akan mematikan layanan atau aplikasi yang tidakdiprioritaskan.

d.5    Inetd
         Inetd adalah daemon pada sistem operasi Linux yang gunanya untuk menghidupkan service-service lain seperti telnetd, ftp atau service untuk mail server. Dengan mematikan inetd tentunya akan banyak service yang akan mati.

e.      Cara Penanggulangan
         Untuk menghindari sistem dari keadaan di atas yang bisa dilakukan adalah sebagai berikut.
Ø   Melakukan aturan quota pada user-user yang ada pada sistem seningga ada pembatasan jumlah file dan besar ruang yang dimiliki oleh user-user tersebut.
Ø   Melakukan pembatasan banyaknya proses yang bisa dibuat oleh uses sehingga file-file temporry (sementara) yang dibuat oleh proses tersebut akan terbatas juga.



IV.  PENUTUP

Data/Informasi sangat penting artinya bagi suatu organisasi dewasa ini. Kadang kala Informasi merupakan aset yang sangat fital, sehingga kerusakan, kehilangan dan kebocoran suatu informasi merupakan malapetaka bagi suatu organisasi.
Mengingat data/informasi berlalu lalang di jaringan  komputer, maka sangat dimungkinkan informasi tersebut disadap, didengar bahkan dicuri orang-orang yang tidak bertanggung jawab. Kadang-kadang tanpa sengaja informasi menjadi hilang atau bahkan diberikan kepada orang yang tidak berhak.
Dari tahun ke tahun pemakaian jaringan komputer semakin meningkat, sehingga semakin banyak serangan terhadap jaringan komputer. Hal demikian mengakibatkan keamanan jaringan merupakan salah satu perhatian  yang tidak dapat dihindari lagi.
Terdapat berbagai macam serangan terhadap jaringan komputer, diantaranya adalah Buffer Overflow dan Denial of Service.
Buffer overflow  memiliki arti suatu keadaan di mana data yang diisikan ke suatu buffer mempunyai ukuran yang lebih besar dari dibandingkan ukuran buffer  itu sendiri. Buffer overflow  merupakan penyebab  dari 50% semua bug keamanan yang dilaporkan dan dijadikan advisori oleh CERT/CC. Buffer overflow merupakan sebuah kelemahan yang mudah untuk ditemukan dan dimanfaatkan oleh penyerang  dalam sebuah sistem.
Denial of Service Attack lebih dikenal dengan istilah DoS attack, merupakan serangan ini dilakukan untuk tujuan mematikan salah satu atau semua layanan yang ada pada suatu sistem tanpa permisi dari penguasa sistem. Sistem yang diserang dapat berakibat fatal yaitu menurunnya kinerja sebuah web, sehingga server korban akan kuwalahan melayani request yang datang berulang-ulang, yang berakhir dengan terhentinya server tersebut.
Beberapa langkah mengatasi serangan buffer overflow adalah sebagai berikut.
v  Memvalidasi Data.
v  Buffer Non-Executable.
v  Array Bounds Checking.
v  Code Pointer Integrity Checking.
v  Memeriksa Index.
         Adapun cara pencegahan  dari serangan Denial Of Service adalah sebagai berikut.
Ø  Melakukan aturan quota pada user-user yang ada pada sistem seningga ada pembatasan jumlah file dan besar ruang yang dimiliki oleh user-user tersebut.
Ø  Melakukan pembatasan banyaknya proses yang bisa dibuat oleh uses sehingga file-file temporry (sementara) yang dibuat oleh proses tersebut akan terbatas juga

DEFINISI MANAJEMEN OLEH EXCEPTION


I.     Pendahuluan        
         Indonesia ternyata tidak hanya dikategorikan sebagai salah satu negara terkorup di dunia. Dalam soal kejahatan dunia maya (cyber crime), Indonesia juga menempati peringkat teratas. Ironisnya, dari segi penetrasi internet, Indonesia termasuk kategori terendah.
         Berdasarkan laporan Federal Bureau of Investigation (FBI)- organisasi intelijen resmi Amerika Serikat, Indonesia hanya kalah dari Ukraina dalam soal kejahatan dunia maya.
         Ada dua modus kejahatan dunia maya yang paling sering dilakukan adalah  carding atau memalsukan nomor kartu kredit orang lain untuk mendatangkan berbagai produk komersial yang diperjual belikan lewat internet. Modus ke dua adalah cracking atau merusak/mengacaukan jaringan komputer pihak lain.  
         Menurut Pusat Koordinasi CERT® yang mulai beroperasi tahun 1988, jumlah peristiwa keamanan yang dilaporkan telah meningkat secara dramatis. Tahun 1988 trerjadi serangan kurang dari 100, tetapi meningkat hampir 2,500 insiden di tahun 1995. Peningkatan serangan sepanjang tahun 1994 sejalan dengan pertumbuhan internet selama kurun waktu tersebut. Pada  Gambar 1 menunjukkan grafik hubungan pertumbuhan Internet dan peningkatan laporan insidenn keamanan internet. Data untuk tahun 1995 dan data parsial tahun  1996 menunjukkan melambatnya tingkat insiden yang dilaporkan ke CERT/CC, hal ini dimungkinkan adanya usaha meningkatkan keamanan pada situs-situs atau peningkatan secara signifikan dari response team untuk menangani insiden-insiden yang terjadi. Namun demikian, banyaknya insiden yang terjadi terus meningkat khususnya peristiwa-peristiwa serius, seperti  root compromises, service outages dan packet sniffers.



 










Gambar 1 Grafik pertumbuhan Serangan Keamanan
Selama akhir tahun 1980 dan awal tahun 1990, gangguan yang terjadi umumnya secara terang-terangan. Pengganggu paling sering memanfaatkan kelemahan yang relatif sederhana, seperti lemahnya sistem password dan kesalahan sistem konfigurasi, sehingga terjadi akses yang lebih besar terhadap sistem secara tidak disengaja. Sekali penyusup dapat mengeksploitasi  kelemahan suatu sistem, maka akan dengan mudah mereka menggunakan sistem tersebut sesuai keinginannya.
Pembuat software biasanya memasarkan produknya dengan setting yang mudah ditembus atau di susup keamanannya. Mengamankan sistem bukanlah suatu hal yang sederhana, dan kebanyakan administrator sistem tidak banyak memiliki waktu, keahlian dan alat-alat bantu untuk memonitor sistem mereka secara baik dari serangan-serangan atau penyusupan.
Selama delapan tahun terakhir, penyusup menggunakan teknik dan pengetahuan yang semakin meningkat untuk melakukan penyusupan, mengeskploitasi kelemahan sistem dan membuat perangkat lunak guna menyerang sistem secara otomatis. Pada waktu yang sama, penyusup yang memiliki kemampuan yang rendah akan leluasa dan makin efektif melakukan penyusupan, disebabkan penyusup yang berpengalaman membagikan pengetahuannya kepada penyusup dengan pengetahuan yang rendah.  
Data/ informasi di era informasi seperti sekarang ini, sudah menjadi suatu aset yang sangat berharga. Bahkan bisa dikatakan sangat fital sehingga kebocoran, kehilangan ataupun kerusakan terhadap data/informasi dari suatu organisasi dapat mengancam kelangsungan hidup orgabisasi yang bersangkutan. Mengingat begitu berharganya suatu data/informasi maka tidaklah heran jika bermunculan beberapa pihak yang tidak bertanggung jawab yang berusaha mencuri maupun mengubah dan merusak data/informasi dari sistem komputer milik suatu organisasi tertentu.
Ketika sebuah komputer terhubung ke dalam sebuah jaringan komputer baik secara lokal ataupun ke dunia melewati internet, maka yang harus diperhatikan adalah keamanan dari komputer server tersebut. Selain komputer server tersebut tidak boleh luput dari perhatian keamanan dari komputer-komputer lain yang juga terhubung dengan komputer server tadi.
            Namun yang akan dibahas disini adalah gangguan apa saja yang dapat terjadi pada sebuah komputer server apabila terhubung dalam sebuah jaringan atau internet, Kebanyakan orang berfikir bahwa gangguan keamanan yang mungkin terjadi adalah disebabkan oleh hacker dari luar. Dalam bahasan tentang keamanan sistem perlu diperhatikan semua sebab yang mungkin menjadi faktor gangguan keamanan itu terjadi. Sebagai contoh adalah seorang penyusup yang mempunyai dendam, ketidak sengajaan seorang pegawai, bug pada sistem operasi dan aplikasi di dalamnya atau kesalahan dalam konfigurasi.
            Berikut ini akan dipaparkan gangguan keamanan yang berpengaruh bagi keamanan pada komputer server.

II.      Tinjauan Buffer Overflow Dan Denial Of Service
1.           Eksploitasi Buffer Overflow
Dari sekian banyak penyebab masalah keamanan pada komputer, baik yang bersifat lokal maupun jaringan, buffer overflow termasuk salah satu penyebab yang paling banyak dilakukan. Menurut laporan CERT/CC, buffer overflow  merupakan penyebab  dari 50% semua bug keamanan yang dilaporkan dan dijadikan advisori oleh CERT/CC. Lebih jauh lagi, riset yang dilakukan oleh Crispin Cowan dan kawan-kawan, menganggap buffer overflow sebagai vulnerability of the Decade.
Buffer overflow merupakan sebuah kelemahan yang mudah untuk ditemukan dan dimanfaatkan oleh penyerang  dalam sebuah sistem. Aplikasi dan Operating System (OS) menyimpan untuk sementara perintah yang mereka dapat di memori tertentu yang biasa disebut buffer memory. Kalau OS atau program tidak bisa dikode secara sempurna maka penyerang bisa membuat komputer korban jadi terganggu dengan mengirimkan perintah yang dibuat khusus,  membuat gangguan jadi berlangsung lebih lama. Windows 95 paling rentan kalau sudah berhadapan dengan serangan seperti “buffer overflow” yang banyak dilancarkan lewat internet ini. Saat ini serangan serupa sudah jarang dilancarkan pada sebuah komputer. Namun terkadang penyerang masih sering melakukannya untuk memperlambat kinerja sebuah situs.

a.                  Deskripsi Buffer Overflow
      Untuk mengetahui apakah sebenarnya buffer overflow dan bagaimana cara kerja untuk mengekploitasinya, maka diperlukan pemahaman tentang cara kerja sistem processor di level bawah, seperti pemrograman assembly, manajemen memory text, stack, data dan sebagainya. Selain itu bagi pengguna sistem operasi Linux, pengalaman program debug gdb akan sangat membantu.
            Berikut ini istilah-istilah dasar untuk memahami penjelasan berikut mengenai buffer overflow.




a.1    Manajemen memori pada proses
         Sebuah proses jika dilihat dari sudut manajemen memori, dapat dibedakan menjadi tiga bagian .
·         Text, memuat instruksi kode program. Bagian ini biasanya hanya bisa dibaca dan setiap usaha untuk menuliskan data ke bagian ini akan menyebabkan kesalahan segmentation violation.
·         Data,  memuat data, baik yang telah diinisialisasikan maupun yang belum. Selain dapat dibaca, biasanya bagian ini juga dimanipulasi suatu instruksi untuk melakukan penulisan padanya.
·         Stack, yang dapat dialokasikansecara dinamis, biasanya dimanfaatkan untuk menyimpan variabel lokal maupun untuk melewatkan parameter fungsi. Pengaksesan data kebagian ini menggunakan metode yang disebut LIFO (Last In First Out) seperti yang nanti akan diterangkan secara lebih rinci. Jenis data yang juga patut diketahui adalah sebagai buffer yang pada bahasa C diimplementasikan sebagai array. Array dapat dibedakan ke dalam dua jenis berdasarkan metode pengalokasiannya, yaitu array statis dan array dinamis.  Array statis dialokasikan dibagian data saat program dimuat ke memory, sedangkan array dinamis dialokasikan di dalam stacj saat run time.

a.2    Stack
         Stack dapat dibayangkan sebagai sebuah blok dan memori yang dapat memuat data secara dinamis. Beberapa hal yang patut diketahui pada processor Intel sehubungan dengan stack adalah sebagai berikut.
q  Penggunaan metode Big Endian dalam mengorganisasikan sistem memori. Disini MSB (Most Significant Bit) terletak pada alamat memori yang lebih kecil dibandingkan LSB (Low Significant Bit).
q  Penambahan besar stack dilakukan ke arah alamat memori yang lebih kecil. Disini posisi bawah dari stack mempunyai alamat yang tetap. Posisi atas stack yang alamat memorinya lebih kecil dari posisi bawah selalu berubah.
q  Register stack pointer (SP) selalu menunjuk keposisi atas dari stack.
q  Untuk memindahkan data ke stack digunakan instruksi PUSH yang secara otomatis akan menurunkan nilai SP sebesar 4 byte. Sedangkan untuk mengambil data dari stack digunakan instruksi POP yang secara otomatis juga akan menaikkan nilai SP sebesar 4 byte.
         Gambar 2 di bawah memperlihatkan diagram dari sebuah stack pada prosessor Intel.


 













Gambar 2 Stack Pada Memori
         Blok memori dari stack ini biasanya dibagi lagi menjadi apa yang disebut dengan register stack frame. Setiap register stack frame  berisi data yang berhubungan dengan pemanggilan suatu fungsi. Biasanya posisi awal dari frame ini ditunjukkan oleh frame pointer (FT).
         Dengan bantuan FP ini, maka pengaksesan ke variabel lokal maupun parameter fungsi dapat dilakukan menggunakan sistem pengalamatanm relatif. Pada CPU Intel, register EBP berfungsi sebagai frame pointer.
         Setelah bahasan di atas, sekarang akan dijelaskan pengertian buffer overflow. Buffer overflow  memiliki arti suatu keadaan di mana data yang diisikan ke suatu buffer mempunyai ukuran yang lebih besar dari dibandingkan ukuran buffer  itu sendiri. Untuk lebih memahami buffer overflow,  mungkin dapat kita temukan padanannya dalam kehidupan sehari-hari, yaitu saat ember diisi  dengan air, sehingga air yang dituangkan sampai meluap ( overflow).
         Sedangkan pada eksploitasi buffer overflow, secara prinsip ada dua hal penting yang harus dilakukan dalam proses eksploitasi buffer overflow, yaitu sebagai berikut.
1.            Pertama harus membuat instruksi yang kita kehendaki agar dijalankan setelah buffer ter overflow. Instruksi ini biasanya berupa kode assembly ini harus dikonversi ke data heksadesimal.
2.            Kedua, harus memperhitungkan alamat posisi RET dalam stack dan alamat kode instruksi tersebut. Kemudian alamat kode instruksi ini harus dimasukkan ke dalam nilai RET, sehingga jika buffer ter overflow instruksi tersebut dijalankan .

a.            Bahaya Buffer Overflow
Dari deskripsi di atas dapat disimpulkan bahaya yang bisa ditimbulkan oleh eksploitasi buffer overflow adalah sebagai berikut.
b.1    Pemanipulasian dan pengrusakan data stack dimemori sehingga suatu program yang memerlukan data tersebut akan mengalami gangguan dalam prosesnya.
b.2    apabila suatu program atau aplikasi dijalankan maka instruksi-insruksi dari program tersebut akan disimpan dalam memori. Dengan memanfaatkan eksploitasi buffer overflow seorang pengganggu dapat memanipulasi instruksi-instruksi pada memori dengan instruksi yang diinginkannya.

c.      Contoh Eksploitasi Buffer Overflow
Berikut adalah contoh program yang ditulis dengan bahasa C yang mengandung buffer overflow.



        





         Program di atas apabila dikompilasi dan dijalankan pada sistem operasi Linux akan didapatkan pesan segmentation violation. Hal ini disebabkan pada fungsi fungsi() bariabel array buffer didefinisikan hanya berukuran 4 byte, sedangkan data yang disalinkan kepadanya berukuran 17 byte.
         Contoh lain dapat dilihat pada program di bawah ini.











         Program di atas merupakan program kecil untuk memodifikasi nilai RET (return address) sehingga instruksi yang seharusnya dikerjakan setelah pemanggilan suatu fungsi akan dilompati. Seharusnya karena nilai a terakhir di isi dengan nilai 2, tapi pada program di atas instruksi a=2 yang seharusnya dikerjakan setelah kembali dari fungsi akan dilompati. Sehingga nilai dari a yang dikeluarkan pada layar adalah 1.

d.      Cara Penanggulangan
         Berikut adalah tindakan yang bisa dilakukan untuk menghindari terjadinya eksploitasi buffer overflow. Dari sisi seorang pemrogram.

d.1    Memvalidasi Data
         Sebuah program yang berjalan dengan privilge tinggi, mengharuskan untuk melindungi semua data dan harus menganggap semua data yang masuk patut dicurigai.
         Perhatikan contoh potongan program berikut.
        


         Kode di atas berbahaya karena array nama tidak dibatasi besarnya. Solusi yang lebih baik adalah sebagai berikut.
        
         Yang membatasi string nama yang dimaksukkan sebesar 255 karakter.
         Selain memeriksa ukuran input yang dimasukkan, program juga harus memeriksa bahwa data yang dimasukkan adalah data yang valid. Misalnya, jika program meminta input berupa tipe data interger, maka program harus memastikan bahwa input yang diberikan  oleh user benar-benar bertipe integer, bukan tipe lainnya.

                  Konsepnya adalah membuat segment data sebuah program tidak dapat dieksekusi. Dengan menjadikannya tidak dapat dieksekusi, maka tidaklah mungkin bagi penyerang untuk mengeksekusi kode yang mereka masukkan ke buffer input  program korban.
         Cara ini digunakan pada sistem operasi komputer lama, tetapi pada sistem operasi UNIX dan MS Windowsteknik ini tidak digunakan, karena keduanya tergantung pada kemampuan memasukkan kode dinamis ke dalam segment data program untuk mendukung berbagai optimisasi kinerja.

d.3    Array Bounds Checking
                  Meskipun memasukkan kode adalah sebuah tindakan pilihan bagi serangan buffer overflow, pengkorupsian aliran kendali merupakan hal yang penting. Dengan menggunakan metode array bound checking akan menghentikan vunerability dan serangan buffer overflow.Jika sebuah array tidak dapat di-overflow, maka array tidak dapat digunakan untuk mengkorupsi program yang terletak di alamat memori berikutnya. Untuk mengimplementasikan metode ini, semua pembacaan dan penulisan ke array yang harus diperiksa untuk memastikan bahwa mereka tidak melampaui batasan array.



 d.4   Code Pointer Integrity Checking
                  Tujuan dar metode ini agak berbeda dengan bounds cheking. Alih-alih berusaha mencegah korupsi kode pointer, ia berusaha mendeteksi bahwa sebuah kode pointer telah terkorupsi sebelum ia dideferensikan. Jadi meskipun penyerang sukses dalam mengkorupsi kode pointer, kode pointer yang terkorupsi tidak akan digunakan karena korupsi terdeteksi setiap saat sebelum digunakan.

d.5    Memeriksa Index
                  Indeks yang digunakan untuk memanipulasi sebuah array harus diperiksa dengan teliti. Perhatikan contoh kode di bawah ini.
        



2.    Denial Of Service Attack
.        Sumber daya jaringan yang sangat berharga antara lain komputer, database dan layanan-layanan lain yang disediakan oleh jasa jaringan. Jaringan ini sangat dibutuhkan oleh user dikarenakan layanan-layanan tersebut memudahkan pekerjaan sehingga pekerjaan tersebut lebih efisien. Bila layanan ini rusak atau tidak dapat bekerja, maka akan menyebabkan hilangnya produktifitas. Hal-hal yang menyebabkan jaringan tidak bekerja dapat berupa apa saja termasuk worm yang seringkali melumpuhkan sejumlah besar komputer di dunia.
         Penyebab denial of service diantaranya adalah sebagai berikut.
ü  Kemungkinan jaringan menjadi tidak befungsi disebabkan kebanjiran jalur lalu lintas.
ü  Kemungkinan jaringan dipartisi dengan cara membuat komponen jaringan seperti router ang menjadi penghubung jaringan tidak berfungsi.
ü  Kemungkinan ada virus yang menyebar dan menyebabkan sistem komputer menjadi lambat atau bahkan lumpuh.
ü  Kemungkinan device yang melindungi jaringan dirusakkan.

Penggunaan sumber daya yang illegal dapat pula mengakibatkan denial of service . Sebagai contoh, suatu penyerang dapat menggunakan wilayah ftp area tak bertuan sebagai tempat untuk menyimpan salinan yang tidak sah suatu perangkat lunak komersil, memanfaatkan ruang disk dan memadatkan lalu lintas jaringan.
a.      Deskripsi
Denial of Service Attack lebih dikenal dengan istilah DoS attack. Serangan ini dilakukan untuk tujuan mematikan salah satu atau semua layanan yang ada pada suatu sistem tanpa permisi dari penguasa sistem.
Denial-of-service attack  merupakan sebuah upaya serangan dengan jalan menurunkan kinerja sebuah web site dengan terus menerus mengulang request ke server dari banyak sumber secara simultan. Tujuan serangan seperti ini berakibat server korban jadi kewalahan melayani request yang terkirim dan berakhir dengan menghentikan aktivitas atau berhenti dengan sendirinya karena tak mampu melayani request. Kadang serangan yang dilakukan dengan cara ini dapat merusak atau mematikan sistem secara keseluruhan.
Denial-of-service merupakan  serangan dengan ditandai oleh suatu usaha yang eksplisit dari penyerang untuk mencegah para pemakai yang sah menggunakan jasa pelayanan jaringan. Contohnya meliputi :
Ø  mencoba untuk membanjiri suatu jaringan, dengan demikian menghambat lalu lintas jaringan yang ada,
Ø  mencoba untuk mengganggu koneksi antar komputer, sehingga jasa pelayanan menjadi terhambat,
Ø  mencoba untuk mencegah individu tertentu  untuk mengakses suatu layanan,
Ø  mencoba untuk mengganggu pelayanan seseorang  atau suatu sistem yang spesifik.

         Jenis serangan lainnya dapat meliputi denial of service sebagai komponen, tetapi denial of service  dapat berupa bagian dari serangan yang lebih besar.
          Penggunaan sumber daya yang illegal dapat pula mengakibatkan denial of service . Sebagai contoh, suatu penyerang dapat menggunakan wilayah ftp area tak bertuan sebagai tempat untuk menyimpan mencuri data suatu perangkat lunak komersil, memanfaatkan ruang disk dan memadatkan lalu lintas jaringan.



b.      Target dan Bahaya Denial of Service Attack
         Serangan Denial-Of-Service utamanya bertujuan  melumpuhkan komputer atau jaringan. Tergantung pada sifat alami perusahaan, hal ini yang secara efektif melumpuhkan organisasi..
         Beberapa serangan denial-of-service dapat dieksekusi dengan sumber daya terbatas melawan terhadap suatu situsbesar yang canggih . Serangan jenis ini   kadang-kadang disebut/dipanggil suatu " serangan tidak simetris (asymmetric attack)." Sebagai contoh, suatu penyerang dengan sebuah PC tua dan sebuah modem yang lambat mungkin mampu melumpuhkan banyak jaringan atau mesin yang lebih canggih dan lebih cepat.
Serangan Denial-Of-Service terdiri dari  berbagai bentuk dan jenis layanan. Ada tiga jenis dasar  serangan yaitu :

ü  penggunaan hal yang langka, terbatas, atau sumber daya  tidak dapat diperbarui,
ü  perusakan atau perubahan konfigurasi informasi,
ü  perusakan secara fisik atau perubahan komponen-komponen jaringan.

 b.1      Penggunaan Sumber daya Langka

Komputer Dan Jaringan memerlukan berbagai hal tertentu untuk beroperasi: bandwith jaringan, memori dan ruang penyimpan, CPU time, struktur data, mengakses ke komputer dan jaringan lainnya, dan sumber daya lingkungan tertentu seperti power, pendingin udara, atau bahkan air.
b.1.1    Jaringan Terhubung
         Serangan Denial-Of-Service yang paling sering dilakukan yaitu menyerang hubungan komunikasi antara server dan client. Tujuannya adalah untuk mencegah host atau jaringan saling berkomunikasi. Suatu contoh serangan jenis ini  adalah " SYN Flood" membanjiri dengan request. Untuk lebih jelasnya dapat dilihat pada situs berikut. {terdapat juga pada Lampiran 1)
         Pada serangan jenis ini, penyerang memulainya dengan proses menetapkan suatu koneksi kepada mesin korban. Meskipun demikian maksud penyerang sebenarnya akan menghambat komputer korban berkomunikasi dengan komputer lain. .Pada saat komputer korban memesan sejumlah struktur data yang diperlukan. Setelah proses permintaan selesai, komputer korban menyudahi koneksi. Hasilnya adalah bahwa koneksi yang sah ditolak pada saat komputer korban sedang menanti untuk melengkapi koneksi.
         Perlu dicatat bahwa serangan jenis ini  tidak tergantung pada penyerang tersebut  memakai besarnya bandwidth jaringan. Dalam hal ini, pengganggu sedang menggunakan  kernel struktur data dengan melibatkan suatu koneksi jaringan. Akibatnya  adalah bahwa pengganggu dapat melaksanakan penyerangan dari suatu dial-up koneksi menyerang  suatu mesin  jaringan sdengan sangat cepat. ( Ini adalah suatu contoh yang baik dari suatu serangan asymetric.)



            Pengganggu dapat juga menggunakan sumber daya milik kita melawan kita sendiri dengan cara yang tak diduga. Satu contoh diuraikan pada web berikut ini. (Dapat pula dilihat pada Lampiran 2).
            Penyerang menggunakan paket UDP untuk menghubungkan getaran pelayanan  pada suatu mesin ke mesin lain. Hasilnya adalah dua penguna yang mengkonsumsi semua bandwidth yang tersedia. Sehingga koneksitas jaringan untuk semua komputer pada jaringan yang sama akan saling mempengaruhi utamanya pada komputer target.

            Seorang penyerang dapat memakan semua bandwidth yang tersedia pada  jaringan dengan mengirimkan  sejumlah besar paket yang langsung diarahkan pada jaringan tersebut. Secara khusus, paket ini adalah paket ICMP ECHO, tetapi pada prinsipnya mereka dapat berupa apapun. Lebih lanjut, pengganggu tidak perlu beroperasi dari sebuah komputer; bisa jadi ia bekerja dari beberapa komputer yang beroperasi dijaringan yang berbeda dengan efek yang sama

b.1.4.   Konsumsi Resource Yang Lain
            Penyerang  dapat pula  memnfaatkan  sumber daya lain dalam jaringan untuk menyerang. Sebagai contoh, dalam beberapa sistem, terdapat struktur data berupa proses informasi seperti proses identifikasi, proses masukan data dan sebagainya.Seorang penyerang dengan menggunakan hanya beberapa perintah singkat dapat menyalin catatatan-catatan tersebu berulang-ulangt.  Banyak sistem operasi modern mempunyai fasilitas kuota untuk melindungi dari masalah ini, tetapi tidak semua dilakukan.
 Penyerang dapat pula untuk menggunakan  ruang disk dengan  cara-cara lain, seperti.
q     Meningkatkan  jumlah pesan mail secara  berlebihan (email Bombing). Untuk informasi lebih jauh dapat dilihat.pada site berikut. (dapat pula dilihat pada Lampiran 3).
q  dengan sengaja meningkatkan kesalahan yang harus dicatatm
q     menempatkan file pada wilayah  ftp tanpa nama dalam jaringan atau pada jaringan bersama, Untuk informasi bentuk wujud ftp tanpa nama, dapat dilihat pada site berikut atau pada Lampiran 4.
         Secara umum, apapun yang mengijinkan data untuk ditulis ke disk dapat digunakan untuk melaksanakan suatu serangan denial-of-service jika tidak ada batas berapa  jumlah data yang dapat ditulis.
         Juga, banyak situs merancang  menempatkan  "lockout" suatu account setelah sejumlah login gagal dicoba. Suatu kunci dapat dipasang 3 sampai 5 kali login, jika gagal user tidak diperkenankan lagi bekerja. Seorang penyerang mungkin mampu menggunakan rancangan ini untuk mencegah para pemakai yang sah untuk masuk. Dalam beberapa kasusl, bahkan account yang diistimewakan, seperti administrator, dapat dijadikan subyek serangan jenis ini. Pastikan kita  mempunyai suatu metoda untuk memperoleh akses ke sistem bila terjadi keadaan darurat. Konsultasikan pada penjual sistem operasi atau baca manual sistem operasi secara cermat untuk fasilitas larangan bekerja dan masukan dalam keadaan darurat.
         Seorangpenyerang  dapat) menyebabkan sistem hancur atau menjadi tidak stabil dengan pengiriman data tak diduga (tas jaringan]. Sebagai  contoh tentang serangan seperti diuraikan diatas dapat dilihat pada web berikut (dapat dilihat pula pada Lampiran 5)..
Jika sistem  yang sedang berjalan mengalami kerusakan  dengan tidak ada penyebabnya yang jelas, bisa jadi itu adalah hasil serangan jenis ini .
 Ada berbagai hal lain yang mungkin peka terhadap denial of service, meliputi :
§  alat pencetak,
§  peralatan tape,
§  network connections,
§  Resources yang penting dalam operasi organisasi.
b.2.   Perusakan atau Mengubah Konfigurasi Informasi
Sebuah komputer yang kurang bak untuk dioperasikan sebaiknya tidak dioperasikan sama sekali. Seorangpenyerang dapat mengubah atau menghancurkan konfigurasi informasi dan menghambat dari penggunaan jaringan atau komputer.
Sebagai contoh, jika perusak  dapat merubah informasi routing pada router, jaringan menjadi lumpuh (disabled). Jika penyerang dapat memodifikasi registry pada komputer Windows NT, berakibat fungsi tertentu menjadi hilang (unvailable).
 Untuk informasi tentang configurasi UNIX dapat dilihat pada web berikut atau pada Lampiran 6 :
Untuk informasi tentang configurasi Microsoft Windows NT dapat dilihat pada: http://www.microsoft.com/security/

         Perhatian yang utama dengan  jenis serangan ini adalah keamanan secara fisik. Perlu menjaga komputer dari akses yang tidak bertanggung jawab seperti, router, wiring closet, jaringan backbone, power dan stasiun pendingin, dan komponen lain yang peka pada jaringan.
         Keamanan secara fisik merupakan suatu komponen yang penting untuk dijaga dari jenis serangan denial of service. Untuk informasi keamanan terhadap komponen fisik ini, disarankan untuk berkonsultasi  terhadap perusahaan keamanan jaringan.
           
c.      Pencegahan dan Penanggulangan
Serangan denial of service dapat mengakibatkan hilangnya waktu berharga dan biaya suatu organisasi. Serangan ini dapat dipertimbangkan untuk ditanggulangi bila tidak ingin menghadapi resiko yang lebih besar.
Beberapa pertimbangn berikut dapat diikuti sebagai saran mengatasi serangan denial of service.
ü   Menerapkan router filters untuk mengurangi ekspose  denial-of-service.
ü      Instal program guard untuk menjaga dari membanjirnya e-mail yang tidak dikehendaki. Pada hakekatnya cara ini dapat mengurangi serangan  denial of service.
ü      Buang beberapa servis jaringan yang tidak diperlukan atau tak terpakai. Hal ini dapat membatasi kemampuan penyerang untuk mengambil keuntungan dari semua servis itu  guna melaksanakan suatu serangan denial-of-service.
ü      Buatlah sistem kuota pada  sistem operasi jika layanan tersebut tersedia. Sebagai contoh, jika sistem operasi mendukung kuota penyimpanan, memungkinkan  untuk mengijinkan pemakaian jaringan, khususnya account yang diijiinkan mengoperasikan jaringan. Sebagai tambahan, jika sistem operasi  mendukung partisi atau volume ( yaitu., sistem file secara terpisah dengan atribut mandiri) dapat dipertimbangkan mempartisi sistem file supaya dipisahkan antara fungsi yang peka  dari  aktivitas lainnya.
ü      Amati terus kegiatan sistem dan tetapkan batas-batas untuk aktivitas biasa. Gunakan batasan untuk mengukur tingkatan aktivitas disk yang tidak lazim, pemakaian CPU, atau lalu lintas jaringan.
ü      Secara rutin menguji keamanan fisik komputer berkenaan dengan kebutuhan saat ini. Pertimbangkan server, router, terminal tanpa kendali, jaringan acces point, wire closet, sistem lingkungan seperti udara dan power, dan komponen lain dari sistem.
ü      Gunakan Tripwire atau suatu alat serupa untuk mendeteksi perubahan konfigurasi informasi atau file lainnya. Untuk  informasi lebih lanjut , lihat pd web berikut atau Lampiran 7
ü      Menyiapkan modal untuk penggantian perangkat dan pemeliharaan mesin yang dapat dioperasikan sewaktu-waktu bila ada komputer yang mengalami serangan.
ü      Secara reguler ditetapkan jadual pemeliharaan  dan backup data terutama informasi-informasi yang penting.
ü      Tentukan kebijakan  pembaharuan kata sandi yang sesuai dan memperbaiki sandi secara reguler terutama bagi account yang khusus seperti administrator.

                 
d.      Target dan bahaya Denial of Service pada Linux
                        Pada sistem operasi Linux banyak target yang bisa digunakan untuk tujuan mematikan service pada sistem atau sistem secara keseluruhan. Berikut adalah target yang dapat digunakan sasaran serangan.

d.1    Ruang Swap
         Ruang swap pada sistem operasi Linux  biasanya digunakan sebagai Ivirtual memory. Ruang ini akan menyimpan file-file sementara yang biasa digunakan pada saat suatu program dijalankan.
         Dengan cara menghabiskan ruang kosong pada swap akan ada program-program yang tidak dapat dijalankan karena tidak adanya ruang untuk menampung file-file sementara dari aplikasi tersebut.
         Selain hal tersebut gangguan yang lain adalah matinya  service-service yang ada pada sistemdan tidak dapat dipenuhinya request dari user karena penuhnya ruang swap ini.

d.2    Bandwidth
         Target lain dari serangan DoS adalah dengan cara memenuhi bandwidth yang tersedia hingga komunikasi pada jaringan menjadi berat atau mati.

d.3    Tabel Kernel
         Alokasi memory pada kernel merupakan salah satu target yang dapat digunakan sasaran serangn. Kernel mempunyai batas pada kernel map, jika sistem telah mencapai batasnya dan tidak bisa memakai memori kernel lagi maka yang harus dilakukan adalah me-reboot sistem. Memori kernel tidak hanya digunakan oleh RAM dan CPU saja , tapi juga digunakan oleh proses biasa. Sehingga dengan pemakaian proses yang terlalu banyak akan menyebabkan sistem harus di reboot.

d.4    RAM (Random Access Memory)
          Penggunaan sejumlah besar RAM akan menyebabkan masalah pada sistem. Penggunaan RAM yang berlebihan pada sistem tentnya akan menyebabkan sistem bekerja berat dan untuk menguranginya, sistem dengan sendirinya akan mematikan layanan atau aplikasi yang tidakdiprioritaskan.

d.5    Inetd
         Inetd adalah daemon pada sistem operasi Linux yang gunanya untuk menghidupkan service-service lain seperti telnetd, ftp atau service untuk mail server. Dengan mematikan inetd tentunya akan banyak service yang akan mati.

e.      Cara Penanggulangan
         Untuk menghindari sistem dari keadaan di atas yang bisa dilakukan adalah sebagai berikut.
Ø   Melakukan aturan quota pada user-user yang ada pada sistem seningga ada pembatasan jumlah file dan besar ruang yang dimiliki oleh user-user tersebut.
Ø   Melakukan pembatasan banyaknya proses yang bisa dibuat oleh uses sehingga file-file temporry (sementara) yang dibuat oleh proses tersebut akan terbatas juga.


IV.  PENUTUP

Data/Informasi sangat penting artinya bagi suatu organisasi dewasa ini. Kadang kala Informasi merupakan aset yang sangat fital, sehingga kerusakan, kehilangan dan kebocoran suatu informasi merupakan malapetaka bagi suatu organisasi.
Mengingat data/informasi berlalu lalang di jaringan  komputer, maka sangat dimungkinkan informasi tersebut disadap, didengar bahkan dicuri orang-orang yang tidak bertanggung jawab. Kadang-kadang tanpa sengaja informasi menjadi hilang atau bahkan diberikan kepada orang yang tidak berhak.
Dari tahun ke tahun pemakaian jaringan komputer semakin meningkat, sehingga semakin banyak serangan terhadap jaringan komputer. Hal demikian mengakibatkan keamanan jaringan merupakan salah satu perhatian  yang tidak dapat dihindari lagi.
Terdapat berbagai macam serangan terhadap jaringan komputer, diantaranya adalah Buffer Overflow dan Denial of Service.
Buffer overflow  memiliki arti suatu keadaan di mana data yang diisikan ke suatu buffer mempunyai ukuran yang lebih besar dari dibandingkan ukuran buffer  itu sendiri. Buffer overflow  merupakan penyebab  dari 50% semua bug keamanan yang dilaporkan dan dijadikan advisori oleh CERT/CC. Buffer overflow merupakan sebuah kelemahan yang mudah untuk ditemukan dan dimanfaatkan oleh penyerang  dalam sebuah sistem.
Denial of Service Attack lebih dikenal dengan istilah DoS attack, merupakan serangan ini dilakukan untuk tujuan mematikan salah satu atau semua layanan yang ada pada suatu sistem tanpa permisi dari penguasa sistem. Sistem yang diserang dapat berakibat fatal yaitu menurunnya kinerja sebuah web, sehingga server korban akan kuwalahan melayani request yang datang berulang-ulang, yang berakhir dengan terhentinya server tersebut.
Beberapa langkah mengatasi serangan buffer overflow adalah sebagai berikut.
v  Memvalidasi Data.
v  Buffer Non-Executable.
v  Array Bounds Checking.
v  Code Pointer Integrity Checking.
v  Memeriksa Index.
         Adapun cara pencegahan  dari serangan Denial Of Service adalah sebagai berikut.
Ø  Melakukan aturan quota pada user-user yang ada pada sistem seningga ada pembatasan jumlah file dan besar ruang yang dimiliki oleh user-user tersebut.
Ø  Melakukan pembatasan banyaknya proses yang bisa dibuat oleh uses sehingga file-file temporry (sementara) yang dibuat oleh proses tersebut akan terbatas juga