S rostoucí popularitou kybernetické kriminality existuje naléhavá potřeba, aby podniky měly lepší ochranu proti hackerům. Intrusion Prevention System (IPS) je jedním z nejlepších způsobů obrany proti počítačovým útokům. Ale než budete hledat na internetu IPS, vyzkoušejte Suricata.
V tomto tutoriálu se naučíte, jak nakonfigurovat plně funkční Suricata IPS na linuxovém serveru pro ochranu vaší sítě před online hrozbami.
Připraveni? Čtěte dále a začněte chránit svou síť!
Předpoklady
Tento tutoriál bude praktickou ukázkou. Pokud je chcete sledovat, ujistěte se, že máte následující:
- Linuxový server – Tato ukázka používá Ubuntu 20.04 LTS, ale bude fungovat jakákoli distribuce Linuxu.
- Uživatel bez oprávnění root s právy sudo.
- V závislosti na konfiguraci sítě a na tom, jak hodláte Suricata používat, budete možná potřebovat více či méně CPU a RAM pro váš server. Obecně platí, že čím více provozu plánujete zkontrolovat, tím více zdrojů přidělíte Suricatě. Ve vývojářském prostředí plánujte pro začátek použít alespoň 2 CPU a 8 GB RAM, aby Suricata mohla plnit své úkoly, aniž by byla ohrožena kvalita služeb pro všechny uživatele.
Instalace Suricaty a přidání Úložiště PPA
Suricata se na Ubuntu neinstaluje ve výchozím nastavení, ale instalace Suricaty je podobná, jako když instalujete další balíčky do vašeho systému.
1. Spusťte apt update
příkaz k aktualizaci dostupných balíčků ve vašem systému.
sudo apt update -y

2. Dále spusťte add-apt-repository
příkaz k přidání úložiště PPA spravovaného Open Information Security Foundation (OISF). Přidáním úložiště PPA získáte nejnovější a stabilní verzi Suricata (ppa:oisf/suricata-stable
).
sudo add-apt-repository ppa:oisf/suricata-stable

3. Spusťte znovu sudo apt update
příkaz k načtení nově přidaného úložiště Suricata do indexu balíčků vašeho systému.
sudo apt update -y
4. Nyní spusťte sudo apt policy
pro ověření, že jste Suricata PPA přidali správně. Před instalací Suricata
sudo apt policy

5. Spusťte následující příkaz do install suricata
na vašem systému.
sudo apt install suricata -y

6. Po dokončení instalace spusťte systemctl status
příkazem níže zkontrolujte suricata
služba status
.
sudo systemctl status suricata
Níže můžete vidět, že služba Suricata je aktivní (běžící).

Konfigurace Suricata
Balíček Suricata se dodává s konfiguračním souborem s názvem suricata.yaml na adrese /etc/suricata adresář. Tento konfigurační soubor má mnoho různých nastavení pro mnoho dalších případů použití. Ale mějte na paměti, že ve výchozím konfiguračním souboru je několik nastavení, která musíte před použitím Suricaty vyladit.
Výchozí režim pro Suricata je režim detekce narušení (IDS), který zaznamenává, ale nezastavuje žádný provoz. Tento režim se používá při konfiguraci a seznamování se Suricatou. Až budete se službou Suricata více spokojeni a lépe pochopíte, na jaké typy provozu vás Suricata upozorní, můžete se rozhodnout zapnout režim IPS.
Suricata připojí pole ve formátu JSON (ID toku komunity). ID toku komunity je 8bajtové pole, které umožňuje korelovat záznamy generované jinými nástroji. Tato funkce je užitečná, když používáte Suricata ve spojení s dalšími nástroji, jako je Bro nebo Elasticsearch.
1. Otevřete /etc/suricata/suricata.yaml soubor ve vašem oblíbeném textovém editoru.
2. Najděte řádek s textem community-id:false a změňte jej na id komunity:true . Uložte změny a ukončete textový editor.
Pokaždé, když prozkoumáte události, uvidíte ID toku komunity v jejich výstupu JSON.

Dále spusťte následující příkaz a vyhledejte zařízení s výchozí trasou ve vašem systému (route show default
). -p
příznak říká ip
příkaz vytisknout zařízení způsobem čitelným pro člověka, zatímco -j
flag vypíše výstup JSON.
Suricata je ve výchozím nastavení nakonfigurována tak, aby snímala pakety z libovolného dostupného síťového rozhraní. Toto chování však můžete změnit a určit rozhraní, které má Suricata poslouchat, když se spustí.
ip -p -j route show default
Jak vidíte níže, dev Parametr určuje rozhraní, které bude Suricata používat pro sniffování paketů. V této ukázce je rozhraní eth0 , ale vaše rozhraní se může lišit, například tun0, wlan0 a tak dále.

