Tentang DNS Server

DNS SERVER
Pada awalnya system penamaan IP address menggunakan system host table. Dalam system ini, setiap computer menyimpan file host.txt yang berisikan daftar kombinasi IP address dengan nama dari setiap computer yang terhubung ke internet. Jadi setiap ada penambahaan user ataupun perubahan data user, kita harus memeperbaruhi file host.txt melalui FTP ke seluruh host yang ada di internet. Tentunya system penamaan IP seperti ini sangatlah tidak efektif dan sudah tidak mampu menangani kebutuhan yang ada saat ini . oleh karena itu pada tahun 1984, Paul Mockpertis mengusulkan system penamaan IP yang baru yaitu menggunakan Domain Name System (DNS), system inilah yang digunakan hingga saat ini.
STRUKTUR DNS
                System database yang digunakan DNS adala system hirarki. System ini dipilih karena system ini cocok digunakan untuk system terdistribusi , konsisten untuk setiap host, dan updateable. System ini digambarkansebagai sebuah tree yang memiliki beberapa cabang. Cabang – cabang ini mewakili domain dan dapat berupa host, subdomain, ataupun top level domain. Domain teratas adalah root. Domain ini di wakili oleh titik. Selanjutnya, domain yang terletak tepat di bawah root di sebut top level domain. Beberapa contoh top level domain :
-  Com       : Organisasi Komersial
-  Edu        : Institusi pendidikan atau universitas
-  Org         : Organisasi non-profit
-  Net        : Networks (backbone internet)
-  Gov        : Organisasi pemerintahan non militer
-  Mil          : Organisasi pemerintahan militer
-  Num      : No telepon
-  Arpa      : Reverse DNS
-  Xx           : dua huruf untuk kode Negara  (id : Indonesia , sg : Singapura , au : Australia )
Turunan dari top level adalah subdomain. Domain yang terletak setelah top level di sebut second level dan domain yang berada di bawah second level disebut third level domain, begitu seterusnya. Pembentukan dan pembacaanya dimilai dari node yang pling bawah hingga node paling atas (root). Sebagai contoh untuk nama host pandu.ee.ugm.ac.id  kita dapat menguraikan domainnya menjadi :
                .               :  root domain
                Id            : top level domain
                Ac           :  second level domain
                Ugm      : third level domain
                Ee           :  fourth level domain
                Pandu   :  fifth level domain yang menunjukan nama host
Dari contoh di atas kita dapat menegtahui aturan penulisan nama host yaitu di mulai dari kiri ke kanan untuk node yang paling bawah hingga node yang paling atas dan setiap domain di pisahkan dengan titik.
SISTEM HIRARKI DNS
                Sistem hirarki DNS di atas tentunya tidak mungkin di atur oleh satu sever saja. System hirarki DNS ini di pecah – pecah menjadi zona – zona. Sebuah zona meliputi seluruh host yang terdapat di dalam sebuah jaringan dan dapat berupa level domain mana saja.
Di dalam sebuah jaringan, setiap zona harus memiliki name server sendiri. Name server inilah yang akan melayani penerjemahan dari IP ke nama host atau sebaliknya di zona yang bersangkutan. Jika pada suatu domain ingin dibentuk zona bau, maka kita dapat membuah sebuah primary name server yang akan mengarahkan setiap request mapping ke name server yang authoritative. Penggunaan lebih dari satu name server ini bertujuan untuk membagi beban kerja name server dan sebagai system backup name server.
                Perbedaan antara primary name server dengan secondary name terletak dari bagaimana name server itu memperoleh datanya. Primary name serevr memperoleh data dari data yang tersimpan di harddisknya, sedangkan secondary name server memperoleh data dari data replica yang ia peroleh dari primary server name. dengan demikian untuk setiap perubahan data dalam DNS, kita cukup mengubah data pada primary name servernya saja.
STRUKTUR KERJA DNS
Misalnya kita browsing di warnet, dan akan menghubungi www.google.com. Rangkaian proses yang akan di jalankannya adalah sbb :
1.  PC kita mengontak server DNS local ( biasanya terletak pada jaringan ISP ) untuk menanyakan IP Address www.google.com.
2.       Serever DNS local akan melihat ke dalam cachenya
3.    Jika data itu terdapat di dalam cache server DNS server local, maka server tersebut akan memberikan alamat IP tersebut ke browsing. Jika tidak, maka server tersebut mengontak server DNS di atasya (biasanya di sebutt Root DNS server) untuk mengetahui alamat IP dari DNS sever yang mengelola domain www.google.com.
4.   Jika domain www.google.com benar – benar exist, maka Root DNS akan mendapatkan alamat IP server DNS www.google.com, kemudian alamat dikirim ke server DNS local kita.
5.     Server DNS local akan mengontak server DNS www.google.com untuk menanyakan alamat IP dari www.google.com , dan server DNS www.google.com memberikan data alamat IP www.google.com.
6.   Server DNS local memberitahu alamat IP untuk www.google.com kepada browse/ client ( PC kita)
7.   Kemudian kita menggunakan alamat itu untuk diisikan ke dalam IP packet utnuk menghubungi www.google.com

