linux/security/integrity/ima/Kconfig
<<
>>
Prefs
   1# IBM Integrity Measurement Architecture
   2#
   3config IMA
   4        bool "Integrity Measurement Architecture(IMA)"
   5        select SECURITYFS
   6        select CRYPTO
   7        select CRYPTO_HMAC
   8        select CRYPTO_MD5
   9        select CRYPTO_SHA1
  10        select CRYPTO_HASH_INFO
  11        select TCG_TPM if HAS_IOMEM && !UML
  12        select TCG_TIS if TCG_TPM && X86
  13        select TCG_CRB if TCG_TPM && ACPI
  14        select TCG_IBMVTPM if TCG_TPM && PPC_PSERIES
  15        select INTEGRITY_AUDIT if AUDIT
  16        help
  17          The Trusted Computing Group(TCG) runtime Integrity
  18          Measurement Architecture(IMA) maintains a list of hash
  19          values of executables and other sensitive system files,
  20          as they are read or executed. If an attacker manages
  21          to change the contents of an important system file
  22          being measured, we can tell.
  23
  24          If your system has a TPM chip, then IMA also maintains
  25          an aggregate integrity value over this list inside the
  26          TPM hardware, so that the TPM can prove to a third party
  27          whether or not critical system files have been modified.
  28          Read <http://www.usenix.org/events/sec04/tech/sailer.html>
  29          to learn more about IMA.
  30          If unsure, say N.
  31
  32config IMA_KEXEC
  33        bool "Enable carrying the IMA measurement list across a soft boot"
  34        depends on IMA && TCG_TPM && HAVE_IMA_KEXEC
  35        default n
  36        help
  37           TPM PCRs are only reset on a hard reboot.  In order to validate
  38           a TPM's quote after a soft boot, the IMA measurement list of the
  39           running kernel must be saved and restored on boot.
  40
  41           Depending on the IMA policy, the measurement list can grow to
  42           be very large.
  43
  44config IMA_MEASURE_PCR_IDX
  45        int
  46        depends on IMA
  47        range 8 14
  48        default 10
  49        help
  50          IMA_MEASURE_PCR_IDX determines the TPM PCR register index
  51          that IMA uses to maintain the integrity aggregate of the
  52          measurement list.  If unsure, use the default 10.
  53
  54config IMA_LSM_RULES
  55        bool
  56        depends on IMA && AUDIT && (SECURITY_SELINUX || SECURITY_SMACK || SECURITY_APPARMOR)
  57        default y
  58        help
  59          Disabling this option will disregard LSM based policy rules.
  60
  61choice
  62        prompt "Default template"
  63        default IMA_NG_TEMPLATE
  64        depends on IMA
  65        help
  66          Select the default IMA measurement template.
  67
  68          The original 'ima' measurement list template contains a
  69          hash, defined as 20 bytes, and a null terminated pathname,
  70          limited to 255 characters.  The 'ima-ng' measurement list
  71          template permits both larger hash digests and longer
  72          pathnames.
  73
  74        config IMA_TEMPLATE
  75                bool "ima"
  76        config IMA_NG_TEMPLATE
  77                bool "ima-ng (default)"
  78        config IMA_SIG_TEMPLATE
  79                bool "ima-sig"
  80endchoice
  81
  82config IMA_DEFAULT_TEMPLATE
  83        string
  84        depends on IMA
  85        default "ima" if IMA_TEMPLATE
  86        default "ima-ng" if IMA_NG_TEMPLATE
  87        default "ima-sig" if IMA_SIG_TEMPLATE
  88
  89choice
  90        prompt "Default integrity hash algorithm"
  91        default IMA_DEFAULT_HASH_SHA1
  92        depends on IMA
  93        help
  94           Select the default hash algorithm used for the measurement
  95           list, integrity appraisal and audit log.  The compiled default
  96           hash algorithm can be overwritten using the kernel command
  97           line 'ima_hash=' option.
  98
  99        config IMA_DEFAULT_HASH_SHA1
 100                bool "SHA1 (default)"
 101                depends on CRYPTO_SHA1=y
 102
 103        config IMA_DEFAULT_HASH_SHA256
 104                bool "SHA256"
 105                depends on CRYPTO_SHA256=y && !IMA_TEMPLATE
 106
 107        config IMA_DEFAULT_HASH_SHA512
 108                bool "SHA512"
 109                depends on CRYPTO_SHA512=y && !IMA_TEMPLATE
 110
 111        config IMA_DEFAULT_HASH_WP512
 112                bool "WP512"
 113                depends on CRYPTO_WP512=y && !IMA_TEMPLATE
 114endchoice
 115
 116config IMA_DEFAULT_HASH
 117        string
 118        depends on IMA
 119        default "sha1" if IMA_DEFAULT_HASH_SHA1
 120        default "sha256" if IMA_DEFAULT_HASH_SHA256
 121        default "sha512" if IMA_DEFAULT_HASH_SHA512
 122        default "wp512" if IMA_DEFAULT_HASH_WP512
 123
 124config IMA_WRITE_POLICY
 125        bool "Enable multiple writes to the IMA policy"
 126        depends on IMA
 127        default n
 128        help
 129          IMA policy can now be updated multiple times.  The new rules get
 130          appended to the original policy.  Have in mind that the rules are
 131          scanned in FIFO order so be careful when you design and add new ones.
 132
 133          If unsure, say N.
 134
 135config IMA_READ_POLICY
 136        bool "Enable reading back the current IMA policy"
 137        depends on IMA
 138        default y if IMA_WRITE_POLICY
 139        default n if !IMA_WRITE_POLICY
 140        help
 141           It is often useful to be able to read back the IMA policy.  It is
 142           even more important after introducing CONFIG_IMA_WRITE_POLICY.
 143           This option allows the root user to see the current policy rules.
 144
 145config IMA_APPRAISE
 146        bool "Appraise integrity measurements"
 147        depends on IMA
 148        default n
 149        help
 150          This option enables local measurement integrity appraisal.
 151          It requires the system to be labeled with a security extended
 152          attribute containing the file hash measurement.  To protect
 153          the security extended attributes from offline attack, enable
 154          and configure EVM.
 155
 156          For more information on integrity appraisal refer to:
 157          <http://linux-ima.sourceforge.net>
 158          If unsure, say N.
 159
 160config IMA_ARCH_POLICY
 161        bool "Enable loading an IMA architecture specific policy"
 162        depends on (KEXEC_SIG && IMA) || IMA_APPRAISE \
 163                   && INTEGRITY_ASYMMETRIC_KEYS
 164        default n
 165        help
 166          This option enables loading an IMA architecture specific policy
 167          based on run time secure boot flags.
 168
 169config IMA_APPRAISE_BUILD_POLICY
 170        bool "IMA build time configured policy rules"
 171        depends on IMA_APPRAISE && INTEGRITY_ASYMMETRIC_KEYS
 172        default n
 173        help
 174          This option defines an IMA appraisal policy at build time, which
 175          is enforced at run time without having to specify a builtin
 176          policy name on the boot command line.  The build time appraisal
 177          policy rules persist after loading a custom policy.
 178
 179          Depending on the rules configured, this policy may require kernel
 180          modules, firmware, the kexec kernel image, and/or the IMA policy
 181          to be signed.  Unsigned files might prevent the system from
 182          booting or applications from working properly.
 183
 184config IMA_APPRAISE_REQUIRE_FIRMWARE_SIGS
 185        bool "Appraise firmware signatures"
 186        depends on IMA_APPRAISE_BUILD_POLICY
 187        default n
 188        help
 189          This option defines a policy requiring all firmware to be signed,
 190          including the regulatory.db.  If both this option and
 191          CFG80211_REQUIRE_SIGNED_REGDB are enabled, then both signature
 192          verification methods are necessary.
 193
 194config IMA_APPRAISE_REQUIRE_KEXEC_SIGS
 195        bool "Appraise kexec kernel image signatures"
 196        depends on IMA_APPRAISE_BUILD_POLICY
 197        default n
 198        help
 199          Enabling this rule will require all kexec'ed kernel images to
 200          be signed and verified by a public key on the trusted IMA
 201          keyring.
 202
 203          Kernel image signatures can not be verified by the original
 204          kexec_load syscall.  Enabling this rule will prevent its
 205          usage.
 206
 207config IMA_APPRAISE_REQUIRE_MODULE_SIGS
 208        bool "Appraise kernel modules signatures"
 209        depends on IMA_APPRAISE_BUILD_POLICY
 210        default n
 211        help
 212          Enabling this rule will require all kernel modules to be signed
 213          and verified by a public key on the trusted IMA keyring.
 214
 215          Kernel module signatures can only be verified by IMA-appraisal,
 216          via the finit_module syscall. Enabling this rule will prevent
 217          the usage of the init_module syscall.
 218
 219config IMA_APPRAISE_REQUIRE_POLICY_SIGS
 220        bool "Appraise IMA policy signature"
 221        depends on IMA_APPRAISE_BUILD_POLICY
 222        default n
 223        help
 224          Enabling this rule will require the IMA policy to be signed and
 225          and verified by a key on the trusted IMA keyring.
 226
 227config IMA_APPRAISE_BOOTPARAM
 228        bool "ima_appraise boot parameter"
 229        depends on IMA_APPRAISE
 230        default y
 231        help
 232          This option enables the different "ima_appraise=" modes
 233          (eg. fix, log) from the boot command line.
 234
 235config IMA_APPRAISE_MODSIG
 236        bool "Support module-style signatures for appraisal"
 237        depends on IMA_APPRAISE
 238        depends on INTEGRITY_ASYMMETRIC_KEYS
 239        select PKCS7_MESSAGE_PARSER
 240        select MODULE_SIG_FORMAT
 241        default n
 242        help
 243           Adds support for signatures appended to files. The format of the
 244           appended signature is the same used for signed kernel modules.
 245           The modsig keyword can be used in the IMA policy to allow a hook
 246           to accept such signatures.
 247
 248config IMA_TRUSTED_KEYRING
 249        bool "Require all keys on the .ima keyring be signed (deprecated)"
 250        depends on IMA_APPRAISE && SYSTEM_TRUSTED_KEYRING
 251        depends on INTEGRITY_ASYMMETRIC_KEYS
 252        select INTEGRITY_TRUSTED_KEYRING
 253        default y
 254        help
 255           This option requires that all keys added to the .ima
 256           keyring be signed by a key on the system trusted keyring.
 257
 258           This option is deprecated in favor of INTEGRITY_TRUSTED_KEYRING
 259
 260config IMA_KEYRINGS_PERMIT_SIGNED_BY_BUILTIN_OR_SECONDARY
 261        bool "Permit keys validly signed by a built-in or secondary CA cert (EXPERIMENTAL)"
 262        depends on SYSTEM_TRUSTED_KEYRING
 263        depends on SECONDARY_TRUSTED_KEYRING
 264        depends on INTEGRITY_ASYMMETRIC_KEYS
 265        select INTEGRITY_TRUSTED_KEYRING
 266        default n
 267        help
 268          Keys may be added to the IMA or IMA blacklist keyrings, if the
 269          key is validly signed by a CA cert in the system built-in or
 270          secondary trusted keyrings.
 271
 272          Intermediate keys between those the kernel has compiled in and the
 273          IMA keys to be added may be added to the system secondary keyring,
 274          provided they are validly signed by a key already resident in the
 275          built-in or secondary trusted keyrings.
 276
 277config IMA_BLACKLIST_KEYRING
 278        bool "Create IMA machine owner blacklist keyrings (EXPERIMENTAL)"
 279        depends on SYSTEM_TRUSTED_KEYRING
 280        depends on IMA_TRUSTED_KEYRING
 281        default n
 282        help
 283           This option creates an IMA blacklist keyring, which contains all
 284           revoked IMA keys.  It is consulted before any other keyring.  If
 285           the search is successful the requested operation is rejected and
 286           an error is returned to the caller.
 287
 288config IMA_LOAD_X509
 289        bool "Load X509 certificate onto the '.ima' trusted keyring"
 290        depends on IMA_TRUSTED_KEYRING
 291        default n
 292        help
 293           File signature verification is based on the public keys
 294           loaded on the .ima trusted keyring. These public keys are
 295           X509 certificates signed by a trusted key on the
 296           .system keyring.  This option enables X509 certificate
 297           loading from the kernel onto the '.ima' trusted keyring.
 298
 299config IMA_X509_PATH
 300        string "IMA X509 certificate path"
 301        depends on IMA_LOAD_X509
 302        default "/etc/keys/x509_ima.der"
 303        help
 304           This option defines IMA X509 certificate path.
 305
 306config IMA_APPRAISE_SIGNED_INIT
 307        bool "Require signed user-space initialization"
 308        depends on IMA_LOAD_X509
 309        default n
 310        help
 311           This option requires user-space init to be signed.
 312
 313config IMA_SECURE_AND_OR_TRUSTED_BOOT
 314       bool
 315       depends on IMA_ARCH_POLICY
 316       help
 317          This option is selected by architectures to enable secure and/or
 318          trusted boot based on IMA runtime policies.
 319