Podle statistik se objem síťového provozu každý rok zvyšuje přibližně o 50 %. To vede k nárůstu zátěže na zařízení a konkrétně zvyšuje požadavky na výkon IDS/IPS. Můžete si zakoupit drahé specializované hardwarové vybavení, ale existuje i levnější varianta — implementace jednoho z otevřených systémů. Mnoho začínajících administrátorů si myslí, že instalace a konfigurace bezplatného IPS je poměrně složitá. V případě Suricaty to však není úplně pravda — její instalace a začátek ochrany proti typickým útokům s použitím sady bezplatných pravidel může trvat jen několik minut.
Proč potřebujeme další otevřené IPS?
Systém Snort, který byl dlouho považován za standard, se vyvíjí od konce devadesátých let, a proto byl původně jednovláknový. Během mnoha let nabyl všech moderních funkcí, jako je podpora IPv6, možnost analýzy protokolů aplikační vrstvy či univerzální modul pro přístup k datům.
Základní engin Snort 2.X se naučil pracovat s více jádry, přesto zůstal jednovláknový a nemůže tak optimálně využít výhody moderních hardwarových platforem.
Tento problém byl vyřešen ve třetí verzi systému, avšak příprava trvala tak dlouho, že na trh vstoupila Suricata, napsaná od základů. Jejím vývojem byla zahájena v roce 2009 jako vícevláknová alternativa k Snortu, která od samotného začátku nabízela funkčnost IPS. Kód je distribuován pod licencí GPLv2, ale finanční partneři projektu mají přístup k uzavřené verzi enginu. Některé problémy se škálovatelností v prvních verzích systému se objevily, ale byly rychle vyřešeny.
Proč Suricata?
Suricata má několik modulů (jako Snort): pro zachytávání, sběr, dekódování, detekci a výstup. Ve výchozím nastavení procházejí zachycené pakety dekódováním jedním vláknem, i když to více zatěžuje systém. V případě potřeby lze vlákna rozdělit v nastavení a distribuovat mezi procesory — Suricata se velmi dobře optimalizuje na konkrétní hardware, i když to už není úroveň HOWTO pro začátečníky. Také stojí za zmínku, že Suricata obsahuje pokročilé prostředky pro inspekci HTTP založené na knihovně HTP. Ty mohou být také použity pro protokolování provozu bez detekce. Systém také podporuje dekódování IPv6, včetně tunelů IPv4-in-IPv6, IPv6-in-IPv6 a dalších.
Pro zachytávání datového toku mohou být použity různé rozhraní (NFQueue, IPFRing, LibPcap, IPFW, AF_PACKET, PF_RING), a v režimu Unix Socket je možné automaticky analyzovat soubory PCAP, které byly zachyceny jiným snifferem. Modulární architektura Suricaty také usnadňuje připojení nových prvků pro zachytávání, dekódování, analýzu a zpracování síťových paketů. Je také důležité poznamenat, že v Suricatě se blokování datového toku provádí prostředky standardního filtru operačního systému. V GNU/Linux jsou k dispozici dvě varianty IPS: prostřednictvím fronty NFQUEUE (režim NFQ) a prostřednictvím zero copy (režim AF_PACKET). V prvním případě paket, který vstupuje do iptables, je směrován do fronty NFQUEUE, kde může být zpracován na uživatelské úrovni. Suricata ho zpracovává podle svých pravidel a vyjadřuje jeden ze tří verdiktů: NF_ACCEPT, NF_DROP a NF_REPEAT. První dvě vysvětlení nevyžadují, zatímco poslední umožňuje označovat pakety a poslat je na začátek aktuální tabulky iptables. Režim AF_PACKET se vyznačuje vyšší rychlostí, ale na systém klade určité omezení: musí mít dvě síťová rozhraní a fungovat jako brána. Zablokovaný paket se prostě neodesílá na druhé rozhraní.
Hlavní vlastnost Suricaty spočívá v možnosti využití pravidel vytvořených pro Snort. Administrátor má k dispozici například sady pravidel Sourcefire VRT a OpenSource Emerging Threats, stejně jako komerční Emerging Threats Pro. Unified output lze analyzovat pomocí populárních backendů a také je podporován výstup v PCAP a Syslog. Nastavení systému a pravidla jsou uložena v souborech ve formátu YAML, který je snadno čitelný a může být automaticky zpracován. Engine Suricata rozpoznává mnoho protokolů, takže není třeba v pravidlech odkazovat na čísla portů. Dále je v pravidlech Suricaty aktivně používána koncepce flowbits. Pro sledování aktivace se používají proměnné relací, které umožňují vytvářet a používat různé počítadla a flagy. Mnoho IDS považuje různé TCP připojení za samostatné entity a nemusí si všimnout vazeb mezi nimi, které naznačují začátek útoku. Suricata se snaží vidět celkový obraz a ve mnoha případech rozpoznává škodlivý provoz rozložený mezi různá připojení. O jejích výhodách se dá dlouho hovořit, raději přejdeme k instalaci a konfiguraci.
Jak nainstalovat?
Nainstalujeme Suricatu na virtuálním serveru běžícím na Ubuntu 18.04 LTS. Všechny příkazy je třeba provádět z pozice superuživatele (root). Nejbezpečnější variantou je připojit se k serveru přes SSH s právy běžného uživatele a poté použít utilitu sudo pro zvýšení oprávnění. Nejprve je třeba nainstalovat balíčky, které budeme potřebovat:
sudo apt -y install libpcre3 libpcre3-dev build-essential autoconf automake libtool libpcap-dev libnet1-dev libyaml-0-2 libyaml-dev zlib1g zlib1g-dev libmagic-dev libcap-ng-dev libjansson-dev pkg-config libnetfilter-queue-dev geoip-bin geoip-database geoipupdate apt-transport-httpsPřipojíme externí repozitář:
sudo add-apt-repository ppa:oisf/suricata-stable
sudo apt-get updateNainstalujeme poslední stabilní verzi Suricaty:
sudo apt-get install suricataV případě potřeby upravíme konfigurační soubory a nahradíme výchozí eth0 skutečným názvem externího rozhraní serveru. Výchozí nastavení jsou uložena v souboru /etc/default/suricata a uživatelská nastavení v /etc/suricata/suricata.yaml. Konfigurace IDS je většinou o úpravě tohoto konfiguračního souboru. Obsahuje mnoho parametrů, které názvem a účelem odpovídají obdobám ze Snort. Syntaxe je však zcela jiná, ale soubor se čte mnohem snáze než konfigurace Snort, navíc je dobře okomentovaný.
sudo nano /etc/default/suricata 
a
sudo nano /etc/suricata/suricata.yaml 
Pozor! Před spuštěním je dobré zkontrolovat hodnoty proměnných v sekci vars.
K dokončení nastavení je nutné nainstalovat suricata-update pro aktualizaci a stahování pravidel. Udělat to je docela jednoduché:
sudo apt install python-pip
sudo pip install pyyaml
sudo pip install <a href="https://github.com/OISF/suricata-update/archive/master.zip">https://github.com/OISF/suricata-update/archive/master.zip</a>
sudo pip install --pre --upgrade suricata-updatePoté je třeba spustit příkaz suricata-update k instalaci souboru pravidel Emerging Threats Open:
sudo suricata-update 
Pro zobrazení seznamu zdrojů pravidel spusťte následující příkaz:
sudo suricata-update list-sources 
Aktualizujeme zdroje pravidel:
sudo suricata-update update-sources 
Znovu prohlížíme aktualizované zdroje:
sudo suricata-update list-sourcesV případě potřeby lze povolit dostupné bezplatné zdroje:
sudo suricata-update enable-source ptresearch/attackdetection
sudo suricata-update enable-source oisf/trafficid
sudo suricata-update enable-source sslbl/ssl-fp-blacklistPoté je nutné pravidla znovu aktualizovat:
sudo suricata-updateInstalaci a prvotní nastavení Suricata na Ubuntu 18.04 LTS můžeme považovat za dokončené. Dále začíná to nejzajímavější: v dalším článku připojíme virtuální server k firemní síti přes VPN a začneme analyzovat veškerý příchozí a odchozí provoz. Zvláštní pozornost věnujeme blokování DDoS útoků, aktivitám škodlivého softwaru a pokusům o využití zranitelností ve službách přístupných z veřejných sítí. Pro názornost budou simulovány útoky nejběžnějších typů.
Zdroj: habr.com
