Gli hacker stanno diventando più sofisticati e sanno come sfruttare le vulnerabilità. Se hai dati sensibili nel tuo database MongoDB, è fondamentale prendere sul serio la sicurezza. Ma come? Non preoccuparti! Questo tutorial ti copre!
In questo tutorial imparerai a proteggere i tuoi database MongoDB e a scongiurare gli hacker impostando misure di sicurezza.
Continua a leggere e inizia a prendere il controllo della tua sicurezza MongoDB!
Prerequisiti
- Questo tutorial sarà una dimostrazione pratica. Per seguire, assicurati di avere quanto segue:
- MongoDB installato sulla tua macchina Linux.
- Un utente non root con
sudo
privilegi.
Creazione di un utente amministrativo dedicato
MongoDB non ha alcun sistema di autenticazione integrato. Per impostazione predefinita, chiunque abbia accesso al database ha privilegi amministrativi completi:troppo pericoloso! Come proteggere il tuo database? Creerai un utente con privilegi di amministratore e bloccherai i database per quell'utente amministratore.
Questa configurazione consente di fornire un unico punto di accesso utente con privilegi di amministratore limitando le operazioni che ciascun utente può fare all'interno del database. Ad esempio, gli sviluppatori dovrebbero avere accesso in sola lettura ai database, mentre gli amministratori possono creare e modificare i dati.
1. Apri il tuo terminale ed esegui il mongo
comando seguente senza argomenti. Questo comando ti consente di connetterti alla tua shell MongoDB come utente amministratore predefinito.
Questo utente amministratore è potente in quanto ha pieno accesso in lettura/scrittura a tutti i database sul server ed è meglio evitare di utilizzare questo utente per il lavoro quotidiano.
mongo
Verrà visualizzato un avviso che dice Il controllo di accesso non è abilitato …., come mostrato di seguito.
Questo avviso indica che chiunque possa accedere al server MongoDB può eseguire le azioni desiderate con i database. Queste azioni includono, a titolo esemplificativo, l'eliminazione, l'eliminazione e l'aggiornamento dei database.
Questo avviso viene visualizzato perché non hai ancora abilitato il controllo dell'accesso. Non preoccuparti, per ora. Imparerai come abilitare il controllo degli accessi nella sezione seguente.
2. Quindi, esegui show dbs
comando per mostrare tutti i database sul server, incluso l'admin database che un utente normale non dovrebbe vedere.
show dbs
3. Esegui use admin
comando seguente per passare al database di amministrazione poiché l'obiettivo è creare un utente amministrativo dedicato. Questo comando modifica il contesto del database corrente per utilizzare il database di amministrazione, come mostrato di seguito.
MongoDB utilizza il database di amministrazione per archiviare le regole di controllo dell'accesso e fornire autenticazione, nomi utente e password integrati per gli utenti e i loro ruoli. Non puoi eliminare o rinominare il database di amministrazione perché è essenziale per la funzionalità del database.
use admin
4. Ora copia e incolla il codice qui sotto nella shell mongo e premi Invio. Questo codice crea un utente chiamato AdminATA
, con una password LDWbPf6Fy9Ezs3Mv
, ma puoi utilizzare credenziali diverse come preferisci.
Questo nuovo utente ha letto/scritto (readWriteAnyDatabase
) accesso a tutti i database e accesso amministrativo a tutte le raccolte. Ma questo utente non ha privilegi di eliminazione/eliminazione del database e non può eliminare o modificare i privilegi di altri utenti.
Dopo aver eseguito il comando e viene visualizzato un errore, ricontrolla il codice e riprova.
# The db.createUser() method creates a new user on the current database, with the privileges specified by roles.
db.createUser(
{
# Specifying the username AdminATA, but you can enter whatever username you like
user: "AdminATA",
# The passwordPrompt() method is a universal helper function
# that tells the MongoDB shell to prompt you for a password for the AdminATA user.
pwd: passwordPrompt(),
# Specifying the roles you want your AdminATA user to have.
roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
}
)
5. Fornire una password sicura quando richiesto, come mostrato di seguito, e premere Invio.
Di seguito puoi vedere un Utente aggiunto con successo Messaggio. Questo output conferma che hai creato correttamente un utente con privilegi di amministratore e lo hai limitato ai privilegi minimi richiesti.
A questo punto, hai già un utente amministrativo chiamato AdminATA che può fare tutto ciò di cui hai bisogno sul database senza dare accesso a tutti.
6. Infine, esegui il comando exit per uscire dalla shell mongo.
exit
Aggiunta di sicurezza abilitando l'autenticazione
Ora che hai un utente amministratore, aggiungerai un altro livello di sicurezza abilitando l'autenticazione. In questo modo si consente l'accesso al database solo agli utenti con le credenziali corrette.
L'autenticazione si riferisce al processo di convalida di una connessione, in genere fornendo un nome utente e una password o utilizzando un token di autenticazione. L'autenticazione garantisce che tu sia chi dici di essere e non un impostore che tenta di accedere alle risorse.
1. Abilita l'autenticazione modificando il file di configurazione di MongoDB con quanto segue e salva le modifiche:
- Apri /etc/mongod.conf file nel tuo editor di testo preferito. Il /etc/mongod.conf contiene la configurazione del tuo cluster MongoDB.
- Cerca e decommenta il #security direttiva rimuovendo il # simbolo davanti alla direttiva, come mostrato di seguito. Questa direttiva dice a MongoDB di cercare l'impostazione di sicurezza nel file di configurazione.
- Aggiungi una nuova riga sotto il titolo direttiva che dice autorizzazione:abilitata . Tieni presente che l'autorizzazione:abilitata la linea è rientrata (ha due spazi all'inizio), come mostrato di seguito.
2. Quindi, esegui il seguente systemctl
comando per riavviare il server MongoDB affinché le modifiche abbiano effetto.
sudo systemctl restart mongod
3. Infine, esegui il comando seguente per visualizzare lo stato del tuo servizio MongoDB.
sudo systemctl status mongod
Di seguito, puoi vedere una riga che dice Attivo:attivo (in esecuzione) in verde, che indica che il tuo server MongoDB è in esecuzione e pronto ad accettare connessioni.
Verifica se l'autenticazione funziona
Hai appena abilitato l'autenticazione, ma come fai a sapere che funziona? Accederai all'utente amministrativo per testare e assicurarti che la tua autenticazione funzioni visualizzando i database.
1. Esegui i seguenti comandi per accedere a mongo
shell come hai fatto nella sezione "Creazione di un utente amministrativo dedicato" (passaggio uno).
mongo
Come puoi vedere di seguito, non ricevi più il Il controllo degli accessi non è abilitato... avviso sull'abilitazione dell'autenticazione. Invece, riceverai un messaggio che ti dice la versione del tuo server MongoDB e della shell MongoDB.
2. Quindi, riesegui show dbs
comando per verificare se è ancora possibile accedere al database.
show dbs
Il comando dovrebbe mostrarti tutti i database, anche il database di amministrazione. Ma come vedi di seguito, non viene visualizzato nulla. Come mai? La visualizzazione dell'elenco dei database è un privilegio riservato solo agli utenti amministrativi.
Non hai autenticato la tua mongo shell per utilizzare il ruolo Admin, quindi non sei autorizzato a visualizzare l'elenco dei database.
Con l'autenticazione abilitata, la connessione non riuscirà se qualcuno tenta di accedere al database utilizzando una stringa di connessione che non contiene le credenziali corrette.
L'autenticazione delle stringhe di connessione è una parte fondamentale della sicurezza di MongoDB e dovresti implementare l'autenticazione a tutti i livelli dell'applicazione. Tutte le connessioni a MongoDB devono utilizzare una stringa di autenticazione composta da credenziali. Queste credenziali includono il nome utente e la password corretti.
3. Esegui exit
comando per uscire dalla shell MongoDB.
exit
4. Ora, esegui il comando seguente per accedere alla shell MongoDB con il nome utente dell'utente amministrativo appena creato (-u
) e password (-p
). Sostituisci AdminATA
con il nome utente che hai creato nella sezione "Creazione di un utente amministrativo dedicato" (passaggio quattro).
Il --authenticationDatabase
Il parametro dice alla shell MongoDB di autenticarsi rispetto a admin
Banca dati.
mongo -u AdminATA -p --authenticationDatabase admin
5. Fornire la password per l'utente amministratore quando richiesto.
6. Infine, riesegui il show dbs
comando per provare a vedere se riesci a visualizzare tutti i database.
show dbs
Questa volta, come vedi di seguito, viene visualizzato l'elenco dei database poiché sei un utente amministratore.
Conclusione
In questo tutorial, hai imparato come connetterti per creare un utente amministrativo e abilitare l'autenticazione. Hai imparato a prendere il controllo della tua sicurezza MongoDB e a porre restrizioni su chi può accedere ai database sul tuo server.
A questo punto, puoi decidere se chi può accedere a cosa. Allora, qual è il prossimo passo per te? Forse impari come utilizzare un contenitore MongoDB in modo sicuro?