Posts tagged ‘Snort’

Memakai Snort Sebagai IPS Di Notebook

Kedengarannya memang aneh, kenapa harus menjalankan Snort di notebook?  Bukankah biasanya Snort IPS dijalankan pada komputer server yang memiliki dua network card (NIC) terpisah?  Tapi, bukanlah hal mustahil untuk menjalankan Snort tanpa melalui bridging (dua network card).  Artikel ini mengasumsikan penggunaan DAQ module NFQ seperti yang dituliskan di artikel sebelumnya.  Artikel ini juga mengasumsikan penggunaan Linux UBuntu 10 LTS.  Setelah Snort berhasil dikonfigurasi dan dijalankan dengan baik, yang perlu dilakukan sekarang adalah melakukan pengaturan iptables.

Jika memakai Snort sebagai IPS pada notebook atau komputer yang dipakai untuk berselancar di Internet, pengguna harus memilih untuk mengorbankan rules di iptables atau tidak:

  • Seluruh packet yang masuk pertama kali akan diterima oleh modul Netfilter di Ubuntu.  Untuk pendeteksian secara maksimal, packet yang masuk dapat dengan segera dialihkan ke Netfilter Queue guna diolah oleh Snort.  Akan tetapi, packet tersebut tidak dicocokkan satu per satu dengan rules iptables lainnya lagi.
  • Atau, packet yang masuk dapat di-saring dulu dengan rules di iptables, baru kemudian packet yang lolos dialihkan ke Netfilter Queue untuk diolah oleh Snort.  Kekurangannya adalah Snort tidak memperoleh packet yang mengidentifikasikan serangan secara lengkap, karena beberapa packet mungkin sudah disaring terlebih dahulu oleh Netfilter.

Apapun metode yang dipakai, semuanya melibatkan penambahan rules di iptables untuk mengalihkan packet ke Netfilter Queue.  Yang membedakan adalah urutan/posisi rule tersebut.  Rules tersebut terlihat seperti:

iptables -A INPUT -j QUEUE
iptables -A OUTPUT -j QUEUE

Tentunya pengguna dapat menambahkan parameter lainnya sesuai kebutuhan dan selera, tetapi yang harus ada adalah -j QUEUE yang menunjukkan bahwa packet akan ditampung oleh Netfilter Queue.  Bila tidak aplikasi yang membaca queue, misalnya Snort sedang tidak berjalan, maka packet akan di-drop.

Bagi yang menggunakan ufw (uncomplicated firewall),  dapat langsung mengedit file yang ada di /etc/ufw/after.rules atau /etc/ufw/before.rules.  Jangan lupa mematikan dan menyalakan kembali firewall setelah melakukan perubahan pada file.  Sebagai contoh, seseorang dapat menambahkan baris berikut pada /etc/ufw/after.rules:

-A ufw-after-input -j QUEUE
-A ufw-after-output -j QUEUE

Langkah selanjutnya, karena Snort dipakai pada “perangkat desktop” yang menjalankan banyak program sehari-hari dan belum tentu stabil, pengguna sebaiknya menambahkan program Snort pada daftar daemo yang diproses oleh Upstart di Ubuntu.  Upstart adalah sebuah program bawaan di Ubuntu yang memiliki fungsi seperti /etc/inittab di UNIX.  Upstart dapat memantau proses Snort, dan bila oleh suatu hal, Snort harus berhenti dijalankan, Upstart akan secara otomatis “menghidupkan” Snort kembali.

Buat sebuah file baru di direktori /etc/init, misalnya /etc/init/snort.conf yang memiliki isi seperti berikut ini:

start on started ufw
stop on stopping ufw
respawn
exec /usr/bin/snort --daq nfq -D -c /etc/snort.conf -Q

Pada konfigurasi di atas, Snort akan dijalankan setelah ufw, dan akan dimatikan sebelum ufw dimatikan.  Hal ini dilakukan karena Snort memakai modul NFQ yang berkaitan erat dengan iptables.  Jangan lupa untuk menyertakan respawn yang berarti proses akan secara otomatis dihidupkan kembali bila tidak dimatikan melalui Upstart.

Setelah ini, restart komputer, dan berikan perintah seperti:

#initctl list
...
snort start/running, process 2084
...

Hal ini memperlihatkan bahwa Upstart telah menjalankan Snort secara otomatis begitu notebook/komputer rumah dijalankan, dan akan terus menjaga agar proses Snort senantiasa aktif.

17 Agustus 2011 at 5:02 PM Tinggalkan Komentar

Snort IPS Di Ubuntu 10 LTS

Instalasi Snort di Ubuntu 10 LTS memang tidak sulit, cukup mengikuti langkah step-by-step yang disediakan oleh pembuatnya yang dapat di-download dalam bentuk PDF di http://www.snort.org/assets/158/011-snortinstallguide2905.pdf.  Akan tetapi, setelah mengikuti langkah-langkah tersebut, Snort berjalan sebagai IDS (Intrusion Detection System).  Sebagai IDS, Snort hanya menganalisa packet yang ada dan memberikan peringatan bila terjadi serangan dari hacker.  Jika seperti ini kasusnya, IDS dikatakan bekerja dalam modus passive.   Bila ingin Snort memblokir upaya serangan dan memberikan respon atas serangan hacker, maka Snort harus bekerja sebagai IPS (Intrusion Prevention System).  Snort akan berfungsi sebagai IPS bila berjalan dalam modus inline.

