sql >> Database teknologi >  >> NoSQL >> MongoDB

Hvordan konfigureres AppArmor til MongoDB Replica Sets?

Der er mange sektioner og lag af sikkerhed, hvis vi taler om hærdning af databaser. Det starter med kryptering af den underliggende lagerdisk, databaseadgangsrettigheder, autentificering, netværksadgangskontrol, data i transmission ved hjælp af SSL/TLS og også hærdning af selve operativsystemet.

Hærdningen af ​​operativsystemerne kan også have mange tjeklister, såsom deaktivering eller fjernelse af servertjenester, der ikke vil blive brugt og brugt, deaktivering af SSH root-login, aktivering af rsyslog, begrænsning af adgang ved hjælp af roots-konto fra konsollen, aktiverer systemrevision og aktiverer SELinux.

En anden del af sikkerhedstjeklister er AppArmor-tjenesten. Apparmor er et obligatorisk adgangskontrolsystem (MAC) til sikkerhedsformål, som som standard er inkluderet på Ubuntu- og Debian-baserede operativsystemer, det ligner også SELinux på Redhat- eller CentOS-baserede operativsystemer. Formålet med AppArmor er at spærre den sårbare proces i operativsystemet og begrænse skaderne af sikkerhedssårbarheder.

For eksempel, hvis MongoDB-databasen ved et uheld er udgivet på internettet, og der var noget malware, der inficerede databaseserveren og udløste noget ondsindet kode, som MongoDB har til hensigt at udføre, vil AppArmor forhindre sådan eksekvering som f.eks. MongoDB-profilen er allerede konfigureret til kun at læse, udføre og skrive i specifikke MongoDB-filer.

 I denne blog vil vi diskutere AppArmor-implementeringen til MongoDB replikasæt.

Databaseimplementering

Hvis du implementerer MongoDB replikasæt, kan ClusterControl gøre dit liv lettere. Vi skal blot gennemgå to implementeringssider, og så vil ClusterControl være klar til at implementere MongoDB Replica Set. Der er muligheder for at deaktivere SELinux/AppArmor under installationen, som du kan se nedenfor:

Vi kan deaktivere indstillingen for AppArmor/SELinux. Og udfyld derefter databasenodernes IP-adresse, admin-adgangskode og den MongoDB-version, vi ønsker at implementere.

Efter MongoDB Replica Set er implementeret, kan vi hoppe ind i hver nodeserver til konfiguration af AppArmor.

AppArmor-indstillinger

Hver proces er begrænset af profiler i AppArmor. Der er to muligheder, hvor profilen kan køres, som er håndhævelsestilstanden og klagetilstanden. Når håndhævelsestilstanden er i brug, forhindrer den applikationen i at udføre begrænsede handlinger, mens den for klagetilstanden tillader applikationen at udføre begrænsede handlinger og oprette logposten. Hver profil er gemt i mappen /etc/apparmor.d

Vi kan kontrollere status for AppArmor-tjenesten ved at køre følgende kommando:

[email protected]:/etc/apparmor.d# apparmor_status
apparmor module is loaded.
15 profiles are loaded.
15 profiles are in enforce mode.
   /sbin/dhclient
   /usr/bin/lxc-start
   /usr/bin/man
   /usr/lib/NetworkManager/nm-dhcp-client.action
   /usr/lib/NetworkManager/nm-dhcp-helper
   /usr/lib/connman/scripts/dhclient-script
   /usr/lib/snapd/snap-confine
   /usr/lib/snapd/snap-confine//mount-namespace-capture-helper
   /usr/sbin/tcpdump
   lxc-container-default
   lxc-container-default-cgns
   lxc-container-default-with-mounting
   lxc-container-default-with-nesting
   man_filter
   man_groff
0 profiles are in complain mode.
0 processes have profiles defined.
0 processes are in enforce mode.
0 processes are in complain mode.
0 processes are unconfined but have a profile defined.

Det vil give dig information om listen over profiler, der er indlæst, hvor mange profiler og processer i klagetilstanden og håndhævelsestilstand. Vi kan bruge apparmor_parser-kommandoen til at indlæse profilen i kernen :

[email protected]: cat /etc/apparmor.d/profile.name | sudo apparmor_parser -a

Og for at deaktivere profilen skal vi blot oprette et symbolsk link til mappen /etc/apparmor.d/disable.

[email protected]: ln -s /etc/apparmor.d/profile.name /etc/apparmor.d/disable

