Sécuriser Linux avec AppArmor





L' article précédent concernait SELinux. Mon impression de ce système de sécurité est double. D'une part, il n'y a jamais trop de sécurité dans l'informatique et SELinux contient tout ce dont vous avez besoin pour protéger le système d'exploitation et les applications contre les accès non autorisés. D'un autre côté, il semble trop encombrant et inutilement complexe, ce qui rend son utilisation peu pratique. Plus d'une ou deux fois dans les manuels d'utilisation pour l'installation de logiciels commerciaux, j'ai vu des recommandations pour exécuter setenforce 0 avant de commencer l'installation.



Une solution qui a la moitié des fonctionnalités de SELinux, mais qui est beaucoup plus facile à configurer et à utiliser, peut être une protection plus fiable, ne serait-ce que parce qu'il n'est pas effrayant de se plonger dans tous ces domaines, politiques et rôles. C'est exactement ce que propose AppArmor.



Comme SELinux, AppArmor est une implémentation de contrôle d'accès obligatoire (MAC) basée sur l'architecture des modules de sécurité Linux (LSM). Le modèle de sécurité d'Apparmor consiste à lier les attributs de contrôle d'accès non pas aux utilisateurs, mais aux programmes. AppArmor fournit une isolation via des profils chargés dans le noyau, généralement au démarrage.



AppArmor diffère des autres implémentations MAC Linux en ce qu'il est basé sur les chemins et qu'il vous permet également de mélanger les profils d'application et d'alerte. De plus, AppArmor utilise des pièces jointes pour faciliter le développement et a une barrière à l'entrée beaucoup moins profonde que SELinux lui-même.



DAC et MAC



L'architecture de contrôle d'accès discrétionnaire (DAC) restreint l'accès aux ressources critiques en fonction des attributs des sujets ou du groupe auquel ils appartiennent. Ces attributs déterminent les droits d'accès aux ressources du système de fichiers. Chaque administrateur est bien conscient de l'importance des privilèges de lecture (lecture), d'enregistrement (écriture) et d' exécution (eXecute).

Ces attributs s'appliquent à trois catégories d'utilisateurs: utilisateur (propriétaire), groupe (groupe), autres (autre). La catégorie propriétaire fait référence à un seul utilisateur du système d'exploitation, tandis qu'un groupe peut contenir plusieurs utilisateurs du système d'exploitation. La catégorie reste comprend les utilisateurs qui n'appartiennent pas aux deux premiers.

Le modèle DAC donne au propriétaire de la ressource le droit de déterminer le type d'accès pour les catégories d'utilisateurs spécifiées. Cette différenciation d'accès est adaptée à la protection contre les actions involontaires des utilisateurs et vous permet de répondre aux questions suivantes:



  • Quelles ressources FS sont disponibles pour un utilisateur de système d'exploitation donné pour la lecture, l'écriture et l'exécution?
  • Quelles ressources FS sont disponibles pour ce groupe pour la lecture, l'écriture et l'exécution?
  • Quelles ressources FS sont disponibles pour les autres utilisateurs pour la lecture, l'écriture et l'exécution?
  • Quel utilisateur dispose de droits suffisants pour exécuter ce processus?




Figure: 1 Systèmes de sécurité DAC et MAC.



Le système de sécurité de contrôle d'accès obligatoire (MAC) suppose un contrôle centralisé des règles de politique d'accès, dans lequel les utilisateurs ordinaires n'ont pas la possibilité de les modifier. Le concepteur de règles détermine quels programmes ou processus peuvent effectuer certaines actions sur les ressources système. MAC se concentre davantage sur les programmes que sur les utilisateurs et résout le problème de la délimitation de l'accès des processus aux ressources du système d'exploitation.

Essentiellement, la conception MAC tente de reproduire la délimitation des privilèges d'accès à la documentation dans le monde physique. Si un certain employé a le droit de lire des documents étiquetés «top secret», il a également accès aux documents confidentiels et internes standard. L'inverse n'est cependant pas vrai. Il en va de même dans le contexte des privilèges d'accès des processus OS dans l'architecture MAC. Ainsi, si un programme peut lire le fichier / etc / sudoers, il a également accès à / etc / hosts, mais l'inverse n'est pas non plus vrai.



Installation et configuration d'AppArmor



Les éléments de base d'AppArmor sont préinstallés dans Ubuntu Server, quant aux outils de gestion et à l'ensemble des profils d'application, ils doivent être installés séparément.



[admin@server ~]$ sudo aptitude install apparmor-utils apparmor-profiles
      
      





Vérification de l'état avant le réglage.



