Wednesday, June 27, 2012

Bagaimana Menginstall Snort dengan Barnyard2 dan Snorby

wihartoyo wihartoyo     Wednesday, June 27, 2012     8 comments

Mas....!
Apa?
Nuwun sewu, Mas! Saya udah coba install Snort dan Suricata. Tapi bingung...
Bingung gimana?
Bingung nginstallnya.
Sampeyan nginstallnya di mana?
Sampeyan gimana? Ya di kantor, Mas! Masa di rumah.  Di rumah komputer kan cuma 1 doang.
He he....! Maksud saya, nginstallnya di komputer apa, OS nya apa?
Di PC, OS-nya linux
Linux apa?
Ubuntu, Mas!
Hmm... Ubuntu? Sampeyan nginstallnya make apt-get install apa compile dari source-nya?
Make apt-get install, Mas!
sudo apt-get install snort snort-mysql
Emang kenapa, Mas?

Gak apa, Cuma biasanya saya nginstallnya langsung dari source.
Gimana caranya?
Begini, unduh dulu source terakhir yang stabil dari http://www.snort.org/snort-downloads/ Kemudian copykan ke mesin linux yang bakal kita install snort.  Jangan cuma download source snortnya thok.  Download juga library DAQ (Data Aqcuisition Library).  Karena snort juga butuh ini kalo mau mengenable-kan semua fitur snort.
Jangan lupa juga download barnyard2, untuk merekam unified alert ke dalam database.  Dan tentunya, jangan lupa juga install mysql, karena barnyardnya minta database mysql.

Kalo mysql nya harus make source gak, Mas?
Saya gak pengin fokus ke database, jadi ya silaken aja make apt-get install.
Untuk mengunduh snort silaken jalankan perintah ini pada login root.  Banyak blog gak nyaranin, tapi saya bilang, asal kita hati-hati saja, gak masalah make login ini.

root@mycom:~#mkdir snort && mkdir daq
root@mycom:~#wget http://www.snort.org/dl/snort-current/snort-2.9.1.tar.gz -O $HOME/snort/snort-2.9.1.tar.gz
root@mycom:~# wget http://www.snort.org/dl/snort-current/daq-0.6.2.tar.gz -O $HOME/daq/daq-0.6.2.tar.gz
Kalo udah didownload digimanain, Mas?
Ya dikompail, masa dimakan.
He he he...
Untuk menginstall daq, kita perlu modul bison dan flex, nah untuk itu jalanin dulu ini

root@mycom:~#apt-get install bison flex
baru kemudian install daq dengan menjalankan
root@mycom:~#cd daq && tar –xzvf  daq-0.6.2.tar.gz
root@mycom:~#cd daq-0.6.2  && ./configure && make all && make install
Pada saat configure, untuk ubuntu 8.0.4 biasanya diminta untuk mengupdate libpcap.  Versi terakhir libpcap bisa diunduh dari http://www.tcpdump.org
Setelah daq terintall dengan baik maka kita bisa melanjutkan dengan menginstall snort dengan menjalankan

root@mycom:~#cd
root@mycom:~#cd snort && tar  -xzvf  snort-2.9.1.tar.gz
root@mycom:~#cd snort-2.9.1
root@mycom:~#./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  --prefix=/usr/local
root@mycom:~#make all && make install
Selesai!
Udah, gitu aja, Mas?!
Belum! He he he... Sebenarnya, instalasi snort kita sudah bisa langsung dikonfig untuk menjalankan service IDS.  Cuma sampeyan perhatikan, waktu kita jalankan ./configure kita belum mengenablekan mysql kan?
Nah lo, terus gimana caranya si snort ini ngerekam data?
Kita konfig alertnya direkam ke dalam format unified, dan serahkan perekaman ke database kepada barnyard2.  Ini juga merupakan salah satu bentuk tuning performa dari IDS.

Caranya gimana, Mas?
Pertama download dulu barnyard2 nya dari http://www.securixlive.com dengan menjalankan perintah

