Sunday 1 May 2011

Instalasi Snort di Centos 5.5

I. Pendahuluan

Saat ini keamanan komputer tidak bisa dipisahkan dengan firewall dan Intruder detection System (IDS). Bisa dikatakan kedua komponen ini wajib untuk dijalankan di semua jaringan. Jika firewall lebih kepada benteng penjaga, maka IDS adalah petugas pengawas sistem kita.IDS bertugas melakukan identifikasi akses oleh siapa saja yang menggunakan sistem komputer tanpa hak termasuk percobaan untuk masuk secara paksa (cracking). Ada beberapa keuntungan menggunakan IDS yaitu:
1. Mendeteksi serangan
Mendeteksi serangan adaah tugas utama IDS. IDS akan memberitahu kita jika jaringan jika terserang worm atau jika ada sesuatu yang mencurigakan di komputer kita.
2. Mengaudit jejak serangan
IDS dapat melakukan audit terhadap serangan yang telah terjadi. IDS akan melacak dari mana asal serangan dan sejauh mana kerusakan yang terjadi.
3. Alat pengambil Keputusan
IDS dapat memberikan informasi bagaimana fireall kita bekerja dan berapa banyakorang yang 'menginginkan' masuk ke sistem kita. Ini sangat berguna bagi kita untuk mengambil keputusan tentang keamanan sistemdi perusahaan.

II. Konsep IDS

Konsep dari IDS yang perlu kita kenal adalah apa yang disebut dengan false positive dan false negative. False positive adalah peringatan yang dihasilkan oleh IDS karena telah mendeteksi adanya serangan yang valid terhadap sistem yang kita monitor, tetapi serangan itu sendiri tidak valid. Pada intinya, kita mendapat serangan tetapi pada hakekatnya itu bukan serangan. Hal ini terjadi karena banyaknya peringatan yang dibuat oleh IDS padahal serangan yang sebenarnya tidak terjadi. Bisa juga hal ini terjadi karena adanya serangan pada sistem yang tidak dimonitor. False negative adalah serangan yang benar-benar terjadi tetapi tidak terdeteksi oleh IDS. Hal ini karena IDS menganggap serangan yang terjadi tidak sesuai dengan rule atau karena terlalu banyaknya serangan atau bisa juga karena si penyerang berhasil melumpuhkan IDS.                  

IDS menggunakan dua cara untuk mendeteksi adanya serangan. Cara pertama yaitu menggunakan Signature Detection. IDS yang bekerja menggunakan cara ini akan mendeteksi serangan jika ada traffik network yang masuk ke dalam daftar serangan. Signature (rule/peraturan) lah yang menentukan paket yang masuk ke network tersebut merupakan serangan atau biasa disebut bad traffic. Kekurangan dari cara ini adalah IDS 'hanya' bisa mendeteksi suatu serangan yang telah terdaftar sebelumnya dalam signature (rule). Oleh karena itu, metode ini akan kesulitan menghadapi daftar serangan jenis baru. Bila kita menggunakan cara ini maka akan berdampak sedikitnya peringatan false positive tetapi banyak false negative. Cara yang kedua yaitu Anomaly Detection. IDS yang menggunakan cara ini akan bekerja menggunakan cara yang berbeda. IDS akan mengenal trafik 'normal' jaringan kita dan akan mulai mengingatkan anda jika ternyata ada trafik yang abnormal. Sayangnya sesuatu yang baru atau berbeda juga bisa dianggap abnormal. Jadi, jika kita menggunakan cara ini, IDS akan memberikan sedikit false negative tetapi banyak false positive.

III. NIDS dan HIDS

Berdasarkan penggunaannya, IDS dapat dibagi menjadi dua yaitu NIDS dan HIDS.
a. NIDS
NIDS atau Network-based IDS merupakan jenis IDS yang bekerja dengan cara menganalisa paket data yang dianggap serangan yang melintas melewati network. NIDS melakukan tugas sebagai berikut:
1. NIDS menganalisa serangan pada trafik network menggunakan signature atau anomaly detection atau keduanya. Network interface card tidak memilih-milih paket yang ada (promiscuos  mode), artinya ia akan meng-capture semua lalu lintas jaringan yang melewati NIC, tidak hanya trafik yang diperuntukkan bagi sistem IDS saja.
2. Membuat peringatan secara real time untuk memberitahukan adanya serangan.
3. Membuat log secara rinci saat terjadi serangan yang berguna untuk menganalisa penyerang setelah terjadinya serangan.
4. NIDS dapat didesain sesuai dengan infrastruktur jarinagn kita.

