sql >> Databáze >  >> NoSQL >> MongoDB

Jak nakonfigurovat AppArmor pro sady replik MongoDB?

Pokud mluvíme o posílení databází, existuje mnoho sekcí a vrstev zabezpečení. Začíná to šifrováním základního úložného disku, přístupovými právy k databázi, autentizací, řízením přístupu k síti, přenosem dat pomocí SSL/TLS a také posílením samotného operačního systému.

Posilování operačních systémů může mít také mnoho kontrolních seznamů, jako je deaktivace nebo odebrání služeb serveru, které nebudou používány a využívány, deaktivace SSH root přihlášení, povolení rsyslog, omezení přístupu pomocí root účtu z konzole, umožňující auditování systému a povolení SELinux.

Další součástí bezpečnostních kontrolních seznamů je služba AppArmor. Apparmor je systém povinného řízení přístupu (MAC) pro bezpečnostní účely, který je standardně součástí operačních systémů založených na Ubuntu a Debianu, je také podobný SELinuxu na operačních systémech založených na Redhat nebo CentOS. Cílem AppArmor je uzamknout zranitelný proces v operačním systému a omezit poškození bezpečnostních zranitelností.

Pokud je například databáze MongoDB omylem zveřejněna na internetu a existuje nějaký malware, který infikoval databázový server a spustil nějaký škodlivý kód, který má MongoDB v úmyslu spustit, AppArmor zabrání takovému spuštění, např. profil MongoDB je již nakonfigurován tak, aby četl, spouštěl a zapisoval pouze do konkrétních souborů MongoDB.

 V tomto blogu probereme implementaci AppArmor pro sady replik MongoDB.

Nasazení databáze

Pokud nasazujete sady replik MongoDB, ClusterControl vám může usnadnit život. Potřebujeme projít dvě stránky nasazení a pak bude ClusterControl připraven nasadit sadu MongoDB Replica Set. Existují možnosti pro Deaktivovat SELinux/AppArmor během nasazení, jak můžete vidět níže:

Možnost pro AppArmor/SELinux můžeme zakázat. A pak vyplňte IP adresu databázových uzlů, heslo správce a verzi MongoDB, kterou chceme nasadit.

Po nasazení sady replik MongoDB můžeme přejít na každý uzelový server pro konfiguraci AppArmor.

Nastavení AppArmor

Každý proces je omezen profily v AppArmor. Existují dvě možnosti, kde lze profil spustit, a to režim vynucení a režim reklamace. Když se používá režim vynucení, zabraňuje aplikaci provádět omezené akce, zatímco v režimu stížnosti umožňuje aplikaci provádět omezené akce a vytvářet záznam protokolu. Každý profil je uložen v adresáři /etc/apparmor.d

Stav služby AppArmor můžeme zkontrolovat spuštěním následujícího příkazu:

[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.

Dá vám informace o seznamu profilů, které se načítají, kolik profilů a procesů v režimu reklamace a vynucení. K načtení profilu do jádra můžeme použít příkaz apparmor_parser:

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

A abychom profil deaktivovali, stačí vytvořit symbolický odkaz na adresář /etc/apparmor.d/disable.

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

Chcete-li profil znovu aktivovat, jednoduše odstraňte symbolický odkaz a znovu načtěte profil.

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

Povolení AppArmor pro sady replik MongoDB

Než použijeme AppArmor na našich sadách replik MongoDB, musíme definovat profil pro MongoDB, zaregistrovat binární službu mongodb, datové adresáře a soubory protokolu a povolit určitý přístup k síti a operačnímu systému. Můžeme také definovat oprávnění pro každý adresář, binární soubor a soubory. Níže je ukázkový profil služby MongoDB:

#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.
}

Výše uvedený profil MongoDB můžeme vložit do souboru /etc/apparmor.d/usr.bin.mongod a poté spustit apparmor_parser pro načtení profilu.

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

Pokud zkontrolujeme pomocí apparmor_status, poskytne informace o profilu MongoDB, který byl načten:

[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

 

Nyní můžeme zopakovat výše uvedené kroky na každém uzlu naší sady replik MongoDB, aby byl proces MongoDB omezen a zabezpečen aplikací AppArmor.


  1. Získejte název měsíce z data v SQL

  2. MongoDB $allElementsTrue

  3. Jak převést seznam casbah mongodb na json ve scala / play

  4. Resque on Heroku cedar stack Počet pracovníků stále existuje i po ukončení pracovníka