it-swarm-eu.dev

Jak zabezpečit instanci MongoDB?

Má někdo zkušenosti se zabezpečením/zpevněním MongoDB serveru? Seznamy nebo průvodce by byly vítány.

28
AaronS

Databáze NoSQL jsou relativně nové (i když pravděpodobně starý koncept), neviděl jsem žádné konkrétní mongolingové návody MongoDB a obvyklá místa, která vypadám ( CISSecurity , publikace prodejců, Sans atd. Všechny jsou krátké). Navrhuje, že by byl dobrý projekt pro organizaci, uni studenta, infosec komunitu, aby ji napsal a udržoval.

V Mongodb.org jsou některé základní informace. Měly by být dodrženy všechny kroky zde včetně povolení zabezpečení. Samotný web uvádí, že MongoDB má pouze velmi základní úroveň zabezpečení. http://www.mongodb.org/display/DOCS/Security+and+Authentication

MongoDB a další NoSQL databáze mají také mnohem méně (zejména bezpečnostních) funkcí než zralé SQL databáze, takže je nepravděpodobné, že najdete jemnozrnná oprávnění nebo šifrování dat, používá MD5 pro hašování hesel s uživatelským jménem jako zárodkem. Existují také omezení, jako je ověřování, které není k dispozici s shardingem před verzí 1.9.1, takže vždy je dobré provést posouzení rizika a vytvořit model hrozby, aby se zjistily vaše bezpečnostní potřeby a hrozby, kterým čelíme, je dobrý nápad. Na základě tohoto výstupu nemusí být databáze MongoDB nebo NoSQL obecně pro vaše potřeby vhodné, nebo je možná budete muset použít jiným způsobem, který maximalizuje jeho výhody a minimalizuje jeho slabiny (např. Spíše pro extrakty dat než vaše nejcitlivější informace, nebo za řadou vrstev síťových ovládacích prvků než přímo připojených k vaší webové aplikaci).

To znamená, že jsem pevně přesvědčen, že bezpečnostní zásady jsou technologicky agnostické. Pokud analyzujete i nejnovější útoky a dobrý seznam na datalossdb.org, je úžasné, kolik jich stále souvisí s výchozími hesly a chybějícími opravami. Při hloubkové obraně, pokud budete postupovat podle následujících postupů, by mělo být zajištěno dostatečné zabezpečení k ochraně většiny aktiv (např. Individuálních, komerčních) pravděpodobně ne vojenských.

Zásady kalení databáze:

  • Ověřování - vyžaduje ověření, pro administrátory nebo privilegované uživatele má pokud je to možné dva faktory (to na úrovni platformy nebo prostřednictvím síťového zařízení, protože databáze sama o sobě nepodporuje). Pokud je to možné, používejte ověřování pomocí klíče, abyste se vyhnuli heslům.
  • Autorizace - minimální počet požadovaných účtů s minimem požadovaných oprávnění, účty podporující pouze čtení jsou podporovány, takže je používejte. Protože granulární řízení přístupu neexistuje, použijte alternativní prostředky, např. Webovou službu před databází, která obsahuje obchodní logiku včetně pravidel řízení přístupu nebo v rámci aplikace. Minimalizujte oprávnění, která Mongodb používá jako na platformě, např. by neměl běžet jako root.
  • Výchozí a systémové účty - změna hesel všech výchozích účtů, odebrání/uzamčení/zakázání toho, co můžete, zakázání přihlášení, kde můžete.
  • Logování a monitorování - povolte logging a exportujte je do centrálního monitorovacího systému. Definujte konkrétní výstrahy a vyšetřovací postupy pro své monitorovací pracovníky
  • Ověření vstupu - databáze NoSQL jsou stále zranitelné vůči útokům injekcí, takže pouze předávání ověřeného známého dobrého vstupu, použití paramaterizace v aplikačních rámcích, všechny dobré postupy pro předávání nedůvěryhodného vstupu do databáze jsou vyžadovány.
  • Šifrování - v závislosti na citlivosti dat, protože nemůžete šifrovat na úrovni databáze, je vyžadováno šifrování nebo hašování citlivých dat v aplikační vrstvě. Transportujte šifrování také prostřednictvím síťové vrstvy (např. VPN).
  • Minimalizujte služby a změňte výchozí port pro poslech
  • Odstraňte všechny ukázkové nebo testovací databáze
  • Mějte zaveden proces správy oprav, který včas identifikuje, vyhodnotí a nainstaluje všechny příslušné bezpečnostní záplaty
  • Vytvrzujte platformu a virtualizační platformu, pokud je použita
  • Nakonfigurujte příslušné ovládací prvky sítě, např. firewally, VLAN pro minimalizaci přístupu k databázi, upstream služba filtrování služeb, plně kvalifikovaný DNS, oddělené produkční a nevýrobní databáze
  • Fyzicky bezpečné prostředí
  • Mít proces řízení změn