Sistem Basis Data - Data Flow Diagram

DFD sering digunakan untuk menggambarkan suatu sistem yang telah ada atau sistem baru yang akan dikembangkan secara logika tanpa mempertimbangkan lingkungan fisik dimana data tersebut mengalir(misalnya lewat telepon, surat dan sebagainya) atau lingkungan fisik dimana data tersebut akan disimpan (misalnya file kartu, microfiche, hard disk, tape, dikette dll). DFD merupakan alat yang digunakan pada metodologi pengembangan sistem yang terstruktur (structured analysis and design)[2].

Simbol :
  1. Kesatuan Luar (external entity)
      Sesuatu yang berada di luar sistem, tetapi ia memberikan data ke dalam sistem atau memberikan data dari sistem, disimbolkan dengan suatu kotak notasi. Entitas eksternal tidak termasuk bagian dari sistem. Bila system informasi dirancang untuk satu bagian (departemen) maka bagian lain yang masih terkait  menjadi entitas eksternal.
Pedoman pemberian nama kesatuan luar (external entity)
1)  Nama terminal berupa kata benda.
    2) Terminal tidak boleh memiliki nama yang sama kecuali memang objeknya sama (digambarkan dua kali . dimaksudkan untuk membuat diagram yang jelas). Bila tidak demikian, maka terminal ini perlu di beri garis miring pada pojok kiri atas.
2. Arus Data (dataflow)
      Arus data merupakan tempat menggalinya informasi dan digambarkan dengan garis yang menghubungkan komponen dari sistem. Arus data ditunjukkan dengan arus panah dan garis diberi nama  atas arus data yang mengalir. Arus data ini mengalir diantara proses, data store dan menunjukan arus data dari data yang berupa masukan untuk sistem atau hasil proses sistem.
Pedoman pemberian nama aliran data
1) Nama aliran data yang terdiri dari beberapa aliran kata dihubungkan dengan garis sambung.
2) Tidak boleh ada aliran data yang namanya sama, dan pemberian nama harus mencerminkan isinya.
3)  Aliran data yang terdiri dari beberapa elemen dapat dinyatakan dengan grup elemen.
4)  Hindari penggunaan kata ‘data’ dan ‘informasi’ untuk memberi nama pada aliran data.
5)  Sedapat mungkin nama aliran data ditulis lengkap.
3.  Pengertian Proses (process)
      Proses merupakan apa yang dikerjakan oleh sistem, proses dapat mengolah data atau aliran data masuk menjadi aliran data keluar. Proses berfungsi mentranformasikan satu atau beberapa data masukan menjadi satu atau beberapa data keluaran sesuai dengan spesifikasi yang diinginkan. Setiap proses memiliki satu atau beberapa masukan serta menghasilkan satu atau beberapa data keluaran. Proses sering pula disebut bubble.
Pedoman pemberian nama proses
1) Nama proses terdiri dari kata kerja dan kata benda yang mencerminkan fungsi proses tersebut, misalnya : Hitung Bonus, Pendataan Karyawan, Cetak Fatur,dll.
2) Jangan menggunakan kata proses yang memiliki nama suatu proses (bubble).
3) Tidak boleh ada beberapa proses yang memiliki nama yang sama.
4) Proses harus diberi nomor. Urutan nomor sedapat mungkin mengikuti aliran atau urutan proses, namun demikian urutan nomor tidak berarti secara mutlak merupakan urutan proses secara kornologis.
5) Penomoran proses pada tingkatan pertama (Diagram Nol) adalah 1.0,2.0,3.0, dst.
6) Penomoran pada tingkat kedua dari proses 1.0 (rincian dari proses 1.0) adalah 1.1,1.2,1.3, dst.
              7) Context diagram tidak perlu diberi nomor.

Contoh Penomoran level pada DFD :

Sistem Basis Data - Entity Relationship Diagram

