GNU/Linux >> Belajar Linux >  >> Rocky Linux

Cara Install dan Konfigurasi Suricata IDS beserta Elastic Stack di Rocky Linux 8

Suricata adalah alat Pemantauan Jaringan yang memeriksa dan memproses setiap paket lalu lintas internet yang mengalir melalui server Anda. Ini dapat menghasilkan peristiwa log, memicu peringatan, dan menurunkan lalu lintas setelah mendeteksi aktivitas yang mencurigakan.

Anda dapat menginstal Suricata pada satu mesin untuk memantau lalu lintasnya atau menggunakan host gateway untuk memindai semua lalu lintas masuk dan keluar dari server lain yang terhubung dengannya. Anda dapat menggabungkan Suricata dengan Elasticsearch, Kibana, dan Filebeat untuk membuat alat Informasi Keamanan dan Manajemen Peristiwa (SIEM).

Dalam tutorial ini, Anda akan menginstal Suricata IDS bersama dengan ElasticStack di server Rocky Linux 8. Berbagai komponen tumpukan adalah:

  • Elasticsearch untuk menyimpan, mengindeks, menghubungkan, dan mencari peristiwa keamanan dari server.
  • Kibana untuk menampilkan log yang disimpan di Elasticsearch.
  • Filebeat untuk mengurai eve.json Suricata log file dan kirim setiap acara ke Elasticsearch untuk diproses.
  • Suricata untuk memindai lalu lintas jaringan untuk mencari kejadian yang mencurigakan dan membuang paket yang tidak valid.

Tutorial ini dibagi menjadi dua bagian, bagian pertama akan membahas instalasi dan konfigurasi Suricata, dan bagian kedua akan membahas instalasi dan konfigurasi Elastic Stack.

Kami akan menginstal Suricata dan tumpukan Elastis di server yang berbeda untuk tutorial kami.

Prasyarat

  • Server yang menghosting Elastic Stack dan Suricata harus memiliki minimal 4 GB RAM dan 2 inti CPU.

  • Server harus dapat berkomunikasi satu sama lain menggunakan alamat IP pribadi.

  • Server harus menjalankan Rocky Linux 8 dengan pengguna sudo non-root.

  • Jika Anda ingin mengakses dasbor Kibana dari mana saja, siapkan domain (kibana.example.com ) menunjuk ke server tempat Suricata akan dipasang.

  • Instal paket penting di kedua server.

    $ sudo dnf install yum-utils nano curl

Konfigurasi Firewall

BAGIAN 1

Langkah 1 - Instal Suricata

Untuk menginstal Suricata, Anda perlu menambahkan repositori paket Open Information Security Foundation (OISF) ke server Anda.

$ sudo dnf install 'dnf-command(copr)'$ sudo dnf copr aktifkan @oisf/suricata-6.0

Perintah pertama mengaktifkan proyek Komunitas (copr ) untuk dnf penginstal paket. Perintah kedua mengaktifkan dan menambahkan repositori OISF ke sistem Anda. suricata-6.0 mengaktifkan repositori untuk versi perangkat lunak terbaru yang stabil. Tekan y dan ENTER setiap kali Anda diminta.

Selanjutnya, tambahkan repositori EPEL.

$ sudo dnf install epel-release

Instal Suricata.

$ sudo dnf install suricata

Aktifkan layanan Suricata.

$ sudo systemctl aktifkan suricata

Langkah 2 - Konfigurasi Suricata

Suricata menyimpan konfigurasinya di /etc/suricata/suricata.yaml mengajukan. Mode default untuk Suricata adalah Mode IDS (Intrusion Detection System), di mana lalu lintas hanya dicatat dan tidak dihentikan. Jika Anda baru mengenal Suricata, Anda harus membiarkan mode tidak berubah. Setelah Anda mengonfigurasinya dan mempelajari lebih lanjut, Anda dapat mengaktifkan mode IPS (Intrusion Prevention System).

Aktifkan ID Komunitas

Bidang ID komunitas memudahkan untuk mengkorelasikan data antara catatan yang dihasilkan oleh alat pemantauan yang berbeda. Karena kita akan menggunakan Suricata dengan Elasticsearch, mengaktifkan ID Komunitas dapat bermanfaat.

Buka file /etc/suricata/suricata.yaml untuk diedit.

$ sudo nano /etc/suricata/suricata.yaml

Cari baris # Community Flow ID dan atur nilai variabel community-id untuk true .

. . . # ID Aliran Komunitas # Menambahkan bidang 'id_komunitas' ke catatan EVE. Ini dimaksudkan untuk memberikan # catatan ID aliran yang dapat diprediksi yang dapat digunakan untuk mencocokkan catatan dengan # keluaran alat lain seperti Zeek (Bro). # # Mengambil 'benih' yang harus sama di seluruh sensor dan alat # untuk membuat id kurang dapat diprediksi. # aktifkan/nonaktifkan fitur id komunitas. id komunitas:benar. . .

Sekarang, acara Anda akan membawa ID seperti 1:S+3BA2UmrHK0Pk+u3XH78GAFTtQ= yang dapat Anda gunakan untuk mencocokkan set data di berbagai alat pemantauan.

Pilih Antarmuka Jaringan

