Qualcuno ha esperienza con il server MongoDB di protezione / protezione? Check list o guide sarebbero i benvenuti.
I database NoSQL sono relativamente nuovi (anche se discutibilmente un vecchio concetto), non ho visto nessuna guida specifica per indurire MongoDB e i soliti posti che guardo ( CISSecurity , pubblicazioni dei fornitori, Sans ecc. tutto viene a mancare). Suggerisce che sarebbe un buon progetto per un'organizzazione, una comunità studentesca, una comunità infosec di scriverne una e mantenerla.
Ci sono alcune informazioni di base in Mongodb.org. Tutti i passaggi qui dovrebbero essere seguiti includendo la sicurezza. Il sito stesso afferma che MongoDB ha solo un livello base di sicurezza. link
MongoDB e altri database NoSQL hanno anche molte meno funzioni (specialmente di sicurezza) rispetto ai database SQL maturi, quindi è improbabile che si possano trovare permessi o crittografia dati ben definiti, utilizza MD5 per l'hashing delle password con il nome utente come seme. Ci sono anche limitazioni come l'autenticazione che non è disponibile con sharding prima della versione 1.9.1, così come sempre eseguire una valutazione del rischio e costruire un modello di minaccia per risolvere i vostri bisogni di sicurezza e le minacce affrontate è una buona idea. In base a questo output, i database MongoDB o NoSQL in generale potrebbero non essere adatti alle proprie esigenze, oppure potrebbe essere necessario utilizzarlo in un modo diverso per massimizzarne i vantaggi e minimizzarne i punti deboli (ad esempio per estratti di dati piuttosto che per le informazioni più sensibili, o dietro un numero di livelli di controlli di rete piuttosto che direttamente collegati alla tua applicazione web.
Detto questo, credo fermamente che i principi di sicurezza siano indipendenti dalla tecnologia. Se si analizzano anche gli ultimi attacchi e una buona lista su datalossdb.org è sorprendente quanti siano ancora legati alle password predefinite e alle patch mancanti. Con la difesa approfondita se segui le seguenti pratiche dovresti avere una sicurezza sufficiente per proteggere la maggior parte delle risorse (ad es. Individuale, commerciale) forse probabilmente non militare.
Principi di protezione dei database:
Poche cose molto iniziali da ricordare sono:
in realtà sono applicabili a tutti i servizi DataStorage
PS: esperienza di mongodb molto limitata
Ecco una lista di controllo per la sicurezza di MongoDB
Abilita autenticazione - Anche se hai distribuito i tuoi server Mongodb in una rete affidabile, è buona norma per la sicurezza abilitare l'autenticazione. Ti fornisce "Difesa in profondità" se la tua rete è compromessa. Modifica il tuo file di configurazione mongod per abilitare l'autenticazione
Non esporre la tua produzione db a Internet - Limitare l'accesso fisico al tuo database è un aspetto importante della sicurezza. Se non è necessario, non esporre il database di produzione a Internet. In caso di qualsiasi compromesso se un utente malintenzionato non può connettersi fisicamente al tuo server MongoDB, i tuoi dati sono molto più sicuri. Se sei su AWS puoi inserire i tuoi db in una sottorete privata VPC. Leggi il post sul blog Distribuzione di MongoDB in un VPC per ulteriori informazioni.
Usa i firewall: usa i firewall per limitare quali altre entità sono autorizzate a connettersi al tuo server mongodb. La migliore pratica consiste nel consentire solo ai server delle applicazioni di accedere al database. Se sei ospitato su AWS, usa "Gruppi di sicurezza" per limitare l'accesso. Se sei ospitato su un provider che non supporta i costrutti del firewall, puoi configurarlo facilmente usando "iptables". Fare riferimento alla documentazione di mongodb per configurare iptables per il proprio scenario.
Usa i file chiave per configurare il set di repliche - Specifica un file di chiavi condivise per abilitare la comunicazione tra le istanze di mongodb in un set di repliche. Per abilitare questo aggiungi il parametro keyfile al file di configurazione come sotto. Il contenuto del file deve essere uguale su tutte le macchine.
Disabilita l'interfaccia di stato HTTP Mongodb fornisce di default un'interfaccia http attiva di default sulla porta 28017 che fornisce la pagina di stato "casa". Questa interfaccia non è raccomandata per l'uso in produzione ed è meglio disabilitata. Utilizzare l'impostazione di configurazione "nohttpinterface" per disabilitare l'interfaccia http.
Disabilita l'interfaccia REST L'interfaccia REST di monogdb non è raccomandata per la produzione. Non supporta alcuna autenticazione. È disattivato per impostazione predefinita. Se lo hai acceso usando l'opzione di configurazione "resto", dovresti spegnerlo per i sistemi di produzione.
Configura Bind_ip Se il tuo sistema ha più interfacce di rete puoi usare l'opzione "bind_ip" per limitare il tuo server mongodb ad ascoltare solo sulle interfacce rilevanti. Di default mongodb si collegherà a tutte le interfacce
Abilita SSL - Se non si utilizza SSL, i dati viaggiano tra il client Mongo e il server Mongo non crittografati e sono soggetti a intercettazioni, manomissioni e attacchi "man in the middle". Questo è particolarmente importante se ti connetti al tuo server Mongodb su reti non sicure come Internet.
Autorizzazione basata sui ruoli - MongoDB supporta l'autenticazione basata sui ruoli per fornire un controllo accurato sulle azioni che possono essere eseguite da ciascun utente. Utilizza i costrutti basati sui ruoli per limitare l'accesso invece di rendere tutti gli amministratori degli utenti. Fare riferimento alla documentazione dei ruoli per ulteriori dettagli.
Enterprise mongodb & Kerberos Enterprise mongodb si integra con Kerberos per l'autenticazione. Fare riferimento alla documentazione di mongodb per ulteriori dettagli. I sistemi di nome utente / password sono intrinsecamente insicuri: se possibile, utilizzare l'autenticazione basata sui cordoli.
Dichiarazione di non responsabilità: sono il fondatore di scalegrid.io
Inoltre, ti consiglio di crittografare i dati mongodb a riposo come indicato dagli altri commenti. È possibile utilizzare LUKS (Linux unified key setup) per configurare la crittografia a livello di volume.