Suricata je nástroj pro monitorování sítě, který zkoumá a zpracovává každý paket internetového provozu, který prochází vaším serverem. Může generovat události protokolu, spouštět upozornění a snižovat provoz při detekci jakékoli podezřelé aktivity.
Suricatu můžete buď nainstalovat na jeden počítač, abyste mohli sledovat jeho provoz, nebo jej nasadit na hostitele brány a skenovat veškerý příchozí a odchozí provoz z jiných serverů, které jsou k němu připojeny. Suricatu můžete zkombinovat s Elasticsearch, Kibana a Filebeat a vytvořit nástroj pro správu bezpečnostních informací a událostí (SIEM).
V tomto tutoriálu nainstalujete Suricata IDS spolu s ElasticStack na server Rocky Linux 8. Různé součásti zásobníku jsou:
- Elasticsearch k ukládání, indexování, korelaci a vyhledávání bezpečnostních událostí ze serveru.
- Kibana k zobrazení protokolů uložených v Elasticsearch.
- Filebeat k analýze souboru
eve.json
Suricaty log souboru a odeslat každou událost do Elasticsearch ke zpracování. - Suricata prohledat síťový provoz na podezřelé události a zahodit neplatné pakety.
Tutoriál je rozdělen do dvou částí, první část se bude zabývat instalací a konfigurací Suricata a druhá část se bude zabývat instalací a konfigurací Elastic Stack.
Pro náš tutoriál nainstalujeme Suricata a Elastic stack na různé servery.
Předpoklady
-
Servery hostující Elastic Stack a Suricata by měly mít minimálně 4 GB RAM a 2 CPU jádra.
-
Servery by měly být schopny mezi sebou komunikovat pomocí soukromých IP adres.
-
Na serverech by měl být spuštěn Rocky Linux 8 s uživatelem sudo, který není root.
-
Pokud chcete mít přístup k řídicím panelům Kibana odkudkoli, nastavte si doménu (
kibana.example.com
) ukazující na server, kam bude Suricata nainstalována. -
Nainstalujte základní balíčky na oba servery.
$ sudo dnf nainstalovat yum-utils nano curl
Konfigurovat bránu firewall
ČÁST 1
Krok 1 – Instalace Suricata
Chcete-li nainstalovat Suricata, musíte na svůj server přidat úložiště balíčků Open Information Security Foundation (OISF).
$ sudo dnf install 'dnf-command(copr)'$ sudo dnf copr enable @oisf/suricata-6.0
První příkaz aktivuje projekty komunity (copr
) pro dnf
instalační program balíčku. Druhý příkaz povolí a přidá úložiště OISF do vašeho systému. suricata-6.0
umožňuje úložiště pro nejnovější stabilní verzi softwaru. Stiskněte y
a ENTER
pokaždé, když budete vyzváni.
Dále přidejte úložiště EPEL.
$ sudo dnf nainstalovat epel-release
Nainstalujte Suricata.
$ sudo dnf nainstalovat suricata
Povolte službu Suricata.
$ sudo systemctl povolit suricata
Krok 2 – Konfigurace Suricata
Suricata ukládá svou konfiguraci do /etc/suricata/suricata.yaml
soubor. Výchozí režim pro Suricata je režim IDS (Intrusion Detection System), kde se provoz pouze zaznamenává a nezastavuje. Pokud jste v Suricatě noví, měli byste režim ponechat beze změny. Jakmile jej nakonfigurujete a dozvíte se více, můžete zapnout režim IPS (Intrusion Prevention System).
Povolit ID komunity
Pole Community ID usnadňuje korelaci dat mezi záznamy generovanými různými monitorovacími nástroji. Vzhledem k tomu, že budeme používat Suricata s Elasticsearch, povolení Community ID může být užitečné.
Otevřete soubor /etc/suricata/suricata.yaml
pro úpravy.
$ sudo nano /etc/suricata/suricata.yaml
Najděte řádek # Community Flow ID
a nastavte hodnotu proměnné community-id
true
.
. . . # Community Flow ID # Přidá pole 'community_id' do záznamů EVE. Ty mají poskytnout # záznamům předvídatelné ID toku, které lze použít k přiřazení záznamů k # výstupu jiných nástrojů, jako je Zeek (Bro). # # Bere 'semínko', které musí být stejné napříč senzory a nástroji #, aby bylo id méně předvídatelné. # povolit/zakázat funkci id komunity. Community-id:true. . .
Nyní budou vaše události nést ID jako 1:S+3BA2UmrHK0Pk+u3XH78GAFTtQ=
které můžete použít ke spárování datových sad napříč různými monitorovacími nástroji.
Vyberte síťové rozhraní
Výchozí konfigurační soubor Suricata kontroluje provoz na eth0
rozhraní zařízení/sítě. Pokud váš server používá jiné síťové rozhraní, budete ho muset aktualizovat v konfiguraci.
Zkontrolujte název zařízení vašeho síťového rozhraní pomocí následujícího příkazu.
$ ip -p -j route show default
Obdržíte výstup podobný následujícímu.
[ { "dst":"default", "gateway":"164.90.192.1", "dev":"eth0", "protocol":"static", "metric":100, "flags":[ ] } ]
dev
proměnná odkazuje na síťové zařízení. V našem výstupu to ukazuje eth0
jako síťové zařízení. Váš výstup se může lišit v závislosti na vašem systému.
Nyní, když znáte název svého zařízení, otevřete konfigurační soubor.
$ sudo nano /etc/suricata/suricata.yaml
Najděte řádek af-packet:
kolem řádku číslo 580. Pod ním nastavte hodnotu proměnné interface
na název zařízení vašeho systému.
# Linux high speed capture supportaf-packet:- rozhraní:eth0 # Počet přijímaných vláken. "auto" používá počet jader #vlákna:auto # Výchozí clusterid. AF_PACKET načte balancované pakety na základě toku. ID clusteru:99. . .
Pokud chcete přidat další rozhraní, můžete je přidat na konec af-packet
úsek kolem linky 650.
Chcete-li přidat nové rozhraní, vložte jej těsně nad - interface: default
sekce, jak je uvedeno níže.
# Nastavení eBPF a XDP včetně bypassu, filtru a vyvažování zátěže # viz doc/userguide/capture-hardware/ebpf-xdp.rst pro více informací. - rozhraní:enp0s1 cluster-id:98... - rozhraní:výchozí #threads:auto #use-mmap:no #tpacket-v3:yes
Přidali jsme nové rozhraní enp0s1
a jedinečnou hodnotu pro cluster-id
proměnná v našem příkladu. Ke každému přidanému rozhraní musíte zahrnout jedinečné ID clusteru.
Opětovné načtení aktuálního pravidla
Suricatu musíte restartovat pokaždé, když přidáte, odeberete a upravíte její pravidla. Po povolení Live Rule může Suricata zpracovat jakékoli změny pravidel bez restartování.
Chcete-li aktivovat živé opětovné načítání, přidejte následující řádky na konec konfiguračního souboru.
. . .detect-engine:- rule-reload:true
Je-li povoleno živé načítání, můžete použít následující příkaz k opětovnému načtení pravidel bez restartování procesu Suricata.
$ sudo kill -usr2 $(pidof suricata)
$(pidof suricata)
flag vyhledá ID procesu procesu Suricata. -usr2
část kill
příkaz odešle SIGUSR2
signál do procesu Suricata. SIGUSR2
signál je nakonfigurován pomocí Suricata, aby znovu načetl pravidla.
Až budete hotovi, uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.
Konfigurace oprávnění k adresáři
Suricata automaticky vytvořila systémového uživatele a skupinu s názvem suricata
během procesu instalace. Aby instalace fungovala správně, musíte udělit správná oprávnění k adresáři.
Spusťte následující příkaz pro nastavení suricata
jako skupina pro adresáře 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
Nastavte oprávnění skupiny pro čtení a zápis.
$ 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
Přidejte své aktuální uživatelské jméno do suricata group, takže můžete provádět operace přímo, aniž byste potřebovali sudo.
$ sudo usermod -a -G suricata $USER
Chcete-li použít nové členství ve skupině, odhlaste se ze serveru a znovu se přihlaste nebo zadejte následující:
$ su – ${USER}
Budete vyzváni k zadání hesla uživatele, abyste mohli pokračovat.
Potvrďte, že váš uživatel je nyní přidán do suricata seskupit zadáním:
$ id -nGusername sudo suricata
Krok 3 – Konfigurace pravidel Suricata
Suricata ve výchozím nastavení používá k detekci síťového provozu pouze omezenou sadu pravidel. Pomocí nástroje suricata-update
můžete přidat další sady pravidel od externích poskytovatelů . Spuštěním následujícího příkazu zahrňte další pravidla.
$ suricata-update16/2/2022 -- 07:00:16 --- Pomocí datového adresáře /var/lib/suricata.16/2/2022 -- 07:00:16 - -- Použití konfigurace Suricata /etc/suricata/suricata.yaml16/2/2022 -- 07:00:16 - -- Použití /usr/share/suricata/rules pro pravidla poskytovaná Suricatou...... 16/2/2022 -- 07:00:16 - -- Nejsou nakonfigurovány žádné zdroje, budou používat Emerging Threats Open('https://rules.emergingthreats.net/open/suricata-6.0.4/emerging.rules .tar.gz', None, True)16/2/2022 -- 07:00:16 - -- Kontrola https://rules.emergingthreats.net/open/suricata-6.0.4/emerging.rules .tar.gz.md5.16/2/2022 -- 07:00:16 - -- Načítání https://rules.emergingthreats.net/open/suricata-6.0.4/emerging.rules.tar. gz. 100 % - 3162050/3162050.....16/2/2022 -- 07:00:23 - -- Zápis pravidel do /var/lib/suricata/rules/suricata.rules:celkem:32004; povoleno:24611; přidáno:8; odstraněno 1; upraveno:121816/2/2022 -- 07:00:23 - -- Zápis /var/lib/suricata/rules/classification.config16/2/2022 -- 07:00:23 - -- Testování pomocí suricata -T.16/2/2022 -- 07:01:16 - -- Hotovo.
Přidat poskytovatele sady pravidel
Pravidla Suricaty můžete rozšířit přidáním dalších poskytovatelů. Může načítat pravidla od různých bezplatných a komerčních poskytovatelů.
Výchozí seznam poskytovatelů můžete vypsat pomocí následujícího příkazu.
$ suricata-update list-sources
Pokud například chcete zahrnout tgreen/hunting
ruleset, můžete jej povolit pomocí následujícího příkazu.
$ suricata-update enable-source tgreen/hunting
Spusťte suricata-update
znovu stáhněte a aktualizujte nová pravidla.
Krok 4 – Ověření konfigurace Suricata
Suricata se dodává s ověřovacím nástrojem pro kontrolu chyb v konfiguračním souboru a pravidlech. Spuštěním následujícího příkazu spusťte ověřovací nástroj.
$ sudo suricata -T -c /etc/suricata/suricata.yaml -v22/2/2022 -- 23:20:10 -- Spuštění suricata v testovacím režimu22/2/2022 -- 23:20 :10 - - Toto je VYDÁNÍ Suricata verze 6.0.4 běžící v režimu SYSTEM22/2/2022 -- 23:20:10 - - CPU/jádra online:222/2/2022 -- 23:20 :10 - - upuštěno od omezení pro hlavní vlákno22/2/2022 -- 23:20:10 - - inicializováno rychlé výstupní zařízení (běžné):fast.log22/2/2022 -- 23:20:10 - - výstupní zařízení eve-log (běžné) inicializováno:eve.json22/2/2022 -- 23:20:10 - - výstupní zařízení statistik (běžné) inicializováno:stats.log22/2/2022 -- 23:20:21 - - Zpracován 1 soubor pravidel. 24611 pravidel úspěšně načteno, 0 pravidel se nezdařilo22/2/2022 -- 23:20:21 - - Konfigurace prahu analyzována:0 nalezených pravidel22/2/2022 -- 23:20:21 - - Zpracováno 24614 podpisů. 1216 jsou pravidla pouze pro IP, 4120 kontrolují užitečné zatížení paketů, 19074 kontrolují aplikační vrstvu, 108 jsou pouze události dekodéru 22/2/2022 -- 23:21:02 - - Poskytnutá konfigurace byla úspěšně načtena. Exiting.22/2/2022 -- 23:21:03 - - čištění struktury seskupování podpisů... dokončeno
-T
příznak dává pokyn Suricatě ke spuštění v testovacím režimu, -c
příznak konfiguruje umístění konfiguračního souboru a -v
flag vypíše podrobný výstup příkazu. V závislosti na konfiguraci vašeho systému a počtu přidaných pravidel může dokončení příkazu trvat několik minut.
Krok 5 – Spuštění Suricaty
Nyní, když je Suricata nakonfigurována a nastavena, je čas spustit aplikaci.
$ sudo systemctl start suricata
Zkontrolujte stav procesu.
$ sudo systemctl status suricata
Pokud vše funguje správně, měli byste vidět následující výstup.
? suricata.service - Služba detekce narušení Suricata Načteno:načteno (/usr/lib/systemd/system/suricata.service; povoleno; přednastaveno dodavatelem:zakázáno) Aktivní:aktivní (běží) od středy 2022-02-16 07:14:22 UTC; Před 32 minutami Dokumenty:man:suricata(1) Proces:1494 ExecStartPre=/bin/rm -f /var/run/suricata.pid (kód=ukončeno, stav=0/ÚSPĚCH) Hlavní PID:1496 (Suricata-Main) Úkoly :8 (limit:23479) Paměť:367,5M CGroup:/system.slice/suricata.service ??1496 /sbin/suricata -c /etc/suricata/suricata.yaml --pidfile /var/run/suricata.pid - i eth0 --user suricata 16. února 07:14:22 suricata systemd[1]:Spouštění služby detekce narušení Suricata... 16. února 07:14:22 suricata systemd[1]:Spuštěna služba detekce narušení Suricata.
Proces může trvat několik minut, než dokončí analýzu všech pravidel. Výše uvedená kontrola stavu proto není úplným ukazatelem toho, zda je Suricata připravena. Soubor protokolu můžete sledovat pomocí následujícího příkazu.
$ sudo tail -f /var/log/suricata/suricata.log
Pokud v souboru protokolu vidíte následující řádek, znamená to, že Suricata běží a je připravena monitorovat síťový provoz.
16/02/2022 -- 07:18:39 -- Všechna vlákna pro zachycení AFP jsou spuštěna.
Krok 6 – Testování pravidel Suricata
Zkontrolujeme, zda Suricata nezaznamenává nějaký podezřelý provoz. Průvodce Suricata doporučuje otestovat pravidlo ET Open číslo 2100498 pomocí následujícího příkazu.
$ curl http://testmynids.org/uid/index.html
Obdržíte následující odpověď.
uid=0(kořen) gid=0(kořen) skupiny=0(kořen)
Výše uvedený příkaz předstírá, že vrací výstup id
příkaz, který lze spustit na kompromitovaném systému. Chcete-li otestovat, zda Suricata detekovala provoz, musíte zkontrolovat soubor protokolu pomocí zadaného čísla pravidla.
$ grep 2100498 /var/log/suricata/fast.log
Pokud váš požadavek používal IPv6, měli byste vidět následující výstup.
02/22/2022-23:24:33.997371 [**] [1:2100498:7] Kontrola ID GPL ATTACK_RESPONSE vrátila kořen [**] [Klasifikace:Potenciálně špatný provoz] [Priorita:2] {TCP} 2600:9000:2204:5c00:0018:30b3:e400:93a1:80 -> 2a03:b0c0:0002:00d0:0000:0000:0fc2:b001:41468
Pokud váš požadavek používal IPv4, uvidíte následující výstup.
02/22/2022-23:21:46.783476 [**] [1:2100498:7] Kontrola ID GPL ATTACK_RESPONSE vrátila kořen [**] [Klasifikace:Potenciálně špatný provoz] [Priorita:2] {TCP} 204.246.178.81:80 -> 164.90.192.1:36364
Suricata také zaznamenává události do /var/log/suricata/eve.log
soubor ve formátu JSON. Abyste si tato pravidla mohli přečíst a interpretovat, musíte si nainstalovat jq
což je mimo rozsah tohoto tutoriálu.
Skončili jsme s částí první tutoriálu, kde jsme Suricatu nainstalovali a otestovali. Další část zahrnuje instalaci zásobníku ELK a jeho nastavení pro vizualizaci Suricaty a jejích protokolů. Tato druhá část tutoriálu by měla být provedena na druhém serveru, pokud není uvedeno jinak.
Krok 7 – Instalace Elasticsearch a Kibana
První krok při instalaci Elasticsearch zahrnuje přidání klíče Elastic GPG na váš server.
$ sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Vytvořte úložiště pro balíček Elasticsearch vytvořením a otevřením souboru /etc/yum/yum.repos.d/elasticsearch.repo
pro úpravy.
$ sudo nano /etc/yum.repos.d/elasticsearch.repo
Vložte do něj následující kód.
[elasticsearch]name=Elasticsearch úložiště pro balíčky 7.xbaseurl=https://artifacts.elastic.co/packages/7.x/yumgpgcheck=1gpgkey=https://artifacts.elastic.co/GPG-KEY- elasticsearchenabled=0autorefresh=1type=rpm-md
Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.
Nainstalujte Elasticsearch a Kibana.
$ sudo dnf install --enablerepo=elasticsearch elasticsearch kibana
Musíte použít příznak --enablerepo=elasticsearch
pokaždé od té doby ponecháme úložiště ve výchozím nastavení vypnuté. Tím se zabrání náhodné aktualizaci těchto balíčků.
Pomocí následujícího příkazu vyhledejte soukromou IP adresu svého serveru.
$ ip -stručná adresa showlo NEZNÁMÁ 127.0.0.1/8 ::1/128eth0 UP 164.90.205.77/20 10.18.0.7/16 2a03:b0c0:2:d0::fef:b001/fef:b001/ 6eff:fe5c:76ed/64eth1 UP 10.133.0.3/16 fe80::906f:b5ff:fec4:c7b8/64
Poznamenejte si privátní IP vašeho serveru (v tomto případě 10.133.0.3). Budeme ji označovat jako your_private_IP
. Veřejná IP adresa serveru (164.90.205.77) bude označována jako your_public_IP
ve zbývajícím tutoriálu. Poznamenejte si také síťový název vašeho serveru eth1
.
Krok 8 – Konfigurace elastického vyhledávání
Elasticsearch ukládá svou konfiguraci do /etc/elasticsearch/elasticsearch.yml
soubor. Otevřete soubor pro úpravy.
$ sudo nano /etc/elasticsearch/elasticsearch.yml
Elasticsearch standardně přijímá pouze místní připojení. Musíme to změnit, aby k nim Kibana mohla přistupovat přes soukromou IP adresu.
Najděte řádek #network.host: 192.168.0.1
a přidejte následující řádek přímo pod něj, jak je znázorněno níže.
# Ve výchozím nastavení je Elasticsearch přístupné pouze na localhost. Zde nastavte jinou# adresu, abyste odhalili tento uzel v síti:##network.host:192.168.0.1network.bind_host:["127.0.0.1", "your_private_IP"]## Ve výchozím nastavení Elasticsearch naslouchá provozu HTTP na prvním volný port, který # najde od 9200. Zde nastavte konkrétní HTTP port:
To zajistí, že Elastic může stále přijímat místní připojení a zároveň je dostupný Kibaně přes soukromou IP adresu.
Dalším krokem je zapnout některé funkce zabezpečení a zajistit, aby byl Elastic nakonfigurován tak, aby běžel na jednom uzlu. Chcete-li to provést, přidejte na konec souboru následující řádky.
. . .discovery.type:single-nodexpack.security.enabled:true
Pokud budete používat více uzlů elastického vyhledávání, můžete první řádek vynechat.
Až budete hotovi, uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.
Konfigurovat bránu firewall
Přidejte správná pravidla brány firewall pro Elasticsearch, aby byl přístupný přes privátní síť.
$ sudo firewall-cmd --permanent --zone=internal --change-interface=eth1$ sudo firewall-cmd --permanent --zone=internal --add-service=elasticsearch$ sudo firewall-cmd -- permanent --zone=internal --add-service=kibana$ sudo firewall-cmd --reload
Ujistěte se, že jste v prvním příkazu zvolili název rozhraní jako ten, který jste získali v kroku 7. Výše uvedené příkazy změní výchozí zónu brány firewall na interní a otevřené porty 9200, 9300 pro Elasticsearch a port 5601 pro Kibana.
Spustit elastické vyhledávání
Nyní, když jste nakonfigurovali Elasticsearch, je čas spustit službu.
$ sudo systemctl spustit elasticsearch
Vytvoření hesel pro elastické vyhledávání
Po povolení nastavení zabezpečení Elasticsearch je dalším krokem vygenerování hesel pro výchozího uživatele. Elasticsearch se dodává s nástrojem pro vytváření hesel na adrese /usr/share/elasticsearch/bin/elasticsearch-setup-passwords
který může generovat náhodná hesla.
Vytvořte hesla.
$ cd /usr/share/elasticsearch/bin$ sudo ./elasticsearch-setup-passwords auto
Získáte výstup podobný následujícímu. Stiskněte y
až budete vyzváni, pokračujte.
Zahájení nastavení hesel pro rezervované uživatele elastic,apm_system,kibana,kibana_system,logstash_system,beats_system,remote_monitoring_user.Hesla budou náhodně vygenerována a vytištěna na konzoli.Potvrďte prosím, že chcete pokračovat [y/N] yChanged heslo pro uživatele apm_systemPASSWORD apm_system =EtwMg8maU67o5tvD5rseChanged heslo pro uživatele kibana_systemPASSWORD kibana_system =dTanR7Q2HtgDtATRvuJvChanged heslo pro uživatele kibanaPASSWORD kibana =dTanR7Q2HtgDtATRvuJvChanged heslo pro uživatele logstash_systemPASSWORD logstash_system =XGSjxNktuNMWVfGYiboxChanged heslo pro uživatele beats_systemPASSWORD beats_system =JXTr7CeHkMue608qVTQaChanged heslo pro uživatele remote_monitoring_userPASSWORD remote_monitoring_user =Q6JTJNl3lPy0fhy6QuMPChanged heslo pro uživatele elasticPASSWORD pružný =bd1YJfhSa8RC8SMvTIwg
Nástroj můžete spustit pouze jednou, takže všechna hesla uložte na bezpečné místo.
Krok 9 – Konfigurace Kibana
Prvním krokem při konfiguraci Kibana je povolení xpack
bezpečnostní funkce generováním tajných klíčů. Kibana používá tyto tajné klíče k ukládání dat v Elasticsearch. Nástroj pro generování tajných klíčů je přístupný z /usr/share/kibana/bin
adresář.
$ cd /usr/share/kibana/bin/$ sudo ./kibana-encryption-keys generation -q --force
-q
příznak potlačí instrukce příkazu a --force
flag zajišťuje generování nových tajemství. Obdržíte výstup podobný následujícímu.
xpack.encryptedSavedObjects.encryptionKey:0f4e5e1cf8fad1874ffed0faac6be0daxpack.reporting.encryptionKey:d435c78a4e37521e539c0e905420c0e905420c0e905420c090e905420c9se9f7e92pack:79se9f706xpackZkopírujte výstup. Otevřete konfigurační soubor Kibana na
/etc/kibana/kibana.yml
pro úpravy.$ sudo nano /etc/kibana/kibana.ymlVložte kód z předchozího příkazu na konec souboru.
. . .# Určuje národní prostředí, které se má použít pro všechny lokalizovatelné řetězce, data a formáty čísel.# Podporované jazyky jsou následující:angličtina - en , ve výchozím nastavení čínština - zh-CN .#i18n.locale:"en"xpack.encryptedSavedObjects.encryptionKey :0f4e5e1cf8fad1874ffed0faac6be0daxpack.reporting.encryptionKey:d435c78a4e37521e539c0e905420c9f5xpack.security.encryptionKey:72ba994e290bf0Konfigurace portu Kibana
Kibana musí být nakonfigurována tak, aby byla přístupná na privátní IP adrese serveru. Najděte řádek
#server.host: "localhost"
v souboru a přidejte následující řádek přímo pod něj, jak je znázorněno.# Kibana je obsluhována back-end serverem. Toto nastavení určuje port, který se má použít.#server.port:5601# Určuje adresu, ke které se Kibana server připojí. IP adresy a názvy hostitelů jsou platné hodnoty.# Výchozí hodnota je 'localhost', což obvykle znamená, že vzdálené počítače se nebudou moci připojit.# Chcete-li povolit připojení od vzdálených uživatelů, nastavte tento parametr na adresu bez zpětné smyčky.#server .host:"localhost"server.host:"vaše_soukromá_IP"Až budete hotovi, uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.
Konfigurace přístupu Kibana
Dalším krokem je vytvoření uživatelského jména a hesla, které může Kibana použít k ověření. Můžete to udělat přímou úpravou konfiguračního souboru Kibana, ale může to způsobit bezpečnostní problém. Bezpečná metoda zahrnuje použití
kibana-keystore
aplikace.Pro nastavení uživatelského jména spusťte následující příkazy. Zadejte
kibana_system
jako uživatelské jméno.$ cd /usr/share/kibana/bin$ sudo ./kibana-keystore add elasticsearch.usernameZadejte hodnotu pro elasticsearch.username:************Spusťte příkaz znovu a nastavte heslo. Ujistěte se, že používáte heslo, které jste vytvořili pro Kibana v kroku 8. Pro náš tutoriál je heslo
dTanR7Q2HtgDtATRvuJv
.$ sudo ./kibana-keystore add elasticsearch.passwordZadejte hodnotu pro elasticsearch.password:*************************Spouštění Kibana
Nyní, když jste nakonfigurovali zabezpečený přístup a síť pro Kibana, spusťte proces.
$ sudo systemctl start kibanaZkontrolujte stav, zda běží.
$ sudo systemctl status kibanaKrok 10 – Instalace a konfigurace Filebeat
Je důležité poznamenat, že budeme instalovat Filebeat na server Suricata. Přepněte se tedy zpět a přidejte elastický klíč GPG, abyste mohli začít.
$ sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearchVytvořte a otevřete elastické úložiště.
$ sudo nano /etc/yum.repos.d/elasticsearch.repoVložte následující kód.
[elasticsearch]name=Elasticsearch úložiště pro balíčky 7.xbaseurl=https://artifacts.elastic.co/packages/7.x/yumgpgcheck=1gpgkey=https://artifacts.elastic.co/GPG-KEY- elasticsearchenabled=0autorefresh=1type=rpm-mdUložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.
Nainstalujte Filebeat.
$ sudo dnf install --enablerepo=elasticsearch filebeatFilebeat ukládá svou konfiguraci do
/etc/filebeat/filebeat.yml
soubor. Otevřete jej pro úpravy.$ sudo nano /etc/filebeat/filebeat.ymlPrvní věc, kterou musíte udělat, je připojit jej k přístrojové desce Kibana. Najděte řádek
#host: "localhost:5601"
v Kibaně a přidejte následující řádek přímo pod něj, jak je znázorněno.. . .# Počínaje verzí Beats 6.0.0 se dashboardy načítají přes Kibana API.# To vyžaduje konfiguraci koncového bodu Kibana.setup.kibana:# Hostitel Kibana # Schéma a port lze vynechat a budou nastaveny na výchozí ( http a 5601) # V případě, že zadáte další cestu, je vyžadováno schéma:http://localhost:5601/cesta # Adresy IPv6 by měly být vždy definovány jako:https://[2001:db8::1]:5601 #hostitel:"localhost:5601" hostitel:"vaše_soukromá_IP:5601". . .Dále najděte Elasticsearch Output části souboru a upravte hodnoty
hosts
,username
apassword
Jak je ukázáno níže. Jako uživatelské jméno zvolteelastic
jako hodnotu a pro heslo použijte hodnotu vygenerovanou v kroku 8 tohoto návodu.output.elasticsearch:# Pole hostitelů pro připojení. hostitelé:["your_private_IP:9200"] # Protokol - buď `http` (výchozí) nebo `https`. #protocol:"https" # Autentizační údaje – buď klíč API nebo uživatelské jméno/heslo. #api_key:"id:api_key" uživatelské jméno:"elastické" heslo:"bd1YJfhSa8RC8SMvTIwg". . .Až budete hotovi, uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.
Dále povolte vestavěný modul Suricata ve Filebeatu.
moduly $ sudo filebeat umožňují suricataPosledním krokem při konfiguraci Filebeat je načtení řídicích panelů a kanálů SIEM do Elasticsearch pomocí
filebeat setup
příkaz.Nastavení $ sudo filebeatDokončení příkazu může trvat několik minut. Po dokončení byste měli obdržet následující výstup.
Přepisování zásad ILM je zakázáno. Nastavte `setup.ilm.overwrite:true` pro povolení. Nastavení indexu bylo dokončeno. Načítání řídicích panelů (Kibana musí být spuštěna a dostupná) Načtené řídicí panely Nastavení ML pomocí setup --machine-learning bude ve verzi 8.0.0 odstraněno. Použijte prosím místo toho aplikaci ML. Další informace:https://www.elastic.co/guide/en/machine-learning/current/index.htmlNení možné načíst úlohy ML do Elasticsearch 8.0.0 nebo novějšího pomocí Beat.Loaded konfigurace úloh strojového učeníLoaded Ingest pipelineSpusťte službu Filebeat.
$ sudo systemctl spustit filebeatZkontrolujte stav služby.
$ sudo systemctl status filebeatKrok 11 – Přístup k řídicímu panelu Kibana
Vzhledem k tomu, že KIbana je nakonfigurován tak, aby k Elasticsearch přistupoval pouze prostřednictvím své soukromé IP adresy, máte dvě možnosti, jak k němu přistupovat. První metodou je použití SSH tunelu k serveru Elasticsearch z vašeho PC. Toto předá port 5601 z vašeho PC na soukromou IP adresu serveru a vy budete mít přístup ke Kibaně z vašeho PC na
http://localhost:5601
. Tato metoda však znamená, že k ní nebudete mít přístup odkudkoli.Možností je nainstalovat Nginx na váš server Suricata a použít jej jako reverzní proxy pro přístup k serveru Elasticsearch přes jeho privátní IP adresu. Probereme oba způsoby. Můžete si vybrat jeden ze způsobů na základě svých požadavků.
Použití místního tunelu SSH
Pokud používáte Windows 10 nebo Windows 11, můžete spustit SSH LocalTunnel z vašeho Windows Powershell. V systému Linux nebo macOS můžete použít terminál. Pravděpodobně budete muset nakonfigurovat přístup SSH, pokud jste to ještě neudělali.
Spuštěním následujícího příkazu v terminálu vašeho počítače vytvořte tunel SSH.
$ ssh -L 5601:vaše_soukromá_IP:5601 [chráněno e-mailem]_public_IP -N
-L
příznak odkazuje na místní tunel SSH, který předává provoz z portu vašeho počítače na server.private_IP:5601
je IP adresa, na kterou je přesměrován váš provoz na serveru. V tomto případě ji nahraďte soukromou IP adresou vašeho serveru Elasticsearch.your_public_IP
je veřejná IP adresa serveru Elasticsearch, která se používá k otevření připojení SSH.-N
flag říká OpenSSH, aby neprovádělo žádný příkaz, ale aby udrželo připojení naživu, dokud tunel běží.
Nyní, když je tunel otevřený, můžete získat přístup ke Kibaně otevřením adresy URL http://localhost:5601
v prohlížeči vašeho PC. Zobrazí se následující obrazovka.
Budete muset nechat příkaz spuštěný tak dlouho, jak potřebujete pro přístup ke Kibaně. Stiskněte Ctrl + C ve vašem terminálu k uzavření tunelu.
Použití Nginx Reverse-proxy
Tato metoda je nejvhodnější, pokud chcete mít přístup k řídicímu panelu odkudkoli na světě.
Konfigurovat bránu firewall
Než budete pokračovat dále, musíte otevřít porty HTTP a HTTPS ve bráně firewall.
$ sudo firewall-cmd --permanent --add-service=http$ sudo firewall-cmd --permanent --add-service=https
Chcete-li změny povolit, znovu načtěte bránu firewall.
$ sudo firewall-cmd --reload
Instalace a konfigurace SSL
Prvním krokem je instalace certifikátu Let's Encrypt SSL. Protože jsme již nastavili úložiště EPEL, nainstalujte nástroj Certbot.
$ sudo dnf nainstalovat certbot
Vygenerujte certifikát SSL pro doménu kibana.example.com
.
$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [e-mail chráněný] -d kibana.example.com
Výše uvedený příkaz stáhne certifikát do /etc/letsencrypt/live/kibana.example.com
adresář na vašem serveru.
Vytvořte skupinu Diffie-Hellman certifikát.
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Vytvořte webový kořenový adresář výzvy pro automatické obnovení Let's Encrypt.
$ sudo mkdir -p /var/lib/letsencrypt
Create a Cron Job to renew the SSL. Poběží každý den, aby se zkontroloval certifikát a v případě potřeby se obnoví. Nejprve vytvořte soubor /etc/cron.daily/certbot-renew
a otevřete jej pro úpravy.
$ sudo nano /etc/cron.daily/certbot-renew
Vložte následující kód.
#!/bin/shcertbot renew --cert-name kibana.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"
Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.
Změňte oprávnění k souboru úlohy, aby byl spustitelný.
$ 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
Povolte službu Nginx.
$ sudo systemctl povolit 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 { poslouchat 80; poslouchej [::]:80; server_name kibana.example.com; return 301 https://$host$request_uri;}server { server_name kibana.example.com; charset utf-8; poslouchat 443 ssl http2; poslouchej [::]: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 1d; ssl_session_cache shared:MozSSL:10m; ssl_session_tickets off; 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-POLSHA13HEDCHA25050 -RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; resolver 8.8.8.8; ssl_stapling on; ssl_stapling_verify on; 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-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $schéma; }}
Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.
Otevřete soubor /etc/nginx/nginx.conf
pro úpravy.
$ sudo nano /etc/nginx/nginx.conf
Přidejte následující řádek před řádek include /etc/nginx/conf.d/*.conf;
.
server_names_hash_bucket_size 64;
Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.
Verify the configuration.
$ sudo nginx -tnginx:the configuration file /etc/nginx/nginx.conf syntax is oknginx:configuration file /etc/nginx/nginx.conf test is successful
Start the Nginx service.
$ sudo systemctl spustí 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"
Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.
Restart the Kibana service.
$ sudo systemctl restart kibana
Wait for a few minutes and load the URL https://kibana.example.com
ve vašem prohlížeči. 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. Klikněte na Síť 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.
Závěr
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. Pokud máte nějaké dotazy, napište je do komentářů níže.