323 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			323 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
# 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
 |