25
Rakkhi

Zde je kontrolní seznam pro zabezpečení MongoDB

Enable auth - I když jste nasadili servery Mongodb v důvěryhodné síti, je dobrým zabezpečovacím postupem povolit funkci Auth. Poskytuje vám „obranu do hloubky“, pokud je vaše síť ohrožena. Upravte svůj konfigurační soubor mongod a aktivujte funkci auth

Nevystavujte svou produkční db internetu - Omezení fyzického přístupu k vaší databázi je důležitým aspektem zabezpečení. Pokud to není nutné, nevystavujte svou produkční databázi internetu. V případě kompromisu, pokud se útočník nemůže fyzicky připojit k vašemu serveru MongoDB, jsou vaše data mnohem bezpečnější. Pokud používáte AWS, můžete své db umístit do soukromé podsítě VPC. Další informace naleznete v blogovém příspěvku Nasazení MongoDB ve VPC.

Použít brány firewall - Použijte brány firewall k omezení toho, které další entity se mohou připojit k vašemu serveru mongodb. Doporučenou praxí je umožnit aplikačním serverům přístup pouze k databázi. Jste-li hostováni na AWS, použijte k omezení přístupu možnost „Skupiny zabezpečení“. Pokud jste hostitelem poskytovatele, který nepodporuje konstrukci brány firewall, můžete jej snadno nakonfigurovat sami pomocí „iptables“. Informace o konfiguraci iptables pro váš scénář naleznete v dokumentaci mongodb.

K nastavení sady replik použijte soubory klíčů - Určete soubor sdílených klíčů, který umožní komunikaci mezi instancemi mongodb v sadě replik. Chcete-li to povolit, přidejte do souboru config parametr keyfile, jak je uvedeno níže. Obsah souboru musí být stejný na všech počítačích.

Zakázat stavové rozhraní HTTP Ve výchozím nastavení Mongodb poskytuje rozhraní HTTP spuštěné ve výchozím nastavení na portu 28017, které poskytuje domovskou stránku stavu. Toto rozhraní se nedoporučuje pro výrobní účely a je nejlépe deaktivováno. Konfigurační nastavení „nohttpinterface“ použijte k deaktivaci rozhraní http.

Zakázat rozhraní REST) Monogdb REST rozhraní se pro výrobu nedoporučuje. Nepodporuje žádnou autentizaci. Ve výchozím nastavení je vypnuto. Pokud jste otočili při použití možnosti „ostatní“ konfigurace byste ji měli vypnout pro produkční systémy.

Konfigurace Bind_ip Pokud má váš systém více síťových rozhraní, můžete pomocí volby „bind_ip“ omezit váš mongodb server tak, aby poslouchal pouze na relevantních rozhraních. Ve výchozím nastavení se mongodb naváže na všechna rozhraní

Povolit SSL - Pokud nepoužíváte SSL, vaše data putují mezi klientem Mongo a serverem Mongo nešifrovaně a jsou náchylné k odposloucháváním, manipulaci a útokům „uprostřed“. To je zvláště důležité, pokud se připojujete k serveru Mongodb přes nezabezpečené sítě, jako je internet.

Autorizace na základě rolí - MongoDB podporuje autentizaci na základě rolí, která vám dává jemnou kontrolu nad činnostmi, které může provádět každý uživatel. Pomocí konstruktů založených na rolích omezte přístup namísto toho, aby byli všichni uživatelé spravováni. Další podrobnosti najdete v dokumentaci rolí.

Enterprise mongodb & Kerberos Enterprise mongodb se integruje s Kerberos pro ověření. Další podrobnosti najdete v dokumentaci mongodb. Systémy s uživatelským jménem a heslem jsou ze své podstaty nejisté - pokud je to možné, použijte ověřování založené na obrubníku.

https://scalegrid.io/blog/10-tips-to-improve-your-mongodb-security/

Zřeknutí se odpovědnosti: Jsem zakladatelem scalegrid.io

Kromě toho bych doporučil také šifrovat data mongodbů v klidu, jak naznačují ostatní komentáře. K nastavení šifrování úrovně hlasitosti můžete použít LUKS (Linux unified key setup).

2
Dharshan

Málo velmi prvních věcí, které si pamatujete, jsou:

  • Odeberte vazbu IP ze všech na pouze IP (soukromý nebo localhost), očekává se, že dostanete žádost o připojení
  • Změňte výchozí vázání portů
  • Udělujte pouze požadovaná oprávnění (jako například bez oprávnění k aktualizaci/mazání pro výběr uživatelů dotazu)
  • Nastavte ssh klíče pro požadované připojení master-slave a odstraňte zapojení hesel
  • Můžete dokonce nastavit šifrovaný tunel pro připojení mezi aplikací a mongodbem

ve skutečnosti jsou použitelné na všechny služby DataStorage

PS: velmi omezená zkušenost s mongodbem

2
AbhishekKr