Snort nebo Suricata. Část 3: chráníme firemní síť

V předchozí článku Hovořili jsme o tom, jak spustit stabilní verzi Suricata na Ubuntu 18.04 LTS. Nastavit IDS na jednom uzlu a připojit zdarma pravidla je poměrně snadné. Dnes se podíváme na to, jak pomocí nainstalované Suricaty na virtuálním serveru chránit firemní síť před nejběžnějšími typy útoků. K tomu budeme potřebovat VDS na Linuxu se dvěma výpočetními jádry. Velikost operační paměti závisí na zatížení: někomu stačí 2 GB, ale pro serióznější úkoly může být potřeba 4 nebo dokonce 6. Výhodou virtuálního stroje je možnost experimentování: můžete začít s minimální konfigurací a zvyšovat výkon podle potřeby.

Snort nebo Suricata. Část 3: chráníme firemní síťfoto: Reuters

Spojujeme sítě

Přenesení IDS na virtuální stroj může být v první řadě potřebné pro testování. Pokud jste se nikdy nesetkali s podobnými řešeními, není dobré hned objednávat fyzický hardware a měnit architekturu sítě. Lépe je bezpečně otestovat systém bez zbytečných nákladů, abyste určili potřeby na výpočetní výkon. Je důležité pochopit, že veškerý firemní provoz bude muset projít jediným externím uzlem: pro připojení místní sítě (nebo několika sítí) k VDS s nainstalovanou IDS Suricata lze použít SoftEther — snadno nastavitelný multiplatformní server VPN, který zajišťuje spolehlivé šifrování. Firemní připojení k internetu nemusí mít skutečnou IP, proto je lepší jej spustit na VPS. V repozitáři Ubuntu nejsou žádné hotové balíčky, software budete muset stáhnout buď z stránky projektu, nebo z externího repozitáře na službě Launchpad (pokud mu důvěřujete):

sudo add-apt-repository ppa:paskal-07/softethervpn
sudo apt-get update

Seznam dostupných balíčků si můžete prohlédnout pomocí následujícího příkazu:

apt-cache search softether

Snort nebo Suricata. Část 3: chráníme firemní síť

Budeme potřebovat softether-vpnserver (server v testovací konfiguraci běží na VDS), stejně jako softether-vpncmd — příkazový nástroj pro jeho nastavení.

sudo apt-get install softether-vpnserver softether-vpncmd

K nastavení serveru se používá speciální příkazový nástroj:

sudo vpncmd

Snort nebo Suricata. Část 3: chráníme firemní síť

Podrobně vysvětlovat nastavení nebudeme: postup je poměrně jednoduchý, je dobře popsán v mnoha publikacích a přímo se k tématu článku nevztahuje. Pokud to shrneme, po spuštění vpncmd musíte vybrat položku 1, abyste přešli do konzole pro správu serveru. K tomu je potřeba zadat název localhost a stisknout enter místo zadání názvu hubu. V konzole je nastaven administrátorský heslo příkazem serverpasswordset, odstraní se virtuální hub DEFAULT (příkaz hubdelete) a vytvoří se nový s názvem Suricata_VPN, a také se nastaví jeho heslo (příkaz hubcreate). Dále je třeba přejít do řídící konzole nového hubu pomocí příkazu hub Suricata_VPN, abychom vytvořili skupinu a uživatele pomocí příkazů groupcreate a usercreate. Uživatelovo heslo je nastaveno pomocí userpasswordset.

SoftEther podporuje dva režimy přenosu provozu: SecureNAT a Local Bridge. První představuje proprietární technologii pro vytváření virtuální privátní sítě s vlastním NAT a DHCP. SecureNAT nevyžaduje TUN/TAP, ani konfiguraci Netfilter nebo jiného firewallu. Routerování nezasahuje do jádra systému a všechny procesy jsou virtualizovány a fungují na jakémkoliv VPS/VDS bez ohledu na použité hypervizory. To vede k vyšší zátěži procesoru a snížení rychlosti ve srovnání s režimem Local Bridge, který spojuje virtuální hub SoftEther s fyzickým síťovým adaptérem nebo zařízením TAP.

