Zlepšete zabezpečení virtualizačních kontejnerů

8. 8. 2018

Sdílet

 Autor: Fotolia © pixeltrap
Kontrolní body v tomto případě zahrnují různé možnosti – od jednoduchých příprav až po pokročilejší run-time kontroly zabezpečení.

Prozatím je stále nedostatek nástrojů pro run-time zabezpečení kontejnerů, což způsobilo, že konverzace směřuje ke tvorbě obranných bariér předcházejícím běhu (run-time) – v průběhu fází vytváření, integrace a nasazení.

Samozřejmě že s rychle se vyvíjejícími technologiemi, jako jsou kontejnery, může být příliš snadné přehlédnout nejzákladnější bezpečnostní aspekty, takže je vítáno jakékoli zaměření.

Hlasy poukazující na bezpečnostní výhody digitálního podepisování bitových kopií kontejnerů v okamžiku vytváření a jejich skenování před jejich vložením do registru by měly být samozřejmě vyslyšené.

Operační systém by měl být zabezpečen a možné oblasti útoků minimalizovány, kdekoli to je možné. Měla by se použít řešení jako například Seccomp a AppArmor, která představují bezpečnostní profily mezi kontejnery a hostitelským jádrem (kernel hostitele).

Skutečností však je, že myšlenka odstranit všechny pokusy o hacking jednoduchým zavedením preventivních opatření před nasazením je dost nerealistická.

Skutečná ochrana proti všem takovým útokům vyžaduje zabezpečení se schopností detekovat hrozby a porušení bezpečnosti v době běhu. Vzhledem k počtu hrozeb, které se vyskytují v reálném čase u běžících aplikací, je zabezpečení při běhu zřejmě nejdůležitější součástí celkové strategie zabezpečení kontejnerů.

Nasazení kontejnerů může kromě několika nových hrozeb trpět také většinou stejných hrozeb společných pro virtualizovaná prostředí a pro prostředí serverů s jedním operačním systémem.

Mezi obecné hrozby týkající se bezpečnosti kontejnerů patří:

  • Útoky DDOS na aplikační úrovni a XSS (skriptování mezi weby) pro kontejnery dostupné veřejnosti.
  • Kompromitované kontejnery, které se pokoušejí stáhnout další malware nebo hledat slabiny a citlivá data skenováním vnitřních systémů.
  • Prolomení kontejneru umožňující neoprávněný přístup k dalším kontejnerům, hostitelům a k datovému centru.
  • Kontejner nucený využívat systémové prostředky při pokusu zpomalit nebo zablokovat další kontejnery.
  • Živé instalace oprav aplikací pro zavedení škodlivých procesů.
  • Používání nezabezpečených aplikací k zaplavení sítě a ovlivnění dalších kontejnerů.

A tady jsou některé příklady hlavních útoků na kontejnery, na které je dobré se připravit:

  • Dirty Cow exploit pro jádro Linuxu, který umožňuje eskalaci oprávnění root v hostiteli nebo kontejneru.
  • Ransomwarové útoky vůči zranitelným aplikačním kontejnerům MongoDB a ElasticSearch.
  • Poškození haldy OpenSSL způsobené špatnou hlavičkou klíčů a havárie způsobená přítomností specifického rozšíření.
  • Poškození haldy a přetečení vyrovnávací paměti v knihovnách Ruby a Pythonu umožňující spuštění škodlivého kódu.
  • Útoky SQL injection, které hackerům umožňují ovládat databázový kontejner a krást data.
  • Zranitelnosti, jako je přetečení vyrovnávací paměti založené na zásobníku glibc, které poskytují hackerům kontrolu pomocí útoků typu MITM (člověk uprostřed).
  • Každý nový útok nultého dne na kontejner, který představuje přetrvávající hrozbu.
  • Chcete-li pochopit, proč je zabezpečení při běhu tak kritické, uvažte životní cyklus aplikace. Co se vyvíjelo, testovalo, zabalilo a nasadilo během několika měsíců, často běží roky a může se sdílet po celém světě, takže mohou existovat miliony instancí. To vytváří z běhu zdaleka největší prostor pro útoky.