ERD adalah suatu model jaringan yang menggunakan susunan data yang disimpan dalam sistem secara abstrak. Jadi, jelaslah bahwa ERD ini berbeda dengan DFD yang merupakan suatu model jaringan fungsi yang akan dilaksanakan oleh sistem, sedangkan ERD merupakan model jaringan data yang menekankan pada struktur-struktur  dan relationship data.
Elemen-elemen Diagram hubungan entitas :

  a. Etity(Entitas)

   Pada E-R diagram digambarkan dengan bentuk persegi panjang. Entity adalah sesuatu apa saja yang ada didalam sistem, nyata maupun abstrak dimana data tersimpan atau dimana terdapat data. Entitas diberi nama dengan kata benda dan dapat dikelompokkan dalam empat jenis nama yaitu ; orang, benda, lokasi, kejadian (terdapat unsure waktu didalamnya).

  b. Relationship (Relasi)

    Pada E-R diagram digambarkan dengan sebuah bentuk belah ketupat. Relationship adalah hubungan alamiah yang terjadi antara entitas. Pada umumnya penghubung (Relationship) diberi nama dengan kata kerja dasar, sehingga memudahkan untuk melakukan pembacaan relasi (bias dengan kalimat aktif atau dengan kalimat pasif).

  c. Relationship Degree (Derajat relasi)

  Relationship Degree atau Derajat Relasi adalah jumlah entitas yang berpartisipasi dalam satu relationship.

 d. Atribut Value

    Atribut Value atau nilai attribute adalah suatu occurrence tertentu dari sebuah attribute didalam suatu entity  atau relationship.

Ada dua jenis Atribut :

  1) Identifier (key) digunakan untuk menentukan suatu entity  secara unik (primary key).

  2) Descriptor (nonkey attribute) digunakan untuk menspesifikasikan karakteristik dari suatu entity yang tidak unik.

 e. Cardinality (Kardinalitas)

    Kardinalitas relasi menunjukan jumlah maksimum tupel yang dapat berelasi dengan entitas pada entitas yang lain.
Terdapat 3 macam kardinalitas relasi yaitu :

  1) One to One

    Tingkat hubungan satu ke satu, dinyatakan dengan satu kejadian pada entitas pertama, hanya mempunyai satu hubungan dengan satu kejadian pada entitas yang kedua dan sebaliknya.

    Yang berarti setiap tupel pada entitas A berhubungan dengan paling banyak satu tupel pada entitas B, dan begitu pula sebaliknya. 

  2) One to Many atau Many to One 

   Tingkat hubungan satu ke banyak adalah sama dengan banyak ke satu. Tergantung dari mana hubungan tersebut dilihat. Untuk satu kejadian pada entitas pertama dapat mempunyai banyak hubungan dengan kejadian pada entitas yang kedua, dan sebaliknya.

   a) One to Many (satu ke banyak)

    Yang berarti satu tupel pada entitas A dapat berhubungan dengan banyak tupel pada entitas B, tetapi tidak sebaliknya.

   b) Many to One (banyak ke  satu)

    Yang berarti setiap tupel pada entitas A dapat berhubungan dengan paling banyak satu tupel pada entitas B, tetapi tidak sebaliknya.

3) Many to Many

Tingkat hubungan kebanyakan terjadi jika tiap kejadian pada setiap entitas akan memepunyai banyak hubungan dengan kajadian pada entitas lainnya. Baik dilihat dari sisi entitas yang pertama, maupun dilihat dari sisi yang kedua.
Yang berarti setiap tupel pada entitas A dapat berhubungan dengan banyak tupel pada entitas B, dan demikian sebaliknya.

Tentang Script Kiddie dalam Jaringan

DEFINISI SCRIPT KIDDIE
Di dunia hacker, seorang script kiddie diartikan sebagai seseorang dengan niat buruk yang menggunakan program lain untuk menyerang sistem komputer ataupun melakukan deface pada website.
Disebut sebagai script kiddie bukanlah merupakan kebanggaan, karena umumnya diasumsikan sebagai seorang anak (kid) yang kurang memiliki kemampuan atau kompetensi untuk membuat tools sendiri, dan sering kali hanya bertujuan untuk membuat sensasi.
Bagaimanapun, kehadiran script kiddie dapat menyebabkan permasalahan serius pada sistem yang diserang. Script kiddie sendiri umumnya tidak menargetkan secara spesifik komputer atau website tertentu, tetapi lebih mengandalkan hasil scan dari tools yang digunakan untuk menemukan kelemahan sistem.
Cepat atau lambat, secara acak mereka akan menemukan sebuah sistem yang dapat diserang. Target acak inilah yang membuat script kiddie merupakan sebuah ancaman, siapapun dapat menjadi target script kiddie jika terdapat kelemahan pada sistemnya. Jika sistem Anda terhubung pada internet, maka Anda adalah salah satu dari jutaan sistem di Internet yang dapat saja diserang oleh script kiddie.
Dari gambaran di atas, jelaslah bahwa walaupun Anda merasa tidak memiliki musuh atau merasa tidak ada yang menginginkan informasi yang tersimpan pada sistem Anda, tidak berarti sistem Anda aman dan tidak akan ada yang mengganggu.

