sql >> Database >  >> NoSQL >> MongoDB

Hoe AppArmor configureren voor MongoDB-replicasets?

Er zijn veel secties en beveiligingslagen als we het hebben over de verharding van databases. Het begint met de versleuteling van de onderliggende opslagschijf, toegangsrechten tot de database, authenticatie, netwerktoegangscontrole, gegevens die worden verzonden met SSL/TLS en ook het verharden van het besturingssysteem zelf.

De verharding van de besturingssystemen kan ook veel checklists hebben, zoals het uitschakelen of verwijderen van serverservices die niet worden gebruikt en gebruikt, het uitschakelen van de SSH-rootlogin, het inschakelen van rsyslog, het beperken van toegang met behulp van een rootaccount van de console, systeemcontrole inschakelen en SELinux inschakelen.

Een ander onderdeel van beveiligingschecklists is de AppArmor-service. Apparmor is een Mandatory Access Control (MAC)-systeem voor beveiligingsdoeleinden dat standaard is opgenomen in op Ubuntu en Debian gebaseerde besturingssystemen, het is ook vergelijkbaar met SELinux op Redhat of CentOS gebaseerde besturingssystemen. Het doel van AppArmor is om het kwetsbare proces in het besturingssysteem af te sluiten en de schade door beveiligingsproblemen te beperken.

Als de MongoDB-database bijvoorbeeld per ongeluk op internet wordt gepubliceerd en er malware is die de databaseserver heeft geïnfecteerd en schadelijke code heeft geactiveerd die MongoDB van plan is uit te voeren, zal de AppArmor deze uitvoering voorkomen als het MongoDB-profiel is al geconfigureerd om alleen in specifieke MongoDB-bestanden te lezen, uit te voeren en te schrijven.

 In deze blog bespreken we de AppArmor-implementatie voor MongoDB-replicasets.

Database-implementatie

Als u MongoDB-replicasets implementeert, kan ClusterControl uw leven gemakkelijker maken. We hoeven alleen maar twee implementatiepagina's te doorlopen en dan is ClusterControl klaar om de MongoDB Replica Set te implementeren. Er zijn opties om SELinux/AppArmor uit te schakelen tijdens de implementatie, zoals je hieronder kunt zien:

We kunnen de optie voor AppArmor/SELinux uitschakelen. En vul vervolgens het IP-adres van de databaseknooppunten, het beheerderswachtwoord en de MongoDB-versie in die we willen implementeren.

Nadat de MongoDB-replicaset is geïmplementeerd, kunnen we in elke node-server springen voor configuratie van AppArmor.

AppArmor-instellingen

Elk proces wordt beperkt door profielen in AppArmor. Er zijn twee opties waar het profiel kan worden uitgevoerd, namelijk de handhavingsmodus en de klachtenmodus. Wanneer de afdwingingsmodus in gebruik is, wordt voorkomen dat de toepassing beperkte acties onderneemt, terwijl voor de klachtenmodus de toepassing beperkte acties kan ondernemen en de logboekinvoer kan maken. Elk profiel wordt opgeslagen in de map /etc/apparmor.d

We kunnen de status van de AppArmor-service controleren door het volgende commando uit te voeren:

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

Het geeft je informatie over de lijst met profielen die zijn geladen, hoeveel profielen en processen in de klachtenmodus en de handhavingsmodus. We kunnen het apparmor_parser commando gebruiken om het profiel in de kernel te laden:

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

En om het profiel uit te schakelen, hoeven we alleen maar een symbolische link naar de directory /etc/apparmor.d/disable te maken.

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

Om het profiel weer in te schakelen, verwijdert u de symbolische link en laadt u het profiel opnieuw.

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

AppArmor inschakelen voor MongoDB-replicasets

Voordat we AppArmor op onze MongoDB-replicasets gebruiken, moeten we het profiel voor MongoDB definiëren, de mongodb binaire service, gegevensmappen en de logbestanden registreren en enige netwerk- en besturingssysteemtoegang toestaan. We kunnen ook de toestemming voor elke map, binair en de bestanden definiëren. Hieronder vindt u een voorbeeldprofiel van de MongoDB-service:

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

We kunnen het bovenstaande MongoDB-profiel in het bestand /etc/apparmor.d/usr.bin.mongod plaatsen en vervolgens de apparmor_parser uitvoeren om het profiel te laden.

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

Als we controleren met behulp van de apparmor_status, zal het informatie geven over het MongoDB-profiel dat is geladen:

[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

 

We kunnen nu de hierboven beschreven stappen herhalen op elk knooppunt van onze MongoDB-replicaset om het MongoDB-proces te beperken en te beveiligen door AppArmor.


  1. Rdbtools bij Redis Conf18

  2. Hoofdletterongevoelig sorteren in MongoDB

  3. Mongoose retourneert altijd een lege array NodeJS

  4. Hoe Redis-sleutels in serie met Java te repareren