Z hrozeb typu SSL Heartbleed se ví, jak může v důsledku běhu přetrvávat zranitelnost zabezpečení, která pochází z malé chyby v kódu. Jinak řečeno: od okamžiku uvedení aplikací do produkčního prostředí musejí podniky uvažovat o zabezpečení při běhu po celou dobu.

Co by tedy měla zahrnovat efektivní strategie pro zabezpečení kontejneru při běhu? Zde je 12 kontrolních bodů, které zahrnují možnosti od jednoduchých příprav po pokročilejší run-time kontroly zabezpečení.

Nejprve se připravte zabezpečením hostitelského prostředí:

1. Zabezpečte operační systém a omezte útočný prostor odebráním všech nepotřebných modulů a souborů. Buďte pilní při aktualizaci nejnovějších oprav zabezpečení. Nebo použijte systém založený na nedávno oznámené sadě nástrojů LinuxKit.

2. Zajistěte, aby byla platforma kontejneru zabezpečená. Pokud používáte Docker, řiďte se radami z průvodce osvědčenými postupy pro Docker.

3. Použijte řešení jako SELinux nebo AppArmor k přizpůsobení specifických bezpečnostních profilů a ochranu před neoprávněným přístupem.

4. Skenujte kontejnery ve všech registrech, zda se v nich nevyskytují zranitelnosti.

5. Používejte kontroly integrity bitových kopií kontejnerů a digitálně je v čase vytvoření podepisujte.

6. Chraňte pomocí nástrojů třetích stran nebo služeb správy klíčů tajemství, jako jsou hesla a klíče API, které jsou potřebné k run-time přístupu kontejneru.

7. Snižte riziko tím, že spustíte aplikační kontejnery v režimu jen pro čtení, resp. v režimu, kdy se změny neuloží.

Potom neustále monitorujte a chraňte run-time prostředí:

8. Mějte přehled o normálním síťovém chování aplikací a nastavte bezpečnostní zásady pro vynucení autorizovaných připojení. Monitorujte každý kontejner, zda nevykazuje abnormální chování nebo porušení zásad.

9. Vykonávejte živé skenování všech běžících kontejnerů a hostitelů, zjišťujte zranitelnosti a zabezpečujte používané bitové kopie stejně jako u nově vytvářených kontejnerů.

10. Používejte šifrování na úrovni relace nebo šifrování v síti, kdekoli je to potřebné. Pečlivě zvažujte kompromisy mezi výkonem/spravovatelností versus zabezpečením pro každou aplikaci, abyste zjistili, zda je nutné šifrovat na úrovni hostitelů či kontejnerů.

11. Implementujte detekci hrozeb pro kontejnery, abyste rozpoznali útoky v reálném čase včetně hrozeb na aplikační vrstvě (DDoS, XSS, Slowloris atd.).

12. Uchovávejte forenzní data o všech událostech zabezpečení kontejnerů a vykonávejte off-line analýzu, abyste pochopili povahu těchto událostí. Zachytávejte síťová data pro případ potřeby, aby byla k dispozici jako pomoc při forenzní analýze útoků.

Protože kontejnery umožňují rychlou virtualizaci pro aplikace, vyžadují bezpečnostní řešení pro run-time hlubokou znalost aplikace, aby se udržel krok a vznikl skutečný užitek. Snažte se o implementaci monitoringu run-time zabezpečení, které dokáže účinně rozpoznat hrozby a včas je zachytit, ale neomezuje přitom výhody fungování kontejnerů.

ICTS24

 

Tento příspěvek vyšel v Security Worldu 2/2017. Časopis (starší čísla i předplatné těch nadcházejících) si můžete objednat na adrese našeho vydavatelství.