Lavorare da remoto a causa della pandemia di Covid-19 significa aumentare l'importanza delle infrastrutture isolate; in particolare quelli a cui si può accedere solo attraverso una rete interna, ma in modo che le persone autorizzate dal mondo esterno possano accedere al sistema sempre e ovunque.
In questo articolo condivideremo alcuni passaggi di base che devi implementare con MongoDB per garantire un accesso sicuro durante l'amministrazione del database.
Protezione di MongoDB
Prima di accedere in remoto al database MongoDB, è necessario eseguire un "hardening" dell'ambiente. Impostare quanto segue sul lato infrastruttura:
Abilita l'autenticazione MongoDB
Questa funzione è obbligatoria per abilitare, indipendentemente dal fatto che si voglia accedere al database MongoDB dalla rete interna o da una rete esterna. Prima di abilitare l'autorizzazione, devi prima creare un utente amministratore in MongoDB. Puoi eseguire il comando seguente per creare un utente amministratore nel tuo server mongoDB:
$ mongo
> use admin
> db.createUser(
{
user: "admin",
pwd: "youdontknowmyp4ssw0rd",
roles: [ "root" ]
}
);
Il comando sopra creerà un nuovo utente chiamato admin con privilegi di root. Puoi abilitare la funzione MongoDB Auth aprendo il file /etc/mongod.conf e quindi aggiungendo la seguente riga:
security:
authorization: 'enabled'
Non dimenticare di riavviare il servizio mongoDB per applicare le modifiche. Il comando sopra limiterà l'accesso al database, solo chi ha le credenziali di accesso che sono idonee ad accedere.
Imposta ruoli e privilegi
Per prevenire l'uso improprio dell'accesso a MongoDB, possiamo implementare l'accesso basato sui ruoli creando diversi ruoli e relativi privilegi.
Assicurati di avere un elenco di utenti che devono accedere al database e comprendere le esigenze e le responsabilità di ciascuno. Crea ruoli e assegna i privilegi a questi ruoli creati. Successivamente, puoi assegnare al tuo utente un ruolo in base alle responsabilità.
Questo approccio ci aiuta a ridurre al minimo l'abuso di autorità e a identificare immediatamente il ruolo e l'utente quando accade qualcosa di indesiderato.
Configura una connessione SSL/TLS
MongoDB supporta le connessioni SSL/TLS per la protezione dei dati in transito. Per implementarlo, devi generare la tua chiave SSL, puoi generarla usando openssl. Per abilitare il supporto SSL/TLS, puoi modificare il file /etc/mongod.conf e aggiungere il seguente parametro:
net:
tls:
mode: requireTLS
certificateKeyFile: /etc/mongo/ssl/mongodb.pem
Dopo aver aggiunto questi parametri, è necessario riavviare il servizio MongoDB. Se si dispone dell'architettura del set di repliche MongoDB, è necessario applicarli su ciascun nodo. SSL è necessario anche quando il client accede a MongoDB, dal lato dell'applicazione o direttamente dal client.
Per l'uso in produzione, dovresti utilizzare certificati validi generati e firmati da un'unica autorità di certificazione. Tu o la tua organizzazione potete generare e mantenere certificati come autorità di certificazione indipendente o utilizzare certificati generati da fornitori TLS/SSL di terze parti. Impedisci l'utilizzo di un certificato autofirmato, a meno che non sia una rete affidabile.
Limita la porta del database
Devi assicurarti che solo la porta MongoDB sia aperta sul server firewall o sull'appliance firewall, assicurati che non siano aperte altre porte.
Protezione della connessione MongoDB
La connessione remota tramite Internet pubblico presenta il rischio che i dati vengano trasmessi dagli utenti locali al server del database e viceversa. Gli aggressori possono interrompere l'interconnessione, che in questo caso è nota come attacco MITM (Min-in-The-Middle). La sicurezza della connessione è molto necessaria quando gestiamo / amministriamo il database in remoto, alcune cose che possiamo applicare per proteggere il nostro accesso al database sono le seguenti:
Accesso alla rete privata
VPN (Virtual Private Network) è una delle cose fondamentali quando vogliamo accedere alla nostra infrastruttura dall'esterno in modo sicuro. VPN è una rete privata che utilizza reti pubbliche per accedere ai siti remoti. La configurazione della VPN richiede hardware che deve essere preparato sul lato della rete privata, inoltre il client necessita anche di un software VPN che supporti l'accesso alla rete privata.
Oltre all'utilizzo della VPN, un altro modo per accedere al server MongoDB è il port forwarding della porta del database tramite SSH, o meglio noto come SSH Tunneling.
Utilizza SSL/TLS dal client al server database
Oltre a implementare l'accesso sicuro tramite VPN o SSH Tunneling, possiamo utilizzare SSL / TLS precedentemente configurato sul lato MongoDB. Hai solo bisogno della chiave SSL che hai e prova a connetterti al database usando la chiave SSL.
Abilita il monitoraggio del database
È essenziale abilitare il servizio di monitoraggio per comprendere lo stato attuale dei database. Il server di monitoraggio può essere installato sotto il dominio pubblico con SSL / TLS abilitato, quindi l'accesso automatico al browser può utilizzare HTTP.
Conclusione
È davvero divertente lavorare da casa, puoi interagire con i tuoi figli e allo stesso tempo monitorare il tuo database. Devi seguire le linee guida di cui sopra per assicurarti di non essere attaccato o rubato i dati quando accedi al tuo database da remoto.