b. HIDS
HIDS atau Host-based IDS yaitu jenid IDS yang hanya memonitor di satu komputer (host) saja. HIDS akan melakukan tugas sebagai berikut:
1. HIDS mencari serangan dari paket network yang masuk menggunakan signature atau anomaly detection. Biasanya NIC di sistem yang menjalankan HIDS tidak berjalan di promiscuous code.
2. HIDS memerikasa log di sistem untuk mencari serangan yang terjadi.
3. HIDS mengecek integritas file di sistem. Cara ini dilakukan dengan membandingkan file yang telah dimodifikasi dalam sistem. Selain itu, kita juga bisa mengetahui file-file yang telah dibuat atau dihapus yang bertujuan untuk mendeteksi apakah program backdoor atau trojan terinstal dalam sistem.

IV. Snort

Snort merupakan Network-based IDS yang bekerja dengan mengunakan signature detection dan bisa berfungsi juga sebagai sniffer dan packet logger. Snort pertama kali dibuat dan dikembangkan oleh Marti Roesh pada tahun 1998, lalu menjadi sebuah opensource peoject. Versi komersial dari Snort dibuat oleh Sourcefire. Ada beberapa NIDS lain yang tersedia di pasaran selain snort yaitu misalnya ISS Real Secure dan Cisco IDS untuk komersial, sedangkan yang mempunyai lisensi opensource adalah the prelude IDS dan BSD. SNort mempunyai banyak kelebihan dibandingkan dengan IDS lainnya seperti:

a. Berukuran kecil - Snort versi terbaru (2.8.6.1) hanya sekitar 5 MB.
b. Portable untuk banyak OS - Dapat diaplikasikan di Linux, Solaris, Windows, BSD, HP-UX, dan sebagainya.
c. Cepat - Snort mampu mendeteksi serangan pada 100 Mbps network
d. Mudah dikonfigurasi - Snort sangat mudah dikonfigurasi sesuai dengan kebutuhan network bahkan dapat membuat rule sendiri untuk mendeteksi adanya serangan baru.
e. Free - Snort dapat didownload dengan gratis dan bersifat opensource dan menggunakan lisensi GPL.

Artikel ini akan menjelaskan tentang cara menginstal snort di centos 5.5 dengan menggunakan database mysql dan base. Penulis menggunakan IP 192.168.0.2 untuk IP server snort.

V. Instalasi Snort

a. Instal Paket-Paket
Sebelum menginstal snort, instal paket-paket yang diperlukan:
# yum install gcc gcc-c++ kernel-devel patch make libxml2 pcre pcre-devel libpcap libpcap-devel
# yum install php php-common php-gd php-cli php-mysql flex bison mysql mysql-devel mysql-bench mysql-server

b. Instal Pear
Pear merupakan project yang berisikan kumpulan module php yang dibuat oleh para komunitas PEAR, yang bertujuan membuat kumpulan komponen PHP  yang bersifat reusable, dapat menjadi inovasi utama php, dan menjadi bahan pembelajaran yang baik untuk para developer PHP. Berikut adalah instalasi pear:
# wget http://pear.php.net/go-pear
# php -q go-pear

Tekan enter 2x.
Ada pilihan, pilih nomor 1 dan tulis menjadi /usr/local.
Tekan tombol Y.

# pear install Image_Color
# pear install Image_Canvas-alpha
# pear install Image_Graph-alpha
# pear install Numbers_Roman
# pear install Numbers_Words
# pear install Numbers_Words-beta
# pear install Log
Untuk mengecek daftar pear yang ada dalam sistem, tulis perintah berikut:
# pear list

c. Instal Libnet
Libnet merupakan generic networking API yang menyediakan akses untuk beberapa protokol. Untuk mendownload paket tersebut, silahkan ke
sini. Setelah mendapatkan paket tersebut, kita instal paket libnet di dalam sistem. Misal kita menyimpan paket tersebut di folder /root.
# cd /root
# tar zxvf libnet-1.0.2a.tar.gz
# cd Libnet-1.0.2a/
# ./configure && make && make install