SENJATA SCRIPT KIDDIE
Terdapat banyak tool yang mudah untuk digunakan dan dapat diperoleh melalui internet, siapapun dan dimanapun dapat men-download dan menggunakannya.
Metodologi umum yang digunakan adalah melakukan scan pada daftar IP/web untuk mencari sebuah kelemahan yang spesifik. Saat kelemahan tersebut ditemukan, maka lakukan proses exploit yang bisa jadi merusak. Untuk menjadi script kiddie, seseorang tidak perlu lembur bekerja siang malam, karena banyak tool yang berjalan secara otomatis dan menyimpan daftar target saat script kiddie yang menjalankannya tertidur nyenyak.
Strategi yang umum dilakukan oleh tools yang digunakan pada script kiddie adalah membuat daftar IP yang dapat di-scan, dan melakukan scan terhadap IP tersebut untuk menemukan celah lubang keamanan.
Cara kerja yang dilakukan tools tersebut adalah dengan mengirimkan packet tertentu dan menangkap respon yang dikembalikan dari IP target. Apakah proses ini dapat tertangkap oleh sistem yang sedang di-scan? Jawabnya adalah ya, tetapi tidak semua orang memonitor sistem mereka, sehingga tidak menyadari adanya penyerangan ini.
Berita buruk lainnya, bahkan jika Anda tidak menemukan sistem Anda sedang di-scan, tidak berarti Anda telah aman dari script kiddie. Hal ini dapat terjadi karena tools yang digunakan script kiddie juga dapat masuk melalui port yang digunakan untuk keperluan database.


HAL BURUH YANG DAPAT TERJADI
Sekali kelemahan sistem Anda telah tereksploitasi oleh penyusup, hal berikutnya yang dapat terjadi tentulah sangat tidak Anda harapkan. Beberapa hal buruk yang umum dilakukan script kiddie :
  1. Deface Website
Saat seseorang telah menyusup ke dalam web server dan memiliki hak akses, maka bersiaplah melihat ”salam perkenalan” dari sang penyusup pada halaman muka website Anda. Hal ini yang dinamakan dengan deface website.
Sang penyusup akan mengganti halaman muka dengan halaman yang dipersiapkan oleh penyusup, pesan yang ditampilkan oleh script kiddie sering berupa id/nick name beserta pesan yang ditujukan kepada orang yang mengenalnya.
Tentunya bagi mereka yang terpenting adalah keberhasilan menjebol sistem dan memamerkannya, tanpa perencanaan target ataupun motif tertentu.
  1. Menginfeksi Sistem
Apa saja yang dapat menginfeksi sistem Anda sekali sang penyusup berhasil masuk? Virus tentu adalah salah satunya, tetapi bukan itu saja, sistem Anda bisa jadi menerima infeksi dari worm atau backdoor.
Walau script kiddie tidak memiliki target korban spesifik, tidak berarti mereka tidak akan merusak. Komputer yang disusupi oleh backdoor bisa jadi bertujuan untuk menjadikan komputer Anda sebagai ”zombie” dengan berbagai tujuan, misalnya untuk mengirimkan e-mail spam atau melakukan serangan DdoS (Distributed Denial of Service Attack).
  1. Melakukan Operasi File
Jangan mengharapkan seorang script kiddie memiliki rasa hormat terhadap privasi Anda, sekali ia mendapatkan hak akses maka ia mungkin tidak sempat memikirkan perasaan Anda saat menyalahgunakan hak akses. Sekalipun itu adalah mengambil atau menghapus file berharga Anda.
  1. Mengambil Password
Password dengan strong type (memiliki derajat kesulitan yang tinggi untuk ditebak) kadang tidak berdaya saat komputer Anda telah disusupi program keylogger, ataupun jika metode enkripsi password tersebut telah dapat dipecahkan oleh program tertentu.
Bagaimanapun, password dengan strong type tentunya memperkecil kemungkinan untuk ditebak atau diserang dengan brute force attack (penyerangan berdasarkan dictionary atau kombinasi yang dilakukan secara terus-menerus).