For at genaktivere profilen skal du blot fjerne det symbolske link og genindlæse profilen igen.

[email protected]:  rm /etc/apparmor.d/disable/profile.name cat /etc/apparmor.d/profile.name | apparmor_parser -a

Aktivering af AppArmor for MongoDB Replica Sets

Før vi bruger AppArmor på vores MongoDB-replikasæt, skal vi definere profilen for MongoDB, registrere den binære mongodb-tjeneste, datamapper og logfilerne og tillade en vis netværks- og operativsystemadgang. Vi kan også definere tilladelsen for hver mappe, binær og filerne. Nedenfor er et eksempel på en profil af MongoDB-tjenesten:

#include <tunables/global>

/usr/sbin/mongod {
  #include <abstractions/base>
  #include <abstractions/nameservice>
  #include <abstractions/user-tmp>
  #include <abstractions/winbind>

# Allow system resource access
  /sys/devices/system/cpu/ r,
  /sys/devices/system/node/ r,
  /sys/devices/system/node/** r,
  /proc/*/status r,
  capability sys_resource,
  capability dac_override,
  capability setuid,
  capability setgid,
  capability sys_nice,

# Allow network access
  network tcp,
  /etc/hosts.allow r,
  /etc/hosts.deny r,

# Allow config access
  /etc/mongod.conf r,

# Allow pid, socket, socket lock file access
  /var/run/mongod.pid rw,

# Allow systemd notify messages
  /{,var/}run/systemd/notify w,


# Allow execution of server binary
  /usr/sbin/mongo mr,
  /usr/sbin/mongod mr,
  /usr/sbin/mongos mr,
  /usr/sbin/mongotop mr,
  /usr/sbin/mongorestore mr,
  /usr/sbin/mongoimport mr,
  /usr/sbin/mongofiles mr,
  /usr/sbin/mongodump mr,

# Allow data files dir access
  /var/lib/mongodb/ r,
  /var/lib/mongodb/** rwk,

# Allow log file access
  /var/log/mongodb/ r,
  /var/log/mongodb/** rw,

# Allow access to openssl config
  /etc/mongo-cluster.key r,

  # Site-specific additions and overrides. See local/README for details.
}

Vi kan lægge ovenstående MongoDB-profil ind i filen /etc/apparmor.d/usr.bin.mongod og derefter køre apparmor_parseren for at indlæse profilen.

[email protected]: cat /etc/apparmor.d/usr.bin.mongod | sudo apparmor_parser -a

Hvis vi tjekker ved at bruge apparmor_status, vil den give information om MongoDB-profilen, som er blevet indlæst:

[email protected]:/etc/apparmor.d# apparmor_status
apparmor module is loaded.

57 profiles are loaded.
19 profiles are in enforce mode.
   /sbin/dhclient
   /usr/bin/lxc-start
   /usr/bin/man
   /usr/lib/NetworkManager/nm-dhcp-client.action
   /usr/lib/NetworkManager/nm-dhcp-helper
   /usr/lib/chromium-browser/chromium-browser//browser_java
   /usr/lib/chromium-browser/chromium-browser//browser_openjdk
   /usr/lib/chromium-browser/chromium-browser//sanitized_helper
   /usr/lib/connman/scripts/dhclient-script
   /usr/lib/snapd/snap-confine
   /usr/lib/snapd/snap-confine//mount-namespace-capture-helper
   /usr/sbin/mongod
   /usr/sbin/tcpdump
   lxc-container-default
   lxc-container-default-cgns
   lxc-container-default-with-mounting
   lxc-container-default-with-nesting
   man_filter
   man_groff
38 profiles are in complain mode.
   /usr/bin/mongod
   /usr/lib/chromium-browser/chromium-browser
   /usr/lib/chromium-browser/chromium-browser//chromium_browser_sandbox
   /usr/lib/chromium-browser/chromium-browser//lsb_release
   /usr/lib/chromium-browser/chromium-browser//xdgsettings

 

Vi kan nu gentage trinene skitseret ovenfor på hver node i vores MongoDB replikasæt for at gøre MongoDB-processen begrænset og sikret af AppArmor.


  1. MongoDB Samlet sum af hver nøgle på et underdokument

  2. Forskellen mellem id- og _id-felter i MongoDB

  3. MongoEngine Document Object lavet ved hjælp af from_json gemmer ikke

  4. Låsning og Redis