4. Nakonec otevřete /etc/suricata/suricata.yaml konfiguračního souboru, vyhledejte rozhraní parametr pod af-packet oddíl a příslušně jej upravte. V této ukázce eth0 se používá jako rozhraní pro sniffování paketů.
Uložte změny, ale textový editor ponechte zatím otevřený.

Nastavení funkce obnovení živého pravidla
Nyní jste nakonfigurovali Suricata, ale to je jen začátek ochrany vaší sítě. Obvykle byste chtěli přidat pravidla na místě a automaticky je znovu načíst. Jak? Funkce aktualizace pravidel Suricata v reálném čase vám umožňuje aktualizovat pravidla za běhu. Díky tomu nemusíte Suricatu restartovat ručně, aby se nová pravidla projevila.
Otevřete soubor /etc/suricata/suricata.yaml zkopírujte/vložte následující příkazy na konec obsahu souboru a uložte změny. Tyto direktivy vám umožňují aktivovat funkci opětovného načtení aktivních pravidel.
S tímto nastavením, když upravíte/aktualizujete své sady pravidel, změny se projeví bez restartování vaší služby Suricata.
detect-engine:
- rule-reload: true

Nyní spusťte kill
příkaz níže, abyste informovali váš proces Suricata ($(pidof suricata)
) pro aktualizaci pravidel bez restartování.
Příkaz odešle uživatelsky definovaný signál (-usr2
) na zadané ID procesu, pak Suricata automaticky provede následující:
- Načtěte novou konfiguraci pro aktualizaci proměnných a hodnot pravidla.
- Načíst nová pravidla
- Vytvořit nový detekční modul
- Vyměňte staré a nové detekční nástroje
- Ujistěte se, že jsou všechna vlákna aktualizována
- Uvolněte starý detekční modul
sudo kill -usr2 $(pidof suricata)
Aktualizace sad pravidel Suricata
Funkce opětovného načtení pravidel v reálném čase je připravena, ale nebude mít žádný účel, pokud neaktualizujete své sady pravidel. Ve výchozím nastavení má balíček Suricata omezenou sadu pravidel, která detekuje pouze nejběžnější internetové protokoly umístěné v /etc/suricata/rules adresář.
V tomto okamžiku se zobrazí Vzoru neodpovídají žádné soubory pravidel chybová zpráva, jako je ta níže, kdykoli se pokusíte spustit a používat službu Suricata. Tato chybová zpráva znamená, že neexistují žádné sady pravidel, které by Suricata mohla použít.

Chcete-li tuto chybu opravit, poskytněte své instanci Suricata soubory sady pravidel. Naštěstí má Suricata nástroj s názvem suricata-update
které vám pomohou při načítání dalších sad pravidel od poskytovatelů třetích stran.
1. Spusťte níže uvedený příkaz a získejte aktualizaci pro svou instanci Suricata.
sudo suricata-update
Jak můžete vidět níže, výstup ukazuje, že suricata-update
příkaz načetl pravidla připojením k https://rules.emergingthreats.net/open/. Příkaz poté uloží nová pravidla do adresáře /var/lib/suricata/rules/ .
Výstup také vytiskne následující:
- Celkový počet (31737 ) sad pravidel
- Počet povolených pravidel (24355 )
- Počet, kolik jich bylo přidáno (31737 )/odstraněno (0 ).

Dále spusťte níže uvedený příkaz a vypište všechny poskytovatele sady pravidel (list-sources
).
suricata-update
příkaz načte sady pravidel od mnoha poskytovatelů, včetně bezplatných a komerčních poskytovatelů.
sudo suricata-update list-sources
Níže vidíte malou část seznamu. Poznamenejte si název sady pravidel, ze kterého má Suricata konkrétně načítat sady pravidel. Tento výukový program načítá et/open sady pravidel pro demonstraci (krok tři).

3. Spusťte níže uvedený příkaz pro načtení a zahrnutí (enable-source
) et/open
sady pravidel podle vašich pravidel Suricata.
sudo suricata-update enable-source et/open

