Instalasi Suricata sebagai Network Intrusion Detection Systems berbasis Open Source

Jumat, 04 November 2022
10 min read

Apa itu NIDS?

Network Intrusion Detection Systems (NIDS) adalah salah satu upaya cara untuk mendeteksi serangan dunia maya, malware, Denial of Service (DoS) atau pemindaian port pada jaringan komputer atau komputer itu sendiri. NIDS memantau lalu lintas jaringan dan mendeteksi aktivitas berbahaya dengan mengidentifikasi pola mencurigakan dalam paket yang masuk. Setiap aktivitas atau pelanggaran berbahaya biasanya dilaporkan ke administrator atau dikumpulkan secara terpusat menggunakan sistem security information and event management (SIEM).

Network Intrusion Detection Systems (NIDS) merupakan salah satu klasifikasi IDS diatur pada titik yang direncanakan dalam jaringan untuk memeriksa lalu lintas dari semua perangkat di jaringan. Tugasnya melakukan pengamatan lalu lintas yang lewat di seluruh subnet dan mencocokkan lalu lintas yang diteruskan di subnet dengan kumpulan serangan yang diketahui. Setelah serangan diidentifikasi atau perilaku abnormal diamati, peringatan dapat dikirim ke administrator. Contoh NIDS adalah memasangnya di subnet tempat firewall berada untuk melihat apakah seseorang mencoba memecahkan firewall.

Terdapat komponen bernama packet captures yaitu sebuah komponen kunci untuk menerapkan Network Intrusion Detection Systems (IDS) dan melakukan Network Security Monitoring (NSM). Ada beberapa alat IDS open source yang memproses pengambilan paket dan mencari tanda tangan dari kemungkinan penyusupan jaringan dan aktivitas berbahaya. Menggunakan packet captures yang disediakan oleh Network Watcher dapat menganalisis jaringan untuk gangguan atau kerentanan berbahaya.

Salah satu alat open source tersebut adalah Suricata, mesin IDS yang menggunakan aturan untuk memantau lalu lintas jaringan dan memicu peringatan setiap kali peristiwa mencurigakan terjadi. Suricata menawarkan mesinmulti-threaded, yang berarti dapat melakukan analisis lalu lintas jaringan dengan peningkatan kecepatan dan efisiensi. Untuk detail lebih lanjut tentangSuricata dan kemampuannya, kunjungi situs website Suricata di https://suricata.io/.

Alur NIDS

Publikasi bertujuan menjelaskan cara mengatur lingkungan untuk melakukan deteksi intrusi jaringan menggunakan Network Watcher, Suricata, dan Elastic Stack. Network Watcher memberikan sebuah tangkapan paket yang digunakan untuk melakukan deteksi intrusi jaringan. Suricata memproses paket yang menangkap dan memicu peringatan berdasarkan paket yang cocok dengan aturan ancaman yang diberikan. Peringatan ini disimpan dalam log files di mesin lokal. Dengan menggunakan Elastic Stack, log yang dihasilkan oleh Suricata dapat diindeks dan digunakan untuk membuat dashboard Kibana, memberikan representasi visual dari log dan sarana untuk mendapatkan wawasan tentang potensi kerentanan jaringan dengan cepat.

Kedua alat open source dapat diatur pada Azure VM, dan memungkinkan untuk melakukan analisis di dalam lingkungan jaringan Azure yang dimiliki.

Require Minimum

Terdapat beberapa kebutuhan yang dibutuhkan, penulis mengacu pada referensidigitalocean, minimal terdapat:

  1. Ubuntu 20.4
  2. Server dengan spesifikasi 4GB RAM dan 2 CPUs dengan pengaturan non-root sudo user.

Langkah - Langkah Instalasi NIDS

Install Suricata

Untuk semua metode pemasangan lengkapnya, silahkan mengunjungi ke halaman website https://suricata.readthedocs.io/en/suricata-5.0.2/quickstart.html#installation

Atau sebagai berikut:

  1. Di terminal baris perintah VM, jalankan perintah berikut:
  2. sudo add-apt-repository ppa:oisf/suricata-stable
    sudo apt-get update
    sudo apt-get install suricata

  3. Untuk memverifikasi pemasangan, jalankan perintah suricata -h untuk melihat daftar lengkap perintah.

Unduh Kumpulan Aturan “The Emerging Threats”

Pada tahap ini, tidak diperlukan untuk menjalankan Suricata. Tergantung pada jika ada ancaman khusus pada jaringan yang ingin dideteksi, atau juga bisa dapat menggunakan kumpulan aturan yang dikembangkan dari sejumlah penyedia, seperti Emerging Threats, atau VRT rules dari Snort. Pengguna dapat menggunakan aturan Emerging Threats yang dapat diakses secara bebas di sini:

