sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Cómo configurar AppArmor para conjuntos de réplicas de MongoDB?

Hay muchas secciones y capas de seguridad si hablamos del fortalecimiento de las bases de datos. Comienza con el cifrado del disco de almacenamiento subyacente, los privilegios de acceso a la base de datos, la autenticación, el control de acceso a la red, la transmisión de datos mediante SSL/TLS y también el fortalecimiento del propio sistema operativo.

El endurecimiento de los sistemas operativos también puede tener muchas listas de verificación, como deshabilitar o eliminar los servicios del servidor que no se usarán y utilizarán, deshabilitar el inicio de sesión raíz SSH, habilitar rsyslog, restringir el acceso usando la cuenta raíz de la consola, habilitando la auditoría del sistema y habilitando SELinux.

Otra parte de las listas de verificación de seguridad es el servicio AppArmor. Apparmor es un sistema de control de acceso obligatorio (MAC) con fines de seguridad que, de manera predeterminada, se incluye en los sistemas operativos basados ​​en Ubuntu y Debian, también es similar a SELinux en los sistemas operativos basados ​​en Redhat o CentOS. El objetivo de AppArmor es bloquear el proceso vulnerable en el sistema operativo y restringir el daño de las vulnerabilidades de seguridad.

Por ejemplo, si la base de datos MongoDB se publica accidentalmente en Internet y hubo algún malware que infectó el servidor de la base de datos y activó algún código malicioso que MongoDB intenta ejecutar, AppArmor evitará dicha ejecución como el perfil MongoDB ya está configurado para leer, ejecutar y escribir solo en archivos MongoDB específicos.

 En este blog, analizaremos la implementación de AppArmor para conjuntos de réplicas de MongoDB.

Despliegue de base de datos

Si está implementando conjuntos de réplicas de MongoDB, ClusterControl puede facilitarle la vida. Solo tenemos que pasar por dos páginas de implementación y luego ClusterControl estará listo para implementar el conjunto de réplicas de MongoDB. Hay opciones para deshabilitar SELinux/AppArmor durante la implementación, como puede ver a continuación:

Podemos deshabilitar la opción para AppArmor/SELinux. Y luego complete la dirección IP de los nodos de la base de datos, la contraseña de administrador y la versión de MongoDB que queremos implementar.

Después de implementar el conjunto de réplicas de MongoDB, podemos saltar a cada servidor de nodo para la configuración de AppArmor.

Configuración de AppArmor

Todos los procesos están restringidos por perfiles en AppArmor. Hay dos opciones donde se puede ejecutar el perfil, que es el modo de aplicación y el modo de queja. Cuando el modo de aplicación está en uso, evita que la aplicación realice acciones restringidas, mientras que el modo de denuncia permite que la aplicación realice acciones restringidas y cree la entrada de registro. Cada perfil se almacena en el directorio /etc/apparmor.d

Podemos comprobar el estado del servicio AppArmor ejecutando el siguiente comando:

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

Le dará información sobre la lista de perfiles que están cargados, cuántos perfiles y procesos en el modo de denuncia y en el modo de cumplimiento. Podemos usar el comando apparmor_parser para cargar el perfil en el kernel:

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

Y para deshabilitar el perfil, solo necesitamos crear un enlace simbólico al directorio /etc/apparmor.d/disable.

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

Para volver a habilitar el perfil, simplemente elimine el enlace simbólico y vuelva a cargar el perfil.

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

Habilitación de AppArmor para conjuntos de réplicas de MongoDB

Antes de usar AppArmor en nuestros conjuntos de réplicas de MongoDB, debemos definir el perfil para MongoDB, registrar el servicio binario de mongodb, los directorios de datos y los archivos de registro, y permitir el acceso a la red y al sistema operativo. También podemos definir el permiso para cada directorio, binario y archivos. A continuación se muestra un perfil de muestra del servicio 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.
}

Podemos colocar el perfil MongoDB anterior en el archivo /etc/apparmor.d/usr.bin.mongod y luego ejecutar apparmor_parser para cargar el perfil.

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

Si verificamos usando apparmor_status, dará información sobre el perfil de MongoDB que se ha cargado:

[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
 

Ahora podemos repetir los pasos descritos anteriormente en cada nodo de nuestro conjunto de réplicas de MongoDB para que AppArmor restrinja y proteja el proceso de MongoDB.