sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur konfigurerar man AppArmor för MongoDB Replica Sets?

Det finns många sektioner och säkerhetslager om vi pratar om hårdare databaser. Det utgår från krypteringen av den underliggande lagringsdisken, databasåtkomstprivilegier, autentisering, nätverksåtkomstkontroll, data vid sändning med SSL/TLS och även härdning av själva operativsystemet.

Härdningen av operativsystemen kan också ha många checklistor, som att inaktivera eller ta bort servertjänster som inte kommer att användas och utnyttjas, inaktivera SSH-rotinloggningen, aktivera rsyslog, begränsa åtkomst med hjälp av roots-kontot från konsolen, aktiverar systemrevision och aktiverar SELinux.

En annan del av säkerhetschecklistorna är AppArmor-tjänsten. Apparmor är ett obligatoriskt åtkomstkontrollsystem (MAC) för säkerhetsändamål som som standard ingår i Ubuntu- och Debianbaserade operativsystem, det liknar också SELinux på Redhat- eller CentOS-baserade operativsystem. Syftet med AppArmor är att låsa den sårbara processen i operativsystemet och begränsa skadorna av säkerhetssårbarheter.

Till exempel, om MongoDB-databasen av misstag publiceras på internet och det fanns någon skadlig programvara som infekterade databasservern och utlöste någon skadlig kod som MongoDB har för avsikt att köra, kommer AppArmor att förhindra exekvering som MongoDB-profilen är redan konfigurerad att endast läsa, köra och skriva i specifika MongoDB-filer.

 I den här bloggen kommer vi att diskutera AppArmor-implementeringen för MongoDB-replikuppsättningar.

Databasdistribution

Om du distribuerar MongoDB-replikuppsättningar kan ClusterControl göra ditt liv enklare. Vi behöver bara gå igenom två distributionssidor och sedan kommer ClusterControl att vara redo att distribuera MongoDB Replica Set. Det finns alternativ för att inaktivera SELinux/AppArmor under installationen som du kan se nedan:

Vi kan inaktivera alternativet för AppArmor/SELinux. Och fyll sedan databasnodernas IP-adress, administratörslösenord och MongoDB-versionen vi vill distribuera.

Efter att MongoDB Replica Set har distribuerats kan vi hoppa in i varje nodserver för konfiguration av AppArmor.

AppArmor-inställningar

Varje process är begränsad av profiler i AppArmor. Det finns två alternativ där profilen kan köras, vilket är verkställighetsläget och klagomålsläget. När verkställighetsläget används förhindrar det att programmet vidtar begränsade åtgärder, medan det för klagomålsläget tillåter programmet att vidta begränsade åtgärder och skapa loggposten. Varje profil lagras i katalogen /etc/apparmor.d

Vi kan kontrollera statusen för AppArmor-tjänsten genom att köra följande 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.

Den kommer att ge dig information om listan över profiler som laddas, hur många profiler och processer i klagomålsläget och verkställande läge. Vi kan använda apparmor_parser-kommandot för att ladda profilen till kärnan :

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

Och för att inaktivera profilen behöver vi bara skapa en symbolisk länk till katalogen /etc/apparmor.d/disable.

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

För att återaktivera profilen tar du bara bort den symboliska länken och laddar om profilen igen.

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

Aktivera AppArmor för MongoDB Replica Sets

Innan vi använder AppArmor på våra MongoDB-replikuppsättningar måste vi definiera profilen för MongoDB, registrera den binära tjänsten mongodb, datakataloger och loggfilerna och tillåta viss nätverks- och operativsystemåtkomst. Vi kan också definiera behörigheten för varje katalog, binär och filerna. Nedan är ett exempel på profilen för MongoDB-tjänsten:

#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ägga in MongoDB-profilen ovan i filen /etc/apparmor.d/usr.bin.mongod och sedan köra apparmor_parser för att ladda profilen.

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

Om vi ​​kontrollerar med apparmor_status kommer den att ge information om MongoDB-profilen som har laddats:

[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 upprepa stegen som beskrivs ovan på varje nod i vår MongoDB-replikuppsättning för att göra MongoDB-processen begränsad och säkrad av AppArmor.


  1. Hur kan jag använda LIKE-operatorn på mongoose?

  2. Hur man fångar undantag när man skapar MongoClient-instanser

  3. Redis pub/sub on rails

  4. Arbeta med specialtecken i en Mongo-samling