d. Instal Snort
Inilah paket inti yang kita butuhkan. Kita akan menginstal snort versi terbaru (Versi 2.8.6.1). Download di
sini.
# cd /root
# tar zxvf snort-2.8.6.1.tar.gz
# cd snort-2.8.6.1
#  ./configure --enable-sourcefire --enable-targetbased --with-mysql
# make && make install
# mkdir /etc/snort
# mkdir /var/log/snort

e. Instal Rule Snort
Rule snort merupakan rule-rule yang dipakai oleh snort untuk mengawasi trafik. Untuk mendapatkan rule snort, kita harus mendaftar dahulu di www.snort.org lalu pilih rule snort yang terbaru yang ada di
sini. Setelah itu kita meletakkan hasil ekstrak rule tersebut di folder /etc/snort.
# cd /root
# tar zxvf snortrules-snapshot-2861.tar.gz -C /etc/snort
# cd /root/snort-2.8.6.1
# cp etc/* /etc/snort/
# ln -s /usr/local/bin/snort /usr/sbin/snort
# cd /etc/snort/so_rules/precompiled/CentOS-5.0/i386/2.8.6.1/
# mkdir /usr/local/lib/snort_dynamicrules
# cp * /usr/local/lib/snort_dynamicrules

f. Instal barnyard2
Barnyard merupakan sebuah output sistem untuk snort. Snort membuat sebuah output binari yang spesial yang disebut unified. Barnyard membaca file ini dan kemudian mengirimkan kembali data tersebut ke database. Tidak seperti keluaran database yang lain, barnyard mengatur pengiriman kejadian-kejadian ke database dan menyimpan mereka ketika database secara temporer tidak terkoneksi. Barnyard2 merupakan turunan dari barnyard. Barnyard2 menyediakan penambahan fungsi dibandingkan dengan barnyard itu sendiri. Untuk mendapatkan barnyard2 bisa didownload di
sini. Berikut adalah instalasi barnyard2 di dalam sistem:
# cd /root
# tar zxvf barnyard2-1.8.tar.gz
# cd barnyard2-1.8
#  ./configure --with-mysql
# make && make install
# cp etc/barnyard2.conf /etc/snort/
# mkdir /var/log/barnyard2
# vi /etc/snort/barnyard2.conf

Rubah nilai-nilai di file barnyard2.conf menjadi seperti berikut:
config hostname: localhost
config interface: eth0
output database: alert, mysql, user=snort password=password dbname=snort host=localhost

g. Membuat user dan grup snort
Kemudian kita membuat user dan grup untuk snort
# groupadd snort
# useradd -g snort snort
# chown snort:snort /var/log/snort/

h. Konfigurasi Database
Kita konfigurasi database mysql untuk snort:
# service mysqld start;
# mysql;
mysql> set password for root@localhost=password('password');
mysql> create database snort;
mysql> grant create, insert, select, delete, update on snort.* to snort@localhost;
snort> set password for snort@localhost=password('password');
mysql> \q;
# cd /root/snort-2.8.6.1/schemas/
# mysql -p < create_mysql snort
# touch /var/log/snort/alert
# chown snort:snort /var/log/snort/alert
# chmod 600 /var/log/snort/alert
# chkconfig --level 345 mysqld on

i. Instal Adodb
Adodb merupakan sebuah library abstraksi database untuk PHP. Untuk mendownload paket tersebut, silahkan ke
sini. Setelah itu kita instal adodb sebagai berikut:
# cd /root
# tar zxvf adodb511.tgz -C /var/www/html/
# cd /var/www/html/
# mv adodb5 adodb

g. Instal BASE
Base atau Basic Analysis and Security Engine merupakan aplikasi front-end berbasis web untuk query dan analisis alert-alert yang datang dari sistem IDS Snort. Untuk mendownload BASE, bisa dilihat di
sini.
# cd /root
# tar zxvf base-1.4.5.tar.gz -C /var/www/html/
# cd /var/www/html/
# mv base-1.4.5/ base
# chown apache base
# chgrp apache base
# vi /etc/php.ini
Buang tanda ; pada bagian error_reporting = E_ALL & ~E_NOTICE kemudian berikan tanda ; pada bagian error_reporting  =  E_ALL
# service httpd restart
# chkconfig --level 345 httpd on