root@mycom:~#mkdir barnyard2
root@mycom:~# wget http://www.securixlive.com/download/barnyard2/barnyard2-1.9.tar.gz -O barnyard2/barnyard2-1.9.tar.gz
root@mycom:~#cd barnyard2 && tar –xzvf  barnyard2-1.9.tar.gz
root@mycom:~/barnyard2#cd barnyard2-1.9
root@mycom:~/barnyard2/barnyard2-1.9#./configure  --enable-ipv6  --enable-gre –enable-mpls –with-mysql  --prefix=/usr/local/barnyard2
root@mycom:~/barnyard2/barnyard2-1.9#make all && make install
Kita ambil –with-mysql aja karena nantinya kita bakal make snorby yang, sampai saat ini, baru bisa make mysql.
Udah itu, Mas?
Belum
Belum lagi?
Iya, belum.  Setelah kita install snort dan barnyard, kita lakukan perubahan konfgurasi.  Installasi snort yang kita buat juga belum mempunyai rules.  Nah, rules set (signatures set), bisa didownload dari https://www.snort.org/snort-rules/?.  Untuk download setidaknya kita sudah terdaftar di http://www.snort.org, dan kita harus login dulu untuk bisa mendapatkan rules-nya.
Setelah kita mendapatkan rules dari snort, kita edit file snort.conf.  File ini bisa didapatkan di sub direktori etc di bawah subdirektori tempat kita mengekstrak rules.
Hal-hal yang akan kita rubah minimal:

$HOME_NET, dari nilai awal any menjadi ip jaringan misalnya [“10.10.0.0/16”,”192.168.0.0/16”]
output_unified2, (baris 520). Buka remark “#” , hapus kata “nostamp” karena akan menyulitkan perekaman oleh barnyard2.
Setelah kita merubah konfigurasi snort, kita lakukan juga perubahan untuk konfigurasi barnyard.  File konfigurasi barnyard bisa ditemukan di /usr/local/barnyard2/etc dengan nama barnyard2.conf. Ha-hal yang harus kita rubah minimal:
output database (baris 318):  output database:  alert, mysql, user=root password=”passwordsampeyan” dbname=snorby host= localhost
Ok, setelah kita konfig keduanya, maka baik snort maupun barnyard2 sudah bisa kita jalankan.
Sudah Mas?
Belum
Masih belum, banyak amat!
Ya emang banyak.  Tapi kalo udah masuk proses install nya asik lo.  Bisa lupa waktu kita.  Nah, buat ngejalanin Snort maupun Barnyard2 akan saya jelaskan dibagian akhir nanti.
Sampeyan udah bisa nginstall snorby-nya belum?
Belum, Mas?
Sampeyan ini, apa yang sudah?He he he...
Nah, snorby adalah aplikas berbasis web yang berjalan dengan apache.  Nah dari sini praktis sampeyan harus punya apache yang telah terinstall.Nginstallnya gimana? Apa harus make source juga?
Udah, gampangnya, make apt-get install aja dengan perintah ini

root@myconn:~#apt-get install apache2 apache2-prefork



Oooo... gitu,
Kemudian install prerequisite dari snorby dengan perintah

root@mycom:~#apt-get install  git-core libapr1-dev libaprutil-dev
git-core diinstall untuk mengunduh snorby yang source nya ada di github.  Sementara libapr (APR, Apache Portable Runtime) digunakan untuk melengkapi server apache. Karena, sebenarnya apr merupakan bagian dari apache. Namun apache project kemudian memisahkan apr sebagai project terpisah sehingga aplikasi lain bisa menggunakan apr untuk mendukung aplikasi tersebut menjadi platform independence.Oooo.... gitu,
Nah setelah itu, kita harus install ruby terlebih dahulu.  Nah untuk bisa menginstall ruby kita juga harus menginstall pre-requisite nya terlebih dahulu.
Pertama kali jalankan perintah ini

root@mycom:~#apt-get install gcc g++ build-essential libssl-dev libreadline5-dev zlib1g-dev \
>linux-headers-generic libsqlite3-dev libxslt-dev libxml2-dev imagemagick \
>libmysqlclient15-dev libmagick9-dev git-core git
Setelah itu, unduh ruby dengan menjalankan perintah-perintah berikut

