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.