Hackers worden steeds geavanceerder en weten hoe ze kwetsbaarheden kunnen misbruiken. Als je gevoelige gegevens in je MongoDB-database hebt, is het cruciaal om serieus met beveiliging om te gaan. Maar hoe? Maak je geen zorgen! Deze tutorial heeft je gedekt!
In deze tutorial leer je hoe je je MongoDB-databases kunt beschermen en hackers kunt afweren door beveiligingsmaatregelen in te stellen.
Lees verder en begin controle te krijgen over de beveiliging van je MongoDB!
Vereisten
- Deze tutorial zal een praktische demonstratie zijn. Zorg ervoor dat je het volgende hebt om mee te doen:
- Geïnstalleerde MongoDB op je Linux-machine.
- A non-root user with
sudo
privileges.
Creëer een toegewijde beheerdersgebruiker
MongoDB heeft geen ingebouwd authenticatiesysteem. Standaard heeft iedereen met toegang tot de database volledige beheerprivileges, wat te gevaarlijk is! Hoe beveilig je je database? Je zult een gebruiker met beheerdersrechten aanmaken en de databases vergrendelen voor die beheerdersgebruiker.
Deze opstelling stelt u in staat om een enkel toegangspunt voor gebruikers met beheerdersrechten te bieden, terwijl wordt beperkt wat elke gebruiker binnen de database kan doen. Bijvoorbeeld, ontwikkelaars moeten alleen-lezen toegang hebben tot databases, terwijl beheerders gegevens kunnen maken en bewerken.
1. Open uw terminal en voer de onderstaande mongo
opdracht uit zonder enige argumenten. Met deze opdracht kunt u verbinding maken met uw MongoDB-shell als de standaard beheerdersgebruiker.
Deze beheerdersgebruiker is krachtig omdat hij volledige lees/schrijftoegang heeft tot alle databases op de server, en het is het beste om deze gebruiker niet te gebruiken voor dagelijkse werkzaamheden.
U krijgt een waarschuwing die zegt Toegangscontrole is niet ingeschakeld…, zoals hieronder weergegeven.
Deze waarschuwing geeft aan dat iedereen die toegang heeft tot de MongoDB-server de acties kan uitvoeren die ze willen met de databases. Deze acties omvatten onder andere het verwijderen, laten vallen en bijwerken van databases.
Deze waarschuwing verschijnt omdat u de toegangscontrole nog niet hebt ingeschakeld. Maak u er nu geen zorgen over. U leert hoe u toegangscontrole kunt inschakelen in de volgende sectie.

2. Voer vervolgens de show dbs
opdracht uit om alle databases op de server weer te geven, inclusief de admin databases die een normale gebruiker niet zou moeten zien.

3. Voer de onderstaande use admin
opdracht uit om over te schakelen naar de admin database, aangezien je je richt op het maken van een toegewijde beheerdersgebruiker. Deze opdracht wijzigt de context van je huidige database om de admin database te gebruiken, zoals hieronder wordt weergegeven.
MongoDB gebruikt de admin database om toegangscontrole regels op te slaan en ingebouwde authenticatie, gebruikersnamen en wachtwoorden te verstrekken voor gebruikers en hun rollen. Je kunt de admin database niet verwijderen of hernoemen omdat deze essentieel is voor de functionaliteit van de database.

4. Kopieer en plak nu de onderstaande code naar de mongo shell en druk op Enter. Deze code maakt een gebruiker genaamd AdminATA
aan, met een wachtwoord van LDWbPf6Fy9Ezs3Mv
, maar je kunt verschillende referenties gebruiken zoals je wilt.
Deze nieuwe gebruiker heeft lees/schrijf (readWriteAnyDatabase
) toegang tot alle databases en beheerdersrechten tot alle collecties. Maar deze gebruiker heeft geen drop/verwijder database machtigingen en kan de machtigingen van andere gebruikers niet verwijderen of wijzigen.
Na het uitvoeren van de opdracht en als je een foutmelding krijgt, controleer dan je code opnieuw en probeer het opnieuw.
5. Geef een veilig wachtwoord op wanneer daarom wordt gevraagd, zoals hieronder wordt getoond, en druk op Enter.

Hieronder zie je een bericht Succesvol gebruiker toegevoegd. Deze output bevestigt dat je succesvol een gebruiker met beheerdersrechten hebt aangemaakt en deze hebt beperkt tot de minimaal vereiste privileges.
Op dit punt heb je al een beheerdersgebruiker genaamd AdminATA die alles kan doen wat je nodig hebt in de database zonder toegang te geven aan iedereen.

6. Voer ten slotte het exit-commando uit om de mongo shell te verlaten.

