GNU/Linux >> Znalost Linux >  >> Rocky Linux

Jak nainstalovat a nakonfigurovat Suricata IDS spolu s Elastic Stack na Rocky Linux 8

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:79se9f706xpack 

Zkopírujte výstup. Otevřete konfigurační soubor Kibana na /etc/kibana/kibana.yml pro úpravy.

$ sudo nano /etc/kibana/kibana.yml

Vlož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:72ba994e290bf0 

Konfigurace 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 kibana

Zkontrolujte stav, zda běží.

$ sudo systemctl status kibana

Krok 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-elasticsearch

Vytvořte a otevřete elastické úložiště.

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

Vlož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-md

Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.

Nainstalujte Filebeat.

$ sudo dnf install --enablerepo=elasticsearch filebeat

Filebeat ukládá svou konfiguraci do /etc/filebeat/filebeat.yml soubor. Otevřete jej pro úpravy.

$ sudo nano /etc/filebeat/filebeat.yml

První 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 a password Jak je ukázáno níže. Jako uživatelské jméno zvolte elastic 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í suricata

Poslední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 filebeat

Dokonč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 pipeline

Spusťte službu Filebeat.

$ sudo systemctl spustit filebeat

Zkontrolujte stav služby.

$ sudo systemctl status filebeat

Krok 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.


Rocky Linux
  1. Jak nainstalovat a nakonfigurovat docker v Rocky Linux/Centos 8

  2. Jak nainstalovat a nakonfigurovat Ansible na Rocky Linux/CentOS 8

  3. Jak nainstalovat a nakonfigurovat HAProxy load balancer na Rocky Linux/Alma Linux 8

  1. Nainstalujte a nakonfigurujte Elasticsearch na Rocky Linux 8

  2. Jak nainstalovat a nakonfigurovat Memcached na Rocky Linux/Alma Linux 8

  3. Jak nainstalovat a nakonfigurovat Squid Proxy na Rocky Linux/Alma Linux 8

  1. Jak nainstalovat a nakonfigurovat Elasticsearch na Rocky Linux 8

  2. Jak nainstalovat a nakonfigurovat Mono na Rocky Linux 8 a CentOS 8

  3. Jak nainstalovat a nakonfigurovat TensorFlow na Rocky Linux 8