MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Migliori pratiche per la sicurezza di MongoDB

Quando si tratta di gestire i sistemi di database, un aspetto cruciale è la sicurezza del database. La mancata creazione di una buona base per la sicurezza di qualsiasi sistema di database può comportare una violazione dei dati per cui un intruso di terze parti avrà accesso non autorizzato ad esso. Di conseguenza, eventi come questo possono causare danni alla reputazione del marchio, multe e sanzioni per non conformità, compromissione della proprietà intellettuale o addirittura portare alla chiusura dell'attività.

MongoDB, il database NoSQL più popolare, fornisce una gamma di strumenti, controlli e misure formulati per fornire una base per i tre pilastri della sicurezza delle informazioni:riservatezza, integrità e disponibilità. La sicurezza dei dati è spesso compromessa a livello di riservatezza a causa di una maggiore usabilità e accesso.

Quali tipi di dati dovresti proteggere

Come altri database, MongoDB include due tipi di dati:

  1. Dati inattivi:sono i dati archiviati nel disco del file system.
  2. Dati in transito:implica lo spostamento dei dati attraverso una rete, ad esempio tra il database e un'applicazione.

Per proteggere i tuoi dati all'interno di qualsiasi database, le tue misure di sicurezza devono riguardare:

  • Dati nei file di database.
  • Applicazioni associate al database.
  • L'infrastruttura informatica e di rete utilizzata per accedere al database.
  • Il server di database fisico e l'hardware sottostante.

Elenco di controllo per la sicurezza di MongoDB

Prima di configurare la distribuzione di produzione MongoDB, è necessario considerare uno standard minimo di sicurezza per garantire che la distribuzione sia sicura. Dai un'occhiata al seguente elenco di controllo di sicurezza di MongoDB per

  1. Specificare il meccanismo di autenticazione abilitando il controllo accessi . Prima di consentire l'accesso al database, è essenziale verificare l'identità dell'utente. MongoDB supporta due meccanismi in questo caso:il primo è Salted Challenge Response Authentication Mechanism (SCRAM), che è il meccanismo di autenticazione predefinito in MongoDB. Verifica le credenziali fornite (nome utente e password) rispetto al database di autenticazione e l'autenticazione del certificato X.509 viene utilizzata sia per l'autenticazione del client che per l'autenticazione interna dei membri del set di repliche e dei cluster partizionati.

  2. Stabilire il controllo degli accessi basato sui ruoli . Ogni applicazione o persona che ha accesso al database dovrebbe avere un'identità univoca creata dall'amministratore utente. Definisci ruoli con diritti di accesso esatti e assegnali agli utenti che devono eseguire le operazioni.

  3. La comunicazione tra mongod, mongos, applicazioni e MongoDB deve essere crittografata . La crittografia viene ottenuta tramite la configurazione TLS/SSL.

  4. Protezione dei dati . Se si utilizza il motore di archiviazione WiredTiger per i dati inattivi, è possibile crittografare i dati utilizzando la crittografia inattivi. Se si utilizza un motore di archiviazione diverso, crittografare i dati utilizzando la crittografia del file system, fisica o del dispositivo e aggiungere le autorizzazioni del file system. Inoltre, puoi crittografare i campi all'interno dei documenti con la crittografia a livello di campo lato client prima di trasferire i dati dal server.

  5. Rete operativa sicura . MongoDB dovrebbe essere eseguito su un ambiente di rete affidabile in modo tale che solo i client affidabili possano avere accesso all'interfaccia di rete e alle porte. Puoi ottenere questo risultato disabilitando l'accesso root SSH diretto e configurando la configurazione con i gruppi di sicurezza per il traffico in entrata e in uscita verso le istanze MongoDB.

  6. Attività del sistema di controllo . Tenere traccia delle attività di accesso degli utenti al database è molto importante. L'audit consente agli amministratori di esercitare controlli adeguati e consentire un'analisi forense adeguata. Alcune funzionalità di controllo come MongoDB Enterprise forniscono filtri per eventi specifici come gli eventi di autenticazione per ridurre i dati che devono essere analizzati.

  7. Abilita opzioni di configurazione sicure durante l'esecuzione di MongoDB . È consigliabile limitare l'utilizzo del codice JavaScript supportato da MongoDB come mapReduce, $where e $function. Puoi disattivare completamente queste opzioni utilizzando l'opzione --noscripting. Convalida i campi di input utilizzando moduli come la mangusta. Inoltre, puoi utilizzare net.writeObjectCheck per assicurarti che tutti i documenti archiviati dall'istanza mongod siano BSON validi.

  8. Esegui MongoDB con un utente dedicato . Non vale la pena eseguire MongoDB su un sistema operativo a cui possono accedere più utenti. Per sicurezza, MongoDB dovrebbe essere eseguito da un account utente di sistema dedicato che dispone delle autorizzazioni per accedere ai dati ma non di autorizzazioni non necessarie che potrebbero compromettere l'integrità dei dati.

Pratiche di sicurezza MongoDB scadenti da evitare

Recentemente, c'è stato un aumento degli incidenti di hacking del database, in particolare MongoDB. Questo non perché MongoDB non soddisfi gli standard per affrontare i problemi di sicurezza, ma piuttosto perché gli sviluppatori non hanno seguito le migliori pratiche di sicurezza.

