Rechercher

22.5. Permettre l'IMA et l'EVM

download PDF

Vous pouvez activer et configurer l'architecture de mesure de l'intégrité (IMA) et le module de vérification étendu (EVM) pour améliorer la sécurité du système d'exploitation.

Conditions préalables

  • Secure Boot est temporairement désactivé.

    Note

    Lorsque l'option Secure Boot est activée, le paramètre de ligne de commande ima_appraise=fix kernel ne fonctionne pas.

  • Le système de fichiers securityfs est monté sur le répertoire /sys/kernel/security/ et le répertoire /sys/kernel/security/integrity/ima/ existe. Vous pouvez vérifier où securityfs est monté en utilisant la commande mount:

    # mount
    ...
    securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
    ...
  • Le gestionnaire de services systemd est corrigé pour prendre en charge l'IMA et l'EVM au démarrage. Vous pouvez le vérifier en utilisant la commande suivante :

    # dmesg | grep -i -e EVM -e IMA
    [    0.000000] Command line: BOOT_IMAGE=(hd0,msdos1)/vmlinuz-5.14.0-1.el9.x86_64 root=/dev/mapper/rhel-root ro crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M resume=/dev/mapper/rhel-swap rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet
    [    0.000000] kvm-clock: cpu 0, msr 23601001, primary cpu clock
    [    0.000000] Using crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M, the size chosen is a best effort estimation.
    [    0.000000] Kernel command line: BOOT_IMAGE=(hd0,msdos1)/vmlinuz-5.14.0-1.el9.x86_64 root=/dev/mapper/rhel-root ro crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M resume=/dev/mapper/rhel-swap rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet
    [    0.911527] ima: No TPM chip found, activating TPM-bypass!
    [    0.911538] ima: Allocated hash algorithm: sha1
    [    0.911580] evm: Initialising EVM extended attributes:
    [    0.911581] evm: security.selinux
    [    0.911581] evm: security.ima
    [    0.911582] evm: security.capability
    [    0.911582] evm: HMAC attrs: 0x1
    [    1.715151] systemd[1]: systemd 239 running in system mode. (+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN2 -IDN +PCRE2 default-hierarchy=legacy)
    [    3.824198] fbcon: qxldrmfb (fb0) is primary device
    [    4.673457] PM: Image not found (code -22)
    [    6.549966] systemd[1]: systemd 239 running in system mode. (+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN2 -IDN +PCRE2 default-hierarchy=legacy)

Procédure

  1. Activez l'IMA et l'EVM dans le mode fix pour l'entrée de démarrage actuelle et permettez aux utilisateurs de recueillir et de mettre à jour les mesures IMA en ajoutant les paramètres de ligne de commande du noyau suivants :

    # grubby --update-kernel=/boot/vmlinuz-$(uname -r) --args="ima_policy=appraise_tcb ima_appraise=fix evm=fix"

    La commande active l'IMA et l'EVM dans le mode fix pour l'entrée de démarrage actuelle et permet aux utilisateurs de rassembler et de mettre à jour les mesures IMA.

    Le paramètre de ligne de commande du noyau ima_policy=appraise_tcb garantit que le noyau utilise la politique de mesure par défaut de la Trusted Computing Base (TCB) et l'étape d'évaluation. L'étape d'évaluation interdit l'accès aux fichiers dont les mesures antérieures et actuelles ne correspondent pas.

  2. Redémarrez pour que les modifications soient prises en compte.
  3. Facultatif : Vérifiez que les paramètres ont été ajoutés à la ligne de commande du noyau :

    # cat /proc/cmdline
    BOOT_IMAGE=(hd0,msdos1)/vmlinuz-5.14.0-1.el9.x86_64 root=/dev/mapper/rhel-root ro crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M resume=/dev/mapper/rhel-swap rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet ima_policy=appraise_tcb ima_appraise=fix evm=fix
  4. Créer une clé maître du noyau pour protéger la clé EVM :

    # keyctl add user kmk "$(dd if=/dev/urandom bs=1 count=32 2> /dev/null)" @u
    748544121

    L'adresse kmk est entièrement conservée dans la mémoire du noyau. La valeur de 32 octets de kmk est générée à partir d'octets aléatoires du fichier /dev/urandom et placée dans le trousseau de l'utilisateur (@u). Le numéro de série de la clé se trouve sur la première ligne de la sortie précédente.

  5. Créer une clé EVM cryptée sur la base du site kmk:

    # keyctl add encrypted evm-key "new user:kmk 64" @u
    641780271

    La commande utilise le site kmk pour générer et crypter une clé d'utilisateur de 64 octets (nommée evm-key) et la placer dans le trousseau de l'utilisateur (@u). Le numéro de série de la clé se trouve sur la première ligne de la sortie précédente.

    Important

    Il est nécessaire de nommer la clé utilisateur evm-key car c'est le nom que le sous-système EVM attend et avec lequel il travaille.

  6. Créer un répertoire pour les clés exportées.

    # mkdir -p /etc/keys/
  7. Recherchez le site kmk et exportez sa valeur en clair dans le nouveau répertoire.

    # keyctl pipe $(keyctl search @u user kmk) > /etc/keys/kmk
  8. Recherchez le site evm-key et exportez sa valeur cryptée dans le nouveau répertoire.

    # keyctl pipe $(keyctl search @u encrypted evm-key) > /etc/keys/evm-key

    Le site evm-key a été crypté précédemment par la clé principale du noyau.

  9. Optionnel : Affichez les clés nouvellement créées.

    # keyctl show
    Session Keyring
    974575405   --alswrv     0        0      keyring: ses 299489774 --alswrv 0 65534 \ keyring: uid.0 748544121 --alswrv 0 0 \ user: kmk
    641780271   --alswrv     0        0           \_ encrypted: evm-key
    
    # ls -l /etc/keys/
    total 8
    -rw-r--r--. 1 root root 246 Jun 24 12:44 evm-key
    -rw-r--r--. 1 root root  32 Jun 24 12:43 kmk
  10. Facultatif : si les clés ont été supprimées du trousseau, par exemple après un redémarrage du système, vous pouvez importer les clés déjà exportées kmk et evm-key au lieu d'en créer de nouvelles.

    1. Importer le site kmk.

      # keyctl add user kmk "$(cat /etc/keys/kmk)" @u
      451342217
    2. Importer le site evm-key.

      # keyctl add encrypted evm-key "load $(cat /etc/keys/evm-key)" @u
      924537557
  11. Activer l'EVM.

    # echo 1 > /sys/kernel/security/evm
  12. Réétiqueter l'ensemble du système.

    # find / -fstype xfs -type f -uid 0 -exec head -n 1 '{}' >/dev/null \;
    Avertissement

    L'activation de l'IMA et de l'EVM sans réétiquetage du système peut rendre la majorité des fichiers du système inaccessibles.

Vérification

  • Vérifiez que l'EVM a été initialisé.

    # dmesg | tail -1
    […​] evm: key initialized
Red Hat logoGithubRedditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez leBlog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

© 2024 Red Hat, Inc.