Nastavení v tomto případě je složitější, protože routování probíhá na úrovni jádra pomocí Netfilteru. Naše VDS jsou postaveny na Hyper-V, proto na posledním kroku vytváříme místní most a aktivujeme zařízení TAP pomocí příkazu bridgecreate Suricate_VPN -device:suricate_vpn -tap:yes. Po opuštění řídicí konzole hubu uvidíme v systému nové síťové rozhraní, kterému ještě nebyla přiřazena IP:

ifconfig

Snort nebo Suricata. Část 3: chráníme firemní síť

Dále bude nutné povolit směrování paketů mezi rozhraními (ip forward), pokud není aktivní:

sudo nano /etc/sysctl.conf

Odkomentujte následující řádek:

net.ipv4.ip_forward = 1

Uložíme změny v souboru, opustíme editor a použijeme je pomocí následujícího příkazu:

sudo sysctl -p

Dále musíme určit pro virtuální síť podsíť s fiktivními IP (například 10.0.10.0/24) a přiřadit adresu rozhraní:

sudo ifconfig tap_suricata_vp 10.0.10.1/24

Poté bude nutné napsat pravidla Netfilter.

1. V případě potřeby povolte příchozí pakety na sledovaných portech (protokol SoftEther používá HTTPS a port 443)

sudo iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 992 -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 1194 -j ACCEPT
sudo iptables -A INPUT -p udp -m udp --dport 1194 -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 5555 -j ACCEPT

2. Nastavujeme NAT z podsítě 10.0.10.0/24 na hlavní IP serveru

sudo iptables -t nat -A POSTROUTING -s 10.0.10.0/24 -j SNAT --to-source 45.132.17.140

3. Povolujeme procházející pakety z podsítě 10.0.10.0/24

sudo iptables -A FORWARD -s 10.0.10.0/24 -j ACCEPT

4. Povolujeme procházející pakety pro již ustanovená spojení

sudo iptables -A FORWARD -p all -m state --state ESTABLISHED,RELATED -j ACCEPT

Automatizaci procesu při restartu systému pomocí iniciačních skriptů necháme čtenářům jako domácí úkol.

Pokud chcete automaticky přidělovat klientům IP adresy, budete potřebovat také nainstalovat nějakou službu DHCP pro místní most. Tímto je konfigurace serveru dokončena a můžeme přejít k klientům. SoftEther podporuje mnoho protokolů, jejichž použití závisí na možnostech hardware místní sítě.

netstat -ap |grep vpnserver

Snort nebo Suricata. Část 3: chráníme firemní síť

Jelikož náš testovací router také běží na Ubuntu, nainstalujeme na něm z externího repozitáře balíčky softether-vpnclient a softether-vpncmd, abychom mohli využít proprietární protokol. Je potřeba spustit klienta:

sudo vpnclient start

K nastavení použijeme utilitu vpncmd, vybereme localhost jako stroj, na kterém běží vpnclient. Všechny příkazy se provádějí v konzoli: bude potřeba vytvořit virtuální rozhraní (NicCreate) a účet (AccountCreate).

V některých případech je nutné nastavit způsob autentizace pomocí příkazů AccountAnonymousSet, AccountPasswordSet, AccountCertSet a AccountSecureCertSet. Protože nepoužíváme DHCP, adresa pro virtuální adaptér se zadává ručně.

Kromě toho bude potřeba povolit ip forward (parametr net.ipv4.ip_forward=1 v souboru /etc/sysctl.conf) a nastavit statické trasy. V případě potřeby lze na VDS se Suricatou nastavit přesměrování portů pro využití služeb nainstalovaných v místní síti. Tím je spojení sítí považováno za dokončené.

Navrhovaná konfigurace bude vypadat přibližně takto:

Snort nebo Suricata. Část 3: chráníme firemní síť

Nastavujeme Suricatu

V předchozí článku Hovořili jsme o dvou režimech fungování IDS: prostřednictvím fronty NFQUEUE (režim NFQ) a prostřednictvím zero copy (režim AF_PACKET). Druhý vyžaduje dva rozhraní, ale nabízí vyšší výkon — použijeme právě tento. Parametr je nastaven ve výchozím nastavení v /etc/default/suricata. Rovněž budeme potřebovat upravit sekci vars v /etc/suricata/suricata.yaml, kde uvedeme virtuální podsíť jako domácí.

Snort nebo Suricata. Část 3: chráníme firemní síť

Pro restart IDS použijeme příkaz:

systemctl restart suricata

