Jumat, 18 Juni 2010

Implementasi Parallel Processing pada Ray Tracing Engine menggunakan POV-Ray berbasis MPI

Tujuan dari pekerjaan ini adalah mengimplementasikan parallel processing pada versi asli
program ray tracing yang terkenal yaitu POV -Ray. Parallel processing pada algoritma ini
melibatkan beberapa masalah yang biasa timbul pada komputasi parallel. Proses ray tracing
sangat kompleks dan membutuhkan komputasi yang tinggi, untuk citra yang sangat kompleks
dibutuhkan waktu berjam-jam bahkan berhari-hari untuk merender suatu kode POV-Ray.
Maka dari itu kebutuhan untuk menaikkan kecepatan dari proses ini diwujudkan dalam
implementasi parallel processing.

POV-Ray
POV-Ray (Persistence Of Vision Raytracer - www.povray.org) adalah rendering engine 3
dimensi . Program ini menterjemahkan informasi dari file teks eksternal, mensimulasikan
suatu cahaya yang berinteraksi dengan obyek dalam suatu scene untuk menghasilkan obyek 3
dimensi yang nyata.
Berawal dari file teks yang berisi deskripsi dari scene (objects, lights, point o f view), programini dapat merender citra yang diinginkan. Algoritmanya bekerja baris demi baris.
Fasilitas yang menarik dari POV-Ray ini adalah antialiasing. Antialiasing adalah teknik yang
membantu untuk membuang sampling error, yang dapat menghasilkan c itra lebih baik.
Dengan menggunakan antialiasing, POV-Ray memulai tracing a ray untuk setiap pixel. Jika
warna dari pixel berbeda dengan warna pixel tetangganya (pixel yang ada di sebelah kiri dan
di atas), kemudian dari jumlahnya lebih besar dari nilai th reshold, maka pixel tersebut adalah
supersampled tracing a fixed number of additional rays. Teknik ini disebut supersampling dan
dapat meningkatkan kualitas akhir dari sebuah citra namun itu juga meningkatkan waktu
rendering menjadi lebih lama. Setelah men guraikan data input, POV-Ray menguraikan semua
pixel dari citra untuk proses render, melalui horizontal scan dari setiap baris dari kiri ke
kanan. Setelah selesai penguraian dari suatu baris maka akan ditulis dalam sebuah file atau
ditampilkan pada layar lalu memperhitungkan baris berikutnya sampai pada yang terakhir.

MPI

The Message Passing Model

Message Passing Interface (MPI) merupakan implementasi standar dari model “message
passing” komputasi parallel.
Sebuah komputasi parallel terdiri dari sejumlah proses, dimana masing -masing bekerja pada
beberapa data lokal. Setiap prsoses mempunyai variabel lokal, dan tidak ada mekanisme suatu
proses yang bisa mengakses secara langsung memori yang lain.
Sharing data antar proses-proses dilakukan dengan message passing., yaitu dengan mengirim
dan menerima message antar proses -proses. Alasan menggunakan model ini sudah sangat
umum. Dan tipe komputasi parallel dapat dibuat dalam bentuk message passing. Model ini
juga dapat diimplementasikan pada bermacam-macam platform, seperti shared-memory
multiprocessors maupun single processor.

Penggunaan MPI
MPI perlu digunakan ketika kita menginginkan :
1. Menulis kode parallel yang portable
2. Mendapatkan performa yang tinggi dalam p emrograman parallel
3. Menghadapi permasalahan yang melibatkan hubungan data irregular atau dinamis yang
tidak begitu cocok dengan model data -parallel.
3.1.2 Fitur dasar dari program-program Message Passing
Program message passing terdiri dari multiple ins tan dari program serial yang berkomunikasi
dengan pemanggilan library. Pemanggilan ini dapat dibagi menjadi empat kelas :
1. Pemanggilan untuk inisialisasi, mengatur, dan memutuskan komunikasi.
2. Pemanggilan untuk mengkomunikasikan beberapa pasang proseso r.
3. Pemanggilan yang mewujudkan operasi -operasi komunikasi diantara kelompok -kelompok
prosesor.
4. Pemanggilan untuk membuat tipe data acak (arbitrary)
Kelas pertama dari pemanggilan terdiri dari pemanggilan -pemanggilan untuk memulai
komunikasi, mengidentifikasi jumlah prosesor yang sedang digunakan, membuat subgrup dari
prosesor-prosesor dan mengidentifikasi prosesor mana yang sedang menjalankan instan
khusus dari program.
Kelas kedua dari pemanggilan, dinamakan komunikasi point -to-point, terdiri atas tipe
pengiriman dan penerimaan yang berbeda.
Kelas ketiga dari pemanggilan adalah operasi kolektif yang memberikan sinkronisasi antar
grup proses dan pemanggilan yang melakukan operasi komunikasi/kalkulasi.
Kelas terakhir dari pemanggilan memberikan fleksibilitas dalam berurusan dengan struktur
data yang rumit.
4 Implementasi MPIPOV
Berdasar pada komputasi tinggi yang dibutuhkan oleh POV -Ray, implementasi parallel
sangatlah dibutuhkan dan banyak group penelit i mencoba untuk mengembangkan versi
parallel dari aplikasi ini. Yang paling terkenal adalah PVMPOV yang berdasar pada PVM.
Tujuan utama dari pekerjaan ini adalah menghasilkan versi POV -Ray dengan performa
parallel yang tinggi dan dengan segala fitur yang a da (antialiasing).
Setiap baris dari citra dibagi menjadi beberapa seksi, lebih besar dari jumlah processor yang
tersedia. Peningkatan kecepatan pada setiap processor dapat berbeda berdasar pada
karakteristik internal arsitekturnya atau pada machine load, namum juga dapat bergantung
pada bagian dari citra yang diproses bisa jadi sederhana atau kompleks.

MM Gambar Alur kerja MPIPOV
4.1 Instalasi program
Mempersiapkan sistem operasi Linux Debian Sarge, kemudia n mempersiapkan
environmentnya

1. Paket-paket LAM/MPI yang terdiri dari :
(a) lam4c2
(b) lam-runtime
(c) lam4-dev

2. Paket-paket SSH yang terdiri dari :
(a) openssh-server
(b) openssh-client
3. Paket-paket NFS (Network File System) yang terdiri dari :
(a) nfs-common
(b) nfs-kernel-server
4.2 Konfigurasi :

4.2.1 LAM/MPI

Booting LAM
Sebelum program mpi dijalankan, LAM runtime environment harus dijalankan. Hal ini biasa
disebut booting LAM. Proses booting yang sukses akan membuat instan dari LAM runtime
environment yang biasa disebut dengan LAM universe.
Untuk booting LAM, pada cluster of workstation dibutuhkan remote shell, seperti rsh dan ssh,
yang digunakan untuk mengeksekusi lamd (lam daemon), dan program pada workstation.
Ketika menggunakan remote shell, f ile boot schema diperlukan sebagai daftar dari komputer
sebagai node yang akan dijalankan LAM runtime. Nama lain dari bootschema adalah host file
atau machine file. Contoh isi dari bootschema adalah
File bootschema ini secara default berada di /etc/lam/bho st.def , namun apabila setiap user
ingin memiliki konfigurasi node -node yang berbeda bisa membuat file bootschema sendiri.
4.2.2 SSH ( Secure Shell )
SSH (Secure Shell) merupakan sebuah program untuk untuk login ke remote machine dan
mengeksekusi perintah-perintah di remote machine. Ssh memberikan komunikasi terenkripsi
yang aman antara dua untrusted hosts dalam sebuah jaringan yan tidak secure. SSH ditujukan
sebagai pengganti rlogin, rsh, rcp dan dapat digunakan untuk memb erikan kanal komunikasi
yang aman untuk aplikasi -aplikasi.
Dalam LAM/MPI SSH diperlukan untuk membuat node master dapat me -remote node slave
tanpa menggunakan password. Node master me -remote node slave untu menjalankan lamd,
dan menjalankan program MPI non interactively, sehingga tujuan dari portabilitas standar
MPI dapat tercapai.
Sebelumnya servis SSH pada node slave harus distart terlebih dahulu:
Kemudian membuat RSA-key pada node master, dengan cara :
Untuk membuat node master dapat me -remote need slave tanpa password maka passphrase
pada saat pembuatan RSA-key tidak perlu diisikan seperti pada contoh diatas.

Saat pembuatan RSA-ke, dibuat pasangan dari key , yaitu public key dan private key, yang
secara defaults diletakkan pada memory pada directory .ssh . File id_rsa.pub adalah public key
sedangkan id_rsa adalah private -key. Agar node-master dapat login tanpa password, public -
key yang sudah dibuat oleh node master harus dimiliki oleh node slave. OpenSSH
menyediakan tools untu mengkopi public key yaitu ; s sh-copy-id.
# arv@debian8:~$ ssh-copy-id -i .ssh/id_rsa sasuke@10.122.67.5
15
# arv@10.122.67.5’s password:
Now try logging into the machine, with “ssh ‘arv@10.122.67.5'”, and check in:
.ssh/authorized_keys
to make sure we haven’t added extra keys that you weren’t expecting.
Setelah mengkopi public key ke node slave, koneksi melalui ssh perlu ditest untuk remote ke
OpenSSH server yang telah menerima public -key dari node master, dengan cara:
Test berhasil apabila node master dapat me -remote node slave tanpa ada permintaan
password.
4.2.3 NFS (Netwok File System)
Setelah berhasil menginstall dari paket nfs -kernel-server, perlu dilakukan konfigurasi dari
/etc/exports, untuk menentukan computer mana saja yang menjadi NFS client.
/home/arv/parallel
10.122.67.5(rw,insecure,no_root_squash,sync,no_subtree_check)
10.122.67.7(rw,insecure,no_root_squash,sync,no_subtree_check)
10.122.67.9(rw,insecure,no_root_squash,sync,no_subtree_check)
10.122.67.12(rw,insecure,no_root_squash,sync,no_subtree_check)
konfigurasi diatas artinya hosts yang tercantum pada /etc/exports diatas diberi hak baca tulis,
synchronous I/O , dan hak root pada NFS server dan client sama pada saat nfs client
melakukan mounting .
setelah dilakukan konfigurasi NFS server dapat dijalankan dengan perintah:
# /etc/init.d/nfs-kernel-server start
Konfigurasi Pada Client

Untuk menggunakan servis NFS yang disediakan oleh server, maka client hanya
membutuhkan utility mount yang biasanya sudah terpasang dengan waktu instalasi system
Linux. Pada aplikasi ini shared s torage diletakkan pada path yang sama pada semua node
dengan tujuan untuk memudahkan dalam menjalankan program MPI yang menggunakan
model SPMD ( Single Program Multiple Data ). Direktori yang di -share akan dimount pada
path /home/sasuke/parallel2. Sehingga perlu dibuatkan direktori /home/sasuke/parallel2
apabila belum ada.
Untuk melakukan mounting secara otomatis setiap kali sistem direstart maka file /etc/fstab
perlu diedit sebagaimana berikut :
10.122.67.8:/home/arv/parallel /home/arv/parallel nfs default s 0 0
selanjutnya untuk melakukan mounting nfs dari konfigurasi yang ada di file /etc/fstab
digunakan perintah sbb :
Contoh diatas adalah perintah untuk melakukan mount volume /home/sasuke/parallel2 pada
nfs-server 10.122..67.8 dan dimount pada directory target /home/sasuke/parallel2. Dengan
cara diatas berarti isi direktori /home/sasuke/parallel2 pada client akan sama persis dengan
direktori /home/sasuke/parallel2 pada nfs -server. Sebelum melakukan mounting NFS harus
dibuat terlebih dulu direktori /home/s asuke/parallel2.
4.2.4 Permissions
Permissions disini menyangkut soal hak akses terhadap file resource yang digunakan.
Sebelum memulai LAM/MPI harus dipastikan bahwa user yang ingin mengakses file resource
mempunyai hak akses atas file/program resource yan g ingin diproses secara parallel, yaitu
file/program yang dishare dengan NFS. Pada percobaan yang kami lakukan, kami
menyamakan uid dan gid dari user yang bersangkutan. Kalau hanya untuk menjalankan
program yang diparallel tidak perlu mengubah uid dan gid, cukup dengan chmod saja dengan
menambahkan option executable untuk other user.
4.2.5 MPIPOV
4.2.5.1 Langkah-langkahnya sebagai berikut :
1. Download kode sumber POV-Ray. MPI-POV-Ray hanya dapat bekerja pada rilis POV-Ray
lama yaitu versi 3.1
2. Ekstrak paket kode sumber POV-Ray. # tar xvfz povuni_s.tgz
3. Kemudian Download juga tambalannya dan tempatkan di dalam direktori hasil ekstrak
povray pada langkah 2. : # cp /xxx/mpi -povray-1.0.patch.gz povray31/
4. Terapkan tambalan tersebut. : # cd povray31, # gzi p -dc mpi-povray-1.0.patch.gz | patch -
p1
5. Kompilasi kode sumber tersebut menjadi ke bentuk binarinya (penting lihat Catatan
terlebih dahulu!), # cd source/mpi -unix, # make newxwin