File konfigurasi Suricata default memeriksa lalu lintas di eth0 perangkat/antarmuka jaringan. Jika server Anda menggunakan antarmuka jaringan yang berbeda, Anda perlu memperbaruinya dalam konfigurasi.

Periksa nama perangkat antarmuka jaringan Anda menggunakan perintah berikut.

$ ip -p -j rute menunjukkan default

Anda akan menerima output seperti berikut.

[ { "dst":"default", "gateway":"164.90.192,1", "dev":"eth0", "protocol":"static", "metric":100, "flags":[ ] } ]

dev variabel mengacu pada perangkat jaringan. Dalam output kami, ini menunjukkan eth0 sebagai perangkat jaringan. Output Anda mungkin berbeda tergantung pada sistem Anda.

Sekarang setelah Anda mengetahui nama perangkat Anda, buka file konfigurasi.

$ sudo nano /etc/suricata/suricata.yaml

Temukan baris af-packet: sekitar baris nomor 580. Di bawahnya, atur nilai variabel interface ke nama perangkat untuk sistem Anda.

# Paket dukungan penangkapan kecepatan tinggi Linux:- antarmuka:eth0 # Jumlah utas yang diterima. "auto" menggunakan jumlah core #threads:auto # Default clusterid. AF_PACKET akan memuat paket keseimbangan berdasarkan aliran. kluster-id:99. . .

Jika Anda ingin menambahkan antarmuka tambahan, Anda dapat melakukannya dengan menambahkannya di bagian bawah af-packet bagian di sekitar baris 650.

Untuk menambahkan antarmuka baru, masukkan tepat di atas - interface: default bagian seperti yang ditunjukkan di bawah ini.

 # Untuk setup eBPF dan XDP termasuk bypass, filter dan load balancing, silakan # lihat doc/userguide/capture-hardware/ebpf-xdp.rst untuk info lebih lanjut. - antarmuka:enp0s1 cluster-id:98... - antarmuka:default #threads:auto #use-mmap:no #tpacket-v3:yes

Kami telah menambahkan antarmuka baru enp0s1 dan nilai unik untuk cluster-id variabel dalam contoh kita. Anda harus menyertakan id cluster unik dengan setiap antarmuka yang Anda tambahkan.

Muat Ulang Aturan Langsung

Anda perlu memulai ulang Suricata setiap kali Anda menambahkan, menghapus, dan mengedit aturannya. Dengan mengaktifkan Aturan Langsung, Suricata dapat memproses perubahan aturan apa pun tanpa memulai ulang.

Untuk mengaktifkan reload langsung, tambahkan baris berikut di bagian bawah file konfigurasi.

. . .detect-engine:- rule-reload:true

Dengan reload langsung diaktifkan, Anda dapat menggunakan perintah berikut untuk memuat ulang aturan tanpa memulai ulang proses Suricata.

$ sudo kill -usr2 $(pidof suricata)

$(pidof suricata) flag menempatkan ID proses dari proses Suricata. -usr2 bagian dari kill perintah mengirim SIGUSR2 sinyal ke proses Suricata. SIGUSR2 sinyal dikonfigurasi dengan Suricata untuk memuat ulang aturan.

Setelah selesai, simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta.

Konfigurasikan izin Direktori

Suricata secara otomatis membuat pengguna dan grup sistem bernama suricata selama proses instalasi. Anda perlu memberikan izin direktori yang tepat agar penginstalan berfungsi dengan baik.

Jalankan perintah berikut untuk mengatur suricata sebagai grup untuk direktori Suricata.

$ sudo chgrp -R suricata /etc/suricata$ sudo chgrp -R suricata /var/lib/suricata/rules$ sudo chgrp -R suricata /var/lib/suricata/update$ sudo chgrp -R suricata /var/ log/suricata 

Setel izin grup untuk membaca dan menulis.

$ sudo chmod -R g+r /etc/suricata/$ sudo chmod -R g+rw /var/lib/suricata/rules$ sudo chmod -R g+rw /var/lib/suricata/update$ sudo chmod -R g+rw /var/log/suricata

Tambahkan nama pengguna Anda saat ini ke suricata group sehingga Anda dapat melakukan operasi secara langsung tanpa perlu sudo.

$ sudo usermod -a -G suricata $USER

Untuk menerapkan keanggotaan grup baru, keluar dari server dan masuk kembali, atau ketik berikut ini:

$ su - ${USER}

Anda akan diminta memasukkan sandi pengguna untuk melanjutkan.

Konfirmasikan bahwa pengguna Anda sekarang telah ditambahkan ke suricata kelompokkan dengan mengetik:

$ id -nGusername sudo suricata

Langkah 3 - Konfigurasi Aturan Suricata

Suricata, secara default, hanya menggunakan seperangkat aturan terbatas untuk mendeteksi lalu lintas jaringan. Anda dapat menambahkan lebih banyak aturan dari penyedia eksternal menggunakan alat yang disebut suricata-update . Jalankan perintah berikut untuk memasukkan aturan tambahan.

