dracut/modules.d/98integrity
Stefan Berger 479b5cd94f 98integrity: support validating the IMA policy file signature
IMA validates file signatures based on the security.ima xattr. As of
Linux-4.7, instead of cat'ing the IMA policy into the securityfs policy,
the IMA policy pathname can be written, allowing the IMA policy file
signature to be validated.

This patch first attempts to write the pathname, but on failure falls
back to cat'ing the IMA policy contents .

Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
Signed-off-by: Mimi Zohar <zohar@linux.vnet.ibm.com>
2016-10-13 23:02:40 +02:00
..
README Define new script to load keys on the IMA keyring (update) 2015-08-03 12:36:05 +02:00
evm-enable.sh Extend evm-enable.sh to load the EVM public key 2015-08-03 12:36:05 +02:00
ima-keys-load.sh Define new script to load keys on the IMA keyring (update) 2015-08-03 12:36:05 +02:00
ima-policy-load.sh 98integrity: support validating the IMA policy file signature 2016-10-13 23:02:40 +02:00
module-setup.sh Define new script to load keys on the IMA keyring (update) 2015-08-03 12:36:05 +02:00

README

# Directions for creating the encrypted key that will be used to initialize
# the EVM software.

# Create the EVM key (encrypted key type)
#
# The encrypted key is a random number encrypted/decrypted using the
# kernel master key.  The encrypted key is only exposed to userspace
# as an encrypted datablob.
$ keyctl add encrypted evm-key "new trusted:kmk-trusted 32" @u
782117972

# Save the encrypted key
$ su -c 'keyctl pipe `keyctl search @u encrypted evm_key` > /etc/keys/evm-trusted.blob'

# The EVM key path name can be set in one of the following ways (specified in
# the order in which the variable is overwritten):

1) use the default value:
--------------------------------------------------------------------------
EVMKEY="/etc/keys/evm-trusted.blob"
--------------------------------------------------------------------------

2) create the configuration file '/etc/sysconfig/evm' and set the EVMKEY variable;

3) specify the EVM key path name in the 'evmkey=' parameter of the kernel command
line.


# Directions for loading a custom IMA policy.

# Write the policy following the instructions provided in the file
# 'Documentation/ABI/testing/ima_policy' of the kernel documentation.

# Save the policy in a file.

# Create the configuration file '/etc/sysconfig/ima' to override the path name of
# the IMA custom policy.
------------- '/etc/sysconfig/ima' (with the default value) -------------
IMAPOLICY="/etc/sysconfig/ima-policy"
-------------------------------------------------------------------------


# Information on loading distro, third party or local keys on the trusted IMA keyring

# Loading distro, third party or local keys on the trusted IMA keyring requires
# creating a local certificate authority(local-CA), installing the local-CA's
# public key on the system-keyring and signing the certificates with the local-CA
# key.
#
# Many directions for creating a mini certificate authority exist on the web
# (eg. openssl, yubikey). (Reminder: safely storing the private key offline is
# really important, especially in the case of the local-CA's private key.) The
# local-CA's public key can be loaded onto the system keyring either by building
# the key into the kernel or, on Fedora, storing it in the UEFI/Mok keyring. (As
# of writing, the patches for loading the UEFI/Mok keys on the system-keyring
# have not been upstreamed.)
#
# To view the system keyring: keyctl show %keyring:.system_keyring
#
# Most on-line directions for signing certificates requires creating a Certificate
# Signing Request (CSR).  Creating such a request requires access to the private
# key, which would not be available when signing distro or 3rd party certificates.
# Openssl provides the "-ss_cert" option for directly signing certificates.

# 98integrity/ima-keys-load.sh script loads the signed certificates stored 
# in the $IMAKEYSDIR onto the trusted IMA keyring.  The default $IMAKEYSDIR
# directory is /etc/keys/ima, but can be specified in the /etc/sysconfig/ima
# policy.