Beveiliging toevoegen door authenticatie in te schakelen
Nu je een beheerdersgebruiker hebt, voeg je nog een laag beveiliging toe door authenticatie in te schakelen. Hierdoor krijgen alleen gebruikers met de juiste referenties toegang tot de database.
Authenticatie verwijst naar het proces van het valideren van een verbinding, meestal door het verstrekken van een gebruikersnaam en wachtwoord of door het gebruik van een authenticatietoken. Authenticatie zorgt ervoor dat je bent wie je zegt dat je bent en niet een bedrieger die probeert toegang te krijgen tot bronnen.
1. Schakel authenticatie in door het bewerken van het MongoDB configuratiebestand met het volgende, en sla de wijzigingen op:
- Open het /etc/mongod.conf bestand in je favoriete teksteditor. Het /etc/mongod.conf bestand bevat de configuratie van je MongoDB cluster.
- Zoek naar en verwijder het commentaar bij de #security directive door het # symbool voor de directive te verwijderen, zoals hieronder getoond. Deze directive vertelt MongoDB om de beveiligingsinstellingen in het configuratiebestand te zoeken.
- Voeg een nieuwe regel toe onder de security directive die zegt authorization: enabled. Let op dat de regel authorization: enabled is ingesprongen (heeft twee spaties aan het begin), zoals hieronder getoond.

2. Voer vervolgens de volgende systemctl
commando uit om de MongoDB-server te herstarten zodat de wijzigingen van kracht worden.
3. Voer tot slot het onderstaande commando uit om de status van je MongoDB-service te bekijken.
Hieronder zie je een regel die zegt Actief: actief (lopend) in groene tekst, wat aangeeft dat je MongoDB-server draait en klaar is om verbindingen te accepteren.

Het testen of authenticatie werkt
Je hebt net authenticatie ingeschakeld, maar hoe weet je of het werkt? Je zult inloggen op de beheerdersgebruiker om te testen en ervoor te zorgen dat je authenticatie werkt door databases te bekijken.
1. Voer de volgende opdrachten uit om toegang te krijgen tot de mongo
shell zoals je deed in de sectie “Het aanmaken van een toegewijde beheerdersgebruiker” (stap één).
Zoals je hieronder kunt zien, ontvang je niet langer de waarschuwing Toegangsbeheer is niet ingeschakeld… over het inschakelen van authenticatie. In plaats daarvan krijg je een bericht dat je de versie van je MongoDB-server en MongoDB-shell vertelt.

2. Voer vervolgens het show dbs
commando opnieuw uit om te controleren of je nog steeds toegang hebt tot de database.
Het commando zou je alle databases moeten laten zien, zelfs de admin-database. Maar zoals je hieronder ziet, wordt er niets weergegeven. Waarom niet? Het bekijken van de lijst met databases is een voorrecht dat alleen is voorbehouden aan beheerdersgebruikers.
Je hebt je mongo shell niet geauthenticeerd om de Admin-rol te gebruiken, dus je bent niet gemachtigd om de lijst met databases te bekijken.

Met authenticatie ingeschakeld zal de verbinding mislukken als iemand probeert toegang te krijgen tot de database met een verbindingsreeks die niet de juiste referenties bevat.
Authenticatie van verbindingsreeksen is een essentieel onderdeel van de beveiliging van MongoDB, en je moet authenticatie implementeren op alle lagen van de applicatie. Alle verbindingen met MongoDB moeten een verificatiereeks gebruiken bestaande uit referenties. Deze referenties omvatten de juiste gebruikersnaam en wachtwoord.
3. Voer het exit
-commando uit om de MongoDB-shell te verlaten.
4. Voer nu het onderstaande commando uit om in te loggen op de MongoDB-shell met de gebruikersnaam (-u
) en wachtwoord (-p
) van je nieuw aangemaakte beheerdersgebruiker. Vervang AdminATA
door de gebruikersnaam die je hebt aangemaakt in de sectie “Een toegewijde beheerdersgebruiker maken” (stap vier).
De parameter --authenticationDatabase
vertelt de MongoDB-shell om zich te authenticeren tegen de admin
-database.
5. Geef je wachtwoord voor je beheerdersgebruiker wanneer daarom wordt gevraagd.


6. Voer ten slotte opnieuw het show dbs
-commando uit om te proberen te zien of je alle databases kunt bekijken.
Deze keer, zoals je hieronder ziet, verschijnt de lijst met databases omdat je een beheerdersgebruiker bent.

Conclusie
In deze zelfstudie heb je geleerd hoe je verbinding kunt maken om een beheerdersgebruiker te maken en authenticatie kunt inschakelen. Je hebt geleerd hoe je controle kunt krijgen over de beveiliging van je MongoDB en beperkingen kunt opleggen aan wie toegang heeft tot databases op je server.
Op dit punt kun je beslissen wie toegang heeft tot wat. Dus wat is jouw volgende stap? Misschien leren hoe je een MongoDB-container veilig kunt gebruiken?