$ suricata-update16/2/2022 -- 07:00:16 -  -- Menggunakan direktori data /var/lib/suricata.16/2/2022 -- 07:00:16 -  -- Menggunakan konfigurasi Suricata /etc/suricata/suricata.yaml16/2/2022 -- 07:00:16 -  -- Menggunakan /usr/share/suricata/rules untuk aturan yang disediakan Suricata...... 16/2/2022 -- 07:00:16 -  -- Tidak ada sumber yang dikonfigurasi, akan menggunakan Emerging Threats Open('https://rules.emergingthreats.net/open/suricata-6.0.4/emerging.rules .tar.gz', None, True)16/2/2022 -- 07:00:16 -  -- Memeriksa https://rules.emergingthreats.net/open/suricata-6.0.4/emerging.rules .tar.gz.md5.16/2/2022 -- 07:00:16 -  -- Mengambil https://rules.emergingthreats.net/open/suricata-6.0.4/emerging.rules.tar. gz. 100% - 3162050/3162050.....16/2/2022 -- 07:00:23 -  -- Menulis aturan ke /var/lib/suricata/rules/suricata.rules:total:32004; diaktifkan:24611; ditambahkan:8; dihapus 1; diubah:121816/2/2022 -- 07:00:23 -  -- Menulis /var/lib/suricata/rules/classification.config16/2/2022 -- 07:00:23 -  -- Pengujian dengan suricata -T.16/2/2022 -- 07:01:16 -  -- Selesai.

Tambahkan Penyedia Aturan

Anda dapat memperluas aturan Suricata dengan menambahkan lebih banyak penyedia. Itu dapat mengambil aturan dari berbagai penyedia gratis dan komersial.

Anda dapat membuat daftar daftar penyedia default dengan menggunakan perintah berikut.

$ suricata-update list-sources

Misalnya, jika Anda ingin menyertakan tgreen/hunting ruleset, Anda dapat mengaktifkannya dengan perintah berikut.

$ suricata-update enable-source tgreen/hunting

Jalankan suricata-update perintah lagi untuk mengunduh dan memperbarui aturan baru.

Langkah 4 - Validasi Konfigurasi Suricata

Suricata dikirimkan dengan alat validasi untuk memeriksa file konfigurasi dan aturan untuk kesalahan. Jalankan perintah berikut untuk menjalankan alat validasi.

$ sudo suricata -T -c /etc/suricata/suricata.yaml -v22/2/2022 -- 23:20:10 -  - Menjalankan suricata dalam mode uji22/2/2022 -- 23:20 :10 -  - Ini adalah Suricata versi 6.0.4 RELEASE yang berjalan dalam mode SYSTEM22/2/2022 -- 23:20:10 -  - CPU/core online:222/2/2022 -- 23:20 :10 -  - menghilangkan batasan untuk utas utama22/2/2022 -- 23:20:10 -  - perangkat keluaran cepat (biasa) diinisialisasi:fast.log22/2/2022 -- 23:20:10 -  - perangkat keluaran eve-log (biasa) diinisialisasi:eve.json22/2/2022 -- 23:20:10 -  - perangkat keluaran statistik (biasa) diinisialisasi:stats.log22/2/2022 -- 23:20:21 -  - 1 file aturan diproses. 24611 aturan berhasil dimuat, 0 aturan gagal22/2/2022 -- 23:20:21 -  - Konfigurasi ambang diurai:0 aturan ditemukan22/2/2022 -- 23:20:21 -  - 24614 tanda tangan diproses. 1216 adalah aturan khusus IP, 4120 sedang memeriksa muatan paket, 19074 memeriksa lapisan aplikasi, 108 adalah peristiwa dekoder saja22/2/2022 -- 23:21:02 -  - Konfigurasi yang diberikan berhasil dimuat. Exiting.22/2/2022 -- 23:21:03 -  - membersihkan struktur pengelompokan tanda tangan... selesai

-T flag memerintahkan Suricata untuk berjalan dalam mode pengujian, -c flag mengonfigurasi lokasi file konfigurasi, dan -v flag mencetak keluaran verbose dari perintah. Bergantung pada konfigurasi sistem Anda dan jumlah aturan yang ditambahkan, perintah dapat memakan waktu beberapa menit untuk diselesaikan.

Langkah 5 - Menjalankan Suricata

Setelah Suricata dikonfigurasi dan disiapkan, sekarang saatnya menjalankan aplikasi.

$ sudo systemctl start suricata

Periksa status proses.

$ sudo systemctl status suricata

Anda akan melihat output berikut jika semuanya bekerja dengan benar.

? suricata.service - Layanan Deteksi Intrusi Suricata Dimuat:dimuat (/usr/lib/systemd/system/suricata.service; diaktifkan; preset vendor:dinonaktifkan) Aktif:aktif (berjalan) sejak Rabu 2022-02-16 07:14:22 UTC; 32 menit yang lalu Dokumen:man:suricata(1) Proses:1494 ExecStartPre=/bin/rm -f /var/run/suricata.pid (code=exited, status=0/SUCCESS) PID Utama:1496 (Suricata-Main) Tugas :8 (batas:23479) Memori:367,5 juta CGKelompok:/system.slice/suricata.service ??1496 /sbin/suricata -c /etc/suricata/suricata.yaml --pidfile /var/run/suricata.pid - i eth0 --user suricataFeb 16 07:14:22 suricata systemd[1]:Memulai Layanan Deteksi Intrusi Suricata...16 Feb 07:14:22 suricata systemd[1]:Memulai Layanan Deteksi Intrusi Suricata.

