← Toutes les règles
SOCLE-CLD-GEN-034// Hardening (misc)moyenneruntime effectif

Tous les profils AppArmor sont en mode enforce ou complain

Vérifie qu'AppArmor a des profils chargés (en mode enforce ou complain) plutôt qu'aucun, afin que les politiques soient au moins actives et observables.

Vérifié sur l’état résolu en cours d’exécution (ex. sshd -T, sysctl, systemctl show), attrape les drop-ins et Include qu’une lecture de fichier raterait. Réserve : runtime ≠ persistance ; une valeur correcte maintenant peut ne pas survivre à un redémarrage.

Un PASS prouve✓ actif maintenant? sur disque? survit au rebootle verdict qualifié →
Debian 12CIS 1.1.0Debian 13CIS 1.0.0Ubuntu 22.04CIS 3.0.0Ubuntu 24.04CIS 1.0.0Ubuntu 26.04
Un seul check, mappé sur 1 norme

Pavois vérifie la configuration effective, l’état résolu et réellement appliqué, pas un fichier. Les scanners basés fichier (OVAL/SCAP, Lynis) ratent les Include, drop-ins et défauts runtime ; ce check voit ce qui est réellement en vigueur.

Un mapping est une référence croisée vers l’endroit où chaque norme situe cette exigence, ancrée et recoupée, pas une affirmation d’équivalence. Un check réussi est une preuve vers ces références, comment le lire.

Pourquoi cette règle

Des profils chargés, qu'ils soient en enforce ou en complain, signifient que la politique AppArmor est réellement appliquée aux programmes en cours. Si des profils existent sur disque mais qu'aucun n'est chargé, le contrôle d'accès obligatoire est dormant et n'apporte rien. Cette règle est la base attestant que le confinement est actif ; une règle compagne plus stricte (misc-all-apparmor-profiles-enforced) exige ensuite le mode enforce.

Ce que vérifie Pavois

Pavois analyse la sortie d'aa-status pour la ligne profiles are loaded, confirmant que le noyau a au moins un profil AppArmor chargé. Lire aa-status en direct reflète l'état d'exécution effectif, contrairement à l'inspection des fichiers de /etc/apparmor.d/ qui prouve seulement leur existence sur disque, pas leur application.

describe command('aa-status 2>/dev/null | grep -qi \'profiles are loaded\' && echo ok || echo ko') do
  its('stdout.strip') { should eq 'ok' }
end

Comment vérifier qu’elle est appliquée

Exécutez aa-status. Attendez-vous à une ligne comme NN profiles are loaded avec NN > 0, et un nombre non nul en mode enforce et/ou complain.

Inspecter et investiguer

L'activité d'AppArmor est journalisée via le sous-système d'audit du noyau dans /var/log/audit/audit.log (entrées marquées apparmor=) ou dans journalctl -k / /var/log/kern.log. L'inventaire des profils chargés et leurs modes proviennent d'aa-status.

Remédiation

Aucun plan de durcissement automatisé n'est fourni ; appliquez-la manuellement. Assurez-vous que le paquet apparmor et les paquets de profils (par ex. apparmor-profiles) sont installés, qu'AppArmor est activé au démarrage (systemctl enable --now apparmor), et chargez les profils avec apparmor_parser -r /etc/apparmor.d/* (ou aa-enforce/aa-complain par profil).

Pavois applique ceci avec son propre moteur harden, le plan ci-dessous, pas un script shell :

commandaa-status | sed -n '1,20p' # set profiles to enforce: aa-enforce /etc/apparmor.d/* (watch for app breakage, then aa-complain any that misbehave)
reasonforcing all profiles to enforce can break apps with incomplete profiles, review
resourcemanual
pavois harden plan local

où la cible est local, un alias SSH user@hôte, ou un conteneur , Docs

Impact & précautions

Charger des profils en mode complain est à faible risque car complain ne fait que journaliser sans bloquer, une première étape sûre sur un système n'ayant jamais utilisé AppArmor. Le risque apparaît quand un profil chargé est en mode enforce et trop restrictif (voir misc-all-apparmor-profiles-enforced). Pour une mise en place sûre, chargez d'abord les profils en complain, surveillez /var/log/audit/audit.log pour les refus potentiels, affinez, puis passez en enforce.

Mapping des normes

NormeRéférenceTypeVersionConfiance
CIS1.3.1.3directper OS, see the benchmark tablehaute

Chaque référence est une référence croisée ancrée dans le benchmark amont et recoupée avec le SCAP Security Guide et ansible-lockdown, pas une affirmation d’équivalence. Direct = une exigence prescriptive au niveau de la ligne ; support = une famille de contrôle abstraite (NIST) vers laquelle le check apporte une preuve. Comment lire un mapping.

Sources & références