Als het gaat om het beheren van databasesystemen, is databasebeveiliging een cruciaal aspect. Het niet leggen van een goede basis voor beveiliging van een databasesysteem kan leiden tot een datalek waarbij een derde partij ongeautoriseerde toegang tot het systeem krijgt. Bijgevolg kunnen gebeurtenissen als deze leiden tot schade aan de merkreputatie, boetes en straffen voor niet-naleving, gecompromitteerd intellectueel eigendom of zelfs tot sluiting van het bedrijf.
MongoDB, de meest populaire NoSQL-database, biedt een reeks tools, controles en maatregelen die zijn geformuleerd om een basis te leggen voor de drie pijlers van informatiebeveiliging:vertrouwelijkheid, integriteit en beschikbaarheid. Gegevensbeveiliging wordt het vaakst aangetast op het vertrouwelijkheidsniveau vanwege de grotere bruikbaarheid en toegang.
Welke soorten gegevens moet u beschermen
Net als andere databases omvat MongoDB twee soorten gegevens:
- Gegevens in rust — Dit zijn gegevens die zijn opgeslagen op de schijf van het bestandssysteem.
- Gegevens in transit — Dit houdt in dat gegevens via een netwerk worden verplaatst, bijvoorbeeld tussen de database en een applicatie.
Om uw gegevens in een database te beschermen, moeten uw beveiligingsmaatregelen het volgende adresseren:
- Gegevens in de databasebestanden.
- Toepassingen die zijn gekoppeld aan de database.
- De computer- en netwerkinfrastructuur die wordt gebruikt om toegang te krijgen tot de database.
- De fysieke databaseserver en de onderliggende hardware.
MongoDB-beveiligingschecklist
Voordat u uw MongoDB-productie-implementatie instelt, moet u rekening houden met een minimale beveiligingsstandaard om ervoor te zorgen dat uw implementatie veilig is. Bekijk de volgende MongoDB-beveiligingschecklist om
-
Geef het authenticatiemechanisme op door de toegangscontrole in te schakelen . Voordat toegang tot de database wordt verleend, is het essentieel om de identiteit van de gebruiker te verifiëren. MongoDB ondersteunt in dit geval twee mechanismen:de eerste is Salted Challenge Response Authentication Mechanism (SCRAM), het standaard authenticatiemechanisme in MongoDB. Het verifieert de opgegeven referenties (gebruikersnaam en wachtwoord) aan de hand van de authenticatiedatabase, en X.509-certificaatauthenticatie wordt gebruikt voor zowel clientauthenticatie als interne authenticatie van replicasetleden en sharded-clusters.
-
Op rollen gebaseerde toegangscontrole instellen . Elke applicatie of persoon die toegang heeft tot de database moet een unieke identiteit hebben die is aangemaakt door de gebruikersbeheerder. Definieer rollen met exacte toegangsrechten en wijs ze toe aan gebruikers die de bewerkingen moeten uitvoeren.
-
Communicatie tussen mongod, mongos, applicaties en MongoDB moet worden versleuteld . De codering wordt bereikt via TLS/SSL-configuratie.
-
Gegevensbescherming . Als u de WiredTiger-opslagengine gebruikt voor gegevens in rust, kunt u de gegevens versleutelen met encryptie in rust. Als u een andere opslagengine gebruikt, versleutelt u de gegevens met behulp van het bestandssysteem, fysieke versleuteling of apparaatversleuteling en voegt u de machtigingen voor het bestandssysteem toe. Verder kunt u velden in documenten versleutelen met de versleuteling op veldniveau aan de clientzijde voordat gegevens van de server worden doorgegeven.
-
Beveiligd bedrijfsnetwerk . MongoDB zou in een vertrouwde netwerkomgeving moeten draaien, zodat alleen vertrouwde clients toegang hebben tot de netwerkinterface en poorten. U kunt dit bereiken door directe SSH-roottoegang uit te schakelen en de installatie te configureren met beveiligingsgroepen voor inkomend en uitgaand verkeer naar de MongoDB-instanties.
-
Systeemactiviteiten controleren . Het bijhouden van gebruikerstoegangsactiviteiten tot de database is erg belangrijk. De audit stelt beheerders in staat de juiste controles uit te voeren en een goede forensische analyse mogelijk te maken. Sommige auditfaciliteiten, zoals de MongoDB Enterprise, bieden filters voor specifieke gebeurtenissen, zoals authenticatiegebeurtenissen, om de gegevens die moeten worden geanalyseerd te verminderen.
-
Beveiligde configuratie-opties inschakelen bij het uitvoeren van MongoDB . Het is raadzaam om het gebruik van JavaScript-code die door MongoDB wordt ondersteund, zoals mapReduce, $where en $function, te beperken. U kunt deze opties volledig uitschakelen met de optie --noscripting. Valideer invoervelden met behulp van modules zoals mangoest. Bovendien kunt u net.writeObjectCheck gebruiken om ervoor te zorgen dat alle documenten die zijn opgeslagen door de mongod-instantie geldige BSON zijn.
-
Voer MongoDB uit met een toegewijde gebruiker . Het is niet de moeite waard om MongoDB uit te voeren op een besturingssysteem dat voor meerdere gebruikers toegankelijk is. Voor de zekerheid moet MongoDB worden beheerd door een speciaal systeemgebruikersaccount dat machtigingen heeft voor toegang tot gegevens, maar geen onnodige machtigingen die de gegevensintegriteit in gevaar kunnen brengen.
Slechte MongoDB-beveiligingspraktijken om te vermijden
De laatste tijd is er een toename van het aantal hackincidenten in de database, met name MongoDB. Dit is niet omdat MongoDB niet voldoet aan de normen om beveiligingsproblemen aan te pakken, maar eerder omdat ontwikkelaars de best practices op het gebied van beveiliging niet volgen.
MongoDB is een open-source DBMS, wat betekent dat sommige ontwikkelaars de ins en outs misschien beter kennen dan anderen. Dit betekent niet altijd dat uw database het risico loopt van externe inmenging, tenzij u in een van de volgende fouten valt:
-
De standaardpoorten gebruiken . Er is niets mis met het gebruik van de standaardpoorten (27017 en 27018), maar u kunt soms vergeten de beveiligingsgroepen in te stellen die verantwoordelijk zijn voor het beheer van het verkeer naar uw systeem. Hackers zullen altijd eerst proberen toegang te krijgen tot de database met standaardpoorten voordat ze iets anders proberen. U kunt MongoDB op een andere poort uitvoeren met de poortoptie, d.w.z. $mongo -poort 23456. De aanbevolen manier is echter om de configuratie in het bestand /etc/mongod.conf te wijzigen door de onderstaande regel te bewerken met het poortnummer van uw voorkeur:
net: port:27017
MongoDB werkt standaard zonder authenticatie, wat vaak een probleem was voor nieuwe implementaties die in productie gaan. Het niet inschakelen van authenticatie betekent dat iedereen gemakkelijk toegang heeft tot de database. Maak altijd een gebruiker met op rollen gebaseerde toegangsrechten voor interactie met de MongoDB-database. -
Onjuiste opslag van gebruikersreferenties . Sommige ontwikkelaars coderen de gebruikersnaam en wachtwoordgegevens hard in het project, en wanneer ze deze openbaar maken, kan iedereen er toegang toe krijgen, waardoor de database kwetsbaar wordt.
-
Fout om databasetoegang te beperken tot bekende netwerkapparaten . In dit geval moet men altijd de databasetoegang beperken tot alleen bekende applicaties en load balancers via een witte lijst. Dit beperkt de beschikbaarheid van de database voor onbekende netwerken die een veiligheidsrisico kunnen vormen.
-
SSL-gebruik vermijden . SSL-authenticatie is zeer cruciaal om ervoor te zorgen dat alleen vertrouwde verbindingen de database bereiken.
-
Laat LDAP niet gebruiken voor wachtwoordwisselingen . LDAP koppelt gebruikers aan een bedrijfsdirectory, zodat wanneer hun rol verandert of ze het bedrijf verlaten, de wijzigingen automatisch van toepassing zijn op de databasegroep. Dit zorgt ervoor dat hun toegang tot gegevens wordt beperkt tot de rol waaraan ze opnieuw zijn toegewezen of volledig wordt beperkt als ze het bedrijf verlaten.
Netwerkinfrastructuur versterken
Vaak beginnen beveiligingsrisico's op het niveau van netwerkblootstelling, omdat dit het gemakkelijkst toegankelijke deel is voor de meeste hackers. Naast ervoor te zorgen dat alleen vertrouwde hosts toegang hebben tot MongoDB, kunt u de beveiliging verbeteren door middel van netwerkverharding. Netwerkverharding omvat twee procedures met betrekking tot MongoDB:
-
Firewalls . Firewalls worden gebruikt om inkomend verkeer van niet-vertrouwde hosts te beperken die de MongoDB-database anders zouden blootstellen aan externe indringers. Voor Windows-besturingssystemen biedt de opdrachtregelinterface van netsh toegang tot de Windows Firewall. Op Linux-systemen biedt de iptables-interface toegang tot de onderliggende netfilter-firewall. De firewall filtert niet-vertrouwde hosts uit en zorgt ervoor dat alleen verkeer van vertrouwde bronnen mongod &mongos kan bereiken, naast het maken van een verbinding met de vertrouwde outputs.
-
Virtuele privénetwerken (VPN's) . Met VPN's kunnen twee netwerken verbinding maken via een gecodeerd en vertrouwd netwerk met beperkte toegang. Ze doen dit door te voorzien in certificaatvalidatie en een keuze aan coderingsprotocollen die een streng authenticatieniveau en identificatie van alle klanten kunnen vereisen. VPN's bieden een veilige tunnel; vandaar dat verbindingen die met behulp van VPN's met de MongoDB-instantie zijn gemaakt, sabotage en man-in-the-middle-aanvallen kunnen voorkomen.
Afronden
Zoals bij alle open-source databases, moet beveiliging een topprioriteit zijn voor uw MongoDB-infrastructuur. Het implementeren van uw MongoDB-database met standaardinstellingen is een duidelijk pad naar een beveiligingsramp. Daarom is het van cruciaal belang om volledig te begrijpen hoe beveiliging binnen MongoDB werkt en om alle best practices te volgen om maximale beveiliging te garanderen. Het belangrijkste is dat het controleren van gebruikersactiviteiten, zoals authenticatie, een venster biedt op het identificeren van mazen en het plannen voor de toekomst voordat het noodlot toeslaat.
Tools zoals ClusterControl helpen u het giswerk uit databasebeveiliging te halen en ervoor te zorgen dat uw MongoDB-implementaties altijd het respectieve beveiligingsmodel volgen. Met ClusterControl kunt u eenvoudig uw databases, toegangscontrole en versleuteling configureren voor gegevens in rust en onderweg. Download ClusterControl vandaag nog en start uw gratis proefperiode van 30 dagen om te zien hoe ClusterControl u kan helpen bij het beheren en verbeteren van de beveiliging van uw MongoDB-database, als u dat nog niet heeft gedaan.