Nakonec znovu spusťte suricata-update
příkaz k načtení nově vybrané sady pravidel.
sudo suricata-update
Ověření konfigurace Suricata
Nakonfigurovali jste Suricata a dokonce jste přidali sady pravidel, takže je čas ověřit vaše změny a zajistit, aby vše fungovalo podle očekávání. Balíček Suricata má vestavěnou ověřovací službu, která vám umožní vidět jakékoli odchylky od aktuální konfigurace.
Spusťte suricata
příkaz níže pro ověření změn v konfiguračním souboru Suricata (-c /etc/suricata/suricata.yaml
). Příkaz také zobrazí všechny ověřovací zprávy (-v
).
-T
příznak říká Suricatě, aby běžela v „testovacím režimu“ a „shora dolů“. Oba režimy mají přísnější pravidla pro párování paketů a je méně pravděpodobné, že budou falešně pozitivní.
sudo suricata -T -c /etc/suricata/suricata.yaml -v
Vzhledem k tomu, že Suricata je vysoce konfigurovatelný firewall, může dokončení testu trvat několik minut. Pokud nejsou žádné chyby, zobrazí se výstup podobný tomu níže, který ukazuje dokončeno zpráva.

Pokud váš konfigurační soubor obsahuje chyby podobné té níže, Suricata vytiskne každou chybu s uvedením konkrétních řádků způsobujících problémy. Pokud se zobrazí tyto chyby, opravte každý problém s konfigurací jeden po druhém, dokud nebude ověření úspěšné.

Testování pravidel Suricata
Nyní, když jsou vaše konfigurační soubory Suricata ověřeny, můžete spustit Suricata, abyste viděli, že fungují správně. Suricata použijete k testování ET Open (2100498) s curl
příkaz k detekci podezřelé aktivity/provozu.
V tuto chvíli má vaše instance Suricata více než 30 000 pravidel, která Suricata načetla z různých sad pravidel. Takže úplný test všech pravidel s jejich vysvětlením se do tohoto tutoriálu nevejde.
1. Spusťte curl
níže, abyste vygenerovali nějaký provoz/požadavky/aktivity HTTP z webu TestMyNIDS. TestMyNIDS je e-learningový projekt věnovaný podpoře testů NIDS, ověřování a porovnávání. Web poskytuje jedinečnou platformu pro srovnávací analýzu NIDS a souvisejících nástrojů.
Tento web můžete použít k testování jakékoli podezřelé aktivity/provozu, abyste zjistili, zda vaše nakonfigurovaná sada pravidel funguje podle očekávání.
curl http://testmynids.org/uid/index.html
Data odezvy jsou navržena tak, aby spouštěla falešný poplach, který se vydává za root systému Linux/Unix uživatel. A tento kořen uživatel je v systému, který může být kompromitován.

Dále spusťte grep
níže prozkoumejte fast.log
soubor v /var/log/suricata/ adresář pro odpovídající výstražnou zprávu 2100498
. Tento příkaz zkontroluje, zda v souboru protokolu není upozornění uživatele.
Kromě souboru fast.log je dalším souborem protokolu, na který je třeba dávat pozor, eve.log ve stejném adresáři.
grep 2100498 /var/log/suricata/fast.log
Uvidíte výstup podobný tomu níže, který ukazuje veřejnou IPv4 adresu vašeho systému.

3. Nyní spusťte jq
níže, abyste prozkoumali eve.log soubor. eve.log se také používá pro protokolování událostí, ale ve formátu JSON (/var/log/suricata/eve.json
). Je to eve.json a fast.log soubory, které budete odkazovat na podezřelý provoz a zablokované pokusy. Po nalezení proveďte nezbytná opatření.
jq 'select(.alert .signature_id==2100498)' /var/log/suricata/eve.json
Níže vidíte „signature_id“:2100498 ve výstupu, což je ID podpisu výstrahy, které jste zadali v příkazu.
Můžete také vidět „community_id“:„1:ETRbv54GHTVCayHTUR5OIovK4gh2=“ ve výstupu, což je ID toku komunity, které jste nastavili v /etc/suricata/suricata.yaml soubor.
Toto community_id je užitečné, když používáte Suricata ve spojení s dalšími nástroji, jako je Elasticsearch, abyste získali úplný „zásobník monitorování zabezpečení“ za rozumně nízkou cenu.

Závěr
V tomto tutoriálu jste se naučili, jak nainstalovat a nakonfigurovat Suricata pomocí sad pravidel pro ochranu vaší sítě. Také jste prošli testováním, zda sady pravidel fungují generováním provozu ve vaší síti.
V tomto okamžiku Suricata funguje perfektně s vaší vlastní sadou pravidel pro detekci podezřelých aktivit/provozu ve vaší síti.
Proč na těchto nově nabytých znalostech nepostavit? Možná začít instalací a konfigurací Suricata, Zeek, zásobníku Elasticsearch, aby bylo možné nastavit úplný „zásobník monitorování zabezpečení“?