Firewall di linux dengan snort

15
Nama : Edi Larasuli NPM : 12105 55201 09 126 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 KeputusanIDS dapat memberikan informasi bagaimana firewall kita bekerja dan berapa banyak orang 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

description

Tugas Keamanan Sistem Dan Jaringan Komputer

Transcript of Firewall di linux dengan snort

Page 1: Firewall di linux dengan snort

Nama : Edi Larasuli

NPM : 12105 55201 09 126

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 KeputusanIDS dapat memberikan informasi bagaimana firewall kita bekerja dan berapa banyak orang 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,

Page 2: Firewall di linux dengan snort

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,

Page 3: Firewall di linux dengan snort

dan sebagainya.c. Cepat - Snort mampu mendeteksi serangan pada 100 Mbps networkd. 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

Berikut adalah langkah-langkah untuk menginstal snort:

a. Instal Paket-PaketSebelum menginstal snort, instal paket-paket yang diperlukan dengan cara:

# yum install gcc gcc-c++ kernel-devel patch make libxml2 pcre pcre-devel libpcap libpcap-devel php php-common php-gd php-cli php-mysql flex bison mysql mysql-devel mysql-bench mysql-serverb. Instal PearPear 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

Page 4: Firewall di linux dengan snort

c. Instal LibnetLibnet 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 SnortInilah 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 SnortRule 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 barnyard2Barnyard 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

Page 5: Firewall di linux dengan snort

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

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

h. Konfigurasi DatabaseKita 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 AdodbAdodb 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 BASEBase 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.iniBuang 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 onPada browser, ketik tulisan berikut:http://localhost/base

Page 6: Firewall di linux dengan snort

maka akan muncul tampilan seperti berikut:

Klik tulisan Continue, maka akan tampil layar sebagai berikut:

Page 7: Firewall di linux dengan snort

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:

Page 8: Firewall di linux dengan snort

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:

 

Page 9: Firewall di linux dengan snort

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/bashsnort -c /etc/snort/snort.conf -i eth0 > /dev/null 2>&1 &Setelah itu buat agar file tersebut bisa dieksekusi:# chmod +x skripsnortLalu buka file rc.local yang berada di folder /etc kemudian masukkan skrip berikut:

Page 10: Firewall di linux dengan snort

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

h. Konfigurasi SnortSetelah semua paket terinstal dengan baik, maka kita akan mengkonfigurasi snort.# cp /etc/snort/snort.conf /etc/snort/snort.conf.ori# vi /etc/snort/snort.confPada 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 5output unified2: filename snort.log, limit 128output database: log, mysql, user=snort password=password dbname=snort host=localhostSetelah itu kita buat file untuk menampung log snort:# touch /var/log/snort/snort.log# touch /var/log/barnyard2/barnyard.waldo

i. Menyalakan SnortKemudian kita mulai menyalakan snort dengan cara:# snort -c /etc/snort/snort.conf -i eth0Jika 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.waldoKalau 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.rulesBuatlah sebuah contoh dengan format sebagai berikut:alert protocol source_IP source_port direction destination_IP destination_port Rule optionsMisalnya 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;)

Page 11: Firewall di linux dengan snort

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;)  

Page 12: Firewall di linux dengan snort

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.

 

Page 13: Firewall di linux dengan snort

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 port2. 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/24ganti var EXTERNAL_NET menjadi var EXTERNAL_NET !$HOME_NETKemudian 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:

Page 14: Firewall di linux dengan snort

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.