AF Definisi & Penjelasan Tentang SNORT ~ dynamicSainsIT

Rabu, 20 November 2013

Definisi & Penjelasan Tentang SNORT











Snort adalah NIDS yang bekerja dengan menggunakan signature detection, berfungsi juga sebagai sniffer dan packet logger. Snort pertama kali di buat dan dikembangkan oleh Marti Roesh, lalu menjadi sebuah opensource project. Versi komersial dari snort dibuat oleh Sourcefire (www.sourcefire.com).Snort memiliki karakteristik, sebagai berikut:
1.      Berukuran kecil – Source code dan rules untuk rilis 2.1.1 hanya 2256k.
2.      Portable untuk banyak OS – Telah diporting ke Linux, Windows, OSX, Solaris, BSD,dll.
3.      Cepat – Snort mampu mendeteksi serangan pada network 100Mbps.
4.      Mudah dikonfigurasi – Snort sangat mudah dikonfigurasi sesuai dengan kebutuhan network kita. Bahkan kita juga dapat membuat rule sendiri untuk mendeteksi adanya serangan baru.
5.      Free – Kita tidak perlu membayar sepeser pun untuk menggunakan snort. Snort bersifat open source dan menggunakan lisensi GPL.
A. Komponen Snort.
Snort merupakan packet sniffing yang sangat ringan. Snifing interface yang digunakan berbasis libpcap (pada Unix tersedia dengan tcpdump, www.tcpdump.org). Pembuat snort sangat fokus pada engine yang digunakan untuk mendeteksi serangan dan memanfaatkan tools tcpdump untuk mengambil paket network. Salah satu keunggulan snort adalah bahwa snort memiliki plugin sistem yang sangat fleksibel untuk dimodifikasi.
Snort memiliki beberapa komponen yang tiap komponennya mempunyai tugas masing-masing. Pada saat ada paket network yang melewati Ethernet di tempat snort dipasang, maka ada beberapa hal yang dilalui:
Packet capture library (libpcap).
Packet capture library – akan memisahkan paket data yang melalui ethernet card untuk selanjutnya digunakan oleh snort.
Packet decoder.
Packet decoder – mengambil data di layer 2 yang dikirim dari packet capture library(proses 1). Pertama ia akan memisahkan Data link (seperti ethernet, TokenRing, 802.11) kemudian protokol IP, dan selanjutnya paket TCP dan UDP. Setelah pemisahan data selesai, snort telah mempunyai informasi protokol yang dapat diproses lebih lanjut.
Preprocessor.
Selanjutnya dilakukan analisis (preprocessor) atau manipulasi terhadap paket sebelum dikirim ke detection engine. Manipulasi paket dapat berupa ditandai, dikelompokan atau malah dihentikan.
Detection Engine.
Inilah jantung dari snort. Paket yang datang dari packet decoder akan ditest dan dibandingkan dengan rule yang telah ditetapkan sebelumnya. Rule berisi tanda-tanda (signature) yang termasuk serangan.
Output.
Output yang dihasilkan berupa report dan alert. Ada banyak variasi output yang dihasilkan snort, seperti teks (ASCII), XML, syslog, tcpdump, binary format, atau Database (MySQL, MsSQL, PostgreSQL, dsb).
B. Memilih lokasi Snort.
Hal terakhir yang harus kita ketahui, sekaligus menjadi faktor yang menentukan keefektifan dari snort adalah ‘lokasi’. Ini sangat penting terlebih jika jaringan yang kita kelola berukuran besar. Oleh karena itu, sebelum memulai menginstal snort, tentukan terlebih dahulu apa yang akan kita lindungi, apakah:
1.      Single server
2.      Sekelompok server
3.      Semua subnet
Setelah kita selesai menentukan apa yang akan dimonitor, maka kita bisa leluasa menentukan dimana akan meletakan snort. Jadi untuk menempatkan snort tergantung kepada apa yang akan kita monitor.
Network biasanya menggunakan firewall untuk memisahkan server publik ke dalam De-Militarized Zone (DMZ) dan jaringan lokal ke dalam internal NAT network. Hal-hal yang penting untuk diketahui, adalah:
1.      DMZ – adalah daerah untuk menempatkan server publik yang sering diakses melalui internat. Server seperti email, web, atau ftp bisa kita letakan di sini secara berkelompok. Biasanya zone di daerah ini banyak mengalami lalu lintas data dari internet.
2.      NAT (Network Address Translation) adalah cara untuk menyembunyikan beberapa komputer yang menggunakan IP private di belakang IP publik. Dengan menggunakan NAT, komputer internal di jaringan tetap bisa menggunakan internet meskipun menggunakan IP private. Tetapi sebaliknya, pengguna internet tidak bisa mengenali workstation yang ada di dalam NAT.
Mengapa kita perlu memisahkan kedua jaringan ini? Jika di suatu perusahaan hanya menggunakan internet untuk jaringan komunikasi internal seperti mengirim email atau browsing mungkin tidak menjadi masalah. Tetapi jika perusahaan juga membutuhkan server web atau email sendiri untuk menjalankan bisnisnya, maka berhati-hatilah, karena kita telah mempublikasikan kepada dunia tentang web site perusahaan kita. Artinya semua orang di dunia juga bisa bermain-main dan mengerjai server kita.
Oleh karena itu, jika server yang terletak di DMZ misalnya berhasil ditembus olehcracker, maka kerusakan dapat diminimalkan karena mereka tidak dapat keluar dari DMZ ke jaringan internal.
Jadi setiap kita menempatkan server publik, di situ juga harus dipasang snort. Jika jaringan kita menggunakan DMZ, maka setidaknyadilakukan hal-hal sebagai berikut:
1.      Buat satu port di switch DMZ sebagai monitoring port.
2.      Tambahkan perintah di file konfigurasi snort (snort.conf) untuk memonitor subnet tersebut.
CARA KERJA
Salah satu aplikasi Linux yang dapat dipakai untuk meningkatkan keamanan komputer adalah Snort.  Secara garis besar, Snort adalah sebuah program yang memiliki tiga fungsi atau tiga modus operasi.  Snort dapat dipakai dalam packet sniffer mode sehingga bekerja sebagai sniffer sama seperti Wireshark.  Sama seperti Wireshark, Snort juga dapat menyimpan setiap packet yang di-capture ke dalam media penyimpan di moduspacket logger mode.  Akan tetapi berbeda dengan Wireshark, Snort dapat dipakai sebagai komponen NIDS dengan menjalankannya pada Network Intrusion Detection System (NIDS) mode.  Pada modus yang terakhir ini, Snort akan menganalisa packet  berdasarkan rule yang ada untuk mengenali adanya upaya serangan hacker.
Untuk memulai menggunakan Snort, download requirement serta source Snort, kemudian build & install.  Bagi yang memakai distro Ubuntu, libdnet di distro tersebut adalah library yang berbeda dengan yang dibutuhkan Snort. Di Ubuntu, libdnet adalah DECNet libraries, sementara yang dibutuhkan oleh Snort diganti namanya menjadi libdumpnet.  Sebaiknya download source dari Google Code, kemudian install ke lokasi /usr, bukan/usr/local.  Caranya adalah dengan menambahkan argumen - -prefix=/usr pada saat memanggil scriptconfigure.
Berikut adalah contoh menjalankan Snort sebagai packet sniffer:
$ sudo snort -v
Running in packet dump mode

        --== Initializing Snort ==--