Pada browser, ketik tulisan berikut:
 http://localhost/base
maka akan muncul tampilan seperti berikut:
Klik tulisan Continue, maka akan tampil layar sebagai berikut:


Masukkan path ADODB dengan /var/www/html/adodb, tekan tombol Continue, maka akan tampil layar sebagai berikut:


Masukkan Database Name = snort, Database Host = localhost, Database User Name = snort, Database password = password. Kemudian klik tombol Continue, maka akan tampak layar sebagai berikut:


Layar di atas merupakan opsi saja. Jika kita ingin menggunakannya centang pada kotak yang bertuliskan Use Authentication System kemudian tulislah Admin User Name, Password, dan Full Name yang sesuai dengan kita. Jika sudah, klik tombol Continue maka akan tampak layar sebagai berikut:


Klik tombol Create BASE AG, maka akan tampak layar sebagai berikut:


Klik pada tulisan step 5..., maka akan tampak layar seperti berikut:


Karena penulis menggunakan sistem Authentifikasi untuk snort, maka akan tampak layar seperti di atas. Masukkan login dan passwordnya serta klik tombol Login, maka akan tampak layar seperti berikut:


Dengan begitu, snort sudah berhasil kita instal.
Agar Snort dapat bekerja otomatis setelah server start, maka sebaiknya membuat skrip sederhana dan di taruh di file rc.local. Berikut adalah skrip sederhana misalnya dengan nama skripsnort:
#!/bin/bash
snort -c /etc/snort/snort.conf -i eth0 > /dev/null 2>&1 &
Setelah itu buat agar file tersebut bisa dieksekusi:
 # chmod +x skripsnort
Lalu buka file rc.local yang berada di folder /etc kemudian masukkan skrip berikut:

/root/skripsnort
Jika sudah, maka setiap server reboot maka aplikasi snort akan langsung berjalan. Untuk membuktikannya, ketik:
# ps aux | grep snort

h. Konfigurasi Snort
Setelah semua paket terinstal dengan baik, maka kita akan mengkonfigurasi snort.
# cp /etc/snort/snort.conf /etc/snort/snort.conf.ori
# vi /etc/snort/snort.conf
Pada file snort.conf, rubah file tersebut sehingga menjadi seperti berikut:
var RULE_PATH /etc/snort/rules
#config detection: search-method ac-bnfa max_queue_events 5
output unified2: filename snort.log, limit 128
output database: log, mysql, user=snort password=password dbname=snort host=localhost
Setelah itu kita buat file untuk menampung log snort:
# touch /var/log/snort/snort.log
# touch /var/log/barnyard2/barnyard.waldo

i. Menyalakan Snort
Kemudian kita mulai menyalakan snort dengan cara:
 # snort -c /etc/snort/snort.conf -i eth0
Jika sudah sampai tulisan seperti berikut: Not Using PCAP_FRAMES, buka satu layar lagi kemudian eksekusi perintah berikut:
# /usr/local/bin/barnyard2 -c /etc/snort/barnyard2.conf -G /etc/snort/gen-msg.map -S /etc/snort/sid-msg.map -d /var/log/snort -f snort.log -w /var/log/barnyard2/barnyard.waldo
Kalau ada error seperti ini:
 WARNING: Can't extract timestamp extension from 'snort.log'using base 'snort.log'
Tekan control-C, kemudian matikan snort dengan cara menekan control-C. Setelah itu, hidupkan kembali snort dengan cara di atas dan eksekusi kembali perintah untuk barnyard.waldo. Jika masih ada error diatas maka biarkan saja.

j. Menguji Snort
Untuk menguji snort yang sudah kita instal, maka kita perlu mengujinya. Ikuti perintah berikut:
 # vi /etc/snort/rules/local.rules
Buatlah sebuah contoh dengan format sebagai berikut:
 alert protocol source_IP source_port direction destination_IP destination_port Rule options
Misalnya kita ingin melihat siapa yang sedang melihat website kita (port 80), maka kita bisa mengetikkan format diatas sebagai berikut:
 alert tcp any any <> any 80 (msg: "Someone is Watching Your Website"; sid:1000001;)
