Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Jaké jsou osvědčené postupy pro zabezpečení portů WebSocket v Docker


Jaké jsou osvědčené postupy pro zabezpečení portů WebSocket v Docker


Zabezpečení portů WebSocket v Docker zahrnuje několik vrstev osvědčených postupů, které zahrnují zabezpečení sítě, šifrování, ověřování, autorizaci a konfiguraci kontejnerů za účelem udržení důvěrnosti, integrity a dostupnosti komunikace WebSocket. Níže je uvedeno podrobné vysvětlení osvědčených postupů pro zabezpečení portů WebSocket v Docker:

Použijte protokol Secure WebSocket (WSS)

Vždy používejte protokol Secure WebSocket (WSS: //), který pracuje přes TLS (zabezpečení transportní vrstvy). To šifruje data přenášená mezi klientem a serverem a zabrání útokům na odposloupání a muž-in-the-middle (MITM). Šifrování zajišťuje důvěrnost a integritu zpráv odeslaných přes připojení WebSocket. Stejně jako HTTPS pro webové stránky, WSS také umožňuje použití bezpečnostních funkcí založených na prohlížeči, jako je přísné zabezpečení transportu a blokování smíšeného obsahu, což zvyšuje celkovou komunikační zabezpečení. Nepoužívejte nešifrovaný protokol WS: //, pokud nefungujete zcela v důvěryhodném prostředí, kde není šifrování nutné.

Ověřování a autorizace

Protože připojení WebSocket nepodporuje mechanismy ověřování založených na relacích, jako je HTTP, je důležité implementovat svůj vlastní autentizační systém. Mezi běžné přístupy patří ověřování založené na tokenech pomocí JWT (JSON Web Tokens) nebo souborů cookie během počátečního HTTP Upgrade Handshake. Ověřování by mělo být vázáno na fázi Handshake WebSocket, aby se zajistilo, že pouze oprávnění klienti navázali připojení.

Oprávnění by mělo být vynucováno na základě zprávy nebo na základě jednání, nejen jednou ve fázi založení připojení. To zabraňuje zvýšeným privilegiím pro neautorizovaná uživatele poté, co získají přístup k otevřené webové stránce.

Chcete-li zvýšit bezpečnost proti odcizeným nebo opakovaným tokenům, zvažte použití krátkodobých, skalněných žetonů nebo vydávání pomíjivých jednorázových žetonů speciálně pro připojení WebSocket. Tyto žetony vyprší rychle a snižují riziko, pokud jsou ohroženy.

Izolace sítě a osvědčené postupy sítě Docker

Vyvarujte se odhalení kontejnerových portů přímo veřejné síti. Místo toho umístěte kontejnery hostující služby WebSocket do vlastních sítě Docker Bridge, abyste je izolovali od jiných služeb a omezili externí přístup.

Vytvořte samostatné síťové mosty Docker pro různé skupiny kontejnerů. Například jedna síť Bridge může směrovat příchozí provoz z hostitele do kontejneru servisního kontejneru WebSocket a pro zabezpečenou komunikaci mezi kontejnerem Websocket a dalšími backendovými službami, jako jsou databáze, lze použít jinou soukromou interní síť.

Vyvarujte se výchozího síťového mostu Dockera „Docker0“, protože ve výchozím nastavení spojuje všechny kontejnery, což potenciálně umožňuje nežádoucí laterální pohyb v hostiteli Docker.

Při používání Docker Swarm nebo Kubernetes pro orchestraci kontejnerů použijte překrytí sítí s povoleným šifrováním (`-OOPT Encrypted`). Takové sítě šifrují provoz mezi uzly včetně komunikace WebSocket v klastru a chrání data před zachycením v síťové vrstvě.

Proxying a vyrovnávání zatížení

Nevystavujte porty WebSocket přímo na internet. Pro směrování provozu WebSocket použijte reverzní proxy, jako jsou Nginx, Traefik nebo Haproxy. Proxying poskytuje mnoho výhod, včetně:

- Centralizované ukončení TLS, takže vaše instance WebSocket nemusí přímo spravovat certifikáty TLS.
- Kontroly ověřování před předáváním připojení k backend servisu WebSocket.
- Směrování provozu na základě pravidel pro vyvážení zátěže nebo směrování.
- Zjednodušená konfigurace brány firewall, protože pouze externě jsou exponovány pouze porty proxy.
- lepší kontrola nad bezpečnostními záhlavími a zásadami.

Proxying také zmírňuje rizika, protože přímá expozice přístavů může komplikovat pravidla sítě a firewall, kromě zvýšení povrchu útoku.

Vstupné ověření a hygiena

Vzhledem k tomu, že připojení WebSocket umožňují libovolné zprávy po handshake, je nezbytné pečlivě ověřit a dezinfikovat všechna příchozí data. Zacházejte se všemi příchozími klientskými údaji jako nedůvěryhodnou. Proveďte validaci schématu pro strukturované formáty dat, jako je JSON, aby se zajistilo, že užitečné zatížení odpovídá očekávaným normám a zabrání útokům na vstřikování.

Ověření na straně serveru chrání před injekcí, malformovanými daty a pokusy o využití chyb v oblasti obchodní logiky. Podobně ověření na straně klienta zajišťuje, že data přijatá ze serveru jsou bezpečná pro zpracování a chrání před manipulovanými nebo poškozenými daty.

Omezení sazeb a škrcení

Implementujte omezení sazeb na připojení a zprávy WebSocket, abyste se bránili proti útokům na odmítnutí (DOS) nebo zneužívání služby WebSocket. Omezte počet připojení na IP adresu a regulační zprávy o odesílání zpráv, abyste zabránili povodní, které mohou spotřebovat nadměrné zdroje nebo zhoršovat kvalitu služeb.

Konfigurace zabezpečeného kontejneru

- Neprovozujte kontejnery s oprávněními kořeny. Použijte princip nejméně privilegií, kde kontejnery běží pomocí uživatelů bez root.
- Vyvarujte se namontování zásuvky Docker Daemon (`/var/run/docker.sock`) uvnitř kontejnerů WebSocket, protože to efektivně poskytuje kořenový přístup k hostiteli, což je nebezpečné.
- Omezte schopnosti kontejneru pouze na to, co je nezbytné pro službu WebSocket.
- Pro snížení povrchu útoku použijte oficiální, minimální a pravidelně aktualizované základní obrazy základního příkladu.

Správa tajemství

Vyvarujte se tajemství tvrdého kódování, jako jsou klíče API, žetony nebo certifikáty v obrázcích kontejnerů nebo zdrojovém kódu. Použijte tajemství Docker, proměnné prostředí nebo řešení zabezpečených trezorů a bezpečně vstřikujte přihlašovací údaje za běhu. Pravidelně rotujte tajemství.

Protokolování a monitorování

Povolit podrobné protokolování pro připojení WebSocket, včetně pokusů o handshake, úspěchu/neúspěchu autentizace, chyb zpráv a neobvyklé aktivity. Monitorování protokolů pomáhá identifikovat pokusy o útoky nebo zneužití včas.

Implementujte centralizované protokolování a varování v reálném čase pro podezřelou aktivitu, neúspěšné pokusy o autentizaci nebo hroty v provozu, které by mohly signalizovat útok.

Pravidelné aktualizace a testování zabezpečení

Udržujte všechny komponenty aktualizované, včetně Docker Engine, obrázků kontejnerů, knihoven WebSocket a reverzní proxy k opravným zranitelnosti.

Provádějte pravidelné testování zabezpečení specifické pro koncové body WebSocketu pomocí nástrojů, jako jsou automatizované skenery zranitelnosti (např. Dušené maso, burp sada) a testování manuální penetrace. Doporučuje se zprávy o testování fuzz pro detekci abnormálního nebo využitého chování serveru.

Cross-Origin and Origin Checking

Vynutit přísné kontroly záhlaví původu během handshake WebSocket, abyste zajistili, že připojení pocházejí z důvěryhodných domén. To pomáhá bránit se proti únosu WebSocket mezi stránkami (CSWSH), kde se škodlivé webové stránky pokoušejí zneužití otevřených připojení WebSocket.

Správa relací

Implementace zabezpečené správy relací. Použijte token vypršení a mechanismy obnovy pro tokeny ověřování WebSocket, abyste minimalizovali riziko únosu relace. Zrušení tokenů při odhlášení nebo po období nečinnosti.

Vyhněte se zbytečné expozici přístavů

Vystavte pouze minimální požadované porty na hostitele kontejnerů. Vyvarujte se publikování portů WebSocket přímo pomocí možnosti Docker `-P`, pokud za zabezpečený proxy.

Omezte expozici portů pomocí interních nebo vlastních sítí Docker tak, aby služby WebSocket komunikovaly pouze interně.

Shrnutí

Zajištění portů WebSocket v Docker vyžaduje vícevrstvý přístup:

- Pro šifrovanou komunikaci použijte WSS (WebSocket přes TLS).
- Ověřte uživatele během Handshake WebSocket s metodami založenými na tokenu.
- Po autentizaci oprávněte každou akci nebo zprávu.
- Použijte izolaci sítě Docker a vlastní sítě most nebo překrytí s povoleným šifrováním.
- Proxy WebSocket Provoz přes bezpečný reverzní proxy spíše než přímo vystavovat porty.
- Ověřte a dezinfikujte veškerý vstup, abyste zabránili útokům na vstřikování.
- Implementujte omezení sazby na zmírnění útoků dos.
- Sledujte osvědčené postupy zabezpečení kontejnerů Docker, včetně minimálních oprávnění a správy tajemství.
- Monitorujte a protokolujte aktivitu WebSocket pro podezřelé chování.
- Pravidelně aktualizujte komponenty a provádějí testování zabezpečení.
- Vynutit kontroly původu, abyste zabránili únosu.
- Spravujte tokeny relace bezpečně s vypršením a obnovou.

Dodržování výše uvedených osvědčených postupů pomůže zajistit, aby porty WebSocket běžící uvnitř kontejnerů Docker zůstaly bezpečné a chránily službu před běžnými zranitelnostmi a útoky při zachování spolehlivé komunikace v reálném čase.