Initializing Output Plugins!
pcap DAQ configured to passive.
Acquiring network traffic from "eth0".
Decoding Ethernet

        --== Initialization Complete ==--

   ,,_     -*> Snort! <*-
  o"  )~   Version 2.9.0.5 (Build 135)
   ''''    By Martin Roesch & The Snort Team: http://www.snort.org/snort/snort-team
           Copyright (C) 1998-2011 Sourcefire, Inc., et al.
           Using libpcap version 1.1.1
           Using PCRE version: 8.12 2011-01-15

Commencing packet processing (pid=31839)
06/05-12:07:03.524481 192.168.1.200:45263 -> 192.168.1.5:53
UDP TTL:64 TOS:0x0 ID:63753 IpLen:20 DgmLen:73 DF
Len: 45
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+

06/05-12:07:03.582863 192.168.1.5:53 -> 192.168.1.200:45263
UDP TTL:255 TOS:0x0 ID:4887 IpLen:20 DgmLen:186 DF
Len: 158
...
===============================================================================
Run time for packet processing was 27.619079 seconds
Snort processed 19 packets.
Snort ran for 0 days 0 hours 0 minutes 27 seconds
   Pkts/sec:            0
===============================================================================
Packet I/O Totals:
   Received:           19
   Analyzed:           19 (100.000%)
    Dropped:            0 (  0.000%)
   Filtered:            0 (  0.000%)
Outstanding:            0 (  0.000%)
   Injected:            0
===============================================================================
... 
Untuk mencatat rekaman packet ke dalam file teks, Snort bisa dijalankan dengan memberikan perintah seperti:
snort -dev -l ./log
Perintah di atas akan menulis rekaman packet ke dalam direktori log (direktori ini harus sudah dibuat sebelumnya).
Dan untuk modus NIDS, tambahan argumen -c yang merujuk ke file konfigurasi Snort, seperti berikut ini:
snort -d -l ./log -c snort.conf
Pada perintah di atas, file konfigurasinya bernama snort.conf.
Untuk menjalankan Snort sebagai daemon (background process yang terus berjalan), tambahkan argumen -D seperti pada contoh ini:
snort -d -l /var/log/snort.log -c /etc/snort.conf -D
Bicara soal file konfigurasi, berikut adalah contoh isi file konfigurasi:
var LOG_IP 100.10.12.13
alert tcp $LOG_IP any -> any any (msg: "Akses Dari Dia"; sid:1;)
File konfigurasi di atas menyebabkan Snort menghasilkan alert dalam file bernama alert setiap kali IP 100.10.12.13 melakukan akses TCP, dengan pesan berupa “Akses Dari Dia”.  Tentu saja ini adalah contoh konfigurasi sederhana yang tidak banyak berguna, akan tetapi cukup untuk menunjukkan syntax file konfigurasi Snort yang lumayan rumit.  Contoh di atas mengandung sebuah variabel IP bernama LOG_IP.  Variabel tersebut dapat digunakan dengan menulis $LOG_IP yang akan disubstitusi dengan nilai yang sesungguhnya.
Argumen yang biasanya diberikan saat memanggil Snort juga dapat dituliskan ke file konfigurasi sehingga tidak perlu diberikan secara manual pada saat menjalankan Snort, seperti pada contoh berikut:
#sama dengan argumen -D
config daemon

#sama dengan argumen -d
config dump_payload

#sama dengan argumen -l
config logdir: /var/log/snort

var LOG_IP 192.168.1.2
alert tcp $LOG_IP any -> any any (msg: "Akses Dari Dia"; sid:1;)
Gunakan preprocessor untuk memakai processor yang sudah disediakan oleh Snort.  Sebagai contoh, untuk mendeteksi terjadinya port scanning, tambahkan konfigurasi berikut:
preprocessor stream5_global:\
        track_tcp yes, track_udp yes, track_icmp yes

preprocessor stream5_tcp:\
        policy first

preprocessor stream5_udp

preprocessor stream5_icmp

preprocessor sfportscan:\
        proto { all } \
        scan_type { all } \
        sense_level { high }
Konfigurasi di atas akan memakai preprocessor sfPortScan dari Source Fire.  Syarat untuk memakai sfPortScan adalah menggunakan preprocessor Stream5.  Sekarang, bila seseorang melakukan port scanning (yang merupakan tahap awal dalam serangan), misalnya dengan menggunakan tool Nmap:
$ nmap -A -v 192.168.1.22
Maka, Snort akan menghasilkan alert seperti berikut ini:
[**] [122:1:0] (portscan) TCP Portscan [**]
[Priority: 3] 
06/06-03:34:13.052153 192.168.1.49 -> 192.168.1.22
PROTO:255 TTL:64 TOS:0x0 ID:0 IpLen:20 DgmLen:158 DF
Alert tersebut menunjukkan bahwa seseorang dari IP 192.168.1.49 melakukan port scanning untuk komputer dengan IP 192.168.1.22.
~sekian

0 komentar:

Posting Komentar