Bila dijalankan secara standard, Snort akan memakai DAQ module bernama pcap.   DAQ Module pcap ini tidak mendukung modus inline, sehingga administrator yang ingin menjalankan Snort sebagai IPS harus memakai DAQ module lain.  Untuk melihat apa saja DAQ module yang ada, berikan perintah seperti:

# snort --daq-list
Available DAQ modules:
pcap(v3): readback live multi unpriv
ipfw(v2): live inline multi unpriv
dump(v1): readback live inline multi unpriv
afpacket(v4): live inline multi unpriv

Hasil output tersebut menunjukkan bahwa pcap tidak mendukung modus inline.  Salah DAQ Module bawaan, yaitu NFQ yang memakai Netfilter, sama sekali tidak terlihat.  Padahal Netfilter dan iptables merupakan dasar yang membentuk fungsi packet filtering di kernel Linux.

Langkah pertama yang harus dilakukan agar DAQ Module nfq dibuat adalah dengan meng-install paket libnetfilter-queue-dev (beserta paket yang dibutuhkanya seperti libnetfilter-queue1 dan lainnya).   Di Ubuntu 10 LTS,  paket tersebut masih belum ter-install sehingga administrator perlu meng-install dengan menggunakan apt-get (berbasis console) ataupun Ubuntu Software Center (berbasis GUI).

Langkah berikutnya, upgrade libpcap menjadi versi terbaru, yang dapat didownload di www.tcpdump.org.  Ubuntu 10 LTS datang dengan repository yang berisi libpcap0.8.  Versi libpcap ini memiliki bug yang menyebabkan Snort akan berhenti berjalan dan memberikan pesan kesalahan yang berkaitan dengan log_tcpdump dimana pesan-nya adalah Snort tidak dapat menulis pada file /var/log/snort (atau lokasi direktori log yang telah ditentukan sebelumnya).  Pesan kesalahan ini cukup menipu, karena sama sekali tidak berhubungan dengan permission di direktori tersebut, dan akan hilang setelah meng-upgrade ke versi libpcap yang lebih baru, misalnya libpcap-1.1.1.  Karena repository Ubuntu 10 LTS tidak menunjukkan adanya upgrade versi terbaru dari libpcap, download source secara manual, kemudian jalankan script GNU Autoconf yang disediakan, seperti:

# ./configure --prefix=/usr
...
config.status: creating pcap_open_dead.3pcap
config.status: creating pcap_open_offline.3pcap
config.status: creating config.h
# make
...
mv pcap-config.tmp pcap-config
chmod a+x pcap-config
# make install
...

Langkah berikutnya adalah menjalankan script GNU Autoconf untuk DAQ.   Source-nya dapat di-download di http://www.snort.org/downloads/860.  Seperti biasa, jalankan dahulu script configure:

# ./configure
...
Build AFPacket DAQ module.. : yes
Build Dump DAQ module...... : yes
Build IPFW DAQ module...... : yes
Build IPQ DAQ module....... : no
Build NFQ DAQ module....... : yes
Build PCAP DAQ module...... : yes

Pastikan bahwa pada NFQ DAQ module terdapat tulisan yes sehingga nantinya module NFQ akan dibuat.  Setelah itu, seperti biasa, berikan perintah make dan make install.

Berikutnya, lakukan hal yang sama dengan source Snort yang dapat di-download di http://www.snort.org/downloads/867.  Berikan perintah seperti:

# ./configure --enable-ipv6 --enable-gre --enable-mpls --enable-targetbased \ --enable-decoder-preprocessor-rules --enable-ppm --enable-perfprofiling \ --enable-zlib --enable-active-response --enable-normalizer --enable-reload \ --enable-react --enable-flexresp3
...
# make
...
# make install
...

Langkah terakhir adalah menjalankan Snort dengan argumen khusus sehingga ia bekerja dalam modus inline sebagai IPS.  Sebagai contoh, Snort dapat dijalankan dengan parameter seperti berikut ini:

# snort --daq nfq -c /etc/snort/snort.conf -Q
...
nfq DAQ configured to inline.
Reload thread starting...
...

Option –daq menentukan module DAQ yang akan dipakai Snort, yaitu NFQ.  Option -c menentukan lokasi file konfigurasi Snort yang tentunya bisa berbeda-beda sesuai kebiasan setiap administrator.  Option -Q menunjukkan bahwa Snort harus bekerja dalam modus inline.  Bila Snort bekerja sebagai IPS, akan terdapat baris yang isinya seperti “nfq DAQ configured to inline.

16 Agustus 2011 at 10:06 PM Tinggalkan Komentar

Pengenalan Snort

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 modus packet 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 script configure.

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.

05 Juni 2011 at 4:14 PM Tinggalkan Komentar


Arsip


Ikuti

Get every new post delivered to your Inbox.