PROTEKSI
Setiap serangan tentunya harus diantisipasi, termasuk kegiatan para script kiddie ini. Terdapat beberapa cara untuk melakukan proteksi terhadap serangan tidak bertanggung-jawab tersebut.
Dengan melihat pola penyerangan script kiddie yang mencari celah keamanan yang umum, maka Anda harus menjaga sistem Anda semaksimal mungkin, beberapa pencegahan yang dapat Anda lakukan:
  1. Minimalisasi Sistem
Salah satu celah keamanan yang dapat disusupi adalah service yang sedang dijalankan di komputer Anda. Karena itu pastikan Anda meminimalisasi sistem dengan hanya menjalankan service yang diperlukan. Anda dapat menonaktifkan service yang tidak digunakan.
Usahakan tidak menjalankan sesuatu dengan hak akses tertinggi (root), bila memang tidak diperlukan. Sederhanakan sistem dan kurangi hal-hal yang dapat mengakibatkan permasalahan.
  1. Selalu Update
Anda juga perlu memastikan bahwa service yang Anda jalankan merupakan versi/patch paling update. Hal ini dikarenakan service yang berjalan dapat menjadi bumerang bagi sistem jika ditemukan exploit pada service yang dapat memungkinkan penyusupan ke dalam sistem.
  1. Manajemen Password
Jika sebelumnya telah disebutkan password dengan strong type jga masih memiliki kemungkinan untuk ditembus, tentunya tidak berarti Anda harus meremehkan hal ini.
Berhati-hatilah jika Anda membuat password yang umum seperti ”admin”, ”123”, ”qwerty”, ”asdf”, bahkan password seperti ”p@$$w0rd” masih termasuk kategori password yang memiliki tingkat kesulitan yang rendah untuk ditebak.
Bisa jadi seorang script kiddie hanya membutuhkan sebuah search engine untuk mendapatkan daftar halaman login website Anda diantara daftar website lain yang dicari olehnya, jika Anda memberi password yang mudah ditebak, tampaknya kebobolan hanya tinggal menunggu waktu.
  1. Gunakan Firewall
Firewall tentunya tidak bisa melindungi Anda dari segala serangan, terutama jika serangan datang dari port yang diijinkan oleh Firewall (misalnya port 80 yang umumnya digunakan untuk web server). Tetapi tentunya, penggunaan firewall dapat lebih membantu banyak untuk menutupi kelemahan-kelemahan (vulneralibility) sebuah sistem.
  1. Konfigurasi Server
Konfigurasi yang kurang baik pada server juga dapat menyebabkan timbulnya celah-celah yang dapat disusupi, sehingga tidak heran seorang administrator server sudah seharusnya memiliki pengetahuan yang memadai.
Hal yang terutama adalah memastikan konfigurasi yang aman agar pihak luar tidak memiliki hak akses yang merugikan pada web server.
  1. Keamanan Aplikasi
Celah keamanan yang dapat timbul dari aplikasi Anda! Terutama jika aplikasi Anda melakukan proses ke dalam database berdasarkan parameter input dari pengguna (baca:penyusup).
Parameter input dapat ”diracuni” sehingga aplikasi mengirimkan instruksi yang tidak diinginkan dalam pemrosesan database dengan SQL (Structured Query Language). Dalam hal ini, perintah SQL yang dikirim telah dimodifikasi oleh penyusup. Hal ini dikenal dengan teknik SQL Injection.
SQL Injection memanfaatkan celah pada SQL (Structured Query Language) yang digunakan untuk melakukan operasi pada database, sehingga jika Anda memiliki website atau aplikasi client-server yang mengeksekusi perintah SQL berdasarkan input dari pengguna, maka pastikan Anda melakukan validasi yang cukup dari sisi server.
  1. Gunakan Tools
Jika para script kiddie menggunakan tools untuk mencari kelemahan sistem Anda, maka gunakan cara yang sama agar Anda mengetahui kelemahan sistem Anda. Bukankah lebih baik, Jika Anda yang terlebih dahulu mengetahui kelemahan sistem Anda daripada orang lain?
Tools yang didesain untuk mencari kelemahan sistem disebut dengan Vulnerability Scanner. Pada prinsipnya, Vulnerability Scanner akan melakukan scan IP address, sistem operasi, dan aplikasi yang berjalan, untuk kemudian menentukan patch/update pada operating system dan aplikasi.
Beberapa pilihan Vulnerability Scanner diantaranya adalah Nmap, Nessus, Nikto, dan lain sebagainya.