[admin@server ~]$ sudo apparmor_status
apparmor module is loaded.
31 profiles are loaded.
31 profiles are in enforce mode.
 /snap/snapd/10492/usr/lib/snapd/snap-confine
 /snap/snapd/10492/usr/lib/snapd/snap-confine//mount-namespace-capture-helper
 /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
   ...
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.
      
      





Les dernières lignes indiquent les modes d'application et de réclamation. Quels sont ces régimes en bref?



  • En mode Enforce , le noyau applique les règles écrites dans le fichier de profil. Les violations ne sont pas autorisées et l'entrée correspondante va dans les journaux.
  • En mode Réclamation , AppArmor enregistre uniquement les violations sans bloquer les actions elles-mêmes.


Le contenu du package apparmor-profiles se trouve dans le dossier /usr/share/apparmor/extra-profiles/



, il y a plus d'une centaine de profils prêts à l'emploi.



[admin@server ~]$ ll /usr/share/apparmor/extra-profiles/ |head
total 484
-rw-r--r-- 1 root system 1724 May 19 2020 README
drwxr-xr-x 3 root system 4096 Dec 8 10:14 abstractions/
-rw-r--r-- 1 root system 1319 May 19 2020 bin.netstat
-rw-r--r-- 1 root system 1815 May 19 2020 etc.cron.daily.logrotate
-rw-r--r-- 1 root system  948 May 19 2020 etc.cron.daily.slocate.cron
-rw-r--r-- 1 root system  722 May 19 2020 etc.cron.daily.tmpwatch
-rw-r--r-- 1 root system 2623 May 19 2020 sbin.dhclient
[admin@server ~]$ ll /usr/share/apparmor/extra-profiles/ |wc -l
118
      
      





Avant que le profil ne devienne actif, vous devez le transférer du dossier /usr/share/apparmor/extra-profiles/



vers /etc/apparmor.d/



. Maintenant, il peut être étudié et, si désiré, changé. Prenons quelque chose de plus simple, par exemple /etc/apparmor.d/bin.ping



.



...
#include <tunables/global>
profile ping /{usr/,}bin/{,iputils-}ping flags=(complain) {
  #include <abstractions/base>
  #include <abstractions/consoles>
  #include <abstractions/nameservice>

  capability net_raw,
  capability setuid,
  network inet raw,
  network inet6 raw,

  /{,usr/}bin/{,iputils-}ping mixr,
  /etc/modules.conf r,

  # Site-specific additions and overrides. See local/README for details.
  #include <local/bin.ping>
}
      
      





Tout est assez clair, à l'exception des drapeaux mixr. La description des valeurs d'indicateur est ci-dessous:

  • r - lire;
  • w - enregistrement
  • a - écriture incrémentielle à la fin du fichier, à partir de l'append anglais;
  • k - verrouiller les fichiers;
  • l - créer des liens symboliques vers des fichiers exécutables;
  • m - chargement des fichiers exécutables en mémoire;
  • cx - transition vers le profil de niveau inférieur pendant l'exécution;
  • Cx - transition vers le profil de niveau inférieur lors de l'exécution avec des variables d'environnement de nettoyage;
  • ix - héritage d'exécution;
  • px - nécessite la définition d'un profil de sécurité discret pour la ressource;
  • Px - la définition d'un profil de sécurité discret pour la ressource est requise, les variables d'environnement sont effacées;
  • ux - ne vérifie pas le lancement de nouveaux processus;
  • Ux - ne pas vérifier le lancement de nouveaux processus et nettoyer les variables d'environnement;


Vous pouvez également spécifier Capabilities



les noyaux Linux que le processus est autorisé à utiliser. Leur liste complète se trouve dans la page correspondante du manuel.

Pour passer du mode d'apprentissage au mode forcé, vous devez exécuter la commande aa-enforce <prog_name>, - aa-complain <prog_name>



. Si maintenant, après avoir activé le mode forcé, le ping tente de faire quelque chose, AppArmor le bloquera.



[admin@server ~]$ sudo aa-enforce ping
Setting /usr/bin/ping to enforce mode.
[admin@server ~]$ sudo cp /usr/bin/man /usr/bin/ping
[admin@server ~]$ /usr/bin/ping ping
/usr/bin/ping: can't open the manpath configuration file /etc/manpath.config
      
      





Si vous devez créer un nouveau profil, ce n'est pas difficile. Vous devez d'abord créer un modèle à l'aide de la commande aa-autodep



, puis le remplir en exécutant aa-genprof



. Un exemple de dialogue interactif aa-genprof gratuit sur le lien .



Matériaux utilisés














All Articles