MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да конфигурирам AppArmor за комплекти реплики на MongoDB?

Има много секции и слоеве на сигурност, ако говорим за втвърдяване на бази данни. Започва от криптиране на основния диск за съхранение, привилегии за достъп до база данни, удостоверяване, контрол на достъпа до мрежата, данни при предаване чрез SSL/TLS и също така заздравяване на самата операционна система.

Укрепването на операционните системи може също да има много контролни списъци, като деактивиране или премахване на сървърни услуги, които няма да се използват и използвани, деактивиране на SSH root влизане, разрешаване на rsyslog, ограничаване на достъпа чрез roots акаунт от конзолата, позволяваща одит на системата и активиране на SELinux.

Друга част от контролните списъци за сигурност е услугата AppArmor. Apparmor е система за задължителен контрол на достъпа (MAC) за целите на сигурността, която по подразбиране е включена в базирани на Ubuntu и Debian операционни системи, също е подобна на SELinux на базирани на Redhat или CentOS операционни системи. Целта на AppArmor е да блокира уязвимия процес в операционната система и да ограничи щетите от уязвимости в сигурността.

Например, ако базата данни MongoDB бъде публикувана случайно в интернет и е имало някакъв  зловреден софтуер, който е заразил сървъра на базата данни и е задействал някакъв злонамерен код, който MongoDB възнамерява да изпълни, AppArmor ще предотврати такова изпълнение като профилът на MongoDB вече е конфигуриран да чете, изпълнява и записва само в конкретни MongoDB файлове.

 В този блог ще обсъдим внедряването на AppArmor за набори реплики на MongoDB.

Разгръщане на база данни

Ако внедрявате комплекти реплики на MongoDB, ClusterControl може да улесни живота ви. Просто трябва да преминем през две страници за внедряване и след това ClusterControl ще бъде готов да разположи комплекта реплики на MongoDB. Има опции за деактивиране на SELinux/AppArmor по време на внедряването, както можете да видите по-долу:

Можем да деактивираме опцията за AppArmor/SELinux. След това попълнете IP адреса на възлите на базата данни, паролата на администратора и версията на MongoDB, която искаме да разположим.

След като MongoDB Replica Set бъде разгърнат, можем да преминем към всеки сървър на възли за конфигуриране на AppArmor.

Настройки на AppArmor

Всеки процес е ограничен от профили в AppArmor. Има две опции, при които профилът може да бъде стартиран, който е режимът на прилагане и режимът на оплакване. Когато се използва режимът за налагане, той не позволява на приложението да предприема ограничени действия, докато за режима на оплакване позволява на приложението да предприема ограничени действия и да създаде записа в журнала. Всеки профил се съхранява в директория /etc/apparmor.d

Можем да проверим състоянието на услугата AppArmor, като изпълним следната команда:

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

Той ще ви даде информация за списъка с профили, които са заредени, колко профили и процеси в режим на оплакване и режим на прилагане. Можем да използваме командата apparmor_parser, за да заредим профила в ядрото :

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

И за да деактивираме профила, просто трябва да създадем символна връзка към директорията /etc/apparmor.d/disable.

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

За да активирате отново профила, просто премахнете символната връзка и презаредете профила отново.

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

Активиране на AppArmor за комплекти реплики на MongoDB

Преди да използваме AppArmor в нашите комплекти реплики на MongoDB, трябва да дефинираме профила за MongoDB, да регистрираме двоичната услуга mongodb, директориите с данни и регистрационните файлове и да разрешим достъп до мрежата и операционната система. Можем също да дефинираме разрешението за всяка директория, двоичен файл и файлове. По-долу е даден примерен профил на услугата 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.
}

Можем да поставим горния профил на MongoDB във файла /etc/apparmor.d/usr.bin.mongod и след това да стартираме apparmor_parser, за да заредим профила.

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

Ако проверим с помощта на apparmor_status, той ще даде информация за профила на 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

 

Вече можем да повторим стъпките, описани по-горе, на всеки възел от нашия набор от реплики MongoDB, за да направим процеса на MongoDB ограничен и защитен от AppArmor.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Можете ли да поставите mongo $push преди вместо добавяне?

  2. Какви са правилата за плурализиране на Mongoose (Nodejs)?

  3. Пълно и частично текстово търсене в MongoDB

  4. Намерете записи на MongoDB, където полето на масива не е празно

  5. TypeError:ObjectId('') не може да се сериализира в JSON