Tugas Akhir : Perancangan Adaptive IPS untuk Pencegahan Penyerangan di Jaringan SDN Menggunakan Fuzzy Logic

Adapun detail Tugas Akhir saya yaitu:

  • Judul: Perancangan Adaptive Intrusion Prevention System (IPS) untuk Pencegahan Penyerangan di Jaringan Software-Defined Network (SDN) Menggunakan Fuzzy Logic.
  • Subjek: Jaringan Komputer, Keamanan Jaringan
  • Almamater: Telkom University
  • Kota: Bandung
  • Tahun: 2017

Spesifikasi Sistem:

  • Sistem Operasi: Ubuntu 14.04 LTS
  • SDN Controller: Ryu
  • Emulator Jaringan: Mininet
  • IPS: Snort

Repositori source code dan beberapa dokumen tersedia di GitHub serta Buku (versi PDF) dapat dilihat di Google Drive.


Latar Belakang

Bertambahnya perangkat elektronik yang terhubung ke dalam jaringan, baik intranet maupun internet, menyebabkan tingkat kompleksitas jaringan komputer semakin tinggi dengan cepat. Hal ini tentu akan mempersulit administrator jaringan dalam mengelola dan melakukan pemeliharaan jaringan. Sebuah konsorsium non-profit, Open Networking Foundation, menjawab permasalahan ini dengan mengembangkan sebuah pendekatan baru dalam arsitektur jaringan yang disebut dengan Software-Defined Network (SDN). Berbeda dengan arsitektur tradisional yang menyatukan control plane dan data plane pada perangkat jaringan (misalnya router dan switch), SDN memisahkan keduanya dan menempatkan control plane ke satu tempat terpusat. Dengan adanya sentralisasi control plane (sebagai pusat logika jaringan), akan memberikan kemudahan dalam pengelolaan jaringan secara keseluruhan karena sifat kontrolnya yang terpusat serta tingkat programibilitasnya yang tinggi.

Di satu sisi, semakin tinggi lalu lintas yang ada pada jaringan, semakin tinggi pula kemungkinan terjadinya ancaman keamanan cyber. Terdapat beberapa cara untuk menangani masalah ini, salah satunya menggunakan Snort yang dapat mendeteksi aktivitas mencurigakan dalam sebuah jaringan dengan cara memindai lalu lintas inbound dan outbound. Jika terbukti berbahaya, maka Snort akan melakukan pemblokiran akses terhadap attacker host berdasarkan alamat IP-nya dalam beberapa saat.

Namun terdapat satu masalah yang kemudian muncul, yaitu Snort tidak dapat beradaptasi terhadap frekuensi serangan. Ini berarti durasi waktu pemblokiran akan tetap statis dengan lama waktu yang telah ditentukan sebelumnya, meskipun host melakukan penyerangan dalam frekuensi yang tinggi.

Fuzzy logic diimplementasikan untuk mengatasi masalah tersebut sehingga tercipta IPS yang dapat beradaptasi terhadap frekuensi serangan dan jenis serangan.


Cara Kerja

Snort yang digunakan sebagai IPS diinstal pada application plane sedangkan Ryu sebagai controller terdapat di control plane. Tiap lalu lintas yang ada di jaringan akan terlebih dahulu melewati Ryu yang selanjutnya akan diperiksa oleh Snort berdasarkan pencocokan dengan basis data yang telah didefinisikan sebelumnya (ada di file myrules.rules, lihat Github terlebih dahulu). Jika dinyatakan aman, maka oleh Ryu akan langsung diteruskan ke tujuan, namun jika terindikasi berbahaya, maka Snort akan mengirim peringatan serta mengatur lama waktu pemblokiran dengan durasi awal 10 menit. Jika host terus melakukan serangan dalam masa waktu kurang dari atau sama dengan 10 menit, maka waktu blokir akan ditetapkan sesuai dengan frekuensi dan jenis serangan.

 

Topologi

 

Proses dimulai dari file log alert.csv yang merupakan keluaran dari Snort yang berisi timestamp, alamat IP asal, alamat IP tujuan, protokol, dan pesan. Oleh hostInspector.sh akan mengambil baris terakhir dari log dan mencari selisih waktu antara serangan terakhir dan serangan sebelumnya dari sebuah host. Fuzzy (semua file yang berekstensi .py) hanya akan dieksekusi jika selisih waktu (interval) penyerangan lebih kecil atau sama dengan 10 menit. Keluaran dari fuzzy adalah durasi waktu blokir dalam satuan detik yang nantinya akan berfungsi untuk menjeda proses. File block.sh berfungsi untuk mengirimkan flow entry pemblokiran ke Ryu via REST API. File unblock.sh akan dieksekusi setelah durasi telah mencapai 0 detik dan akan menghapus flow entry pemblokiran.

 

Block diagram. Keterangan: x_frk = frekuensi


Cara Penggunaan

Lakukan proses instalasi Ryu, Mininet, dan Snort terlebih dahulu yang dokumentasinya dapat dibaca di situs web mereka masing-masing.

1. Jalankan Ryu

ryu-manager ~/ryu/ryu/app/rest_firewall.py

2. Jalankan Mininet

mn --custom ~/mininet/custom/topologi.py --topo mytopo --controller remote

3. Tambahkan Flow Entry

bash ~/flowEntry.sh

4. Jalankan Snort

snort -A full -i s1-eth1 -c /etc/snort/snort.conf -l /var/log/snort

5. Jalankan File hostInspector.sh

bash ~/hostInspector.sh

Untuk Pengujian, lakukan uji serangan yang sesuai dengan basis data serangan Snort di file myrules.rules yaitu host discovery (menggunakan metode port scanning) dan DoS agar peringatan bahwa telah terjadi serangan dapat tersimpan ke /var/log/snort/alert.csv.

attacker nmap -v -n -sP --send-ip 192.168.0.0/29

Sedangkan untuk DoS dapat memanfaatkan tools hping3.

attacker hping3 -c 100 -d 120 -S -w 64 -p 53 --flood server


Hasil

Berikut contoh screenshot ketika mencoba ping ke host yang sedang diblokir.

Dua gambar di bawah ini menjelaskan bagaimana hubungan antara interval (selisih) waktu serangan suatu host dengan durasi blokir untuk masing-masing jenis serangan.

Host Discovery (Port Scanning)

DoS


Tinggalkan Balasan