Proses ini dapat memakan waktu beberapa menit untuk menyelesaikan penguraian semua aturan. Oleh karena itu, pemeriksaan status di atas bukan merupakan indikasi lengkap apakah Suricata sudah aktif dan siap. Anda dapat memantau file log untuk itu menggunakan perintah berikut.

$ sudo tail -f /var/log/suricata/suricata.log

Jika Anda melihat baris berikut di file log, itu berarti Suricata sedang berjalan dan siap untuk memantau lalu lintas jaringan.

16/02/2022 -- 07:18:39 -  - Semua rangkaian tangkapan AFP sedang berjalan.

Langkah 6 - Menguji Aturan Suricata

Kami akan memeriksa apakah Suricata mendeteksi lalu lintas yang mencurigakan. Panduan Suricata merekomendasikan pengujian nomor aturan ET Open 2100498 menggunakan perintah berikut.

$ curl http://testmynids.org/uid/index.html

Anda akan mendapatkan tanggapan berikut.

uid=0(root) gid=0(root) groups=0(root)

Perintah di atas berpura-pura mengembalikan output dari id perintah yang dapat dijalankan pada sistem yang disusupi. Untuk menguji apakah Suricata mendeteksi lalu lintas, Anda perlu memeriksa file log menggunakan nomor aturan yang ditentukan.

$ grep 2100498 /var/log/suricata/fast.log

Jika permintaan Anda menggunakan IPv6, Anda akan melihat output berikut.

22/02/2022-23:24:33.997371 [**] [1:2100498:7] GPL ATTACK_RESPONSE id check mengembalikan root [**] [Klasifikasi:Traffic Berpotensi Buruk] [Prioritas:2] {TCP} 2600:9000:2204:5c00:0018:30b3:e400:93a1:80 -> 2a03:b0c0:0002:00d0:0000:0000:0fc2:b001:41468

Jika permintaan Anda menggunakan IPv4, Anda akan melihat output berikut.

22/02/2022-23:21:46.783476 [**] [1:2100498:7] GPL ATTACK_RESPONSE id check mengembalikan root [**] [Klasifikasi:Traffic Berpotensi Buruk] [Prioritas:2] {TCP} 204.246.178.81:80 -> 164.90.192.1:36364

Suricata juga mencatat peristiwa ke /var/log/suricata/eve.log file menggunakan format JSON. Untuk membaca dan menafsirkan aturan tersebut, Anda perlu menginstal jq yang berada di luar cakupan tutorial ini.

Kami selesai dengan bagian pertama dari tutorial, di mana kami menginstal Suricata dan mengujinya. Bagian selanjutnya melibatkan pemasangan tumpukan ELK dan pengaturannya untuk memvisualisasikan Suricata dan lognya. Bagian kedua dari tutorial ini seharusnya dilakukan di server kedua kecuali ditentukan lain.

Langkah 7 - Instal Elasticsearch dan Kibana

Langkah pertama dalam menginstal Elasticsearch melibatkan penambahan kunci Elastic GPG ke server Anda.

$ sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

Buat repositori untuk paket Elasticsearch dengan membuat dan membuka file /etc/yum/yum.repos.d/elasticsearch.repo untuk diedit.

$ sudo nano /etc/yum.repos.d/elasticsearch.repo

Tempelkan kode berikut di dalamnya.

[elasticsearch]name=Elasticsearch repositori untuk 7.x packagesbaseurl=https://artifacts.elastic.co/packages/7.x/yumgpgcheck=1gpgkey=https://artifacts.elastic.co/GPG-KEY- elasticsearchenabled=0autorefresh=1type=rpm-md

Simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta.

Instal Elasticsearch dan Kibana.

$ sudo dnf install --enablerepo=elasticsearch elasticsearch kibana

Anda perlu menggunakan tanda --enablerepo=elasticsearch setiap kali sejak itu, kami telah menonaktifkan repositori secara default. Ini mencegah peningkatan yang tidak disengaja dari paket-paket ini.

Temukan alamat IP pribadi server Anda menggunakan perintah berikut.

$ ip - alamat singkat showlo UNKNOWN 127.0.0.1/8 ::1/128eth0 UP 164.90.205.77/20 10.18.0.7/16 2a03:b0c0:2:d0::fef:b001/64 fe80::340a:6eff:fe5c:76ed/64eth1 UP 10.133.0.3/16 fe80::906f:b5ff:fec4:c7b8/64

Catat IP pribadi server Anda (10.133.0.3 dalam kasus ini). Kami akan menyebutnya sebagai your_private_IP . Alamat IP publik server (164.90.205.77) akan disebut sebagai your_public_IP dalam tutorial yang tersisa. Perhatikan juga nama jaringan server Anda, eth1 .

Langkah 8 - Konfigurasi Elasticsearch

Elasticsearch menyimpan konfigurasinya di /etc/elasticsearch/elasticsearch.yml mengajukan. Buka file untuk diedit.

$ sudo nano /etc/elasticsearch/elasticsearch.yml

Elasticsearch hanya menerima koneksi lokal secara default. Kita perlu mengubahnya agar Kibana dapat mengaksesnya melalui alamat IP pribadi.