Unduh kumpulan aturan dan salin ke direktori:

wget https://rules.emergingthreats.net/open/suricata/emerging.rules.tar.gz
tar zxf emerging.rules.tar.gz
sudo cp -r rules /etc/suricata/

Proses Pengambilan Paket dengan Suricata

Untuk memproses pengambilan paket menggunakan Suricata, jalankan perintah berikut:

sudo suricata -c /etc/suricata/suricata.yaml -r [location_of_pcapfile]

Untuk memeriksa peringatan yang dihasilkan, baca file fast.log:

tail -f /var/log/suricata/fast.log

Menyiapkan Elastic Stack

Meskipun log yang dihasilkan Suricata berisi informasi berharga tentang apa yang terjadi di jaringan, namun log files ini tidaklah mudah untuk dibaca dan dipahami. Dengan menghubungkan Suricata dengan Elastic Stack, pengguna dapat membuat dashboard Kibana yang memungkinkan pengguna untuk mencari, membuat grafik, menganalisis, dan memperoleh wawasan dari logyang dihasilkan.

Install Elasticsearch

  1. Elastic Stack dari versi 5.0 ke atas membutuhkan Java 8. Jalankan perintahjava -version untuk memeriksa versi java yang dimiliki. Jika belum pernah memasang Java, pengguna dapat memasangnya terlebih dahulu atau melihat dokumentasi di JDK yang didukung oleh Azure.
  2. Unduh binary package yang benar untuk sistem yang dipakai:
  3. curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.2.0.deb
    sudo dpkg -i elasticsearch-5.2.0.deb
    sudo /etc/init.d/elasticsearch start

  4. Verifikasi bahwa Elasticsearch berjalan dengan perintah:
  5. curl http://127.0.0.1:9200

    Respons yang didapat akan mirip dengan seperti ini:

    { "name" : "Angela Del Toro", "cluster_name" : "elasticsearch", "version" : { "number" : "5.2.0", "build_hash" : "8ff36d139e16f8720f2947ef62c8167a888992fe", "build_timestamp" : "2016-01-27T13:32:39Z", "build_snapshot" : false, "lucene_version" : "6.1.0" }, "tagline" : "You Know, for Search" }

Untuk instruksi lebih lanjut tentang menginstal Elasticsearch, lihat halaman pemasangan di https://www.elastic.co/elasticsearch