6. Kemudian mendapatkan sebuah berkas binari yaitu mpi -x-povray yang dapat dipakai untuk
menjalankan program POV-Ray secara paralel memakai MPI. : # mpirun -np ? ./mpi-xpovray
[options]
4.2.5.2 Catatan
Ketika melakukan kompilasi POV-Ray memerlukan beberapa library pendukung seperti
libpng-dev dan xlibs-dev.
# sudo apt-get install libpng12-dev
# sudo apt-get install xlibs-dev
[!] Apabila berencana untuk menggunakan library PNG versi terbaru (dalam kasus ini ingin
menggantikan libpng-1.0.3 dengan libpng-1.2.8) maka sebelum melakukan kompilasi pada
langkah 5 perlu dilakukan langka h-langkah berikut:
1. Ambil kode sumber untuk libpng12 -0 dari repositori
# cd /tmp
# apt-get source libpng12-0 Nantinya Anda akan mendapatkan direktori /tmp/libpng3 -
1.2.8rel/
2. Gantikan direktori libpng yang terdapat povray31/source/libpng dengan yang bar u.
Lakukan backup data yang lama apabila diperlukan.
# cd /tmp/povray31/source
# mv libpng/ libpng.OLD/
# cp -r /tmp/libpng3-1.2.8rel/ libpng/
3. Setelah itu baru dilanjutkan langkah instalasi nomor 5 di atas.
5 Memulai MPIPOV
5.1 Langkah-langkahnya :
1. Perintah booting untuk LAM adalah dengan mengetikan lamboot pada shell. Contohnya: #
lamboot
2. Untuk mengetahui berapa banyak node dan CPU pada LAM universe adalah menggunakan
perintah lamnodes pada shell : # lamnodes
3. Menjalankan MPI-POVRAY dengan mengetikkan : # mpirun n0 N mpi -x-povray
+Igrenadine.pov +A +w800 +H600 /home/arv/parallel +FN
4. Perintah lamclean, Perintah lamclean secara komplit menghilangka semua proses sari
program yang berjalan pada LAM universe. Lamclean berguna jika program paralel
mengalami crash/leave state pada LAM runtime environment. penggunaan lamclean biasanya
digunakan tanpa argumen: # lamclean, Penggunaan lamclean biasanya dibutuhkan saat
melakukan developing/debugging dari aplikasi MPI. Sebgai contoh program yang hang,
message yang tersisa, dan lain-lain.
5. Shutdown LAM Universe, Setelah selesai, tidak meggunakan LAM universe lagi maka
LAM universe perlu untuk di -shutdown menggunakan perintah lamhalt.
6. Ada saat keadan tertentu, lamhalt gagal, sebagai conto h salah satu node mengalami
kegagalan komunikasi sehinga terjadi crash, apabila lamhalt dipanggil maka akan terjadi
timeout sehingga tidak semua node halting LAM Universe. Pada kasus seperti ini dibutuhkan
perintah lamwipe untuk memastikan bahwa semua node halting LAM universe.

Komputasi Modern (keamanan Jaringan Komputer)

Keamanan Jaringan Komputer
Keamanan jaringan komputer sendiri sering dipandang sebagai hasil dari beberapa faktor. Faktor
ini bervariasi tergantung pada bahan dasar, tetapi secara normal setidaknya beberapa hal dibawah ini
diikutsertakan :
• Confidentiality (kerahasiaan).
• Integrity (integritas).
• Availability (ketersediaan).
Keamanan klasik penting ini tidak cukup untuk mencakup semua aspek dari keamanan jaringan
komputer pada masa sekarang [1]. Hal-hal tersebut dapat dikombinasikan lagi oleh beberapa hal
penting lainnya yang dapat membuat keamanan jaringan komputer dapat ditingkatkan lagi dengan
mengikut sertakan hal dibawah ini:
• Nonrepudiation.
• Authenticity.
• Possession.
• Utility.

Availability (ketersediaan).
Ketersediaan data atau layanan dapat dengan mudah dipantau oleh pengguna dari sebuah
layanan. Yang dimana ketidaktersediaan dari sebuah layanan (service) dapat menjadi sebuah halangan
untuk maju bagi sebuah perusahaan dan bahkan dapat berdampak lebih buruk lagi, yaitu penghentian
proses produksi [1]. Sehingga untuk semua aktifitas jaringan, ketersediaan data sangat penting untuk
sebuah system agar dapat terus berjalan dengan benar.