Temukan baris #network.host: 192.168.0.1 dan tambahkan baris berikut tepat di bawahnya, seperti yang ditunjukkan di bawah ini.

# Secara default Elasticsearch hanya dapat diakses di localhost. Tetapkan alamat# yang berbeda di sini untuk mengekspos node ini di jaringan:##network.host:192.168.0.1network.bind_host:["127.0.0.1", "your_private_IP"]## Secara default Elasticsearch mendengarkan lalu lintas HTTP pada awalnya port gratis yang# ditemukan mulai dari 9200. Setel port HTTP tertentu di sini:

Ini akan memastikan bahwa Elastic masih dapat menerima koneksi lokal saat tersedia untuk Kibana melalui alamat IP pribadi.

Langkah selanjutnya adalah mengaktifkan beberapa fitur keamanan dan memastikan bahwa Elastic dikonfigurasi untuk berjalan pada satu node. Untuk melakukannya, tambahkan baris berikut di akhir file.

. . .discovery.type:single-nodexpack.security.enabled:true

Jika Anda akan menggunakan beberapa simpul pencarian Elastis, Anda dapat mengabaikan baris pertama.

Setelah selesai, simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta.

Konfigurasi Firewall

Tambahkan aturan firewall yang tepat untuk Elasticsearch sehingga dapat diakses melalui jaringan pribadi.

$ sudo firewall-cmd --permanent --zone=internal --change-interface=eth1$ sudo firewall-cmd --permanent --zone=internal --add-service=elasticsearch$ sudo firewall-cmd -- permanen --zone=internal --add-service=kibana$ sudo firewall-cmd --reload

Pastikan Anda memilih nama antarmuka pada perintah pertama seperti yang Anda dapatkan dari langkah 7. Perintah di atas mengubah zona default Firewall ke internal dan membuka port 9200, 9300 untuk Elasticsearch dan port 5601 untuk Kibana.

Mulai Elasticsearch

Sekarang Anda telah mengonfigurasi Elasticsearch, sekarang saatnya untuk memulai layanan.

$ sudo systemctl start elasticsearch

Buat Kata Sandi Elasticsearch

Setelah mengaktifkan pengaturan keamanan Elasticsearch, langkah selanjutnya adalah membuat beberapa kata sandi untuk pengguna default. Elasticsearch dikirimkan dengan utilitas pembuatan kata sandi di /usr/share/elasticsearch/bin/elasticsearch-setup-passwords yang dapat menghasilkan kata sandi acak.

Buat kata sandi.

$ cd /usr/share/elasticsearch/bin$ sudo ./elasticsearch-setup-passwords auto

Anda akan mendapatkan output seperti berikut. Tekan y untuk melanjutkan saat diminta.

Memulai penyiapan kata sandi untuk pengguna yang dicadangkan elastic,apm_system,kibana,kibana_system,logstash_system,beats_system,remote_monitoring_user.Kata sandi akan dibuat secara acak dan dicetak ke konsol.Harap konfirmasi bahwa Anda ingin melanjutkan [y/T] yChanged password untuk pengguna apm_systemPASSWORD apm_system =EtwMg8maU67o5tvD5rseChanged password untuk pengguna kibana_systemPASSWORD kibana_system =dTanR7Q2HtgDtATRvuJvChanged password untuk pengguna kibanaPASSWORD Kibana =dTanR7Q2HtgDtATRvuJvChanged password untuk pengguna logstash_systemPASSWORD logstash_system =XGSjxNktuNMWVfGYiboxChanged password untuk pengguna beats_systemPASSWORD beats_system =JXTr7CeHkMue608qVTQaChanged password untuk pengguna remote_monitoring_userPASSWORD remote_monitoring_user =Q6JTJNl3lPy0fhy6QuMPChanged password untuk pengguna elasticPASSWORD elastis =bd1YJfhSa8RC8SMvTIwg 

Anda hanya dapat menjalankan utilitas satu kali, jadi simpan semua sandi di lokasi yang aman.

Langkah 9 - Konfigurasi Kibana

Langkah pertama dalam mengkonfigurasi Kibana adalah mengaktifkan xpack fungsi keamanan dengan menghasilkan kunci rahasia. Kibana menggunakan kunci rahasia ini untuk menyimpan data di Elasticsearch. Utilitas untuk menghasilkan kunci rahasia dapat diakses dari /usr/share/kibana/bin direktori.

$ cd /usr/share/kibana/bin/$ sudo ./kibana-encryption-keys generate -q --force

-q flag menekan instruksi perintah, dan --force flag memastikan rahasia baru dihasilkan. Anda akan menerima output seperti berikut.

xpack.encryptedSavedObjects.encryptionKunci:0f4e5e1cf8fad1874ffed0faac6be0daxpack.reporting.encryptionKunci:d435c78a4e37521e539c0e905420c9f5xpack.security.encryptionKey:7ba0bbebc 

Salin outputnya. Buka file konfigurasi Kibana di /etc/kibana/kibana.yml untuk diedit.

$ sudo nano /etc/kibana/kibana.yml

Tempelkan kode dari perintah sebelumnya di akhir file.