Tentang SQL Injection dalam Jairngan


Pengertian SQL Injection ?

1)   SQL injection adalah sebuah aksi hacking yang dilakukan di aplikasi client dengan cara memodifikasi perintah SQL yang ada di memori aplikasi client.
2) SQL Injection merupakan teknik mengeksploitasi web aplikasi yang didalamnya menggunakan database untuk penyimpanan data.

Sebab terjadinya SQL Injection ?

1)  Tidak adanya penanganan terhadap karakter – karakter tanda petik satu ’ dan juga karakter double minus -- yang menyebabkan suatu aplikasi dapat disisipi dengan perintah SQL.
2)   Sehingga seorang Hacker menyisipkan perintah SQL kedalam suatu parameter maupun suatu form.

Bug SQL Injection berbahaya ?

1)  Teknik ini memungkinkan seseorang dapat login kedalam sistem tanpa harus memiliki account.
2)  Selain itu SQL injection juga memungkinkan seseorang merubah, menghapus, maupun menambahkan data–data yang berada didalam database.
3)   Bahkan yang lebih berbahaya lagi yaitu mematikan database itu sendiri, sehingga tidak bisa memberi layanan kepada web server.


Apa saja yang diperlukan untuk melakukan SQL Injection ?

1)      Internet Exploler / Browser
2)      PC yang terhubung internet
3)      Program atau software seperti softice



Contoh sintaks SQL Injection

Contoh sintak SQL dalam PHP

1)      $SQL = “select * from login where username =’$username’ and password = ‘$password’”; , {dari GET atau POST variable }
2)      isikan password dengan string ’ or ’’ = ’
3)      hasilnya maka SQL akan seperti ini = “select   * from login where username = ’$username’ and password=’pass’ or ‘=′”; , { dengan SQL ini hasil selection akan selalu TRUE }
4)      maka kita bisa inject sintax SQL (dalam hal ini OR) kedalam SQL

Tentang Ddos dalam Jaringan Komputer

Apa itu DoS ?
 
Denial of service adalah jenis serangan yang tujuannya adalah mencegah pengguna yang sesungguhnya menikmati layanan yang diberikan server. Server sesuai namanya adalah pelayan yang harus selalu siap melayani permintaan pengguna, yang umumnya beroperasi 24 jam tanpa henti. Contohnya adalah web server yang bertugas melayani pengunjung web menyediakan informasi dalam bentuk halaman html. Dalam kondisi normal, pengunjung dapat meminta resource dari web server untuk ditampilkan dalam browsernya, namun bila web server terkena serangan DoS maka pengunjung tidak bisa menikmati layanan web server.
 
Secara umum ada 2 cara melakukan serangan DoS:
 
  1. Mematikan Server
  2. Menyibukkan Server
    • Tanpa bug/vulnerability
    • Meng-exploit bug/vulnerability
DoS dengan Mematikan Server: Kill Them!

Anda pernah mengalami ingin memakai telepon umum atau ATM namun tidak bisa karena di mesin tersebut ditempel kertas berisi pesan “Out of Service” atau “Sedang dalam perbaikan”. Telepon umum adalah target serangan DoS yang biasa terjadi, dimana-mana kita menemukan telpon umum yang rusak karena serangan DoS seperti membanting gagang telpon, mencabut kabel, memecahkan LCD dan aksi-aksi lainnya.
 
Tujuan serangan ini adalah membuat server shutdown, reboot, crash, “not responding”. Jadi serangan ini menghasilkan kerusakan yang sifatnya persisten artinya kondisi DoS akan tetap terjadi walaupun attacker sudah berhenti menyerang, server baru normal kembali setelah di-restart/reboot.
 
Bagaimana cara serangan DoS ini dilakukan? Serangan ini dilakukan dengan meng-exploit bug/vulnerability pada server. Kata kunci pada vulnerability jenis ini biasanya adalah “specially/carefully crafted packet/request”, yang artinya paket yang dirancang khusus. Kenapa dirancang khusus? Sebab dalam paket itu mengandung  sifat tertentu yang membuat server mati ketika mengolah paket khusus itu.
 
