Laporan Resmi Praktikum Snort
Definisi SnortSnort merupakan sebuah aplikasi ataupun software yang bersifat opensource GNU General Public License [GNU89]. Sehingga boleh digunakan dengan bebas secara gratis, dan kode sumber (source code) untuk snort juga bisa didapatkan dan dimodifikasi sendiri.
Snort dikembangkan oleh Marty Roesch, bisa dilihat pada (www.sourcefire.com). Awalnya dikembangkan diakhir 1998-1n sebagai sniffer dengan konsistensi output.
Snort adalah sebuah software ringkas yang sangat berguna untuk mengamati aktifitas dalam suatu jaringan komputer. Snort dapat digunakan sebagai suatu Network Intrusion detection system (NIDS) yang berskala ringan (lighweight), dan software ini menggunakan sistem peraturan-peraturan (rule system) yang relatif mudah dipelajari untuk melakukan deteksi dan pencatatan (logging) terhadap berbagai macam serangan jaringan komputer.
Snort sendiri merupakan software yang masih berbasis command-line, sehingga cukup merepotkan bagi pengguna yang sudah terbiasa dalam lingkungan Graphical User Interface (GUI). Oleh karena itu, ada beberapa software pihak ketiga yang memberikan GUI untuk snort, Misalnya IDScenter untuk microsoft windows, dan Acid yang berbasis PHP sehingga bisa diakses melalui web browser.
Percobaan Instalasi Snort
Topologi yang digunakan
.2 192.168.127.0/24 *kelompok I Guest OS 1 Guest OS 2 Bridge eth0 eth1 eth0
Host Only Network Guest
OS 2
Guest OS 1
Mengacu pada modul “JICA TRAINING Network Security Monitoring System of MATA GARUDA”, praktikum di mulai dari Chapter 1 subbab 2. Installing the Snort Pre-Requisites. 2. Installing the Snort Pre-Requisites
Step 2.1 : Build essentials package
First we want to install all the tools required for building software. The build-essentials package does this for us:
Step 2.2 : Create a folder
Dalam panduan ini, kita akan mendownload sejumlah tarbals untuk berbagai paket perangkat lunak. kemudian membuat folder bernama snort_ src untuk menyimpan semua data di satu tempat:
:~# mkdir snort_src
Step 2.3 : Data AcQuisition library
Snort DAQ (Library Data AcQuisition) memiliki beberapa prasyarat yang perlu dipasang
Step 2.4 : Download and Install DAQ
Download dan instal versi DAQ terbaru dari situs web Snort. Langkah di bawah ini menggunakan wget untuk mendownload versi 2.0.6 dari DAQ, yang merupakan versi terbaru pada saat ini
:~/snort_src# wget https://www.snort.org/downloads/snort/daq-2.0.6.tar.gz
:~/snort_src# tar -xvzf daq-2.0.6.tar.gz :~/snort_src# cd daq-2.0.6
:~/snort_src/daq-2.0.6# ./configure
:~/snort_src/daq-2.0.6# ./configure && make && make install :~/snort_src/daq-2.0.6# cd
3. Installing Snort
Untuk menginstal Snort di Ubuntu, ada satu syarat tambahan yang dibutuhkan tambahan yang perlu diinstal yang tidak disebutkan dalam dokumentasi: zlibg yang merupakan library kompresi.
Step 3.1 : Libraries
Ada tiga perpustakaan opsional yang meningkatkan fuctionality: liblzma-dev yang menyediakan dekompresi file swf (adobe flash), openssl, dan libssl-dev yang keduanya menyediakan file SHA dan MD5 signature:
Step 3.2 : Download snort
We are now ready to download the Snort source tarball, compile, and then install. The
--enable-sourcefire option gives Packet Performance Monitoring (PPM)[2][3], which lets us do performance monitoring for rules and pre-processors, and builds Snort the same way that the Snort team does:
:~# ldconfig :~# cd snort_src/
:~/snort_src# wget https://snort.org/downloads/snort/snort-2.9.8.3.tar.gz :~/snort_src# tar -xvzf snort-2.9.8.3.tar.gz
:~/snort_src# cd snort-2.9.8.3/
:~/snort_src/snort-2.9.8.3# ./configure --enable-sourcefire && make && make install
:~/snort_src/snort-2.9.8.3# cd
Step 3.3 : Updata Shared Libraries
Jalankan perintah berikut untuk memperbarui shared library (Anda akan mendapatkan error saat Anda mencoba menjalankan Snort jika Anda melewatkan langkah ini):
:~# ln -s /usr/local/bin/snort /usr/sbin/snort
Step 3.4 : Snort Version
Uji Snort dengan menjalankan binary sebagai pengguna biasa, snort -V (yang memberitahu Snort untuk memverifikasi dirinya sendiri dan semua file konfigurasi dilewatkan padanya). Anda harus melihat output yang serupa dengan yang ditunjukkan di bawah ini (walaupun nomor versi yang tepat mungkin sedikit berbeda):
4. Configuring Snort to Run in NIDS Mode
Karena kita tidak ingin Snort berjalan sebagai root, kita perlu membuat akun dan kelompok yang tidak berpengharapan untuk daemon yang dijalankannya
Step 4.1 : Create the snort user and group
Kami juga akan membuat sejumlah file dan direktori yang dibutuhkan oleh Snort, dan mengatur hak akses pada file-file tersebut. Snort akan memiliki direktori berikut: File konfigurasi dan aturan di / etc / snort Alerts akan ditulis ke / var / log / snort Aturan yang dikompilasi (.so rules) akan disimpan di / usr / local / lib / snort dynamicrules
!!! # Create the snort user and group:
!!! # Create the Snort directories:
!!! # Create our logging directories:
!!! # Adjust permissions:
Step 4.2 : Change ownership on folders
Kami ingin mengubah kepemilikan file yang kami buat di atas juga untuk memastikan bahwa Snort dapat mengakses file yang digunakannya:
!!! # Change Ownership on folders:
Snort membutuhkan beberapa file konfigurasi dan preprocessors dinamis yang disalin dari tarball sumber Snort ke folder / etc / snort.
File konfigurasi adalah: classification.config file magic.conf reference.config snort.conf threshold.conf attribute table.dtd gen-msg.map unicode.map
Step 4.3 : Configuration files and the dynamic preprocessors
Untuk menyalin file konfigurasi dan preprocessors dinamis, jalankan perintah berikut ini:
Snort binary file: /usr/local/bin/snort Snort configuration file: /etc/snort/snort.conf Snort log data directory: /var/log/snort
Snort rules directories: /etc/snort/rules /etc/snort/so rules /etc/snort/preproc rules
/usr/local/lib/snort dynamicrules Snort IP list directories: /etc/snort/rules/iplists
Snort dynamic preprocessors: /usr/local/lib/snort dynamicpreprocessor/
Step 4.4 : Edit Snort’s main configuration
Sekarang kita perlu mengedit file konfigurasi utama Snort, /etc/snort/snort.conf. Saat kita menjalankan Snort dengan file ini sebagai argumen, ia mengatakan bahwa Snort akan berjalan dalam mode NIDS.
Kami perlu memberi komentar semua file aturan individual yang dirujuk dalam file konfigurasi Snort, karena alih-alih mendownload setiap file secara terpisah, kami akan menggunakan PulledPork untuk mengelola rulesets kami, yang menggabungkan semua peraturan ke dalam satu file. Baris berikut akan memberi komentar semua rulesets di file snort.conf:
:~# sed -i "s/include \$RULE\_PATH/#include \$RULE\_PATH/" /etc/snort/snort.conf
Step 4.5 : Change some setting in the snort
Sekarang kita akan secara manual mengubah beberapa pengaturan di file snort.conf, menggunakan editor favorit Anda:
Change the following lines to meet your environment:
Line 45, HOME_NET should match your internal (friendly) network. In the below example our HOME _NET is 192.168.x.0 with a 24-bit subnet mask (255.255.255.0)
Catatan: Anda seharusnya tidak mengatur EXTERNAL_NET ke $ HOME_NET seperti yang direkomendasikan di beberapa panduan, karena dapat menyebabkan Snort untuk melewatkan lansiran.
Catatan: sangat penting bahwa HOME _NET Anda cocok dengan subnet IP dari antarmuka yang Anda inginkan agar Snort dengarkan. Silakan gunakan ifconfig eth0 | Grep "inet add" untuk memastikan Anda memiliki alamat dan set mask yang tepat.
Set the following file paths in snort.conf, beginning at line 104: :~# nano -c /etc/snort/snort.conf
Step 4.7 : Testing Snort
In order to make testing Snort easy, we want to enable the local.rules file, where we can add rules that Snort can alert on. Un-comment (remove the hash symbol) from line 546 so it looks like this:
:~# nano -c /etc/snort/snort.conf
Setelah file konfigurasi siap, kita akan meminta Snort memverifikasi bahwa itu adalah file yang valid, dan semua file yang diperlukan yang referensi benar. Kami menggunakan flag -T untuk menguji file konfigurasi, flag -c untuk memberi tahu Snort file konfigurasi mana yang akan digunakan, dan -i untuk menentukan antarmuka yang akan didengarkan Snort (ini adalah persyaratan baru untuk 2.9.8.x Versi snort).
Step 4.8 : Run Snort
Run snort -T -c /etc/snort/snort.conf -i eth0. Run this command as shown below and look for the following output (only the last few lines of the output are shown for clarity):
:~# snort -T -i eth0 -c /etc/snort/snort.conf (...)
Snort successfully validated the configuration! Snort exiting
Nama interface telah berubah, dan spesifik sistem (tidak lagi terdaftar sebagai ethN). Pada perintah di atas, Anda perlu mengganti eth0 dengan nama antarmuka Anda, seperti yang ditunjukkan dengan perintah ifconfig (dalam kasus saya ini adalah ens160).
Sebaiknya gulir ke atas melalui keluaran dari perintah ini untuk merasakan apa yang sedang dimuat oleh Snort. Banyak hal itu tidak masuk akal saat ini, tapi akan semakin jelas saat Anda bekerja lebih banyak dengan Snort. Cari kesalahan dan peringatan yang tercantum.
5. Writing a Simple Rule to Test Snort Detection
Pada tahap ini, Snort tidak memiliki aturan yang dimuat (file aturan kami yang dirujuk dalam snort.conf kosong). Anda dapat memverifikasi bahwa Snort belum memasukkan peraturan apapun jika Anda menggulir ke atas melalui keluaran dari perintah sebelumnya. Untuk menguji kemampuan deteksi Snort, mari buat aturan sederhana yang akan menyebabkan Snort menghasilkan peringatan setiap kali Snort melihat pesan ICMP "Echo request" atau "Echo reply", yang mudah dibuat dengan utilitas ping di mana-mana (ini mempermudah Pengujian aturan).
Step 5.1 : Alert icmp
Paste the following single line into the empty local rules file:
/etc/snort/rules/local.rules:
:~# cd /etc/snort/rules/
Step 5.2 : Alert ICMP
Untuk memastikan bahwa barnyard2 tahu bahwa aturan yang kami buat dengan pengenal unik 10000001 memiliki pesan "ICMP Test Detected", serta beberapa informasi lainnya. Kami menambahkan baris berikut ke
/etc/snort/sid-msg.map file:
Bila Anda tidak mengomentari baris 545 di atas (sertakan $ RULE_PATH / local.rules) Anda memberi tahu Snort bahwa file local.rules harus dimuat oleh Snort. Ketika Snort memuat file itu saat start-up, ia akan melihat aturan yang Anda buat, dan menggunakan aturan itu pada semua lalu lintas yang dilihat oleh antarmuka. Dalam kasus ini, ketika kami membuat peraturan, kami memberi tahu Snort bahwa seharusnya menghasilkan peringatan saat melihat ping ICMP.
Step 5.3 : changes to the Snort configuration
Karena kami membuat perubahan pada konfigurasi Snort, kami harus menguji file konfigurasi lagi:
:~/etc/snort# cd
Step 5.4 : NIDS Mode
Sekarang kita tahu bahwa Snort benar-benar menerapkan peraturan dan konfigurasi kita, kita bisa mulai mendengus dalam mode NIDS, dan memberitahukannya untuk mengeluarkan peringatan apa pun ke konsol. Kami akan menjalankan Snort dari command line, dengan menggunakan flag berikut:
-A console The ‘console’ option prints fast mode alerts to stdout -q Quiet mode. Don’t show banner and status report. -u snort Run Snort as the following user after startup -g snort Run Snort as the following group after startup -c /etc/snort/snort.conf The path to our snort.conf file
-i eth0 The interface to listen on (change to your interface if different)
:~# /usr/local/bin/snort –A console -q -u snort -g snort –c /etc/snort/snort.conf -i eth0
Ketika Anda menjalankan baris ini, Anda tidak akan melihat output apa pun, namun Snort sedang berjalan, memproses semua paket yang sampai pada et0 (atau antarmuka mana pun yang Anda tentukan dengan flag -i), membandingkannya dengan aturan yang telah dimuatnya (dalam hal ini Kasus aturan ICMP Ping tunggal kami), dan kemudian akan mencetak semua peringatan yang dihasilkan saat sebuah paket sesuai dengan peraturan kami ke konsol.
Step 5.5 : Ping
Dari komputer lain, ping alamat IP eth0 di komputer Snort (atau ganti ping dari host Snort ke komputer lain, atau eth0 sendiri, tapi bukan antarmuka loopback), dan Anda akan melihat output konsol serupa dengan apa yang ditampilkan di bawah ini. (Pada contoh di bawah ini, server Snort mendengarkan eth0 dengan dan alamat IP 10.0.0.105, dan komputer yang menghasilkan ping adalah 10.0.0.59).
6. Installing Barnyard2
Ini adalah sumber yang intensif bagi Snort untuk menulis acara dalam mode yang dapat dibaca manusia, baik ke konsol maupun file teks, seperti yang dilakukan di atas. Idealnya, kami ingin acara Snort disimpan dalam database MySQL sehingga kami dapat melihat, mencari, dan profil acara. Untuk mendapatkan kejadian Snort secara efisien ke dalam database MySQL, kami menggunakan Barnyard2.
Step 6.1 : Installing MySQL
Kami akan mengkonfigurasi Snort untuk menampilkan acara dalam bentuk biner ke folder, dan kemudian membuat Barnyard2 membaca kejadian tersebut secara asinkron dan memasukkannya ke basis data MySQL kami.
Instalasi MySQL, kita akan menggunakan apt dengan mysql repository. Pertama, tambahkan sumber repositori mysql untuk mendapatkan versi MySQL terbaru.
:~# wget http://dev.mysql.com/get/mysql-apt-config_0.7.3-1_all.deb
:~# dpkg -i mysql-apt-config_0.7.3-1_all.deb
When adding source repository, It's necessary to set the MySQL version that will be installed and some other options.
You need to update to make adjustment to the new file apt source. :~# apt-get update
Memasuki tahap instalasi, Selain menginstal mysql-server kita juga membutuhkan beberapa library yang berguna untuk mysql.
:~# apt-get install -y mysql-server libmysqlclient-dev mysql-client autoconf libtool
Instalasi akan meminta Anda untuk membuat password root mysql user. Untuk contoh di bawah ini, kita akan menggunakan password jarkom123. Anda harus memilih sesuatu yang berbeda dan lebih aman, dan menyimpannya dengan aman. Kami juga akan membuat akun pengguna MySQL, dan kata sandi untuk akun itu adalah kata sandi jarkom123, perhatikan perbedaan antara dua kata kunci ini.
Step 6.2 : output unified2
Kita perlu memberitahu mendengus bahwa itu harus mengeluarkan peringatan itu dalam format biner (ke file) yang dapat diproses oleh Barnyard2. Untuk melakukannya, edit file /etc/snort/snort.conf, dan setelah baris 521 (baris komentar dimulai dengan tanda hash) tambahkan baris berikut:
:~# cd /etc/snort/
:~/etc/snort# nano -c snort.conf
Catatan pada Versi Barnyard2: Pada perintah di bawah ini, kami akan mendownload cuplikan spesifik dari Barnyard2 dari github: Barnyard2 versi 2.1.14 dengan komit mulai 21 Oktober 2015 (ini adalah versi terbaru saat ini). Saya memilih untuk tidak menggunakan rilis stabil terbaru: 2.1.13 karena beberapa patch telah ditambahkan setelah rilis yang penting, dan saya memilih untuk tidak menggunakan rilis Head, karena itu akan berubah setelah rilis panduan ini, dan saya menang Sudah bisa mengujinya. Jika Anda mau, Anda bisa (dan mungkin akan menginginkannya) untuk menggunakan rilis Barnyard2 saat ini, namun jika Anda memiliki masalah, Anda dapat selalu kembali dan menggunakan versi yang telah saya gunakan di bawah yang telah saya verifikasi akan bekerja dengan yang lain. Potongan perangkat lunak dalam panduan ini
Step 6.3 : Download and install Barnyard2
Now download and install Barnyard2 2.1.14 release 336: :~#cd snort_src/
:~/snort_src# wget
https://github.com/firnsy/barnyard2/archive/7254c24702392288fe6be948f88afb7404 0f6dc9.tar.gz \-O barnyard2-2-1.14-336.tar.gz
:~/snort_src# tar -zxvf barnyard2-2-1.14-336.tar.gz
:~/snort_src# mv 7254c24702392288fe6be948f88afb74040f6dc9 barnyard2-2-1.14-336
:~/snort_src# cd barnyard2-2-1.14-336
:~/snort_src/barnyard2-2-1.14-336# autoreconf -fvi -I ./m4
Step 6.4 : Library
Barnyard2 needs access to the dnet.h library. However, Barnyard2 expects a different file name for this library. Create a soft link from dnet.h to dubmnet.h so there are no issues:
:~/snort_src/barnyard2-2-1.14-336# ln -s /usr/include/dumbnet.h /usr/include/dnet.h
:~/snort_src/barnyard2-2-1.14-336# ldconfig
Step 6.5 : Configure MySQL
Bergantung pada versi OS Anda (x86 atau x86 64), Anda perlu mengarahkan install ke perpustakaan MySQL yang benar. Jalankan salah satu dari dua baris berikut untuk mengkonfigurasi proses pembuatan, tergantung pada arsitektur Anda (jika Anda tidak yakin dengan arsitektur yang Anda jalankan, gunakan perintah uname -m:
:~/snort_src/barnyard2-2-1.14-336# arch
:~/snort_src/barnyard2-2-1.14-336# ./configure --with-mysql --with-mysql-libraries=/usr/lib/i386-linux-gnu
Step 6.6 : Install Barnyard2
Now complete the build and install Barnyard2 to /usr/local/bin/barnyard2: :~/snort_src/barnyard2-2-1.14-336# make
CATATAN: Jika Anda mendapatkan kesalahan dnet.h pada tahap pembuatan, Anda mungkin perlu memberi tahu sistem tempat file dnet.h berada. Jalankan perintah berikut sebelum menjalankan make lagi (ini kadang-kadang dilaporkan sebagai masalah):
Step 6.7 : copy and create some files
Once Barnyard2 is installed, the next step is to copy and create some files that Barnyard2 requires to run:
:~/snort_src/barnyard2-2-1.14-336# cp etc/barnyard2.conf /etc/snort !!# the /var/log/barnyard2 folder is never used or referenced !!# but barnyard2 will error without it existing
:~/snort_src/barnyard2-2-1.14-336# mkdir /var/log/barnyard2
:~/snort_src/barnyard2-2-1.14-336# chown snort.snort /var/log/barnyard2 :~/snort_src/barnyard2-2-1.14-336# touch /var/log/snort/barnyard2.waldo :~/snort_src/barnyard2-2-1.14-336# chown snort.snort
/var/log/snort/barnyard2.waldo
Step 6.8 : Create database
Karena Barnyard2 menyimpan alert ke database MySQL kita, kita perlu membuat database itu, dan juga 'snort' pengguna MySQL untuk mengakses database itu. Jalankan perintah berikut untuk membuat database dan pengguna MySQL. Saat diminta memasukkan kata sandi, gunakan 'jarkom123'. Anda juga akan mengatur password pengguna MySQL snort di perintah mysql keempat, jadi ubah juga di sana.
:~# mysql -u root –p
mysql> create database snort; mysql> use snort;
mysql> source ~/snort_src/barnyard2-2-1.14-336/schemas/create_mysql; mysql> CREATE USER 'snort' IDENTIFIED BY 'jarkom123';
mysql> grant create, insert, select, delete, update on snort.* to snort; mysql> exit
Step 6.9 : connect to the MySQL database
We need to tell Barnyard2 how to connect to the MySQL database.
Edit /etc/snort/barnyard2.conf, and at the end of the file add this line (changing password to the one you created above): Line 71, 75 and 348
:~# cd /etc/snort
:~/etc/snort# nano -c barnyard2.conf
Connect to MySQL DB Step 6.10 : Change Permission
Karena kata sandi disimpan dalam teks mentah di file barnyard2.conf, kita harus mencegah pengguna lain membacanya:
:~/etc/snort# cd
:~# chmod o-r /etc/snort/barnyard2.conf
Sekarang kita ingin menguji bahwa Snort sedang menulis acara ke file log biner yang benar, dan bahwa Barnyard2 sedang membaca log tersebut dan menulis kejadian ke database MySQL kita. Kita bisa saja memulai kedua program tersebut dalam mode daemon dan menghasilkan beberapa acara dengan melakukan ping ke antarmuka (memicu aturan yang telah kita buat sebelumnya), tapi lebih baik menguji satu porsi setiap kali.
Step 6.11 : Run Snort in alert mode
Run Snort in alert mode (the command we run below is how Snort will normally be run when we set it up as a daemon, except we aren’t using the -D flag which causes it to run as a daemon).
:~# /usr/local/bin/snort -q -u snort -g snort -c /etc/snort/snort.conf -i eth0
Step 6.12 : Interface eth0
:~# cd
:~# cd /var/log/snort
:~/var/log/snort# ls -l /var/log/snort/
Snort Log :
Step 6.13 : Run Barnyard2