. . .# Menentukan lokal yang akan digunakan untuk semua string, tanggal, dan format angka yang dapat dilokalkan.# Bahasa yang didukung adalah sebagai berikut:Inggris - en , secara default, Cina - zh-CN .#i18n.locale:"en"xpack.encryptedSavedObjects.encryptionKey :0f4e5e1cf8fad1874ffed0faac6be0daxpack.reporting.encryptionKey:d435c78a4e37521e539c0e905420c9f5xpack.security.encryptionKey:7ba0e2a02747bb90fb0f9a3c>267b99edKonfigurasikan Port Kibana 

Kibana perlu dikonfigurasi agar dapat diakses di alamat IP pribadi server. Temukan baris #server.host: "localhost" dalam file dan tambahkan baris berikut tepat di bawahnya seperti yang ditunjukkan.

# Kibana dilayani oleh server back end. Pengaturan ini menentukan port yang akan digunakan.#server.port:5601# Menentukan alamat yang akan diikat oleh server Kibana. Alamat IP dan nama host keduanya adalah nilai yang valid.# Standarnya adalah 'localhost', yang biasanya berarti mesin jarak jauh tidak akan dapat terhubung.# Untuk mengizinkan koneksi dari pengguna jarak jauh, setel parameter ini ke alamat non-loopback.#server .host:"localhost"server.host:"your_private_IP"

Setelah selesai, simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta.

Konfigurasikan Akses Kibana

Langkah selanjutnya adalah membuat username dan password yang dapat digunakan Kibana untuk otentikasi. Anda dapat melakukannya dengan mengedit file konfigurasi Kibana secara langsung, tetapi ini dapat menyebabkan masalah keamanan. Metode aman melibatkan penggunaan kibana-keystore aplikasi.

Jalankan perintah berikut untuk menetapkan nama pengguna. Masukkan kibana_system sebagai nama pengguna.

$ cd /usr/share/kibana/bin$ sudo ./kibana-keystore add elasticsearch.usernameMasukkan nilai untuk elasticsearch.username:*************

Jalankan kembali perintah untuk mengatur kata sandi. Pastikan Anda menggunakan kata sandi yang Anda buat untuk Kibana di langkah 8. Untuk tutorial kami, kata sandinya adalah dTanR7Q2HtgDtATRvuJv .

$ sudo ./kibana-keystore add elasticsearch.passwordMasukkan nilai untuk elasticsearch.password:********************

Memulai Kibana

Sekarang setelah Anda mengonfigurasi akses dan jaringan aman untuk Kibana, mulailah prosesnya.

$ sudo systemctl start kibana

Periksa statusnya untuk melihat apakah itu berjalan.

$ sudo systemctl status kibana

Langkah 10 - Instal dan Konfigurasi Filebeat

Penting untuk dicatat bahwa kita akan menginstal Filebeat di server Suricata. Jadi beralih kembali ke sana dan tambahkan kunci GPG Elastis untuk memulai.

$ sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

Buat dan buka repositori elastis.

$ sudo nano /etc/yum.repos.d/elasticsearch.repo

Tempelkan kode berikut.

[elasticsearch]name=Elasticsearch repositori untuk 7.x packagesbaseurl=https://artifacts.elastic.co/packages/7.x/yumgpgcheck=1gpgkey=https://artifacts.elastic.co/GPG-KEY- elasticsearchenabled=0autorefresh=1type=rpm-md

Simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta.

Instal Filebeat.

$ sudo dnf install --enablerepo=elasticsearch filebeat

Filebeat menyimpan konfigurasinya di /etc/filebeat/filebeat.yml mengajukan. Buka untuk diedit.

$ sudo nano /etc/filebeat/filebeat.yml

Hal pertama yang perlu Anda lakukan adalah menghubungkannya ke dasbor Kibana. Temukan baris #host: "localhost:5601" di Kibana bagian dan tambahkan baris berikut tepat di bawahnya seperti yang ditunjukkan.

. . .# Dimulai dengan Beats versi 6.0.0, dasbor dimuat melalui Kibana API.# Ini memerlukan konfigurasi titik akhir Kibana.setup.kibana:# Kibana Host # Skema dan port dapat ditinggalkan dan akan disetel ke default ( http dan 5601) # Jika Anda menentukan dan jalur tambahan, skema diperlukan:http://localhost:5601/path # Alamat IPv6 harus selalu didefinisikan sebagai:https://[2001:db8::1]:5601 #host:"localhost:5601" host:"IP_pribadi_Anda:5601". . .

Selanjutnya, temukan Elasticsearch Output bagian file dan edit nilai hosts , username , dan password seperti yang ditunjukkan di bawah ini. Untuk nama pengguna, pilih elastic sebagai nilainya, dan untuk kata sandi, gunakan nilai yang dihasilkan pada langkah 8 tutorial ini.

output.elasticsearch:# Array host yang akan dihubungkan. host:["your_private_IP:9200"] # Protocol - baik `http` (default) atau `https`. #protocol:"https" # Kredensial otentikasi - baik kunci API atau nama pengguna/kata sandi. #api_key:"id:api_key" nama pengguna:"elastis" kata sandi:"bd1YJfhSa8RC8SMvTIwg". . .

Setelah selesai, simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta.

Selanjutnya, aktifkan modul Suricata bawaan Filebeat.

$ modul sudo filebeat mengaktifkan suricata