root@mycom:~#mkdir ruby
root@mycom:~# wget http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p194.tar.gz  \
-O $HOME/ruby/ruby-1.9.3.p194.tar.gz
Ekstrak file yang telah didownload dengan perintah ini
root@mycom:~#cd ruby && tar -xzvf ruby-1.9.3.p194.tar.gz
Compile ruby dengan perintah ini
root@mycom:~/ruby#cd ruby-1.9.3-p194#./configure  --prefix=/usr/local/ruby
root@mycom:~/ruby/ruby-1.9.3-p194#make all && make install
Nah, setelah selesai tanpa ada kesalahan, sampeyan sudah punya ruby terinstall di komputer sampeyan.  Agar ruby sampeyan bisa di akses, sampeyan perlu merubah environment variable dengan menambahkan /usr/local/ruby/bin pada file /etc/environment
root@mycom:~#vi /etc/environment
edit baris pertama “PATH” dengan menambahkan /usr/local/ruby/bin
sebagai contoh:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/ruby/bin"
Simpan, keluar dan jalankan perintah berikut
root@mycom:~#source /etc/environment
Check versi ruby dengan menjalankan perintah berikut
root@mycon:~#ruby  -v
Sampeyan harus bisa melihat hasil seperti ini (yang dikurung siku bergantung mesin sampeyan):
ruby 1.9.3p194 (2012-04-20 revision 35410) [i686-linux]
Sampai di sini masih bisa nyambung?
Masih, Mas....!
Nah, selanjutnya kita lengkapi kebutuhan Snorby dengan menginstall beberapa gem termasuk rails 3.  Untuk itu jalankan perintah berikut:

gem install tzinfo builder memcache-client rack rack-test erubis mail text-format \
>bundler thor i18n sqlite3 doc
gem install rack-mount --version=0.4.0
gem install rails --version 3.0.0
Sampai di sini, installasi ruby sudah selesai.  Kita bisa lanjutkan dengan installasi Snorby.Masih make source lagi, Mas?
Masih, malah sekarang sourcenya didownload gak make tarball lagi.
Make apa, Mas?
Kita bikin git clone dari reponya si Snorby.
Perintahnya?
Perintahnya gini...

root@mycom:~#cd /var/www
root@mycom:/var/www#git clone git://github.com/Snorby/snorby.git
Ok. Sekarang kita menginstall kebutuhan gem dari Snorby dengan perintah

root@mycom:~#cd /var/www/snorby
root@mycom:/var/www/snorby# bundle install
Setelah selesai dengan installasi gems, kita lanjutkan dengan menginstall passenger agar Snorby kita bisa dijalankan oleh apache2.
root@mycom:~# gem install passenger
root@mycom:~# passenger-install-apache2-module
Kemudian lakukan perubahan terhadap file /etc/apache2/site-available/default

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/snorby/public
       
                Options FollowSymLinks
                AllowOverride all
       

       
                PassengerAppRoor /var/www/snorby [tambahkan]
                Options Indexes FollowSymLinks MultiViews
                AllowOverride all
                Options -Multiviews
                Order allow,deny
                allow from all
       

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
       
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
       

..
..
..
Disamping itu, lakukan juga perubahan pada file /etc/apache2/apache2.conf,
[tambahkan setelah baris terakhir]
LoadModule passenger_module /usr/local/ruby/lib/ruby/gems/1.9.1/gems/passenger-3.0.13/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/ruby/lib/ruby/gems/1.9.1/gems/passenger-3.0.13
PassengerRuby /usr/local/ruby/bin/ruby
Sekarang apache sudah bisa sudah bisa menjalankan snorby, selanjutnya kita lakukan konfigurasi snorby dengan database mysql.
root@mycom:/var/www/snorby#cd config
root@mycom:/var/www/snorby/config#cp database.example.yml  database.yml
root@mycom:/var/www/snorby/config#cp snorby_config.example yml snorby_config.yml
dengan menggunakan text editor seperti vi/nano/mcedit lakukan perubahan file database.yml pada bagian
# Snorby Database Configuration
#
# Please set your database password/user below
# NOTE: Indentation is important.
#
snorby: &snorby
  adapter: mysql
  username: root
  password:  “passwordsampeyan” # Example: password: "s3cr3tsauce"
  host: localhost
..
..
..
Lakukan juga perubahan terhadap file snorby_config.yml pada bagian
development:
  domain: localhost:3000
  wkhtmltopdf: /usr/bin/hkhtmltopdf
  mailer_sender: 'snorby@snorby.org'
  geoip_uri: "http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry$
  rules:
    - "/Users/mephux/.snort/rules"
    - "/Users/mephux/.snort/so_rules"
  authentication_mode: database
