LAPORAN PRAKTIKUM MK. PRAKTIKUM KEAMANAN JARINGAN
PRAKTIKUM : SNORT
Kelas : 1 D4 LJ TI
Kelompok :
1 Faishal Izzan Nahidha (2110165006) 2 Mutik Hidayati (2110165012)
TOPOLOGI JARINGAN
Berikut ini topologi jaringan yang digunakan pada praktikum ini:
Konfigurasi Host 1:
1. Konfigurasi Kartu Jaringan
Beberapa kartu jaringan memiliki fitur “Large Receive Offload” (Iro) dan “Generic Receive Offload” (gro). Dengan fitur tersebut, kartu jaringan melakukan paket reassembly sebelum diproses oleh kernel. Secara default, Snort akan memotong paket yang lebih besar dari snaplen default 1518 byte. Selain itu, LRO dan GRO dapat menyebabkan masalah dengan reassembly berbasis target Stream5. Sebaiknya matikan LRO dan GRO.
Untuk mematikan LRO dan GRO untuk setiap interface yang didengarkan oleh Snort, gunakan
commadn ethtool di dalam file konfigurasi network interface : /etc/network/interfaces.
Langkah 1.1 : Install ethtool
Install etht ool dengan perintah :
:~# apt-get install -y ethtool
Pengerjaan:
Langkah 1.2 : Merubah eth0
Tambahkan dua baris berikut untuk setiap network interface:
post-up ethtool -K eth0 gro off post-up ethtool -K eth0 lro off
Pengerjaan:
Langkah 1.3 : Konfigurasi Network Interface
Langkah 1.4 : Restart Jaringan
Lakukan restart jaringan dan pastikan bahwa LRO dan GRO telah dimatikan:
:~# ifconfig eth0 down && sudo ifconfig eth0 up
Langkah 1.5 : Install Package Debian
Install file package yang diperlukan dengan perintah berikut:
:~# apt-get install build-essential automake autoconf libtool pkg-config libcurl4-openssl-dev intltool libxml2-dev libgtk2.0-dev libnotify-dev libglib2.0-dev libevent-dev checkinstall
2. Instalasi Pra-syarat Snort
Snort memiliki empat pra-syarat berikut:
pcap (libpcap-dev) tersedia di repositori Debian PCRE (libpcre3-dev) tersedia di repositori Debian Libdnet (libdumbnet-dev) tersedia di repositori Debian DAQ (http://www.snort.org/downloads/) kompilasi dari sumber
Langkah 2.1 : Package Build Essential
Pertama install semua tools yang dibutuhkan untuk membangun software melalui package build-essentials dengan perintah :
:~# apt-get install -y build-essential
Jika sudah terinstall lalu install semua pra-syarat Snort yang tersedia dari repository Debian : :~# apt-get install -y libpcap-dev libpcre3-dev libdumbnet-dev
Langkah 2.2 : Membuat Folder
Setelah ini, kita akan mendownload sejumlah file tar untuk berbagai package software. Buatlah sebuah folder snort_src untuk menyimpan dalam satu tempat:
:~# mkdir snort_src
Pengerjaan:
Langkah 2.3 : Library Data AcQuisition
Snort DAQ (Data AcQuisition Library) memiliki beberapa pra-syarat yang harus diinstall. Lakukan instalasi dengan perintah :
:~# apt-get install -y bison flex
Pengerjaan:
Langkah 2.4 : Download dan Install DAQ
Download dan install versi terbaru DAQ dari website Snort. Langkah di bawah menggunakan wget untuk mendownload versi …. DAQ, yang mana adalah versi terbaru ketika dilakukan praktikum ini. Perintah sebagai berikut:
:~# cd snort_src/
:~/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
Pengerjaan:
3. Instalasi Snort
Untuk menginstal Snort, terdapat satu pra-syarat tambahan yang diperlukan untuk diinstal: zlibd
yang merupakan library compression.
Langkah 3.1 : Library
Terdapat tiga library opsional yang menambah fungsionalitas: liblzma-dev yang melakukan dekompresi file swf (adobe flash), openssl, dan libssl-dev yang keduanya menyediakan signature file SHA dan MD5. Instalasi dilakukan dengan perintah:
Pengerjaan:
Langkah 3.2 : Download Snort
Opsi perintah –enable-sourcefire menyediakan Packet Performance Monitoring (PPM), di mana dapat melakukan pemantauan kinerja untuk peraturan dan pra-prosesor, dan membangun Snort dengan cara yang sama seperti tim Snort:
:~# 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
Pengerjaan:
Langkah 3.3 : Update Shared Libraries
Jalankan perintah berikut untuk memperbarui shared library. Tempatkan sebuah symlink ke binary Snort di dalam /usr/sbin:
Langkah 3.4 : Versi Snort
Tes Snort dengan menjalankan binary sebagai user regular, lewatkan dengan flas –V (yang mana memberitahu Snort untuk verifikasi dirinya dan berbagai file konfigurasi untuk dilewatkan dengan itu). Perintahnya :
:~# snort -V
Pengerjaan:
4. Konfigurasi Snort Untuk Menjalankan Mode NIDS
Karena kita tidak ingin Snort dijalankan sebagai root, buat akun unprivileged dan grup untuk daemon untuk dijalankan dibawah (snort:snort).
Langkah 4.1 : Membuat User Snort dan Grup
Buat sejumlah file dan direktori yang diperlukan Snort, dan kelola izin dari file tersebut. Snort akan memiliki direktori berikut : File konfigurasi dan Aturan di dalam /etc/snort, Alert di dalam
!!! # Create the snort user and group: :~# groupadd snort
:~# useradd snort -r -s /sbin/nologin -c SNORT_IDS -g snort
!!! # Create the Snort directories: :~# mkdir /etc/snort
!!! # Create some files that stores rules and ip lists : :~# touch /etc/snort/rules/black_list.rules
:~# touch /etc/snort/rules/white_list.rules :~# touch /etc/snort/rules/local.rules :~# touch /etc/snort/sid-msg.map
!!! # Create our logging directories: :~# mkdir /var/log/snort
:~# mkdir /var/log/snort/archived_logs
!!! # Adjust permissions: :~# chmod -R 5775 /etc/snort :~# chmod -R 5775 /var/log/snort
:~# chmod -R 5775 /var/log/snort/archived_logs :~# chmod -R 5775 /etc/snort/so_rules
:~# chmod -R 5775 /usr/local/lib/snort_dynamicrules
Langkah 4.2 : Merubah Kepemilikan Folder
Ubah kepemilikan dari folder yang telah dibuat untuk memastikan Snort dapat mengakses file tersebut dengan perintah :
!!! # Change Ownership on folders: :~# chown -R snort:snort /etc/snort :~# chown -R snort:snort /var/log/snort
:~# chown -R snort:snort /usr/local/lib/snort_dynamicrules
Snort membutuhkan beberapa file konfigurasi dan preprosesor dinamis yang di salin dari sumber tarball Snort ke dalam folder /etc/snort. File konfigurasi tersebut yaitu:
classification.config file magic.conf reference.config snort.conf threshold.conf attribute table.dtd gen-msg.map unicode.map
Pengerjaan:
Langkah 4.3 : Konfigurasi File dan Preprosesor Dinamis
Untuk menyalin file konfigurasi dan preprosesor dinamis, jalankan perintah berikut: :~# cd
:~# cd snort_src/snort-2.9.8.3/etc/
:~/snort_src/snort-2.9.8.3/etc/# cp *.conf* /etc/snort :~/snort_src/snort-2.9.8.3/etc/# cp *.map /etc/snort :~/snort_src/snort-2.9.8.3/etc/# cp *.dtd /etc/snort :~/snort_src/snort-2.9.8.3/etc/# cd
:~# cd
Pengerjaan:
Sekarang kita mempunyai layout direktori berikut dan lokasi file: Snort binary file: /usr/local/bin/snort Snort configuration file: /etc/snort/snort.conf Snort log data directory: /var/log/snort
Snort dynamic preprocessors: /usr/local/lib/snort dynamicpreprocessor/
Langkah 4.4 : Merubah Konfigurasi Utama Snort
Ubah file konfigurasi utama Snort /etc/snort/snort.conf. Ketika menjalankan Snort dengan file ini sebagai argument, hal ini memberitahu Snort untuk berjalan dalam mode NIDS.
Beri komentar semua file aturan individual yang dirujuk dalam file konfigurasi Snort untuk menggunakan PulledPork dalam mengelola rulesets. Hal ini menggabungkan semua rule 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
Pengerjaan:
Langkah 4.5 : Merubah Beberapa Setting di dalam Snort
Kemudian ubah beberapa setting di dalam file snort.conf secara manual dengan perintah: :~# nano -c /etc/snort/snort.conf
Ubah pada baris berikut:
Pengerjaan:
Langkah 4.6 : Path File Pada Snort
Atur path file berikut di dalam snort.conf, dimulai pada baris 104: :~# nano -c /etc/snort/snort.conf
var RULE_PATH /etc/snort/rules var SO_RULE_PATH /etc/snort/so_rules
var PREPROC_RULE_PATH /etc/snort/preproc_rules var WHITE_LIST_PATH /etc/snort/rules/iplists var BLACK_LIST_PATH /etc/snort/rules/iplists
Langkah 4.7 : Uji Coba Snort
Agar ujicoba Snort mudah, aktifkan file local.rules, di mana tambahkan aturan yang dapat diwaspadai Snort. Un-comment (hapus symbol hash) dari baris 546:
:~# nano -c /etc/snort/snort.conf
include $RULE_PATH/local.rules
Pengerjaan:
Langkah 4.8 : Menjalankan Snort
Jalankan perintah di bawah dan lihat output yang terjadi :
:~# snort -T -i eth0 -c /etc/snort/snort.conf
(...)
Snort successfully validated the configuration! Snort exiting
:~#
Nama interface berubah dan sistem spesifik (tidak lagi sebagai ethN).
5. Menulis Aturan Sederhana untuk Tes Deteksi Snort
Pada bagian ini, Snort tidak memiliki peraturan yang dijalankan (referensi file aturan di dalam
snort.conf kosong). Untuk mengetes kemampuan deteksi Snort, buat aturan sederhana yang akan membuat Snort men-generate tanda dimanapun Snort melihat sebuah pesan “Echo request” atau
“Echo reply” ICMP dengan perintah PING.
Langkah 5.1 : Alert icmp
Tempel baris tunggal berikut ke dalam file aturan lokal kosong /etc/snort/rules/local.rules:
:~# cd /etc/snort/rules/
:~/etc/snort/rules# nano -c local.rules
alert icmp any any -> $HOME_NET any (msg:"ICMP test detected"; GID:1; sid:10000001; rev:001; classtype:icmp-event;)
Pengerjaan :
Langkah 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 file /etc/snort/sid-msg.map:
:~/etc/snort/rules# cd ..
:~/etc/snort# nano -c sid-msg.map
1 || 10000001 || 001 || icmp-event || 0 || ICMP Test detected || url,tools.ietf.org/html/rfc792
Pengerjaan:
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.
Langkah 5.3 : Merubah ke Konfigurasi Snort
Karena kami membuat perubahan pada konfigurasi Snort, kami harus menguji file konfigurasi lagi:
:~/etc/snort# cd
:~# snort -T -c /etc/snort/snort.conf -i eth0
Langkah 5.4 : Mode NIDS
-A console Opsi ‘console’ mencetak tanda mode fast ke stdout
:~# /usr/local/bin/snort -A console -q -u snort -g snort -c /etc/snort/snort.conf -i eth0 dihasilkan saat sebuah paket sesuai dengan peraturan kami ke konsol.
Langkah 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).
Gunakan ctrl-c untuk menghentikan Snort agar tidak berjalan.
Perhatikan bahwa Snort telah menyimpan salinan informasi ini di / var / log / snort, dengan nama snort.log.nnnnnnnnn (jumlahnya mungkin berbeda). Pada titik ini Snort berjalan dengan benar dalam mode NIDS dan menghasilkan peringatan.
6. Instalasi 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 event. Untuk mendapatkan kejadian Snort secara efisien ke dalam database MySQL, kami menggunakan Barnyard2.
Langkah 6.1 : Instalasi MySQL
kemudian membuat Barnyard2 membaca kejadian tersebut secara asinkron dan memasukkannya ke basis data MySQL kami.
Instalasi MySQL, menggunakan apt dengan repositori mysql. 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
Kemudian lakukan perintah berikut : :~# apt-get update
:~# apt-get install --force-yes mysql-server libmysqlclient-dev mysql-client autoconf libtool
Lalu, atur password untuk user root database mysql.
Langkah 6.2 : Output Unified2
Beritahu Snort bahwa hal itu harus mengeluarkan peringatan 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
Pengerjaan:
Langkah 6.3: Download dan Instal Barnyard2
:~/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
Langkah 6.4 : Library
Barnyard2 membutuhkan akses ke library dnet.h. Namun, Barnyard2 mengharapkan nama file yang berbeda untuk perpustakaan ini. Buat soft link dari dnet.h ke dubmnet.h jadi tidak ada masalah:
:~/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
Pengerjaan:
Langkah 6.5 : Konfigurasi MySQL
Jalankan dua baris perintah di bawah untuk mengkonfigurasi:
:~/snort_src/barnyard2-2-1.14-336# arch !!! # Choose ONE of these two commands to run
:~/snort_src/barnyard2-2-1.14-336# ./configure --with-mysql --with-mysql-libraries=/usr/lib/x86_64-linux-gnu
Pengerjaan:
Langkah 6.6 : Install Banyard2
Selesaikan instalasi Barnyard2 ke file /usr/local/bin/barnyard2:
:~/snort_src/barnyard2-2-1.14-336# make
:~/snort_src/barnyard2-2-1.14-336# make install
Langkah 6.7 : Salin dan Buat Beberapa File
Untuk menyalin dan membuat beberapa file yang dibutuhkan Barnyard2 jalankan perintah berikut:
:~/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
:~/snort_src/barnyard2-2-1.14-336# cd Pengerjaan:
Langkah 6.8 : Buat Database
membuat database dan pengguna MySQL. Lalu atur password user MySQL Snort:
:~# 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
Langkah 6.9 : Hubungkan ke Database MySQL
Kita perlu memberi tahu Barnyard2 bagaimana cara menyambung ke database MySQL.
Edit /etc/snort/barnyard2.conf, dan di akhir file tambahkan baris ini (ubah kata sandi dengan yang Anda buat di atas): Baris 71, 75 dan 348
:~# cd /etc/snort
:~/etc/snort# nano -c barnyard2.conf
config interface: eth0
config alert_with_interface_name
Pengerjaan:
Langkah 6.10 : Ubah Izin
Karena kata sandi disimpan dalam teks mentah di file barnyard2.conf, kita harus mencegah pengguna lain membacanya dengan perintah:
:~/etc/snort# cd
:~# chmod o-r /etc/snort/barnyard2.conf
Pengerjaan:
Langkah 6.11 : Jalankan Snort di Mode Alert
Pengerjaan:
Praktikum PING tidak dapat dijalankan karena terjadi error.
Langkah 6.12 : PING Interface eth1
Ping antarmuka eth0 dari komputer lain, Anda tidak akan melihat output di layar karena Snort tidak dimulai dengan -A bendera konsol seperti sebelumnya. Setelah ping berhenti, ketik ctrl-c untuk menghentikan Snort. Anda harus melihat file baru di direktori / var / log / snort dengan nama berikut: snort.u2.nnnnnnnnnn (jumlahnya akan berbeda karena mereka didasarkan pada waktu sekarang. Snort.log.nnnnnnnnnn adalah file output yang kita Dibuat saat kami pertama kali menguji Snort. Anda dapat menghapus file itu jika Anda mau:
:~# cd
:~# cd /var/log/snort
:~/var/log/snort# ls -l /var/log/snort/
Pengerjaan:
Langkah 6.13 : Jalankan Barnyard2
Jalankan Barnyard2 dengan perintah di bawah:
:~/var/log/snort# cd
:~# barnyard2 -c /etc/snort/barnyard2.conf -d /var/log/snort -f snort.u2 -w /var/log/snort/barnyard2.waldo -g snort -u snort
Pengerjaan:
Langkah 6.14 : Cek Database MySQL
Jalankan perintah berikut untuk query database MySQL, Anda akan diminta untuk MySQL Snort user password: MySqlSNORT password (bukan password root MySQL):