hc
2023-10-25 6c2073b7aa40e29d0eca7d571dd7bc590c7ecaa7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
# 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 && !UML
   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 <http://www.usenix.org/events/sec04/tech/sailer.html>
     to learn more about IMA.
     If unsure, say N.
 
config IMA_KEXEC
   bool "Enable carrying the IMA measurement list across a soft boot"
   depends on IMA && 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
   depends on IMA
   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 IMA && AUDIT && (SECURITY_SELINUX || SECURITY_SMACK)
   default y
   help
     Disabling this option will disregard LSM based policy rules.
 
choice
   prompt "Default template"
   default IMA_NG_TEMPLATE
   depends on IMA
   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.
 
   config IMA_TEMPLATE
       bool "ima"
   config IMA_NG_TEMPLATE
       bool "ima-ng (default)"
   config IMA_SIG_TEMPLATE
       bool "ima-sig"
endchoice
 
config IMA_DEFAULT_TEMPLATE
   string
   depends on IMA
   default "ima" if IMA_TEMPLATE
   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
   depends on IMA
   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 && !IMA_TEMPLATE
 
   config IMA_DEFAULT_HASH_SHA512
       bool "SHA512"
       depends on CRYPTO_SHA512=y && !IMA_TEMPLATE
 
   config IMA_DEFAULT_HASH_WP512
       bool "WP512"
       depends on CRYPTO_WP512=y && !IMA_TEMPLATE
endchoice
 
config IMA_DEFAULT_HASH
   string
   depends on IMA
   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
 
config IMA_WRITE_POLICY
   bool "Enable multiple writes to the IMA policy"
   depends on IMA
   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"
   depends on IMA
   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"
   depends on IMA
   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_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_TRUSTED_KEYRING
   bool "Require all keys on the .ima keyring be signed (deprecated)"
   depends on IMA_APPRAISE && SYSTEM_TRUSTED_KEYRING
   depends on INTEGRITY_ASYMMETRIC_KEYS
   select INTEGRITY_TRUSTED_KEYRING
   default y
   help
      This option requires that all keys added to the .ima
      keyring be signed by a key on the system trusted keyring.
 
      This option is deprecated in favor of INTEGRITY_TRUSTED_KEYRING
 
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 IMA_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 IMA_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.