Langkah terakhir dalam mengonfigurasi Filebeat adalah memuat dasbor dan saluran SIEM ke Elasticsearch menggunakan filebeat setup perintah.

$ pengaturan filebeat sudo

Mungkin perlu beberapa menit hingga perintah selesai. Setelah selesai, Anda akan menerima output berikut.

Menimpa kebijakan ILM dinonaktifkan. Setel `setup.ilm.overwrite:true` untuk mengaktifkan.Penyiapan indeks selesai.Memuat dasbor (Kibana harus berjalan dan dapat dijangkau)Dasbor yang dimuatMenyiapkan ML menggunakan setup --machine-learning akan dihapus di 8.0.0. Silakan gunakan aplikasi ML sebagai gantinya. Lihat selengkapnya:https://www.elastic.co/guide/en/machine-learning/current/index.htmlTidak mungkin memuat tugas ML ke Elasticsearch 8.0.0 atau yang lebih baru menggunakan Beat.Loaded konfigurasi tugas machine learning Loaded Ingest pipeline

Mulai layanan Filebeat.

$ sudo systemctl start filebeat

Periksa status layanan.

$ sudo systemctl status filebeat

Langkah 11 - Mengakses Dasbor Kibana

Karena KIbana dikonfigurasi untuk hanya mengakses Elasticsearch melalui alamat IP pribadinya, Anda memiliki dua opsi untuk mengaksesnya. Metode pertama adalah menggunakan SSH Tunnel ke server Elasticsearch dari PC Anda. Ini akan meneruskan port 5601 dari PC Anda ke alamat IP pribadi server, dan Anda akan dapat mengakses Kibana dari PC Anda di http://localhost:5601 . Tetapi metode ini berarti Anda tidak akan dapat mengaksesnya dari tempat lain.

Opsinya adalah menginstal Nginx di server Suricata Anda dan menggunakannya sebagai proxy terbalik untuk mengakses server Elasticsearch melalui alamat IP pribadinya. Kami akan membahas kedua cara tersebut. Anda dapat memilih salah satu cara berdasarkan kebutuhan Anda.

Menggunakan Terowongan Lokal SSH

Jika Anda menggunakan Windows 10 atau Windows 11, Anda dapat menjalankan SSH LocalTunnel dari Windows Powershell Anda. Di Linux atau macOS, Anda dapat menggunakan terminal. Anda mungkin perlu mengonfigurasi akses SSH jika Anda belum melakukannya.

Jalankan perintah berikut di terminal komputer Anda untuk membuat SSH Tunnel.

$ ssh -L 5601:IP_pribadi_Anda:5601 [dilindungi email]_IP_publik -N
  • -L flag mengacu pada SSH Tunnel lokal, yang meneruskan lalu lintas dari port PC Anda ke server.
  • private_IP:5601 adalah alamat IP tempat lalu lintas Anda diteruskan ke server. Dalam hal ini, ganti dengan alamat IP pribadi server Elasticsearch Anda.
  • your_public_IP adalah alamat IP publik dari server Elasticsearch, yang digunakan untuk membuka koneksi SSH.
  • -N flag memberi tahu OpenSSH untuk tidak menjalankan perintah apa pun tetapi menjaga koneksi tetap hidup selama tunnel berjalan.

Sekarang terowongan terbuka, Anda dapat mengakses Kibana dengan membuka URL http://localhost:5601 pada browser PC Anda. Anda akan mendapatkan layar berikut.

Anda harus tetap menjalankan perintah selama Anda perlu mengakses Kibana. Tekan Ctrl + C di terminal Anda untuk menutup terowongan.

Menggunakan Nginx Reverse-proxy

Metode ini paling cocok jika Anda ingin mengakses dasbor dari mana saja di dunia.

Konfigurasi Firewall

Sebelum melangkah lebih jauh, Anda perlu membuka port HTTP dan HTTPS di firewall.

$ sudo firewall-cmd --permanent --add-service=http$ sudo firewall-cmd --permanent --add-service=https

Muat ulang firewall untuk mengaktifkan perubahan.

$ sudo firewall-cmd --reload

Instal dan konfigurasikan SSL

Langkah pertama adalah menginstal Sertifikat SSL Let's Encrypt. Karena kita sudah menyiapkan repositori EPEL, Instal alat Certbot.

$ sudo dnf install certbot

Buat sertifikat SSL untuk domain kibana.example.com .

$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d kibana.example.com

Perintah di atas akan mengunduh sertifikat ke /etc/letsencrypt/live/kibana.example.com direktori di server Anda.

Buat grup Diffie-Hellman sertifikat.

$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Buat direktori root web tantangan untuk pembaruan otomatis Let's Encrypt.

$ sudo mkdir -p /var/lib/letsencrypt

Buat Pekerjaan Cron untuk memperbarui SSL. Ini akan berjalan setiap hari untuk memeriksa sertifikat dan memperbarui jika diperlukan. Untuk itu, buat dulu file /etc/cron.daily/certbot-renew dan buka untuk diedit.

$ sudo nano /etc/cron.daily/certbot-renew

Tempelkan kode berikut.

#!/bin/shcertbot perbarui --cert-name kibana.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"

Simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta.

Ubah izin pada file tugas agar dapat dieksekusi.

$ sudo chmod +x /etc/cron.daily/certbot-renew

Install and Configure Nginx