MongoDB è un DBMS open source, il che significa che alcuni sviluppatori potrebbero conoscere i dettagli più di altri. Ciò non significa sempre che il tuo database sia a rischio di intrusione esterna a meno che tu non commetta uno dei seguenti errori:

  1. Utilizzo delle porte predefinite . Non c'è niente di sbagliato nell'usare le porte predefinite (27017 e 27018), ma a volte potresti dimenticare di impostare i gruppi di sicurezza responsabili della gestione del traffico nel tuo sistema. Gli hacker proveranno sempre ad accedere al database con le porte predefinite prima di provare qualcos'altro. È possibile eseguire MongoDB su una porta diversa con l'opzione della porta, ad esempio $mongo –port 23456. Tuttavia, il modo consigliato è modificare la configurazione nel file /etc/mongod.conf modificando la riga seguente con il numero di porta preferito:

    net:
    	port:27017


    MongoDB, per impostazione predefinita, viene eseguito senza autenticazione, il che è stato spesso un problema per le nuove distribuzioni che entrano in produzione. La mancata abilitazione dell'autenticazione significa che chiunque può accedere al database con facilità. Crea sempre un utente con autorizzazioni di accesso basate sui ruoli per interagire con il database MongoDB.

  2. Memorizzazione delle credenziali utente non corretta . Alcuni sviluppatori codificano le credenziali di nome utente e password nel progetto e, quando le rendono pubbliche, chiunque può accedervi, rendendo il database vulnerabile.

  3. Impossibile limitare l'accesso al database ai dispositivi di rete noti . In questo caso, si dovrebbe sempre limitare l'accesso al database solo per conoscere le applicazioni e i bilanciatori di carico tramite una whitelist. Ciò limita la disponibilità del database a reti sconosciute che potrebbero rappresentare una minaccia per la sicurezza.

  4. Evitare l'utilizzo di SSL . L'autenticazione SSL è fondamentale per garantire che solo connessioni affidabili accedano al database.

  5. Impossibile utilizzare LDAP per la rotazione delle password . LDAP lega gli utenti a una directory aziendale in modo tale che quando il loro ruolo cambia o lasciano l'azienda, le modifiche si applicano automaticamente al gruppo di database. Ciò garantisce che il loro accesso ai dati sarà limitato al ruolo a cui sono stati riassegnati o completamente limitato se lasciano l'azienda.

Rafforzamento dell'infrastruttura di rete

Molte volte, le minacce alla sicurezza iniziano a livello di esposizione della rete perché questa è la parte più facilmente accessibile per la maggior parte degli hacker. Oltre a garantire che solo host affidabili abbiano accesso a MongoDB, puoi migliorare la sicurezza attraverso il rafforzamento della rete. Il rafforzamento della rete prevede due procedure per quanto riguarda MongoDB:

  1. Firewall . I firewall vengono utilizzati per limitare il traffico in entrata da host non attendibili che altrimenti esporrebbero il database MongoDB a intrusioni esterne. Per i sistemi operativi Windows, l'interfaccia della riga di comando netsh fornisce l'accesso a Windows Firewall. Sui sistemi Linux, l'interfaccia iptables fornisce l'accesso al firewall netfilter sottostante. Il firewall filtrerà gli host non attendibili e garantirà che solo il traffico proveniente da fonti attendibili possa raggiungere mongod &mongos oltre a creare una connessione con gli output attendibili.

  2. Reti private virtuali (VPN) . Le VPN consentono a due reti di collegarsi su una rete affidabile crittografata e ad accesso limitato. Lo fanno fornendo la convalida del certificato e una scelta di protocolli di crittografia che potrebbero richiedere un livello rigoroso di autenticazione e l'identificazione di tutti i clienti. Le VPN forniscono un tunnel sicuro; quindi le connessioni create all'istanza MongoDB utilizzando le VPN possono prevenire manomissioni e attacchi man-in-the-middle.

Conclusione

Come per tutti i database open source, la sicurezza dovrebbe essere una priorità assoluta per la tua infrastruttura MongoDB. La distribuzione del database MongoDB con le impostazioni predefinite è un percorso chiaro verso un disastro di sicurezza. Pertanto, è fondamentale comprendere appieno come funziona la sicurezza all'interno di MongoDB e seguire tutte le migliori pratiche per garantire la massima sicurezza. Soprattutto, il controllo delle attività degli utenti, come l'autenticazione, fornisce una finestra per identificare le scappatoie e pianificare il futuro prima che si verifichi un disastro.

Strumenti come ClusterControl ti aiutano a eliminare le congetture dalla sicurezza del database e a garantire che le tue implementazioni MongoDB seguano sempre il rispettivo modello di sicurezza. Con ClusterControl, puoi configurare facilmente i tuoi database, i controlli di accesso e la crittografia per i dati inattivi e in transito. Se non l'hai già fatto, scarica ClusterControl oggi e inizia la tua prova gratuita di 30 giorni per vedere come ClusterControl può aiutarti a gestire e migliorare la sicurezza del tuo database MongoDB.