..
..
..
Setelah kedua file tadi kita rubah, kita lanjutkan menjalankan apache dan  melakukan setup terhadap snorby kita dengan menjalankan:
root@mycom:/var/www/snorby/config# cd /var/www
root@mycom:/var/www#/etc/init.d/apache2 start [perintah ini bisa dijalankan dimanapun]
root@mycom:/var/www# rake Snorby:setup
Perhatikan bahwa proses tadi bakal menggenerate database bernama ‘snorby’ pada server mysql kita.

Snorby kita telah siap, selanjutnya kita jalankan snortnya dengan menjalankan
root@mycom:~#/usr/local/snort/bin/snort  -l /var/log/snort -c /etc/snort/snort.conf  -i  ifmon -D
Ifmon adalah interface dimana kita akan melakukan sniffing untuk monitoring.
Selanjutnya kita jalankan barnyardnya dengan:
root@mycom:~#/usr/local/barnyard2/bin/barnyard2  -d /var/log/barnyard2  -c /usr/local/barnyard2/etc/barnyard2.conf  -f snort.alert  -w /var/log/barnyard2/snort.waldo  -D
Sudah semua, IDS kita sudah berfungsi

Sudah, Mas?
Sudah!
Wah wareg tenan....
Sudah kamu catet?
Belum!
Lah dasar kamu! Ya sudah.  Kalo belum di catet, kamu buka saja halaman web ini....
Ha ha ha.....! Bisa aja
Ya bisa, kenapa tidak?

8 komentar :

areta said...

mas mau tanya pas saya mau mengakses snorby melalui browser kenapa server not found ya, padahal servername nya sudah saya tuliskan

Mastoyo said...

kalo make server name, pastikan server benar-benar sudah dikenali, bila menggunakan DNS pastikan DNS enttry di DNS Server sudah benar dan client memanfaatkan DNS service tersebut. Alternatifnya, tanpa DNS, masukan entry untuk mengenali server melalui file /etc/hosts (linux cs.) atau %SYSTEMROOT%\System32\drivers\etc\hosts (windows).
Monggo..

areta said...

itu localhostnya sudah bisa mas, tp pas buka snorby bagian sensor interface nya NULL mas, itu kenapa mas ya? setting sensor interfacenya dimana ya?

Mastoyo said...

Kalo sampeyan menggunakan banyard2 untuk merekam ke database modifikasi pada bagian output. Lengkapi dengan parameter 'sensor_name=', contoh 'sensor_name=snort_eth1'. Restart banyard2 nya. Kemudian lihat di menu 'Sensors' pada interface nya Snorby. Kalo sudah aktif, maka akan ada salah satu kolom (sorry, baru tiga kali install dalam selang yang lama saya lupa apa di 'Name' atau 'Hostname') akan terisi dengan 'snort_eth1'. Pada bagian lain akan terisi 'Null'. Cell yang terisi 'Null' ini sifatnya editable. Pada cell yang terisi 'Null' ini sampeyan klik saja. Kemudian tuliskan nama apapun untuk identifikasi sensor. Tekan 'Enter'. Data akan terekam dan cell berubah menjadi gak editable lagi.
Kalo sampeyan tidak menggunakan banyard2, hanya menggunakan snort saja langsung untuk menulis ke database, sampeyan bisa edit juga pada parameter 'output' di file 'snort.conf' sama seperti pada 'banyard2.conf'. Penanganan selanjutnya di Snorby sama dengan penjelasan sebelumnya.

Anonymous said...

mas, boleh ga minta alamat email atau gtalk atau ym buat diskusi snort dan snorby lebih lanjut?

mas saya pengen tanya nih, kalo pake snort(udah dikonfigurasi menjadi IPS) buat block Ping of Death atau DOS dan semacamnya gimana ya?.
terimakasih mas.. :)

Mastoyo said...

@Hari Ando,
Saya sih tidak menyarankan Snort untuk IPS. Terlalu berat. Cukup jadikan IDS aja.

Akbar said...

ada tutorial menggunakan suricata nya enggak mas? kalo ada boleh minta diajarin

Berita PostgreSQL

Recommended