Matikan snort terus hidupkan kembali. Kemudian cobalah membuka webserver server snort dari komputer lain, maka tampilan base snort akan berubah sebagai berikut:


Jika kita klik angka 100%, maka akan ada tampilan sebagai berikut:


 
Penulis menggunakan IP 192.168.0.3 untuk menguji snort. Terlihat bahwa IP 192.168.0.3 sedang mengakses ke webserver dan terekam di base snort. Dengan begitu, snort kita sudah berjalan dengan baik. Agar lebih meyakinkan lagi, coba bikin rule untuk meremote server snort menggunakan ssh. Berikut adalah rulenya:
 alert tcp any any <> any 22 (msg: "Someone remote by port 22"; sid:1000002;)  
Matikan snort dan nyalakan kembali lalu coba agar meremote server snort dan lihat hasilnya. Jika tidak ada masalah, maka base snort akan tampil seperti gambar berikut:
 
 
Terlihat bahwa ada seseorang yang sedang meremote server snort dari IP 192.168.0.3 dengan menggunakan ssh.

k. Snort sebagai NIDS
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 besar. Oleh karena itu, sebelum menginstal snort, kita harus menentukan terlebih dahulu apa yang kita lindungi, apakah single server, sekelompok server atau semua subnet. Jika kita selesai menentukan apa yang akan dimonitor, maka kita bisa leluasa menentukan dimana akan meletakkan snort. Jadi untuk menempatkan snort tergantung kepada apa yang akan dimonitor. Gambar berikut ini merupakan contoh untuk menempatkan snort di jaringan.


Gambar tersebut merupakan topologi network secara umum. Betwork tersebut menggunakan firewall untuk memisahkan server publik ke dalam DMZ dan jaringan lokal ke dalam internal NAT network. DMZ atau De-Militarized Zone adalah daerah untuk menempatkan server publik yang sering diakses melalui internet. Server seperti mail server, web server, atau ftp bisa kita letakkan disini secara berkelompok. Biasanya zona di daerah ini banyak mengalami lalu lintas data dari internet. NAT atau Network Address Translation adalah cara untuk menyembunyikan beberapa komputer yang menggunakan IP privat dibelakang IP Publik. Dengan menggunakan NAT, komputer internal di jaringan tetap bisa menggunakan internet meskipun menggunakan IP privat. Tetapi sebaliknya pengguna internet tidak bisa mengenali workstation yang ada di dalam NAT.

Mungkin timbul pertanyaan mengapa kita perlu memisahkan kedua jaringan ini? Hal ini karena jika server yang terletak di DMZ misalnya berhasil ditembus oleh cracker, makakerusakan dapat diminimalkan karena mereka tidak dapat keluar dari DMZ ke jaringan internal. Jadi singkatnya, jika kita menempatkan server publik maka sebaiknya juga harus dipasang snort. Jika network kita menggunakan DMZ, maka setidaknya lakukan hal berikut:

1. Buat satu port di switch DMZ sebagai monitoring port
2. Tambahkan perintah di file konfigurasi snort (snort.conf) untuk memonitor subnet tersebut.
ganti var HOME_NET any menjadi var HOME_NET 192.168.10.0/24
ganti var EXTERNAL_NET menjadi var EXTERNAL_NET !$HOME_NET
Kemudian kita mencoba mensimulasi snort sebagai NIDS. Buatlah konfigurasi server seperti gambar di bawah ini:


Hapus rule-rule yang ada di file local.rules kemudian restart snort. Sekarang cobalah telnet dari IP 123.45.67.8 ke 123.45.67.2 namun dengan password yang salah. Jika kita mengkonfigurasi dengan benar konfigurasi snort, maka akan tampak hasil seperti berikut:


Terlihat bahwa IP 123.45.67.8 mencoba meremote IP 123.45.67.2 melalui telnet namun salah password. Dengan begitu snort kita sudah berfungsi sebagai NIDS.

Referensi:

Buku Rahasia dan trik mengamankan server linux oleh Alva Hendi Muhammad tahun 2007
http://www.rootninja.com/
www.snort.org
http://vimeo.com/

No comments:

Post a Comment