Mari kita perhatikan beberapa contoh vulnerability yang berakibat pada DoS attack:
 
  • Ping of Death ( CA-1996-26 )
  • Ini adalah jenis bug yang sudah sangat tua. Praktis sudah tidak ada lagi sistem yang vulnerable terhadap bug ini. Bug ini bila diexploit akan membuat server crash, freeze atau reboot. Serangan ini dilakukan dengan mengirimkan “specially crafted” paket berupa oversized ICMP packet, yaitu paket yang ukurannya di atas normal. Ketika server menerima dan memproses paket yang “aneh” ini, maka server akan crash, freeze atau reboot. Ini adalah contoh serangan DoS “one shot one kill” karena bisa merusak server hanya dengan satu tembakan saja.
     
  • MySQL IF Query DoS ( SA25188 )
  • Bug ini akan membuat mysql server menjadi crash hanya dengan mengirim sql khusus yang mengandung fungsi IF() contohnya: “SELECT id from example WHERE id IN(1, (SELECT IF(1=0,1,2/0)))”. Ini juga jenis serangan “one shot one kill”.
  • Cisco Global Site Selector DNS Request Denial of Service (SA33429)
  • Bug ini membuat DNS server Cisco mati dengan mengirimkan beberapa “specially crafted” paket request DNS dalam urutan tertentu.
Tiga contoh di atas kiranya cukup memberikan gambaran tentang bagaimana serangan DoS jenis ini dilakukan. Pada intinya adalah attacker memanfaatkan (baca:mengexploit) bug yang membuat server berhenti bekerja dan biasanya dilakukan sendirian secara remote dengan mengirimkan specially crafted packet.
 
DoS dengan Menyibukkan Server: Make Them As Busy As Possible!
 
Pada waktu menjelang lebaran kita sering merasa begitu sulit mengirim sms, bahkan sering terjadi gagal kirim. Begitu juga ketika berlangsung acara kuis di TV, mengelpon ke nomor untuk menjawab kuis terasa begitu sulit.  Hal ini terjadi karena ada begitu banyak orang yang mengirim sms pada saat lebaran dan menelpon pada waktu kuis sehingga membuat jaringan telekomunikasi menjadi begitu sibuk sampai tidak bisa melayani pengguna lain. Peristiwa itu mirip dengan yang terjadi ketika sebuah server mendapat serangan denial of service. DoS yang terjadi pada peristiwa tersebut bukan jenis DoS yang mematikan server, namun jenis DoS yang menyibukkan server.
 
Jenis DoS ini bersifat sementara, server akan kembali normal bila attacker berhenti mengirimkan request yang membuat sibuk server.
 
DoS jenis ini terbagi lagi menjadi 2 jenis berdasarkan cara melakukan serangan:
 
  • Exploiting vulnerability: Menyerang dengan malicious request/packet
  • No vulnerability exploitation: Menyerang dengan normal request/packet
Membuat server sibuk dengan mengexploitasi vulnerability lebih cepat daripada tanpa mengeksploit vulnerability.
 
Make Server Busy by Exploiting Vulnerability

Dalam serangan DoS jenis ini, attacker memanfatkan bug yang membuat server berlebihan dalam menggunakan resource (cpu,memory,disk space dsb). Attacker akan mencari cara bagaimana agar membuat server bekerja ekstra keras (jauh lebih keras dari request normal) untuk melayani request dia. Biasanya serangan DoS jenis ini tidak berupa serangan “one shot one kill”. Serangan dilakukan dengan melakukan banyak request dengan setiap request membuat server mengonsumsi lebih banyak resource dari request yang normal.
Dalam hitungan matematika sederhana, bila attacker bisa membuat server bekerja selama 10 detik  hanya untuk melayani dia (misal normalnya 0,1 detik), maka attacker bisa mengirimkan request 1.000x untuk membuat server melayani dia selama 10.000 detik (2,7 jam lebih) sehingga membuat pengguna lain tidak bisa menikmati layanan server.
 
