Deskripsi
Semakin tinggi lalu lintas yang hilir mudik melewati suatu jaringan, semakin tinggi pula kemungkinan terjadinya ancaman keamanan siber. Salah satu solusi untuk mencegahnya yaitu menggunakan perangkat lunak bernama Snort yang dapat mendeteksi aktivitas mencurigakan dengan cara memindai lalu lintas yang masuk dan keluar. Jika terbukti berbahaya, maka Snort akan melakukan pemblokiran akses berdasarkan alamat IP selama beberapa saat.
Namun muncul satu masalah, Snort tidak dapat beradaptasi terhadap frekuensi dan jenis serangan. Ini berarti durasi waktu pemblokiran akan tetap statis dengan lama waktu yang telah ditentukan sebelumnya, meskipun host melakukan penyerangan dalam frekuensi tinggi dan severity tinggi.
Logika Fuzzy diimplementasikan untuk mengatasi masalah tersebut sehingga tercipta IPS yang dapat beradaptasi terhadap frekuensi serangan dan jenis serangan.
Ilustrasi. Sumber: unsplash.com/speedoshots
Kode sumber dan semua file pendukung tersedia di repositori Github di xcodephile/university-final-project. Untuk informasi mengenai tautan publikasi IEEE dan referensi, silahkan gulir ke bagian Tautan Eksternal di paling bawah.
Komponen
Pengembangan sistem ini melibatkan:
Cara Kerja
Snort diinstal di application plane dan Ryu ditempatkan di control plane. Semua lalu lintas akan terlebih dahulu melewati Ryu dan selanjutnya akan diperiksa oleh Snort berdasarkan pencocokan dengan basis data yang telah didefinisikan sebelumnya (lihat file myrules.rules
di repositori). Jika dinyatakan aman, maka Ryu akan meneruskan ke tujuan. Namun jika terindikasi berbahaya, 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 pemblokiran akan bertambah sesuai dengan frekuensi dan jenis serangan.
Proses dimulai dari file log alert.csv
yang merupakan output dari Snort yang berisi informasi timestamp, alamat IP asal, alamat IP tujuan, protokol, dan pesan. File hostInspector.sh
akan mengambil baris terakhir dari log tersebut dan mencari selisih waktu antara serangan terakhir dan serangan sebelumnya dari host yang sama. Fuzzy (semua file yang berekstensi *.py
) hanya akan dieksekusi jika selisih waktu penyerangan lebih kecil atau sama dengan 10 menit. Output 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.
Topologi Jaringan
Setup
Lakukan proses instalasi Ryu, Mininet, dan Snort terlebih dahulu yang dokumentasinya dapat dibaca di situs web mereka masing-masing.
Jalankan Ryu.
1
ryu-manager ~/ryu/ryu/app/rest_firewall.py
Jalankan Mininet dengan opsi controller remote (diarahkan ke Ryu yang telah running) serta custom topologi yang ada di file
topologi.py
.1
mn --custom ~/mininet/custom/topologi.py --topo mytopo --controller remote --switch ovsk,protocols=OpenFlow13
Secara default lalu lintas dari dan ke seluruh host akan diblokir oleh Ryu sehingga diperlukan penambahan flow entry dengan cara menjalankan file
flowEntry.sh
.1
bash ~/flowEntry.sh
Jalankan Snort menggunakan interface s1-eth1 (switch 1 port eth-1).
1
snort -i s1-eth1 -c /etc/snort/snort.conf -l /var/log/snort
Jalankan file
hostInspector.sh
.1
bash ~/hostInspector.sh
Pengujian
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
.
1
attacker nmap -v -n -sP --send-ip 192.168.0.0/29
Sedangkan untuk DoS dapat memanfaatkan tools hping3
.
1
attacker hping3 -c 100 -d 120 -S -w 64 -p 53 --flood server
Tangkapan layar selama pengujian berlangsung
Hasil
Berikut contoh tangkapan layar ketika mencoba ping ke host yang sedang diblokir.
Dua gambar di bawah ini menjelaskan bagaimana hubungan antara interval waktu serangan suatu host dengan durasi blokir untuk masing-masing jenis serangan.
Host Discovery
DoS
Tautan Eksternal
Kode Sumber
Kode sumber dan semua file pendukung tersedia di github.com/xcodephile/university-final-project.
Publikasi
Penelitian ini telah dipublikasikan di IEEE dan web kampus.
Referensi Utama
- W. Xia, Y. Wen dan C. H. Foh, “A Survey on Software-Defined Networking,” IEEE Communication Surveys & Tutorials, vol. 17, pp. 27-51, 2015.
- D. Huang, T. Xing dan Z. Xiong, “SDNIPS: Enabling Software-Defined Networking Based Intrusion Prevention System in Clouds,” CNSM and Workshop, pp. 308-311, 2014.
- W. El-Hajj, F. Aloul dan Z. Trabelsi, “On Detecting Port Scanning using Fuzzy Based Intrusion Detection System”.