Řešení je hotové, nyní budete možná potřebovat ověřit jeho odolnost vůči útokům útočníků.

Modelujeme útoky

Scénářů bojového nasazení externího IDS může být několik:

Ochrana proti útokům DDoS (primární účel)

Implementace takového varianty v rámci firemní sítě je složitá, protože pakety pro analýzu musí projít skrze rozhraní systému směřující na internet. I když je IDS zablokuje, parazitní provoz může ochromit datový kanál. Aby se tomu předešlo, je třeba objednat VPS s dostatečně výkonným internetovým připojením, schopným zpracovat veškerý provoz místní sítě a veškerý vnější provoz. Často je to jednodušší a levnější než rozšiřovat kancelářský kanál. Jako alternativu je možno zmínit specializované služby pro ochranu proti DDoS. Cena jejich služeb je srovnatelná s cenou virtuálního serveru, přičemž není potřeba náročná konfigurace, ale má to i nevýhody — za své peníze klient získá pouze ochranu proti DDoS, zatímco vlastní IDS lze konfigurovat jakkoli.

Ochrana proti externím útokům jiného druhu

Suricata je schopna se vypořádat s pokusy o využití různých zranitelností v dostupných internetových službách firemní sítě (poštovní server, webový server a webové aplikace atd.). Obvykle se IDS instalují uvnitř lokální sítě za hranicemi, ale jejich umístění venku má také své opodstatnění.

Ochrana proti interním zločincům

I přes veškeré snahy systémového administrátora mohou být počítače v podnikové síti infikovány škodlivým softwarem. V místní síti se také občas objevují vandali, kteří se snaží provádět nelegální operace. Suricata může pomoci zablokovat takové pokusy, i když pro ochranu vnitřní sítě je lepší ji nainstalovat uvnitř perimetru a používat ji společně s řízeným switchem, který umí zrcadlit provoz na jeden port. Vnější IDS v tomto případě také není zbytečná – alespoň bude schopna zachytit pokusy o spojení škodlivého software s externím serverem, které žijí v LAN.

Nejprve vytvoříme další testovací útočný VPS, a na routeru místní sítě nastavíme Apache s výchozí konfigurací, po čemž přesměrujeme port 80 na server IDS. Dále budeme simulovat DDoS útok z útočného uzlu. K tomu si stáhneme z GitHubu, zkompilujeme a spustíme na útočném uzlu malý program xerxes (může být potřeba nainstalovat balíček gcc):

git clone https://github.com/Soldie/xerxes-DDos-zanyarjamal-C.git
cd xerxes-DDos-zanyarjamal-C/
gcc xerxes.c -o xerxes
./xerxes 45.132.17.140 80

Výsledek její práce byl následující:

Snort nebo Suricata. Část 3: chráníme firemní síť

Suricata zablokovala útočníka a výchozí stránka Apache se otevřela, i přes náš improvizovaný útok a dost slabý kanál "kancelářské" (ve skutečnosti domácí) sítě. Pro vážnější úkoly stojí za to použít Metasploit Framework. Je určen pro provádění penetračních testů a umožňuje simulovat různé útoky. Návod k instalaci je k dispozici je na stránkách projektu. Po instalaci bude potřeba aktualizace:

sudo msfupdate

Pro testování spustíme msfconsole.

Snort nebo Suricata. Část 3: chráníme firemní síť

Bohužel, v posledních verzích frameworku chybí možnost automatického hackování, a tak bude potřeba exploidy procházet ručně a spouštět je pomocí příkazu use. Nejprve je dobré zjistit otevřené porty na napadeném stroji, například pomocí nmap (v našem případě ho dostatečně nahradí netstat na napadeném uzlu), a poté vybrat a použít vhodné moduly Metasploit. 

Existují i další nástroje pro testování odolnosti IDS vůči útokům, včetně online služeb. Z ryze zvědavosti je možné provést stresové testování pomocí zkušební verze IP Stresser. Chcete-li otestovat reakci na akce vnitřních útočníků, měli byste nainstalovat speciální nástroje na jeden z počítačů v lokální síti. Možností je mnoho a občas byste je měli použít nejen na experimentálním zařízení, ale i na pracovních systémech, i když to už je úplně jiný příběh.

Snort nebo Suricata. Část 3: chráníme firemní síť

Snort nebo Suricata. Část 3: chráníme firemní síť

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster