MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak skonfigurować AppArmor dla zestawów replik MongoDB?

Istnieje wiele sekcji i warstw zabezpieczeń, jeśli mówimy o utwardzaniu baz danych. Zaczyna się od szyfrowania podstawowego dysku, uprawnień dostępu do bazy danych, uwierzytelniania, kontroli dostępu do sieci, transmisji danych przy użyciu protokołu SSL/TLS, a także wzmocnienia samego systemu operacyjnego.

Wzmocnienie systemów operacyjnych może mieć również wiele list kontrolnych, takich jak wyłączanie lub usuwanie usług serwera, które nie będą używane i wykorzystywane, wyłączenie logowania root przez SSH, włączenie rsyslog, ograniczenie dostępu za pomocą konta root z konsoli, włączając audyt systemu i włączając SELinux.

Kolejną częścią list kontrolnych bezpieczeństwa jest usługa AppArmor. Apparmor to system obowiązkowej kontroli dostępu (MAC) ze względów bezpieczeństwa, który jest domyślnie zawarty w systemach operacyjnych opartych na Ubuntu i Debianie, jest również podobny do SELinux w systemach operacyjnych opartych na Redhat lub CentOS. Celem AppArmor jest zablokowanie wrażliwego procesu w systemie operacyjnym i ograniczenie uszkodzeń luk w zabezpieczeniach.

Na przykład, jeśli baza danych MongoDB zostanie przypadkowo opublikowana w Internecie i pojawiło się złośliwe oprogramowanie, które zainfekowało serwer bazy danych i uruchomiło złośliwy kod, który MongoDB zamierza wykonać, AppArmor uniemożliwi takie wykonanie, jak profil MongoDB jest już skonfigurowany do odczytu, wykonywania i zapisu tylko w określonych plikach MongoDB.

 W tym blogu omówimy implementację AppArmor dla zestawów replik MongoDB.

Wdrażanie bazy danych

Jeśli wdrażasz zestawy replik MongoDB, ClusterControl może ułatwić Ci życie. Wystarczy przejść przez dwie strony wdrażania, a ClusterControl będzie gotowy do wdrożenia zestawu replik MongoDB. Istnieją opcje Wyłącz SELinux/AppArmor podczas wdrażania, jak widać poniżej:

Możemy wyłączyć opcję dla AppArmor/SELinux. A następnie wypełnij adres IP węzłów bazy danych, hasło administratora i wersję MongoDB, którą chcemy wdrożyć.

Po wdrożeniu zestawu replik MongoDB możemy przejść do każdego serwera węzłów do konfiguracji AppArmor.

Ustawienia AppArmor

Każdy proces jest ograniczony przez profile w AppArmor. Istnieją dwie opcje, w których można uruchomić profil, czyli tryb wymuszania i tryb skargi. Gdy tryb wymuszania jest w użyciu, uniemożliwia aplikacji podejmowanie zastrzeżonych działań, podczas gdy w trybie skarg umożliwia aplikacji podejmowanie zastrzeżonych działań i tworzenie wpisu w dzienniku. Każdy profil jest przechowywany w katalogu /etc/apparmor.d

Możemy sprawdzić stan usługi AppArmor, uruchamiając następujące polecenie:

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

Dostarczy informacji o liście załadowanych profili, liczbie profili i procesów w trybie reklamacji i trybie egzekwowania. Możemy użyć polecenia apparmor_parser, aby załadować profil do jądra:

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

Aby wyłączyć profil, wystarczy utworzyć dowiązanie symboliczne do katalogu /etc/apparmor.d/disable.

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

Aby ponownie włączyć profil, po prostu usuń dowiązanie symboliczne i ponownie załaduj profil.

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

Włączanie AppArmor dla zestawów replik MongoDB

Zanim użyjemy AppArmor w naszych zestawach replik MongoDB, musimy zdefiniować profil dla MongoDB, zarejestrować usługę binarną mongodb, katalogi danych i pliki dziennika oraz zezwolić na dostęp do sieci i systemu operacyjnego. Możemy również zdefiniować uprawnienia dla każdego katalogu, pliku binarnego i plików. Poniżej znajduje się przykładowy profil usługi 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.
}

Możemy umieścić powyższy profil MongoDB w pliku /etc/apparmor.d/usr.bin.mongod, a następnie uruchomić apparmor_parser, aby załadować profil.

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

Jeśli sprawdzimy za pomocą apparmor_status, poda on informacje o załadowanym profilu MongoDB:

[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

 

Możemy teraz powtórzyć powyższe kroki na każdym węźle naszego zestawu replik MongoDB, aby proces MongoDB był ograniczony i zabezpieczony przez AppArmor.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Unikaj bieżącego parsera ciągu URL jest przestarzałe ostrzeżenie przez ustawienie useNewUrlParser na true

  2. Rosnące znaczenie MongoDB w dziedzinie nauki o danych

  3. PyMongo -- iteracja kursora

  4. Wypełnij zagnieżdżoną tablicę w manguście

  5. Jak zwiększyć wydajność operacji aktualizacji w Mongo?