Install Logstash

  1. Untuk memasang Logstash, jalankan perintah berikut:
  2. curl -L -O https://artifacts.elastic.co/downloads/logstash/logstash-5.2.0.deb
    sudo dpkg -i logstash-5.2.0.deb

  3. Selanjutnya kita perlu mengkonfigurasi Logstash untuk membaca dari output file eve.json. Buat logstash.conf file menggunakan:
  4. sudo touch /etc/logstash/conf.d/logstash.conf

  5. Tambahkan konten berikut ke file (pastikan jalur ke file eve.json sudah benar):
  6. input { file { path => ["/var/log/suricata/eve.json"] codec => "json" type => "SuricataIDPS" } }

    filter { if [type] == "SuricataIDPS" { date { match => [ "timestamp", "ISO8601" ] } ruby { code => " if event.get('[event_type]') == 'fileinfo' event.set('[fileinfo][type]', event.get('[fileinfo][magic]').to_s.split(',')[0]) end " } ruby { code => " if event.get('[event_type]') == 'alert' sp = event.get('[alert][signature]').to_s.split(' group ') if (sp.length == 2) and /Ad+z/.match(sp[1]) event.set('[alert][signature]', sp[0]) end end " } } }

    if [src_ip] { geoip { source => "src_ip" target => "geoip" #database => "/opt/logstash/vendor/geoip/GeoLiteCity.dat" add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ] add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}" ] } mutate { convert => [ "[geoip][coordinates]", "float" ] } if ![geoip.ip] { if [dest_ip] { geoip { source => "dest_ip" target => "geoip" #database => "/opt/logstash/vendor/geoip/GeoLiteCity.dat" add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ] add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}" ] } mutate { convert => [ "[geoip][coordinates]", "float" ] } } } }

    output { elasticsearch { hosts => "localhost" } }

  7. Pastikan untuk memberikan izin yang benar ke file eve.json sehingga Logstash dapat memproses file
  8. sudo chmod 775 /var/log/suricata/eve.json

  9. Untuk memulai Logstash, jalankan perintah:
  10. sudo /etc/init.d/logstash start

Untuk instruksi lebih lanjut tentang menginstal Logstash, lihat di halamanwebsitehttps://www.elastic.co/guide/en/beats/libbeat/5.2/logstash-installation.html

Install Kibana

  1. Jalankan perintah berikut untuk memasang Kibana:
  2. curl -L -O https://artifacts.elastic.co/downloads/kibana/kibana-5.2.0-linux-x86_64.tar.gz
    tar xzvf kibana-5.2.0-linux-x86_64.tar.gz

  3. Untuk menjalankan Kibana, gunakan perintah:
  4. cd kibana-5.2.0-linux-x86_64/
    ./bin/kibana

  5. Untuk melihat antarmuka website Kibana yang sudah dimiliki, navigasikan ke http://localhost:5601
  6. Untuk skenario ini, pola indeks yang digunakan untuk log Suricata adalah logstash-*
  7. Jika ingin melihat dashboard Kibana dari jarak jauh (remotly), buat aturan inbound NSG yang mengizinkan akses ke port 5601.

Membuat dashboard Kibana

Untuk publikasi ini, anggota kelompok telah menyediakan dashboard contoh untuk melihat detail dalam lansiran.

  1. Unduh the dashboard file disini, the visualization file disini, dan the saved search file disini.
  2. Di bawah tab Manajemen Kibana, navigasikan ke Saved Objects dan impor ketigafile. Kemudian dari tab dashboard, pengguna dapat membuka dan memuat contohdashboard.

Visualisasi dan dashboard sendiri juga dapat dibuat dengan menyesuaikan metrik yang diminati. Pengguna dapat membaca lebih lanjut tentang membuat visualisasi Kibana dari dokumentasi resmi Kibana.

Visualisasikan Logs Peringatan IDS

Terdapat sampel dashboard yang menyediakan beberapa visualisasi dari logperingatan Suricata:

  1. Alerts by GeoIP, yaitu peta yang menunjukkan distribusi peringatan berdasarkan lokasi geografis (ditentukan oleh IP) negara/wilayah asalnya.
  2. Top 10 Alerts, yaitu ringkasan dari 10 peringatan yang paling sering dipicu dan deskripsinya. Menekan peringatan individual akan menyaring di dashboardke informasi yang berkaitan dengan peringatan tertentu.
  3. Number of Alerts, yaitu jumlah total peringatan yang dipicu oleh kumpulan aturan.
  4. Top 20 Source/Destination IPs/Ports, yaitu diagram lingkaran yang menunjukkan 20 IP dan port teratas yang memicu peringatan. Pengguna dapat menyaring IP/port tertentu untuk melihat berapa banyak dan jenis peringatan apa yang dipicu.
  5. Alert Summary, yaitu tabel yang merangkum detail spesifik dari setiap peringatan individu. Pengguna dapat menyesuaikan tabel ini untuk menampilkan parameter lain yang menarik untuk setiap lansiran.

Untuk dokumentasi lebih lanjut tentang membuat visualisasi dan dashboard khusus, pengguna dapat melihat dokumentasi resmi dari Kibana.

Kesimpulan

Dengan menggabungkan packet captures yang disediakan oleh Network Watcher dan alat IDS open source seperti Suricata, Pengguna dapat melakukan deteksi intrusi jaringan untuk berbagai ancaman. Dashboard ini memungkinkan pengguna untuk dengan cepat melihat kecenderungan dan anomali di dalam jaringan, serta menggali data untuk menemukan akar penyebab peringatan seperti agen pengguna yang berbahaya atau port yang rentan. Dengan data yang diekstraksi ini, pengguna dapat membuat keputusan berdasarkan informasi tentang cara bereaksi dan melindungi jaringan pengguna dari upaya penyusupan yang berbahaya, dan membuat aturan untuk mencegah penyusupan di masa mendatang ke jaringan pengguna.

Referensi

Intrusion Detection System (IDS). (2022, January 17). GeeksforGeeks. Retrieved November 2, 2022, from https://www.geeksforgeeks.org/intrusion-detection-system-ids/

Microsoft. (2022, September 30). Perform network intrusion detection with open source tools - Azure Network Watcher. Microsoft Learn. Retrieved November 1, 2022, from https://learn.microsoft.com/th-th/azure/network-watcher/network-watcher-intrusion-detection-open-source-tools

Sukianto, A. (2022, January 11). Top 6 Free Network Intrusion Detection Systems (NIDS) Software in 2022. UpGuard. Retrieved November 3, 2022, from https://www.upguard.com/blog/top-free-network-based-intrusion-detection-systems-ids-for-the-enterprise

Team Member

Rizky Yugitama, S.S.T.TP., M.T

Product Owner / Mentor

Nabil Aziz Bima Anggita

Scrum Master / Pembuat Laporan / Publisher

Talita Listra

Pembuat Laporan

Izzhan Hawary

Pembuat Laporan

Muhammad Aldi Irfan

Pembuat Laporan

Muhammad Zainur Rifqi Al Munawwar

Pembuat Laporan