123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322 |
- # SPDX-License-Identifier: GPL-2.0-only
- # IBM Integrity Measurement Architecture
- #
- config IMA
- bool "Integrity Measurement Architecture(IMA)"
- select SECURITYFS
- select CRYPTO
- select CRYPTO_HMAC
- select CRYPTO_SHA1
- select CRYPTO_HASH_INFO
- select TCG_TPM if HAS_IOMEM
- select TCG_TIS if TCG_TPM && X86
- select TCG_CRB if TCG_TPM && ACPI
- select TCG_IBMVTPM if TCG_TPM && PPC_PSERIES
- select INTEGRITY_AUDIT if AUDIT
- help
- The Trusted Computing Group(TCG) runtime Integrity
- Measurement Architecture(IMA) maintains a list of hash
- values of executables and other sensitive system files,
- as they are read or executed. If an attacker manages
- to change the contents of an important system file
- being measured, we can tell.
- If your system has a TPM chip, then IMA also maintains
- an aggregate integrity value over this list inside the
- TPM hardware, so that the TPM can prove to a third party
- whether or not critical system files have been modified.
- Read <https://www.usenix.org/events/sec04/tech/sailer.html>
- to learn more about IMA.
- If unsure, say N.
- if IMA
- config IMA_KEXEC
- bool "Enable carrying the IMA measurement list across a soft boot"
- depends on TCG_TPM && HAVE_IMA_KEXEC
- default n
- help
- TPM PCRs are only reset on a hard reboot. In order to validate
- a TPM's quote after a soft boot, the IMA measurement list of the
- running kernel must be saved and restored on boot.
- Depending on the IMA policy, the measurement list can grow to
- be very large.
- config IMA_MEASURE_PCR_IDX
- int
- range 8 14
- default 10
- help
- IMA_MEASURE_PCR_IDX determines the TPM PCR register index
- that IMA uses to maintain the integrity aggregate of the
- measurement list. If unsure, use the default 10.
- config IMA_LSM_RULES
- bool
- depends on AUDIT && (SECURITY_SELINUX || SECURITY_SMACK || SECURITY_APPARMOR)
- default y
- help
- Disabling this option will disregard LSM based policy rules.
- choice
- prompt "Default template"
- default IMA_NG_TEMPLATE
- help
- Select the default IMA measurement template.
- The original 'ima' measurement list template contains a
- hash, defined as 20 bytes, and a null terminated pathname,
- limited to 255 characters. The 'ima-ng' measurement list
- template permits both larger hash digests and longer
- pathnames. The configured default template can be replaced
- by specifying "ima_template=" on the boot command line.
- config IMA_NG_TEMPLATE
- bool "ima-ng (default)"
- config IMA_SIG_TEMPLATE
- bool "ima-sig"
- endchoice
- config IMA_DEFAULT_TEMPLATE
- string
- default "ima-ng" if IMA_NG_TEMPLATE
- default "ima-sig" if IMA_SIG_TEMPLATE
- choice
- prompt "Default integrity hash algorithm"
- default IMA_DEFAULT_HASH_SHA1
- help
- Select the default hash algorithm used for the measurement
- list, integrity appraisal and audit log. The compiled default
- hash algorithm can be overwritten using the kernel command
- line 'ima_hash=' option.
- config IMA_DEFAULT_HASH_SHA1
- bool "SHA1 (default)"
- depends on CRYPTO_SHA1=y
- config IMA_DEFAULT_HASH_SHA256
- bool "SHA256"
- depends on CRYPTO_SHA256=y
- config IMA_DEFAULT_HASH_SHA512
- bool "SHA512"
- depends on CRYPTO_SHA512=y
- config IMA_DEFAULT_HASH_WP512
- bool "WP512"
- depends on CRYPTO_WP512=y
- config IMA_DEFAULT_HASH_SM3
- bool "SM3"
- depends on CRYPTO_SM3_GENERIC=y
- endchoice
- config IMA_DEFAULT_HASH
- string
- default "sha1" if IMA_DEFAULT_HASH_SHA1
- default "sha256" if IMA_DEFAULT_HASH_SHA256
- default "sha512" if IMA_DEFAULT_HASH_SHA512
- default "wp512" if IMA_DEFAULT_HASH_WP512
- default "sm3" if IMA_DEFAULT_HASH_SM3
- config IMA_WRITE_POLICY
- bool "Enable multiple writes to the IMA policy"
- default n
- help
- IMA policy can now be updated multiple times. The new rules get
- appended to the original policy. Have in mind that the rules are
- scanned in FIFO order so be careful when you design and add new ones.
- If unsure, say N.
- config IMA_READ_POLICY
- bool "Enable reading back the current IMA policy"
- default y if IMA_WRITE_POLICY
- default n if !IMA_WRITE_POLICY
- help
- It is often useful to be able to read back the IMA policy. It is
- even more important after introducing CONFIG_IMA_WRITE_POLICY.
- This option allows the root user to see the current policy rules.
- config IMA_APPRAISE
- bool "Appraise integrity measurements"
- default n
- help
- This option enables local measurement integrity appraisal.
- It requires the system to be labeled with a security extended
- attribute containing the file hash measurement. To protect
- the security extended attributes from offline attack, enable
- and configure EVM.
- For more information on integrity appraisal refer to:
- <http://linux-ima.sourceforge.net>
- If unsure, say N.
- config IMA_ARCH_POLICY
- bool "Enable loading an IMA architecture specific policy"
- depends on (KEXEC_SIG && IMA) || IMA_APPRAISE \
- && INTEGRITY_ASYMMETRIC_KEYS
- default n
- help
- This option enables loading an IMA architecture specific policy
- based on run time secure boot flags.
- config IMA_APPRAISE_BUILD_POLICY
- bool "IMA build time configured policy rules"
- depends on IMA_APPRAISE && INTEGRITY_ASYMMETRIC_KEYS
- default n
- help
- This option defines an IMA appraisal policy at build time, which
- is enforced at run time without having to specify a builtin
- policy name on the boot command line. The build time appraisal
- policy rules persist after loading a custom policy.
- Depending on the rules configured, this policy may require kernel
- modules, firmware, the kexec kernel image, and/or the IMA policy
- to be signed. Unsigned files might prevent the system from
- booting or applications from working properly.
- config IMA_APPRAISE_REQUIRE_FIRMWARE_SIGS
- bool "Appraise firmware signatures"
- depends on IMA_APPRAISE_BUILD_POLICY
- default n
- help
- This option defines a policy requiring all firmware to be signed,
- including the regulatory.db. If both this option and
- CFG80211_REQUIRE_SIGNED_REGDB are enabled, then both signature
- verification methods are necessary.
- config IMA_APPRAISE_REQUIRE_KEXEC_SIGS
- bool "Appraise kexec kernel image signatures"
- depends on IMA_APPRAISE_BUILD_POLICY
- default n
- help
- Enabling this rule will require all kexec'ed kernel images to
- be signed and verified by a public key on the trusted IMA
- keyring.
- Kernel image signatures can not be verified by the original
- kexec_load syscall. Enabling this rule will prevent its
- usage.
- config IMA_APPRAISE_REQUIRE_MODULE_SIGS
- bool "Appraise kernel modules signatures"
- depends on IMA_APPRAISE_BUILD_POLICY
- default n
- help
- Enabling this rule will require all kernel modules to be signed
- and verified by a public key on the trusted IMA keyring.
- Kernel module signatures can only be verified by IMA-appraisal,
- via the finit_module syscall. Enabling this rule will prevent
- the usage of the init_module syscall.
- config IMA_APPRAISE_REQUIRE_POLICY_SIGS
- bool "Appraise IMA policy signature"
- depends on IMA_APPRAISE_BUILD_POLICY
- default n
- help
- Enabling this rule will require the IMA policy to be signed and
- and verified by a key on the trusted IMA keyring.
- config IMA_APPRAISE_BOOTPARAM
- bool "ima_appraise boot parameter"
- depends on IMA_APPRAISE
- default y
- help
- This option enables the different "ima_appraise=" modes
- (eg. fix, log) from the boot command line.
- config IMA_APPRAISE_MODSIG
- bool "Support module-style signatures for appraisal"
- depends on IMA_APPRAISE
- depends on INTEGRITY_ASYMMETRIC_KEYS
- select PKCS7_MESSAGE_PARSER
- select MODULE_SIG_FORMAT
- default n
- help
- Adds support for signatures appended to files. The format of the
- appended signature is the same used for signed kernel modules.
- The modsig keyword can be used in the IMA policy to allow a hook
- to accept such signatures.
- config IMA_KEYRINGS_PERMIT_SIGNED_BY_BUILTIN_OR_SECONDARY
- bool "Permit keys validly signed by a built-in or secondary CA cert (EXPERIMENTAL)"
- depends on SYSTEM_TRUSTED_KEYRING
- depends on SECONDARY_TRUSTED_KEYRING
- depends on INTEGRITY_ASYMMETRIC_KEYS
- select INTEGRITY_TRUSTED_KEYRING
- default n
- help
- Keys may be added to the IMA or IMA blacklist keyrings, if the
- key is validly signed by a CA cert in the system built-in or
- secondary trusted keyrings.
- Intermediate keys between those the kernel has compiled in and the
- IMA keys to be added may be added to the system secondary keyring,
- provided they are validly signed by a key already resident in the
- built-in or secondary trusted keyrings.
- config IMA_BLACKLIST_KEYRING
- bool "Create IMA machine owner blacklist keyrings (EXPERIMENTAL)"
- depends on SYSTEM_TRUSTED_KEYRING
- depends on INTEGRITY_TRUSTED_KEYRING
- default n
- help
- This option creates an IMA blacklist keyring, which contains all
- revoked IMA keys. It is consulted before any other keyring. If
- the search is successful the requested operation is rejected and
- an error is returned to the caller.
- config IMA_LOAD_X509
- bool "Load X509 certificate onto the '.ima' trusted keyring"
- depends on INTEGRITY_TRUSTED_KEYRING
- default n
- help
- File signature verification is based on the public keys
- loaded on the .ima trusted keyring. These public keys are
- X509 certificates signed by a trusted key on the
- .system keyring. This option enables X509 certificate
- loading from the kernel onto the '.ima' trusted keyring.
- config IMA_X509_PATH
- string "IMA X509 certificate path"
- depends on IMA_LOAD_X509
- default "/etc/keys/x509_ima.der"
- help
- This option defines IMA X509 certificate path.
- config IMA_APPRAISE_SIGNED_INIT
- bool "Require signed user-space initialization"
- depends on IMA_LOAD_X509
- default n
- help
- This option requires user-space init to be signed.
- config IMA_MEASURE_ASYMMETRIC_KEYS
- bool
- depends on ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y
- default y
- config IMA_QUEUE_EARLY_BOOT_KEYS
- bool
- depends on IMA_MEASURE_ASYMMETRIC_KEYS
- depends on SYSTEM_TRUSTED_KEYRING
- default y
- config IMA_SECURE_AND_OR_TRUSTED_BOOT
- bool
- depends on IMA_ARCH_POLICY
- help
- This option is selected by architectures to enable secure and/or
- trusted boot based on IMA runtime policies.
- config IMA_DISABLE_HTABLE
- bool "Disable htable to allow measurement of duplicate records"
- default n
- help
- This option disables htable to allow measurement of duplicate records.
- endif
|