Rocket Linux 8.5 ships with the latest stable version of Nginx as a module. Install it using the following command.

$ sudo dnf module install nginx:1.20

You can check the version you want to install using the following command.

$ dnf module list nginxRocky Linux 8 - AppStreamName Stream Profiles Summarynginx 1.14 [d] common [d] nginx webservernginx 1.16 common [d] nginx webservernginx 1.18 common [d] nginx webservernginx 1.20 [e] common [d] [i] nginx webserverExtra Packages for Enterprise Linux Modular 8 - x86_64Name Stream Profiles Summarynginx mainline common nginx webservernginx 1.20 [e] common [d] [i] nginx webserver

Confirm the Nginx installation.

$ nginx -vnginx version 1.20.1

Aktifkan layanan Nginx.

$ sudo systemctl aktifkan nginx

Create and open the Nginx configuration file for Kibana.

$ sudo nano /etc/nginx/conf.d/kibana.conf

Paste the following code in it. Replace the IP address with the private IP address of your Elasticsearch server.

server { dengarkan 80; dengarkan [::]:80; server_name kibana.example.com; return 301 https://$host$request_uri;}server { server_name kibana.example.com; rangkaian karakter utf-8; dengarkan 443 ssl http2; dengarkan [::]:443 ssl http2; access_log /var/log/nginx/kibana.access.log; error_log /var/log/nginx/kibana.error.log; ssl_certificate /etc/letsencrypt/live/kibana.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/kibana.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/kibana.example.com/chain.pem; ssl_session_timeout 1 hari; ssl_session_cache dibagikan:MozSSL:10m; ssl_session_tickets mati; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDALY -RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; penyelesai 8.8.8.8; ssl_stapel aktif; ssl_stapling_verifikasi aktif; ssl_dhparam /etc/ssl/certs/dhparam.pem; location / { proxy_pass http://your_private_IP:5601; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Diteruskan-Untuk $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $skema; }}

Simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta.

Buka file /etc/nginx/nginx.conf untuk diedit.

$ sudo nano /etc/nginx/nginx.conf

Tambahkan baris berikut sebelum baris include /etc/nginx/conf.d/*.conf; .

server_names_hash_bucket_size 64;

Simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta.

Verify the configuration.

$ sudo nginx -tnginx:file konfigurasi /etc/nginx/nginx.conf sintaksnya oknginx:file konfigurasi /etc/nginx/nginx.conf tes berhasil

Start the Nginx service.

$ sudo systemctl start nginx

Your Kibana dashboard should be accessible via the URL https://kibana.example.com from anywhere you want.

Step 12 - Managing Kibana Dashboards

Before proceeding further with managing the dashboards, you need to add the base URL field in Kibana's configuration.

Open Kibana's configuration file.

$ sudo nano /etc/kibana/kibana.yml

Find the commented line #server.publicBaseUrl: "" and change it as follows by removing the hash in front of it.

server.publicBaseUrl:"https://kibana.example.com"

Simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta.

Restart the Kibana service.

$ sudo systemctl restart kibana

Wait for a few minutes and load the URL https://kibana.example.com di peramban Anda. Log in with the username elastic and the password you generated before (bd1YJfhSa8RC8SMvTIwg ) and you will get the following screen.

Type type:data suricata in the search box at the top to locate Suricata's information.

Click the first result ([Filebeat Suricata] Alert Overview ), and you will get a screen similar to the following. By default, it shows the entries for only the last 15 minutes, but we are displaying it over a larger timespan to show more data for the tutorial.

Click on the Events button to view all the logged events.

On scrolling down on events and alert pages, you can identify each event and alert by the type of protocol, the source and destination ports, and the IP address of the source. You can also view the countries from where the traffic originated.

You can use Kibana and Filebeat to access and generate other types of dashboards. One of the useful in-built dashboards that you can right away is the Security dashboard. Click on the Network dashboard from the left hamburger menu, and you will get the following screen.

You can add more dashboards like Nginx by enabling and configuring in-built Filebeat modules.

Kesimpulan

This concludes the tutorial for installing and configuring Suricata IDS with Elastic Stack on a Rocky Linux 8 based server. You also configured Nginx as a reverse proxy to access Kibana dashboards externally. Jika Anda memiliki pertanyaan, kirimkan di komentar di bawah.


Rocky Linux
  1. Instal dan Konfigurasi Elasticsearch di Rocky Linux 8

  2. Cara menginstal dan mengkonfigurasi buruh pelabuhan Di Rocky Linux/Centos 8

  3. Cara Menginstal dan Mengonfigurasi Ansible di Rocky Linux/CentOS 8

  1. Cara Install dan Konfigurasi HAProxy load balancer di Rocky Linux/Alma Linux 8

  2. Cara Install dan Konfigurasi Memcached di Rocky Linux/Alma Linux 8

  3. Cara menginstal dan mengkonfigurasi Squid Proxy di Rocky Linux/Alma Linux 8

  1. Cara Menginstal dan Mengkonfigurasi Elasticsearch di Rocky Linux 8

  2. Cara Menginstal dan Mengkonfigurasi Mono di Rocky Linux 8 dan CentOS 8

  3. Cara Menginstal dan Mengonfigurasi TensorFlow di Rocky Linux 8