Turris ochrání i vaše servery

Trochu historie

Co je projekt Turris, to asi není třeba v Čechách představovat. Ale pojďme si jen pro úplnost zrekapitulovat, jak celý projekt vznikl a jak se v průběhu doby vyvinul.

Vše začalo zkoumáním, jak probíhají útoky na běžné domácnosti. Náš CSIRT tým měl data z různých honeypotů, ale zajímalo je, v jaké míře se útoky zaznamenané na serverech dotýkají i běžných lidí. Navíc s rozvojem IoT začínaly být čím dál tím více zranitelné i běžné domácnosti. Ale jak zjistit, co se v nich děje? Kdyby tak existovala nějaká sonda, která by sbírala data o pokusech o útoky…

I jal se CZ.NIC takovou sondu vyrobiti. Nazvali jsme ji Turris a kromě sběru dat o útocích uměla i pár drobností navíc. Jako třeba routovat, dělat Wi-Fi AP, validovat DNSSEC, nahrávat pořady z televize a takové běžné drobnosti. Rozdali jsme je po republice, data začala chodit a výsledky byly velmi zajímavé. Naši kolegové je zkoumali a pomocí nich se jim podařilo odhalit nemálo bezpečnostních hrozeb. Zároveň jsme tato data automaticky zpracovávali, vytvářeli greylist a distribuovali ho na routery, kde jsme automaticky blokovali odhalené útočníky.

Projekt šel dál a ukázalo se, že naše sonda je vlastně skvělý router. I rozhodli jsme se zkusit, jestli by si ji někdo nekoupil na routrování. Zkusili jsme to s Turris Omnia na Indiegogo a později znovu s Turris MOX a oboje slavilo velký úspěch, a tak začal CZ.NIC vyrábět vlastní hardware.

HaaS vstupuje na scénu

Kromě zjištění, že co děláme na poli routerů, je zajimavé pro široké masy, jsme dostávali zpětnou vazbu o tom, že i náš sběr dat je zajímavý. Lidé nemají rádi útočníky a rádi by jim házeli klacky pod nohy. Pro mnoho z nich to ale není úplně snadné, ale náš systém jim to snadno umožňuje.

I toto jsme se pokusili ověřit v praxi. Spustili jsme projekt HaaS – Honeypot as a Service. Pomocí něj se můžou uživatelé snadno přidat a se svými servery nám pomoci chytat útočníky na ssh. O projekt projevila komunita velký zájem a nyní chytají útočníky nejen naše routery, ale i servery různých dobrovolníků.

Sentinel následuje

Vzhledem k zastarávající a omezující architektuře sběru dat jsme začali narážet na různé problémy. Hlavně se škálováním – nové routery se stále prodávají, staré neumírají a ani zas až tolik nezastarávají a ke sběru dat se nám dobrovolně hlásilo víc a víc lidí. Zároveň nás architektura trochu svazovala v rozmachu. Rozhodli jsme se proto celý systém přepsat. A jelikož jsme již věděli, že o podobná řešení je zájem, rozhodli jsme se celý systém rovnou navrhovat tak, abychom mohli zapojit časem i další účastníky, nejen uživatele našich routerů.

Začali jsme celý systém přepisovat a děláme velké pokroky. Nový systém už je nasazen a běží v testovacím režimu. Zatím do něj nejsou zmigrovány stávající routery a ani se zatím nesbírají všechna data, které se sbírají ve starém systému. Ale na tom stále pracujeme a v plánu je nakonec sbírat i více informací. Co nám už ale funguje, je dynamický firewall generovaný aktuálně malou testovací množinou routerů. Ten je ale zároveň i první službou, kterou lze nasadit i jinde než na našich routerech. Kdokoliv si tak nyní může tuto službu nainstalovat a získat ochranu před útočníky.

Nasazení

Jak si tedy dynamický firewall nasadit? Vyzkoušel jsem si to na svých serverech a při té příležitosti jsem nachystal i balíček pro rpm based distribuce. Testoval jsem to na openSUSE, takže netuším, jak moc bude funkční na jiných distribucích. I proto chci popsat, co, jak a proč jsem udělal.

Pro dynamický firewall máme jednoduchý program (opravdu krátký kousek Pythonu), který se připojí na náš server, stáhne si aktuální seznam padouchů a následně čeká na jeho změny. A podle toho udržuje lokální ipset. Pro připojení k serveru je potřeba stáhnout certifikát, který se následně používá k ověření serveru. Tuto funkcionalitu jsem si integroval do předpisu pro startování samotné služby.

Další věc, kterou bylo třeba udělat, je zaintegrovat službu do firewallu. V dnešních distribucí se používá pro konfiguraci firewallu firewalld. Napsal jsem tedy jako součást balíčku dva konfigurační soubory pro firewalld. Jeden zavádí ipset daného jména a druhý specifikuje speciální zónu, kam spadne každý z blacklistu. Lidem z této zóny se zásadně neodpovídá.

Drobná poznámka na závěr. Jedná se zatím spíše o PoC, celý postup budeme ještě uhlazovat, dodělávat web, návody, podmínky služby a podobně. Zároveň budeme výrazně rozšiřovat zdroje dat, které tam proudí, takže seznam poroste. Ale už teď jsme ve stavu, kdy si s tím zkušenější uživatelé můžou začít hrát. Máme i code snippet, který se dá použít obecně pro integraci i do jiných služeb a rádi uslyšíme, pokud vás napadne, kam a jak náš greylist integrovat.

Autor:

Zanechte komentář

Všechny údaje jsou povinné. E-mail nebude zobrazen.

This site uses Akismet to reduce spam. Learn how your comment data is processed.