Confidentiality (kerahasiaan).
Ada beberapa jenis informasi yang tersedia didalam sebuah jaringan komputer. Setiap data yang
berbeda pasti mempunyai grup pengguna yang berbeda pula dan data dapat dikelompokkan sehingga
beberapa pembatasan kepada pengunaan data harus ditentukan. Pada umumnya data yang terdapat
didalam suatu perusahaan bersifat rahasia dan tidak boleh diketahui oleh pihak ketiga yang bertujuan
untuk menjaga rahasia perusahaan dan strategi perusahaan [2]. Backdoor, sebagai contoh, melanggar
kebijakan perusahaan dikarenakan menyediakan akses yang tidak diinginkan kedalam jaringan
komputer perusahaan.
Kerahasiaan dapat ditingkatkan dan didalam beberapa kasus pengengkripsian data atau
menggunakan VPN [22][2]. Topik ini tidak akan, tetapi bagaimanapun juga, akan disertakan dalam
tulisan ini. Kontrol akses adalah cara yang lazim digunakan untuk membatasi akses kedalam sebuah
jaringan komputer. Sebuah cara yang mudah tetapi mampu untuk membatasi akses adalah dengan
menggunakan kombinasi dari username-dan-password untuk proses otentifikasi pengguna dan
memberikan akses kepada pengguna (user) yang telah dikenali [2]. Didalam beberapa lingkungan kerja
keamanan jaringan komputer, ini dibahas dan dipisahkan dalam konteks otentifikasi [3].

Integrity (integritas).
Jaringan komputer yang dapat diandalkan juga berdasar pada fakta bahwa data yang tersedia
apa yang sudah seharusnya. Jaringan komputer mau tidak mau harus terlindungi dari serangan
(attacks) yang dapat merubah dataselama dalam proses persinggahan (transmit) [4]. Man-in-the-
Middle merupakan jenis serangan yang dapat merubah integritas dari sebuah data yang mana
penyerang (attacker) dapat membajak "session" atau memanipulasi data yang terkirim [5].
Didalam jaringan komputer yang aman, partisipan dari sebuah "transaksi" data harus yakin
bahwa orang yang terlibat dalam komunikasi data dapat diandalkan dan dapat dipercaya. Keamanan
dari sebuah komunikasi data sangat diperlukan pada sebuah tingkatan yang dipastikan data tidak
berubah selama proses pengiriman dan penerimaan pada saat komunikasi data. Ini tidak harus selalu
berarti bahwa "traffic" perlu di enkripsi, tapi juga tidak tertutup kemungkinan serangan "Man-in-the-
Middle" dapat terjadi.
Nonrepudiation.
Setiap tindakan yang dilakukan dalam sebuah system yang aman telah diawasi (logged), ini dapat
berarti penggunaan alat (tool) untuk melakukan pengecekan system berfungsi sebagaimana
seharusnya. "Log" juga tidak dapat dipisahkan dari bagian keamanan "system" yang dimana bila terjadi
sebuah penyusupan atau serangan lain akan sangat membantu proses investigasi [17]. "Log" dan
catatan waktu, sebagai contoh, bagian penting dari bukti di pengadilan jika cracker tertangkap dan
diadili. Untuk alasan ini maka "nonrepudiation" dianggap sebagai sebuah faktor penting didalam
keamanan
jaringan komputer yang berkompeten.
ITU-T telah mendefinisikan "nonrepudition" sebagai berikut :
1. Kemampuan untuk mencegah seorang pengirim untuk menyangkal kemudian bahwa dia
telah mengirim pesan atau melakukan sebuah tindakan.
2. Proteksi dari penyangkalan oleh satu satu dari entitas yang terlibat didalam sebuah komunikasi
yang turut serta secara keseluruhan atau sebagian dari komunikasi yang terjadi [7].
Jaringan komputer dan system data yang lain dibangun dari beberapa komponen yang berbeda
yang dimana masing-masing mempunyai karakteristik spesial untuk keamanan. Sebuah jaringan
komputer yang aman perlu masalah keamanan yang harus diperhatikan disemua sektor, yang mana
rantai keamanan yang komplit sangat lemah, selemah titik terlemahnya [8]. Pengguna (user)
merupakan bagian penting dari sebuah rantai. "Social engineering" merupakan cara yang efisien untuk
mencari celah (vulnerabilities) pada suatu system [21] dan kebanyakan orang menggunakan
"password" yang mudah ditebak. Ini juga berarti meninggalkan "workstation" tidak dalam keadaan
terkunci pada saat makan siang atau yang lainnya.
Sistem operasi (operating system : Windows, Unix, Linux, MacOS) terdapat dimana-mana,
komputer mempunyai sistem operasi yang berbeda-beda antara satu dengan yang lainnya (tergantung
selera), dan bahkan router juga dijalankan oleh oleh sistem operasi. Setiap sistem operasi mempunyai
gaya dan karakteristik sendiri yang membedakannya dengan sistem operasi yang lainnya, dan
beberapa bahkan digunakan untuk kepentingan "server". Beberapa sistem operasi juga mempunyai
masalah yang dapat digunakan sehingga menyebabkan sistem operasi tersebut berhenti merespon
pengguna.
Layanan pada "server" memainkan peranan penting dalam keamanan. Developer perangkat lunak
mengumumkan celah keamanan pada perangkat lunak dengan cepat. Alasan yang digunakan adalah
celah ini kemungkinan akan digunakan oleh pihak yang tidak bertanggung jawab untuk menyusupi
sebuah system ataupun setiap pengguna komputer. Pengelola atau pengguna server dan workstation
harus melakukan pengecekan untuk "update" masalah keamanan secara regular.
Perangkat keras mungkin sedikit susah dipahami sebagai sesuatu yang mempunyai potensi untuk
mempunyai masalah keamanan. Yang sesungguhnya adalah sangat berbeda dengan apa yang kita
pikirkan, apabila perangkat keras terletak di sebuah lokasi yang tidak aman maka terdapat resiko untuk
pemasangan perangkat keras yang tidak diinginkan kedalam jaringan komputer dan ini dapat membuat
penyusupan menjadi mudah. Juga, bila sebuah perangkat keras jaringan computer dirubah setting-nya
ke konfigurasi default oleh orang luar.
Pemilihan jenis metode transmisi juga mempunyai peranan penting didalam masalah keamanan.
Setiap informasi rahasia tidak boleh di transmisikan secara wireless, setidaknya tidak tanpa
menggunakan enkripsi yang bagus, sehingga setiap orang dapat menyadap komunikasi "wireless" yang
terkirim. Sangat dianjurkan untuk menggunakan firewall untuk membatasi akses kedalam jaringan
komputer ke tingkat yang dibutuhkan. Firewall juga dapat menjadi titik terlemah[9], yang mana dapat
membuat perasaan aman [10]. Firewall harus mengizinkan arus data kedalam sebuah jaringan
komputer jika terdapat juga arus data keluar dari jaringan komputer tersebut melalui firewall dan ini
dapat menjadi titik terlemah. Fakta penting lainnya bahwa tidak semua serangan
dilancarkan melalui firewall [10].

Mengamankan Jaringan Komputer
Mengamankan jaringan komputer membutuhkan tiga tingkatan proses. Untuk mengamankan
jaringan komputer kita harus dapat melakukan pemetaan terhadap ancaman yang mungkin terjadi.

Prevention (pencegahan).
Kebanyakan dari ancaman akan dapat ditepis dengan mudah, walaupun keadaan yang benarbenar
100% aman belum tentu dapat dicapai. Akses yang tidak diinginkan kedalam jaringan komputer
dapat dicegah dengan memilih dan melakukan konfigurasi layanan (services) yang berjalan dengan
hati-hati.

Observation (observasi).
Ketika sebuah jaringan komputer sedang berjalan, dan sebuah akses yang tidak diinginkan
dicegah, maka proses perawatan dilakukan. Perawatan jaringan komputer harus termasuk melihat isi
log yang tidak normal yang dapat merujuk ke masalah keamanan yang tidak terpantau. System IDS
dapat digunakan sebagai bagian dari proses observasi tetapi menggunakan IDS seharusnya tidak
merujuk kepada ketidak-pedulian pada informasi log yang disediakan.

Response (respon).
Bila sesuatu yang tidak diinginkan terjadi dan keamanan suatu system telah berhasil disusupi,
maka personil perawatan harus segera mengambil tindakan. Tergantung pada proses produktifitas dan
masalah yang menyangkut dengan keamanan maka tindakan yang tepat harus segera dilaksanakan.
Bila sebuah proses sangat vital pengaruhnya kepada fungsi system dan apabila di-shutdown akan
menyebabkan lebih banyak kerugian daripada membiarkan system yang telah berhasil disusupi tetap
dibiarkan berjalan, maka harus dipertimbangkan untuk direncakan perawatan pada saat yang tepat [1].
Ini merupakan masalah yang sulit dikarenakan tidak seorangpun akan segera tahu apa yang menjadi
celah begitu system telah berhasil disusupi dari luar.

Victims/statistic (korban/statistik).
Keamanan jaringan komputer meliputi beberapa hal yang berbeda yang mempengaruhi
keamanan secara keseluruhan. Serangan keamanan jaringan komputer dan penggunaan yang salah
dan sebegai contoh adalah virus, serangan dari dalam jaringan komputer itu sendiri, pencurian
perangkat keras (hardware), penetrasi kedalam system, serangan "Denial of Service" (DoS), sabotase,
serangan "wireless" terhadap jaringan komputer, penggantian halaman depan situs (website
defacement), dan penggunaan yang salah terhadap aplikasi web. Statistik menunjukkan jumlah
penyusupan didalam area ini sudah cukup banyak berkurang dari tahun 2003 [24], tipe variasi dari
serangan, bagaimanapun juga, menyebabkan hampir setiap orang adalah sasaran yang menarik.

Masalah keamanan
Jaringan komputer moderen adalah entitas dari banyak komponen kecil. Disini akan dijelaskan
beberapa titik lemah dari komponen yang berbeda.

Weak protocols (protokol yang lemah).
Komunikasi jaringan komputer menggunakan protokol antara client dan server. Kebanyakan dari
protokol yang digunakan saat ini merupakan protocol yang telah digunakan beberapa dasawarsa
belakangan. Protokol lama ini, seperti File Transmission Protocol (FTP), TFTP ataupun telnet [11], tidak
didesain untuk menjadi benar-benar aman. Malahan faktanya kebanyakan dari protocol ini sudah
seharusnya digantikan dengan protokol yang jauh lebih aman, dikarenakan banyak titik rawan yang
dapat menyebabkan pengguna (user) yang tidak bertanggung jawab dapat melakukan eksploitasi.
Sebagai contoh, seseorang dengan mudah dapat mengawasi "traffic" dari telnet dan dapat mencari
tahu nama user dan password.

Software issue (masalah perangkat lunak).
Menjadi sesuatu yang mudah untuk melakukan eksploitasi celah pada perangkat lunak. Celah ini
biasanya tidak secara sengaja dibuat tapi kebanyakan semua orang mengalami kerugian dari
kelemahan seperti ini. Celah ini biasanya dibakukan bahwa apapun yang dijalankan oleh "root" pasti
mempunyai akses "root", yaitu kemampuan untuk melakukan segalanya didalam system tersebut.
Eksploitasi yang sebenarnya mengambil keuntungan dari lemahnya penanganan data yang tidak diduga
oleh pengguna, sebagai contoh, buffer overflow dari celah keamanan "format string" merupakan hal
yang biasa saat ini.
Eksploitasi terhadap celah tersebut akan menuju kepada situasi dimana hak akses pengguna akan
dapat dinaikkan ke tingkat akses yang lebih tinggi. Ini disebut juga dengan "rooting" sebuah "host"
dikarenakan penyerang biasanya membidik untuk mendapatkan hak akses "root" [2].

Buffer overflow.
"Buffer overflow" mempunyai arti sama dengan istilahnya. Programmer telah mengalokasikan
sekian besar memory untuk beberapa variabel spesifik. Bagaimanapun juga, dengan celah keamanan
ini, maka variabel ini dapat dipaksa menuliskan kedalam "stack" tanpa harus melakukan pengecekan
kembali bila panjang variabel tersebut diizinkan. Jika data yang berada didalam buffer ternyata lebih
panjang daripada yang diharapkan, maka kemungkinan akan melakukan penulisan kembali stack frame
dari "return address" sehingga alamat dari proses eksekusi program dapat dirubah.
Penulis "malicious code" biasanya akan akan melakukan eksploitasi terhadap penulisan kembali
"return address" dengan merubah "return address" kepada "shellcode" pilihan mereka sendiri untuk
melakukan pembatalan akses "shell" dengan menggunakan hak akses dari "user-id" dari program yang
tereksploitasi tersebut [12]. "Shellcode" ini tidak harus disertakan dalam program yang tereksploitasi,
tetapi biasanya dituliskan ke dalam bagian celah dari "buffer". Ini merupakan trik yang biasa digunakan
pada variabel
"environment" seperti ini.
"Buffer overflow" adalah masalah fundamental berdasarkan dari arsitektur komputasi modern.
Ruang untuk variabel dan kode itu sendiri tidak dapat dipisahkan kedalam blok yang berbeda didalam
"memory". Sebuah perubahan didalam arsitektur dapat dengan mudah menyelesaikan masalah ini, tapi
perubahan bukan sesuatu yang mudah untuk dilakukan dikarenakan arsitektur yang digunakan saat ini
sudah sangat banyak digunakan.

Format string.
Metode penyerangan "format string" merupakan sebuah metode penyerangan baru, ini
diumumkan kepada publik diakhir tahun 2000. Metode ini ditemukan oleh hacker 6 bulan sebelum
diumumkan kepada masyarakat luas. Secara fundamental celah ini mengingatkan kita akan miripnya
dengan celah "buffer overflow" [13].
Kecuali celah tersebut tercipta dikarenakan kemalasan (laziness), ketidakpedulian (ignorance),
atau programmer yang mempunyai skill pas-pasan. Celah "format string" biasanya disebabkan oleh
kurangnya "format string" seperti "%s" di beberapa bagian dari program yang menciptakan output,
sebagai contoh fungsi printf() di C/C++. Bila input diberikan dengan melewatkan "format string"
seperti "%d" dan "%s"kepada program maka dengan mudah melihat "stack dump" atau penggunaan
teknik seperti pada "buffer overflow".
Celah ini berdasarkan pada "truncated format string" dari "input". Ini merujuk kepada situasi
dimana secara external, data yang disuplai yang diinterpretasikan sebagai bagian dari "format string
argument" [13]. Dengan secara spesial membuat suatu input dapat menyebabkan program yang
bermasalah menunjukkan isi memory dan juga kontrol kepada eksekusi program dengan menuliskan
apa saja kepada lokasi pilihan sama seperti pada eksploitasi "overflow".

Hardware issue (masalah perangkat keras).
Biasanya perangkat keras tidak mempunyai masalah pada penyerangan yang terjadi. Perangkat
lunak yang dijalankan oleh perangkat keras dan kemungkinan kurangnya dokumentasi spesifikasi teknis
merupakan suatu titik lemah. Berikut ini merupakan contoh bagaimana perangkat keras mempunyai
masalah dengan keamanan.

contoh 1: Cisco
Sudah lazim router cisco dianggap mempunyai masalah sistematis didalam perangkat lunak IOS
(Interwork operating system) yang digunakan oleh mereka sebagai sistem operasi pada tahun 2003.
Celah dalam perangkat lunak dapat menuju kepada "denial of service" (Dos) dari semua perangkat
router. Masalah keamanan ini terdapat dalam cara IOS menangani protokol 53(SWIPE), 55(IP Mobility)
dan 77(Sun ND) dengan nilai TTL (Time to live) 0 atau 1 [23].
Biasanya, Protocol Independent Multicast (PIM) dengan semua nilai untuk hidup, dapat
menyebabkan router menandai input permintaan yang penuh terhadap "interface" yang dikirimkan.
Sebagai permintaan bila penuh, maka router tidak akan melakukan proses "traffic" apapun terhadap
"interface" yang dipertanyakan [3]. Cisco juga mempunyai beberapa celah keamanan yang
terdokumentasi dan "patch" yang diperlukan telah tersedia untuk waktu yang cukup lama.

contoh 2: Linksys
Perangkat linksys mempunyai harga yang cukup murah sehingga banyak digunakan oleh orang.
Beberapa perangkat linksys mempunyai masalah dengan celah keamanan yang dapat menuju kepada
serangan "denial of service" (DoS). Celah keamanan yang memprihatinkan terdapat pada penanganan
parameter "URL Embedded" yang dikirimkan kepada perangkat.

Misconfiguration (konfigurasi yang salah).
Kesalahan konfigurasi pada server dan perangkat keras (hardware) sangat sering membuat para
penyusup dapat masuk kedalam suatu system dengan mudah. Sebagai contoh, penggantian halaman
depan suatu situs dikarenakan kesalahan konfigurasi pada perangkat lunak "www-server" atapun
modulnya. Konfigurasi yang tidak hati-hati dapat menyebabkan usaha penyusupan menjadi jauh lebih
mudah terlebih jika ada pilihan lain yang dapat diambil oleh para penyusup.
Sebagai contoh, sebuah server yang menjalankan beberapa layanan SSH dapat dengan mudah
disusupi apabila mengijinkan penggunaan protokol versi 1 atau "remote root login" (RLOGIN) diizinkan.
Kesalahan konfigurasi yang jelas ini menyebabkan terbukanya celah keamanan dengan penggunaan
protokol versi 1, seperti "buffer overflow" yang dapat menyebabkan penyusup dapat mengambil hak
akses "root" ataupun juga dengan menggunakan metode "brute-force password" untuk dapat menebak
password "root".

DoS, DDoS.
Serangan Denial of Service adalah serangan yang mengakibatkan setiap korbannya akan berhenti
merespon [5] atau "bertingkah" tidak lazim. Contoh serangan klasik "DoS" adalah "Ping of Death" dan
"Syn Flood" yang untungnya sudah hampir tidak dapat dijumpai pada saat sekarang. Biasanya
serangan DoS menyerang celah yang terdapat pada layanan system atau pada protokol jaringan kerja
untuk menyebabkan layanan tidak dapat digunakan. Tehnik yang lainnya adalah menyebabkan system
korban "tersedak" dikarenakan banyaknya paket yang diterima yang harus diproses melebihi
kemampuan dari system itu sendiri atau menyebabkan terjadinya "bottleneck" pada bandwidth yang
dipakai oleh system.
Serangan "Distributed Denial of Service" (DDoS) merupakan tipe serangan yang lebih
terorganisasi. Jenis serangan ini biasanya membutuhkan persiapan dan juga taktik untuk dapat
menjatuhkan korbannya dengan cepat dan sebelumnya biasanya para penyerang akan mencari system
kecil yang dapat dikuasai dan setelah mendapat banyak system kecil maka penyerang akan menyerang
system yang besar dengan menjalankan ribuan bahkan puluhan ribu system kecil secara bersamaan
untuk menjatuhkan sebuah system yang besar [5].
Worm "MyDoom" yang terkenal itu dibuat untuk melancarkan serangan besar-besaran dari
puluhan ribu system yang terinfeksi untuk menyerang situs www.sco.com. Serangan itu sukses besar
yang menyebabkan www.sco.com harus dipindahkan dari DNS untuk dapat menjalankan kembali
layanan [20].

Viruses (virus).
Salah satu definisi dari program virus adalah menyisipkan dirinya kepada objek lain seperti file
executable dan beberapa jenis dokumen yang banyak dipakai orang. Selain kemampuan untuk
mereplikasi dirinya sendiri, virus dapat menyimpan dan menjalankan sebuah tugas spesifik. Tugas
tersebut bisa bersifat menghancurkan atau sekedar menampilkan sesuatu ke layar monitor korban dan
bisa saja bertugas untuk mencari suatu jenis file untuk dikirimkan secara acak ke internet bahkan dapat
melakukan format pada hard disk korban [18].
Virus yang tersebar di internet yang belum dikenali tidak akan dapat ditangkap oleh program
antivirus ataupun semacamnya yang meskipun korban telah terjangkiti tetapi tidak mengetahuinya.
Perangkat lunak antivirus biasanya mengenali virus atau calon virus melalui tanda yang spesifik yang
terdapat pada bagian inti virus itu sendiri. Beberapa virus menggunakan tehnik polymorphic agar luput
terdeteksi oleh antivirus.
Kebiasaan virus polymorphic adalah merubah dirinya pada setiap infeksi yang terjadi yang
menyebabkan pendeteksian menjadi jauh lebih sulit [18]. Praktisnya setiap platform komputer
mempunyai virus masing-masing dan ada beberapa virus yang mempunyai kemampuan menjangkiti
beberapa platform yang berbeda (multi-platform). Virus multi-platform biasanya menyerang executable
ataupun dokumen pada Windows dikarenakan kepopuleran oleh system operasi Microsoft Windows dan
Microsoft Office sehingga banyak ditemukan virus yang bertujuan untuk menghancurkan "kerajaan"
Microsoft Corp [4].

