GNU/Linux >> Linux Esercitazione >  >> Linux

Come prendere il controllo della tua sicurezza MongoDB

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?


Linux
  1. Come aggiungere un utente al tuo desktop Linux

  2. Come puoi proteggere il tuo computer?

  3. Come creare un backup del tuo database tramite il pannello di controllo di Plesk

  4. Come creare un nuovo database o utente del database nel pannello di controllo di Plesk

  5. Regolatore di luminosità:prendi il controllo completo della luminosità del tuo monitor

Come controllare i privilegi utente MySQL in Linux

Come eseguire un backup del database MySQL dal pannello di controllo HELM?

Come aggiungere il database MySQL in SolidCP?

Come modificare la password utente del database

Come eseguire un backup del database su Plesk

Come installare WordPress sul pannello di controllo di Vesta