Dieser Inhalt ist in der von Ihnen ausgewählten Sprache nicht verfügbar.
Chapter 25. Enhancing security with the kernel integrity subsystem
Use components of the kernel integrity subsystem to improve system security. Configure relevant components such as IMA signature-based appraisal and remote attestation.
25.1. The kernel integrity subsystem Link kopierenLink in die Zwischenablage kopiert!
The kernel integrity subsystem protects system integrity by detecting file tampering and enabling remote attestation. It includes the Integrity Measurement Architecture (IMA) and the Extended Verification Module (EVM).
- Integrity Measurement Architecture (IMA)
IMA maintains the integrity of file content. It includes three features that you can enable through an IMA policy:
-
IMA-Measurement: Collect the file content hash or signature and store the measurements in the kernel. If a TPM is available, each measurement extends a TPM PCR, which enables remote attestation with an attestation quote. -
IMA-Appraisal: Verify file integrity by comparing the calculated file hash with a known good reference value or by verifying a signature stored in the security.ima attribute. If verification fails, the system denies access. -
IMA-Audit: Store the calculated file content hash or signature in the system audit log.
-
- Extended Verification Module (EVM)
-
The EVM protects file metadata, including extended attributes related to system security such as
security.imaandsecurity.selinux. EVM stores a reference hash or HMAC for these security attributes insecurity.evmand uses it to detect if the file metadata has been changed maliciously.
25.2. Enabling kernel’s runtime integrity monitoring through IMA-signature based appraisal Link kopierenLink in die Zwischenablage kopiert!
To ensure only authorized package files are executed, enable signature-based IMA appraisal by running the ima-setup command with the sample policy. From RHEL 9, all package files are signed per file.
Procedure
Run
ima-setupto enable signature-based IMA appraisal:# ima-setup --policy=/usr/share/ima/policies/01-appraise-executable-and-lib-signaturesThis command:
-
Stores package file signature in
security.imafor all installed packages. -
Includes the
dracutintegrity module to load the IMA code signing key to kernel. -
Copies the policy to
/etc/ima/ima-policyso systemd loads it at boot time.
-
Stores package file signature in
Verification
-
The
ipcommand can be successfully executed. If
ipis copied to/tmp, by default, it loses itssecurity.imaand thereforeipcommand is not executed.# cp /usr/sbin/ip /tmp # /tmp/ipbash: /tmp/ip: Permission denied# /tmp/ip doesn't have security.ima # getfattr -m security.ima -d /tmp/ip # whereas /usr/sbin/ip has # getfattr -m security.ima /usr/sbin/ip # file: usr/sbin/ipsecurity.ima=0sAwIE0zIESQBnMGUCMQCLXZ7ukyDcguLgPYwzXU16dcVrmlHxOta7vm7EUfX07Nf0xnP1MyE//AZaqeNIKBoCMFHNDOuA4uNvS+8OOAy7YEn8oathfsF2wsDSZi+NAoumC6RFqIB912zkRKxraSX8sA==
If the sample policy 01-appraise-executable-and-lib-signatures does not meet your requirements, you can create and use a custom policy.
25.3. Enabling remote attestation with IMA measurement Link kopierenLink in die Zwischenablage kopiert!
To verify system integrity by using remote attestation tools such as Keylime, you must enable Integrity Measurement Architecture (IMA) measurement. A signed sample measurement policy is available at /usr/share/ima/policies/02-keylime-remote-attestation. Deploy and run the policy that meets your requirements.
Prerequisites
-
A signed measurement policy is available at
/usr/share/ima/policies/02-keylime-remote-attestation.
Procedure
Install the
rpm-plugin-imapackage:# dnf install rpm-plugin-imaReinstall the
ima-evm-utilspackage so that the sample policies have IMA signatures stored in extended attributes:# dnf reinstall ima-evm-utilsConfirm that the IMA signature has been stored:
# evmctl ima_verify -k /etc/keys/ima/redhatimarelease-10.der /usr/share/ima/policies/02-keylime-remote-attestationkeyid d3320449 (from /etc/keys/ima/redhatimarelease-10.der) key 1: d3320449 /etc/keys/ima/redhatimarelease-10.der /usr/share/ima/policies/02-keylime-remote-attestation: verification is OKCopy the signed measurement policy with extended attributes preserved to
/etc/ima/ima-policyso systemd automatically loads it on boot:# cp --preserve=xattr /usr/share/ima/policies/02-keylime-remote-attestation /etc/ima/ima-policyEnable the dracut integrity module so the IMA key loads at boot time:
# cp --preserve=xattr /usr/share/ima/dracut-98-integrity.conf /etc/dracut.conf.d/ima.confRegenerate the initramfs to include the
integritymodule:# dracut -fOn
s390xsystems, additionally runziplto apply the changes for the next IPL (initial program load):# zipl
Reboot to load the IMA key:
# systemctl rebootWarningOn systems with Secure Boot enabled, the kernel does not accept unsigned IMA policies. If you load a policy before the IMA code-signing key is available to the kernel, the load fails and the next reboot can hang. Therefore, you must load the policy after the key is available.
If the sample policy does not meet your requirements, see Loading an IMA policy signed by your custom IMA key.
Verification
Verify that the policy is loaded:
# cat /sys/kernel/security/integrity/ima/policy