Forekomsten af databrud er ikke længere overraskende. Baseret på den netop udgivne FBI-cyberkriminalitetsrapport har ofre for cyberkriminalitet kumulativt mistet hele 4,2 milliarder dollars i 2020, hvilket er 700 millioner dollars mere end de rapporterede tab i 2019. Især usikre MongoDB-databaser har været en del af problemet, der har ført til betydelige databrud . I februar 2019 fik et e-mail-verifikationsservicefirma deres MongoDB-database brudt, og det afslørede 763 millioner poster inklusive e-mail-adresser, telefonnumre, IP-adresser og fødselsdatoer. Årsagen er en offentlig vendt MongoDB-instans uden adgangskode.
Manglende godkendelse, ingen begrænsning af porte på firewallen eller manglende sikring af data under overførsel kan føre til et databrud. I denne blog vil vi diskutere, hvordan du forbereder og sikrer din MongoDB-database i et produktionsmiljø.
Godkendelse og godkendelse
Godkendelse og godkendelse er to forskellige ting, men de hænger sammen. Autentificering betyder, at brugeren har adgang til MongoDB-databasen, mens autorisation tillader brugeren at få adgang til ressourcen inde i databasen.
Standardinstallationen for godkendelse i MongoDB er deaktiveret. MongoDB understøtter flere godkendelser, f.eks.:SCRAM, x.509 Certificate Authentication. Standarden i MongoDB er SCRAM (Salted Challenge Response Authentication Mechanism), som verificerer den leverede legitimationsadgang med brugernavnet, adgangskoden og godkendelsesdatabasen.
Før du aktiverer godkendelse, skal du oprette en superbruger i MongoDB med rollen userAdminAnyDatabase. Når den er færdig, skal vi blot åbne filen /etc/mongod.conf og finde afsnittet om sikkerhed. Standarden er deaktiveret, vi skal bare aktivere.
security:
authorization: "disabled"
Genstart MongoDB-tjenesten for at anvende konfigurationsændringerne. Vi kan også konfigurere RBAC (Role Based Access Control) inde i MongoDB-databasen for bedre sikkerhed relateret til brugeren. Så vi adskiller adgangen til databasen baseret på brugeren og privilegier.
Netværkssegmentering
Netværkssegmentering er et vigtigt aspekt, når vi designer databasearkitektur, det gælder for alle databaser, ikke kun for MongoDB. Det er en bedste praksis, at vi adskiller netværket for databasen. Vi sætter databaseserveren op i et privat netværk, hvor den ikke kan nås fra internettet.
Kommunikationen til databasen sker på det private netværk, og når brugeren ønsker at tilgå databasen, kan de bruge VPN eller en jumphost. Udover netværkssegmentering spiller begrænsning af porten også en nøglerolle, vi åbner databaseporten, der er specifik for det segmenterede netværk for at kontrollere den indgående og udgående netværkstrafik. Så vi ved, at den indgående trafik er fra den betroede kildeadresse.
Datakryptering
Et andet område, vi skal tage et kig på, er datakryptering. Datakryptering er en metode, hvor informationen kodes til en anden form under transmissionen og gemmes i databasen.
Datakryptering dækker over:
-
Data i transit:data i transmissionstilstand
-
Data i hvile:data gemt på disk. Der er forskellige typer af datakryptering i hvile, vi kan bruge kryptering på databaseniveau, eller vi kan bruge kryptering i lagerlaget.
Aktivering af SSL/TLS fra klienterne og MongoDB-serveren og mellem MongoDB-noderne (i replicaset og sharded cluster-arkitektur), vil sikre dataene under overførsel. Dataoverførslen vil ikke være i almindelig tekst.
Der er forskellige krypteringsværktøjer og funktioner til kryptering af data i hvile, for eksempel; AWS leverer EBS diskkryptering kombineret med KMS (Key Management Service) på lageret, mens Enterprise-udgaven af MongoDB på databaselaget leverer databasekrypteringen i hvile.
Databaserevision
Implementering af en revisionsdatabase for MongoDB giver overblik over, hvad der kører inde i databasen; fx:fra hvilken bruger, og hvilken kommando der blev udført, og kilden til ip-adressen. Vi kan kombinere disse logfiler og oprette regler baseret på autorisationsadgangen. Vi kan opdage, om der er en utilsigtet bruger, der kører et eller andet script i MongoDB. Vi kan se afsnittet auditLog.
auditLog:
destination: syslog
Vi kan sende MongoDB-revisionsloggen ind i syslog-filerne og skubbe loggene ind i Log Management. Vil du have flere tips til at sikre MongoDB? Se denne video for at få en bedre forståelse af bedste praksis for at sikre din MongoDB-database
Konklusion
Implementering af sikkerhedsstandarder for MongoDB er et must, især for et produktionsmiljø. Vi kan ikke acceptere ethvert tab og brud på de data, der er gemt i databasen.