Worms.
Sebuah "worm" komputer merupakan program yang menyebar sendiri dengan cara mengirimkan
dirinya sendiri ke system yang lainnya. Worm tidak akan menyisipkan dirinya kepada objek lain [18].
Pada saat sekarang banyak terjadi penyebaran worm dikarenakan para pengguna komputer tidak
melakukan update pada perangkat lunak yang mereka gunakan, yang dimana ini berarti, sebagai
contoh, Outlook Express mempunyai fungsi yang dapat mengizinkan eksekusi pada file sisipan
(attachment) e-mail tanpa campur tangan dari pengguna komputer itu sendiri.
Trojan horse.
Trojan horse adalah program yang berpura-pura tidak berbahaya tetapi sebenarnya mereka
sesuatu yang lain [18]. Salah fungsi yang biasa terdapat pada "trojan horse" adalah melakukan
instalasi "backdoor" sehingga si pembuat program dapat menyusup kedalam komputer atau system
korban.
junk mail (surat sampah).
"junk mail" sesungguhnya bukan suatu ancaman keamanan yang serius, tetapi dengan
penyebaran virus dan worm melalui e-mail, maka jumlah junk mail juga ikut bertambah. Ancaman
keamanan sesungguhnya bukan dari e-mail sampah itu sendiri melainkan file sisipannya (attachment)
yang patut diwaspadai dikarenakan penyebaran virus dan worm menggunakan metode ini.
Time bomb (bom waktu).
"Time bomb" adalah program yang mempunyai tugas tetapi dengan waktu tertentu baru akan
menjalankan tugasnya. Beberapa jenis virus dan worm juga mempunyai kesamaan fungsi dengan
aplikasi ini. Time bomb berbeda dengan virus ataupun worm dikarenakan dia tidak melakukan replikasi
terhadap dirinya tetapi melakukan instalasi sendiri kedalam system.
Hacking: Hackers and Victims (hacking: pelaku dan korban)
Hacker dikategorikan kedalam beberapa kategori yang berbeda tergantung pada jenis kegiatan
mereka. Kebanyakan hacker adalah para "script-kiddies" yang biasa menggunakan exploit atau
program yang tersedia di internet untuk melancarkan aksi mereka [19]. Jika tujuan mereka adalah
untuk kepentingan komersial atau kepentingan militer maka taruhannya menjadi lebih tinggi dan
biasanya mereka akan memilih korban mereka dengan hati-hati.
Alasan dibalik hacking sendiri bermacam-macam. Script kiddies biasanya akan melakukan
"scanning" beberapa blok IP untuk mencari kemungkinan host yang "vulnerable" (bisa diserang) dan
mencoba melakukan eksploitasi kepada beberapa daemon yang ditemukan. Satu grup hacker biasanya
mencoba program atau script yang mereka kembangkan untuk melihat apakah hasil kerja mereka
sukses. Tapi bagaimanapun juga, seseorang dapat menjadi "black-hat" atapun "white-hat" tergantung
pada filosofi, nilai etis dan motivasi mereka sendiri.
"White-hat" berarti jika seorang "hacker" berhasil dalam usahanya dan sebagai contoh berhasil
masuk kedalam sebuah system yang bukan tanggung jawab dia, maka dia akan memberitahukan
kepada system administrator mengenai celah keamanan yang terdapat di dalam system tersebut dan
bagaimana cara menutup celah keamanan itu serta cara memperkuat host tersebut (host hardening).
Tujuan dasarnya adalah untuk penelitian. "White-hat" biasanya adalah para "security professional" dan
disewa untuk melakukan "system penetration" atau memberikan konsultasi keamanan jaringan.
"Black-hat" adalah orang yang dipanggil "white-hat" sebagai "cracker" (pembongkar). Tujuan
para "cracker" tidak selalu baik, mereka biasanya masuk kedalam suatu system untuk mencuri
informasi atau mempersiapkan system itu untuk melakukan serangan terhadap system yang lain,
"DDoS" sebagai contoh. "Black-hat" biasanya meninggalkan backdoor di system yang berhasil disusupi.
Terdapat juga jenis "grey-hat" atau orang yang tidak merusak tapi sering menyusup kedalam
system lain tanpa memberitahu kepada System administrator system tersebut apabila terdapat celah
keamanan, mereka tidak terlalu merusak tapi juga tipe yang tidak terlalu diinginkan.
Different Types of Attacking (jenis-jenis serangan)
Scanning.
"Scanning" adalah metode bagaimana caranya mendapatkan informasi sebanyak-banyaknya dari
IP/Network korban. Biasanya "scanning" dijalankan secara otomatis mengingat "scanning" pada
"multiple-host" sangat menyita waktu. "Hackers" biasanya mengumpulkan informasi dari hasil
"scanning" ini. Dengan mengumpulkan informasi yang dibutuhkan maka "hackers" dapat menyiapkan
serangan yang akan dilancarkannya.
Nmap merupakan sebuah network scanner yang banyak digunakan oleh para professional di
bidang network security, walaupun ada tool yang khusus dibuat untuk tujuan hacking, tapi belum
dapat mengalahkan kepopuleran nmap.
Nessus juga merupakan network scanner tapi juga akan melaporkan apabila terdapat celah
keamanan pada target yang diperiksanya. Hacker biasanya menggunakan Nessus untuk pengumpulan
informasi sebelum benar-benar meluncurkan serangan.
Untungnya beberapa scanner meninggalkan "jejak" yang unik yang memungkinkan para System
administrator untuk mengetahui bahwa system mereka telah di-scanning sehingga mereka bisa segera
membaca artikel terbaru yang berhubungan dengan informasi log.
Password cracking.
"Brute-force" adalah sebuah tehnik dimana akan dicobakan semua kemungkinan kata kunci
(password) untuk bisa ditebak untuk bisa mengakses kedalam sebuah system. Membongkar kata kunci
dengan tehnik ini sangat lambat tapi efisien, semua kata kunci dapat ditebak asalkan waktu tersedia.
Untuk membalikkan "hash" pada kata kunci merupakan suatu yang hal yang mustahil, tapi ada
beberapa cara untuk membongkar kata kunci tersebut walaupun tingkat keberhasilannya tergantung
dari kuat lemahnya pemilihan kata kunci oleh pengguna. Bila seseorang dapat mengambil data "hash"
yang menyimpan kata kunci maka cara yang lumayan efisien untuk dipakai adalah dengan
menggunakan metode "dictionary attack" yang dapat dilakukan oleh utility John The Ripper [27].
Masih terdapat beberapa cara lainnya seperti "hash look-up table" tapi sangat menyita
"resources" dan waktu.
Rootkit.
"Rootkit" adalah alat untuk menghilangkan jejak apabila telah dilakukan penyusupan. Rootkit
biasanya mengikutkan beberapa tool yang dipakai oleh system dengan sudah dimodifikasi sehingga
dapat menutupi jejak. Sebagai contoh, memodifikasi "PS" di linux atau unix sehingga tidak dapat
melihat background process yang berjalan.
Defending (bertahan)
Firewall.
Komputer dan jaringan kerja yang terhubung dengan internet perlu untuk dilindungi dari
serangan. Firewall adalah cara yang lumayan efeltif untuk melakukannya. Secara umum firewall akan
memisahkan public network dan private network.
Tipe firewall dapat dibagi menjadi beberapa kategori, contohnya: Packet Filtering Firewall, "Proxy
Firewall".
Logs.
Seorang system administrator wajib untuk melihat log dari system dari waktu ke waktu. Dengan
melihat log maka system administrator dapat melihat aktifitas yang terjadi dan kemungkinan besar
dapat melakukan antisipasi apabila terlihat beberapa aktifitas yang mencurigakan terjadi.
IDS. (Intrusion Detection System)
Satu cara umum melakukan otomatisasi pada pengawasan penyusupan adalah dengan
menggunakan IDS. IDS akan mendeteksi jenis serangan dari "signature" atau "pattern" pada aktifitas
jaringan. Bahkan dapat melakukan blokade terhadap traffic yang mencurigakan.
Honeypot.
"HoneyPot" adalah server "umpan" yang merupakan pengalih perhatian. Tujuan dari honeypot
adalah mereka tidak menjalankan layanan sebagaimana umumnya server tetapi berpura-pura
menjalankannya sehingga membiarkan para penyusup untuk berpikir bahwa mereka benar-benar
adalah "server" yang sesungguhnya. Honeypot juga bermanfaat untuk melihat tehnik yang digunakan
oleh para penyusup untuk dapat masuk kedalam system juga sebagai alat untuk mengumpulkan bukti
sehingga para penyusup dapat diproses secara hukum.
Configuration.
Seperti yang telah dibahas sebelumnya, konfigurasi yang hati-hati akan membantu anda untuk
bertahan terhadap kemungkinan serangan yang terjadi. Kebanyakan dari kasus penggantian halaman
muka situs (web defacement) terjadi dikarenakan kesalahan konfigurasi sehingga menyebabkan pihak
ketiga dapat mengambil keuntungan dari kesalahan ini.