Biasanya kalau Slackware baru nongol dan diinstal di laptop, saya langsung banyak bahan oprekan hehe. Rilis-rilis Slackware sebelumnya juga, selalu saja ada yang harus di oprek agar Slackware berjalan sesuai keinginan di laptop ini. Cerita tentang instalasi dan konfigurasi Slackware dari masa ke masa ada di postingan lama saya di blog-blog usang tercecer di situs gak jelas, haha.
Masalah pertama yang diangkat adalah coba membuat Sistem Informasi Kemanan Laptop Slackware ini. Sehingga tercetus lah ide untuk menginstall IDS open source paling terkenal bernama Snort. Snort adalah aplikasi yang dapat melakukan analisis protokol, mencari konten tertentu, dan mendeteksi intrusi dengan database signature-nya. Snort memiliki kemampuan dalam meng-generate alert terhadap kejadian dalam suatu waktu. Alert dihasilkan bisa berbentuk logging plugins untuk syslog, file teks ASCII, UNIX sockets, database (MySQL/PostgreSQL/Oracle/ODBC), atau alert dalam format XML. Untuk kali ini, alert yang dihasilkan Snort di laptop saya adalah ke file teks ASCII.
Cara kerjanya seperti yang sudah dijelaskan adalah membaca paket yang lalu lalang, kemudian mencocokan dengan signature, dan kalau cocok akan di generate alert. Ini contoh format signature Snort:
alert tcp any any -> $HOME_NET 31337 (msg: “BACKDOOR ATTEMPT-Backorifice”; flags: S;)
Rule ini akan meng-generate alert jika pada sebuah traffic terdapat: protokol TCP, berasal dari jaringan manapun, port asal apapun, menuju jaringan lokal dengan port tujuan 31337, tampilkan pesan alert “BACKDOOR ATTEMPT-Backorifice” di log. Opsi flags S (SYN) berarti lakukan alert tepat ketika traffic yang dideteksi baru akan memulai koneksi menuju jaringan yang kita lindungi. Ruleset ini berlaku untuk mendeteksi Backorifice dan melindungi jaringan lokal dari backdoor tersebut yang hobinya menggunakan port number 31337.
Selanjutnya adalah contoh alert Snortnya… alertnya akan di tulis di file ‘alert’ pada direktori /var/log/snort/. Bentuk alertnya seperti ini:
[**] IDS 152 – PING BSD [**] 05/07-19:18:22.311702 192.168.100.5 -> 192.168.20.1 ICMP TTL: 49 TOS: 0x0 ID: 17933 ID: 48507 Seq: 0 ECHO
Alert ini adalah contoh untuk ruleset jika ada mesin BSD melakukan ping. Dalam contoh ini adalah alert dari 192.168.100.5 yang melakukan ping ke 192.168.20.1.
Oke, cukup Snort dengan signature dan alertnya. Sekarang bagaimana jika tampilan lognya ingin lebih user friendly (misalnya: berbasis web). Yap, memang ada sistem informasi Snort berbasis web seperti ACID/BASE tetapi saya juga ingin membuat yang lebih simple. Pada akhirnya saya memanfaatkan script BlockIt (berbahasa PERL) yang tugasnya memonitor file alert dan melakukan parsing untuk mengekstrak IP address source, destination, alert, dan timestamp. Subroutine parsing dilakukan jika filesize ‘/var/log/snort/alert’ berubah atau dengan kata lain ada entry alert baru. Setelah itu, modifikasi sedikit source blockit.pl agar menyisipkan informasi yang di ekstrak script blockit ke database MySQL via DBI PERL
$dbh = DBI->connect("DBI:mysql:$config{database}",$config{username},$config{password},{RaiseError => 1}); die "Unable to connect: $DBI::errstr\n" unless (defined $dbh); $results=$dbh->prepare("INSERT INTO INTRUDERS (IP,Alert) values ('$message','$desc')") or die "Unable to prep our query:".$dbh->errstr."\n"; $results->execute or die "Unable to execute our query:".$dbh->errstr."\n";;
Sehingga informasi IP penyerang dan deskripsi alert yang diekstrak oleh BlockIt dari file alert Snort dimasukkan ke database MySQL.
Apa akibatnya jika sudah masuk database MySQL?? Hohoho ya tinggal olah saja lah sajian data dengan PHP heheh dannn beginilah tampilan akhir sang aplikasi web sederhana bernama miniSIEM ini…
Gambar di atas ini adalah contoh dashboard aplikasi. Disana sudah ada list para tersangka penyerang laptop saya menurut alert Snort hehe. Kolom ‘Hit us’ adalah kolom jumlah serangan yang dilakukan sang bandit. ‘Traceback’ sama seperti ‘traceroute’ untuk mengetahui topologi menuju ke si bandit. ‘Who are they’ jika di klik akan resolv informasi GeoIP dan domain si bandit. Sedangkan yang terakhir adalah membebaskan sang penjahat jika ternyata dia tidak begitu berbahaya menurut info yang anda dapatkan dari ‘Hit us’ yang di klik. Ini lah contoh jika ‘Hit us’ di klik…
Sistem informasi mini ini juga memberikan graph dari alert-alertnya loh (bangga). Hasilnya menjadi pie chart seperti ini:
Terakhir adalah jika halaman ‘About’ di klik muncullah halaman paling keren di sistem informasi ini (narsis haha)
saya mau tanya ni..cara diatas bisa tidak menangkal serangan Netcut dan Ettercap..
terimakasih..
hmm.. untuk miniSIEM ini belum bisa, karena ini hanya untuk pengamanan sistem lokal dari serangan luar.
soalnya untuk pertanyaan mas, analogi jawabannya seperti ini:
saya punya rumah yang aman dengan satu kompi tentara dan polisi di gerbang masuknya. kemudian saya ingin mengirim paket ke amerika misalnya. nah, paket itu mau ada yang buka/intip isinya (ettercap) ketika di tengah perjalanan tentu diluar sekuritas keamanan rumah saya. atau kalau mobil DHLnya diblokir/dialihkan (netcut) ditengah jalan juga diluar sekuritas keamanan rumah saya kan?
tetapi ettercap bisa dihindari dengan cara mengirim data terenkripsi
menghindari spoofing dengan cara sangat fuzzy logic, yaitu kesadaran!
untuk netcut misalnya dengan cara menggunakan static ARP table saja, dan.. jangan kasih tau IP lokal kita ke orang lain =P
wah makasih banyak atas pencerahannya.. kebetulan saya juga pakai GNU/Linux, hanya masi newbie.. oia mas, kalau cara mengirim data terenkripsi caranya gimana?
maaf kalau terlalu bnyak bertanya… 🙂
kirim data terenkripsi misalnya browsing menggunakan https, berkirim email menggunakan pgp, login ke shell menggunakan ssh dsb. bisa baca2 posting saya ttg https, pgp, dan ssh di blog ini jg. saya jg sama2 msh belajar… 😀
mas Bisa bikin tutorial cara install dan configure integrasi antara Snort – BlockIt – IpTables.. saya dah coba dan gagal.. buat tugas akhir nii..