Untuk lebih memahami DoS jenis ini, mari kita lihat contoh-contoh vulnerability yang bisa diexploit untuk melancarkan serangan DoS jenis ini:
 
  • TCP SYN Flood DoS
  • Ini adalah serangan DoS yang sudah sangat tua. Attacker menyerang dengan cara membanjiri server dengan malicious request berupa paket SYN dengan fake source IP address. SYN packet adalah paket dari client yang mengawali terbentuknya koneksi TCP/IP, setelah itu server akan membalas dengan SYN-ACK, dan dilengkapi dengan paket SYN-ACK-ACK dari client, tiga proses ini disebut three way handshake.
    Triknya adalah pada fake source ip address pada paket SYN dari client. Akibatnya server akan mengirim SYN-ACK (step 2) ke ip address yang salah sehingga server juga tidak akan mendapatkan balasan SYN-ACK-ACK dari client. Padahal untuk setiap client yang mencoba membuka koneksi, server akan mengalokasikan resource seperti memori dan waktu untuk menunggu datangnya balasan ACK dari client. Dengan cara ini attacker menghabiskan resource server hanya untuk melayani request palsu dari attacker.
     
  • Apache mod_deflate DoS
  • Apache menggunakan mod_deflate untuk memampatkan file. Bila visitor meminta sebuah file, maka apache akan menggunakan mod_deflate untuk memampatkannya kemudian mengirimkan ke visitor tersebut. Namun bila di tengah proses pemampatan, visitor memutuskan koneksi TCP, Apache masih terus bekerja memampatkan file untuk visitor yang sebenarnya sudah tidak ada (sudah disconnect). Jadi bugnya adalah pada borosnya pemakaian resource cpu untuk memampatkan file untuk client yang sudah tidak ada.
    Attacker memanfaatkan kelemahan ini dengan meminta sebuah file yang berukuran besar, kemudian dalam waktu singkat memutuskan koneksi sehingga membuat server bekerja keras mempatkan file untuk visitor yang sudah tidak ada. Request ini diulang berkali-kali sampai server begitu sibuknya dan semua resource cpu habis.
Dua contoh vulnerability di atas cukup menjelaskan bagaimana serangan DoS jenis ini dilakukan. Pada intinya adalah dengan mengirim banyak malicious request/paket  yang membuat server mengonsumsi resource lebih banyak dan lebih lama untuk setiap requestnya.
 
Make Server Busy Without Exploiting Vulnerability

Ini adalah jenis serangan yang mengandalkan pada kemampuan mengirimkan normal request sebanyak-banyaknya sehingga server menjadi sibuk. Perbedaan DoS jenis ini dengan DoS yang mengexploit vulnerability adalah pada requestnya. Request yang dikirimkan pada DoS jenis ini adalah request yang normal seperti yang dilakukan pengguna biasa, sehingga server tidak mengonsumsi resource berlebihan. Sedangkan DoS yang mengandalkan vulnerability mengirimkan specially crafted malicious request untuk membuat server mengonsumsi resource lebih banyak untuk melayani malicious request tersebut.
 
Normal request hanya membuat server mengonsumsi resource dalam jumlah biasa-biasa saja, tidak akan mengganggu kerja server secara keseluruhan. Diperlukan normal request dalam jumlah yang sangat banyak untuk membuat server terganggu kerjanya. Jadi agar serangan ini menjadi efektif, maka serangan harus dilakukan beramai-ramai dari banyak tempat, semakin banyak penyerang semakin bagus hasilnya. Serangan ini juga disebut dengan distributed DoS (DDoS) karena dilakukan dari banyak lokasi yang terdistribusi (tersebar).
 
Serangan DDoS dilakukan dengan menggunakan komputer zombie atau robot. Zombie adalah komputer yang sudah dikuasai attacker sehingga bisa dikendalikan dari jarak jauh. Sekumpulan komputer zombie membentuk jaringan yang disebut bot-net. Attacker mendapatkan banyak zombie dengan menyebarkan virus atau worm, setiap komputer yang terinfeksi akan diinstall program yang membuat komputer bersedia menjalankan perintah dari attacker.
 
Gambar di atas menjelaskan cara kerja DDoS. Attacker memberi perintah kepada semua pasukannya untuk membuat request HTTP ke sebuah website. Bila pasukan yang dikuasai attacker sangat besar, maka web server akan dibanjiri request sehingga menjadi terlalu sibuk dan tidak bisa diakses oleh pengguna yang sebenarnya (real visitor).
 
Serangan jenis ini tidak ada obatnya karena attacker tidak meng-exploit bug atau vulnerability apapun. Bila pada jenis DoS yang lain, serangan dapat dicegah dengan melakukan patching atau update software, maka serangan ini tidak bisa dihentikan dengan update atau patch.
 
Kesimpulan
 
Denial of service adalah serangan yang membuat server tidak bisa melayani pengguna yang sesungguhnya. Berikut adalah jenis-jenis serangan DoS berdasarkan cara melakukan serangan:
 
  • Mematikan Server: one shot, one kill untuk membuat server menjadi crash, hang, reboot.
  • Menyibukkan Server: mengirim banyak sekali request untuk membuat server sibuk.
  • Exploiting bug: mengirim banyak specially crafted request. Jumlah request tidak sebanyak jenis DoS yang menyibukkan server dengan normal request.
  • Normal request: mengirim banyak request normal seperti pengguna biasa. Diperlukan jumlah request yang lebih banyak dibandingkan jenis DoS yang menyibukkan server dengan exploit bug. Biasanya menggunakan botnet secara terdistribusi.