Kelas : 1 D4 LJ TI
LAPORAN PRAKTIKUM MK. PRAKTIKUM KEAMANAN JARINGAN PRAKTIKUM : SNORT Kelas : 1 D4 LJ TI
Kelompok :
1 Faishal Izzan Nahidha (2110165006)
2 Mutik Hidayati (2110165012)
3 Irma Nurlatifah Nasution (2110165016)
TOPOLOGI JARINGAN
Berikut ini topologi jaringan yang digunakan pada praktikum ini: Konfigurasi interface Host 0:
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
Gunakan nano untuk merubah file network interface dengan perintah:
~# nano -c /etc/network/interfaces 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
Lakukan konfigurasi pada file /etc/network/interfaces sebagai berikut:
Langkah 1.4 : Restart Jaringan
Lakukan restart jaringan dan pastikan bahwa LRO dan GRO telah dimatikan:
:~# ifconfig eth0 down && sudo ifconfig eth0 up :~# ethtool -k eth0 | grep receive-offload generic-receive-offload: off large-receive-offload: off :~#
Pengerjaan: 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 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
Pengerjaan:
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# :~/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 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:
:~# apt-get install -y zlib1g-dev liblzma-dev openssl libssl-dev 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# wge :~/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# cdPengerjaan:
Langkah 3.3 : Update Shared Libraries
Jalankan perintah berikut untuk memperbarui shared library. Tempatkan sebuah symlink ke binary Snort di dalam /usr/sbin:
:~# ln -s /usr/local/bin/snort /usr/sbin/snort
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
/var/log/snort, Aturan kompilasi (.rules .so) di simpan dalam dynamicrules /usr/local/lib/snort.
!!! # 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 :~# mkdir /etc/snort/rules :~# mkdir /etc/snort/rules/iplists :~# mkdir /etc/snort/preproc_rules :~# mkdir /usr/local/lib/snort_dynamicrules :~# mkdir /etc/snort/so_rules !!! # 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
Pengerjaan:
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 snort_src/snort-2.9.8.3/src/dynamic- preprocessors/build/usr/local/lib/snort_dynamicpreprocessor/ :~./././# cp * /usr/local/lib/snort_dynamicpreprocessor/ :~./././# 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 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/ 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: Baris 45, HOME_NET harus sama dengan network internal. Contoh :
# Setup the network addresses you are protecting #ipvar HOME_NET 192.168.18.0/24 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
Pengerjaan:
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 :~#
Pengerjaan:
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 : Barnyard2 tidak membaca meta-information tentang peringatan dari file local.rules. Tanpa informasi ini, Barnyard2 tidak akan mengetahui rincian tentang peraturan yang memicu peringatan tersebut, dan akan menghasilkan kesalahan fatal saat menambahkan peraturan baru dengan PulledPork (dilakukan pada langkah selanjutnya).
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/rfc792Pengerjaan: 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
Pengerjaan:
Langkah 5.4 : Mode NIDS
Setelah Snort benar-benar menerapkan peraturan dan konfigurasi kita, kita bisa mulai Snort 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
Opsi ‘console’ mencetak tanda mode fast ke stdout
- q Mode Quiet. Jangan tampilkan banner dan status report
- u snort Jalankan Snort sebagai user setelah startup
- g snort Jalankan Snort sebagai grup setelah startup
- c /etc/snort/snort.conf Path file snort.conf
- i eth0 Interface yang akan didengarkan Perintahnya yaitu:
:~# /usr/local/bin/snort -A console -q -u snort -g snort -c /etc/snort/snort.conf -i eth0
Pengerjaan: 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.
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
Setelah itu, dilakukan konfigurasi Snort untuk menampilkan event dalam bentuk biner ke folder, dan 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 :~# dpkg -i mysql-apt-config_0.7.3-1_all.deb
Pengerjaan:
Kemudian lakukan perintah berikut :
:~# apt-get update :~# apt-get install --force-yes mysql-server libmysqlclient-dev mysql-client autoconf libtool
Pengerjaan:
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
Download dan inst all Barnyard2:
:~#cd snort_src/
:~/snort_src# wget :~/snort_src# tar -zxvf barnyard2-2-1.14-336.tar.gz :~/snort_src# mv barnyard2-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
Pengerjaan:
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 :~/snort_src/barnyard2-2-1.14-336# ./configure --with-mysql --with-mysql- libraries=/usr/lib/i386-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
Pengerjaan:
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
Karena Barnyard2 menyimpan alert ke database MySQL kita, kita perlu membuat database itu, dan juga 'mendengus' pengguna MySQL untuk mengakses database itu. Jalankan perintah berikut untuk 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
Pengerjaan:
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 output database: alert , mysql, user= snort password= jarkom123 dbname= snort host=localhost 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
Jalankan Snort dalam mode alert (perintah yang kita jalankan di bawah ini adalah bagaimana Snort biasanya dijalankan saat kita mengaturnya sebagai daemon, kecuali kita tidak menggunakan flag -D yang menyebabkannya dijalankan sebagai daemon).
:~# /usr/local/bin/snort -q -u snort -g snort -c /etc/snort/snort.conf -i eth0 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):
:~# mysql -u snort -p -D snort -e "select count(*) from event" Pengerjaan: