mirror of
https://github.com/torvalds/linux.git
synced 2024-12-30 14:52:05 +00:00
0302e28dee
Pull security subsystem updates from James Morris: "Highlights: IMA: - provide ">" and "<" operators for fowner/uid/euid rules KEYS: - add a system blacklist keyring - add KEYCTL_RESTRICT_KEYRING, exposes keyring link restriction functionality to userland via keyctl() LSM: - harden LSM API with __ro_after_init - add prlmit security hook, implement for SELinux - revive security_task_alloc hook TPM: - implement contextual TPM command 'spaces'" * 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security: (98 commits) tpm: Fix reference count to main device tpm_tis: convert to using locality callbacks tpm: fix handling of the TPM 2.0 event logs tpm_crb: remove a cruft constant keys: select CONFIG_CRYPTO when selecting DH / KDF apparmor: Make path_max parameter readonly apparmor: fix parameters so that the permission test is bypassed at boot apparmor: fix invalid reference to index variable of iterator line 836 apparmor: use SHASH_DESC_ON_STACK security/apparmor/lsm.c: set debug messages apparmor: fix boolreturn.cocci warnings Smack: Use GFP_KERNEL for smk_netlbl_mls(). smack: fix double free in smack_parse_opts_str() KEYS: add SP800-56A KDF support for DH KEYS: Keyring asymmetric key restrict method with chaining KEYS: Restrict asymmetric key linkage using a specific keychain KEYS: Add a lookup_restriction function for the asymmetric key type KEYS: Add KEYCTL_RESTRICT_KEYRING KEYS: Consistent ordering for __key_link_begin and restrict check KEYS: Add an optional lookup_restriction hook to key_type ...
240 lines
8.3 KiB
Plaintext
240 lines
8.3 KiB
Plaintext
#
|
|
# Security configuration
|
|
#
|
|
|
|
menu "Security options"
|
|
|
|
source security/keys/Kconfig
|
|
|
|
config SECURITY_DMESG_RESTRICT
|
|
bool "Restrict unprivileged access to the kernel syslog"
|
|
default n
|
|
help
|
|
This enforces restrictions on unprivileged users reading the kernel
|
|
syslog via dmesg(8).
|
|
|
|
If this option is not selected, no restrictions will be enforced
|
|
unless the dmesg_restrict sysctl is explicitly set to (1).
|
|
|
|
If you are unsure how to answer this question, answer N.
|
|
|
|
config SECURITY
|
|
bool "Enable different security models"
|
|
depends on SYSFS
|
|
depends on MULTIUSER
|
|
help
|
|
This allows you to choose different security modules to be
|
|
configured into your kernel.
|
|
|
|
If this option is not selected, the default Linux security
|
|
model will be used.
|
|
|
|
If you are unsure how to answer this question, answer N.
|
|
|
|
config SECURITY_WRITABLE_HOOKS
|
|
depends on SECURITY
|
|
bool
|
|
default n
|
|
|
|
config SECURITYFS
|
|
bool "Enable the securityfs filesystem"
|
|
help
|
|
This will build the securityfs filesystem. It is currently used by
|
|
the TPM bios character driver and IMA, an integrity provider. It is
|
|
not used by SELinux or SMACK.
|
|
|
|
If you are unsure how to answer this question, answer N.
|
|
|
|
config SECURITY_NETWORK
|
|
bool "Socket and Networking Security Hooks"
|
|
depends on SECURITY
|
|
help
|
|
This enables the socket and networking security hooks.
|
|
If enabled, a security module can use these hooks to
|
|
implement socket and networking access controls.
|
|
If you are unsure how to answer this question, answer N.
|
|
|
|
config SECURITY_NETWORK_XFRM
|
|
bool "XFRM (IPSec) Networking Security Hooks"
|
|
depends on XFRM && SECURITY_NETWORK
|
|
help
|
|
This enables the XFRM (IPSec) networking security hooks.
|
|
If enabled, a security module can use these hooks to
|
|
implement per-packet access controls based on labels
|
|
derived from IPSec policy. Non-IPSec communications are
|
|
designated as unlabelled, and only sockets authorized
|
|
to communicate unlabelled data can send without using
|
|
IPSec.
|
|
If you are unsure how to answer this question, answer N.
|
|
|
|
config SECURITY_PATH
|
|
bool "Security hooks for pathname based access control"
|
|
depends on SECURITY
|
|
help
|
|
This enables the security hooks for pathname based access control.
|
|
If enabled, a security module can use these hooks to
|
|
implement pathname based access controls.
|
|
If you are unsure how to answer this question, answer N.
|
|
|
|
config INTEL_TXT
|
|
bool "Enable Intel(R) Trusted Execution Technology (Intel(R) TXT)"
|
|
depends on HAVE_INTEL_TXT
|
|
help
|
|
This option enables support for booting the kernel with the
|
|
Trusted Boot (tboot) module. This will utilize
|
|
Intel(R) Trusted Execution Technology to perform a measured launch
|
|
of the kernel. If the system does not support Intel(R) TXT, this
|
|
will have no effect.
|
|
|
|
Intel TXT will provide higher assurance of system configuration and
|
|
initial state as well as data reset protection. This is used to
|
|
create a robust initial kernel measurement and verification, which
|
|
helps to ensure that kernel security mechanisms are functioning
|
|
correctly. This level of protection requires a root of trust outside
|
|
of the kernel itself.
|
|
|
|
Intel TXT also helps solve real end user concerns about having
|
|
confidence that their hardware is running the VMM or kernel that
|
|
it was configured with, especially since they may be responsible for
|
|
providing such assurances to VMs and services running on it.
|
|
|
|
See <http://www.intel.com/technology/security/> for more information
|
|
about Intel(R) TXT.
|
|
See <http://tboot.sourceforge.net> for more information about tboot.
|
|
See Documentation/intel_txt.txt for a description of how to enable
|
|
Intel TXT support in a kernel boot.
|
|
|
|
If you are unsure as to whether this is required, answer N.
|
|
|
|
config LSM_MMAP_MIN_ADDR
|
|
int "Low address space for LSM to protect from user allocation"
|
|
depends on SECURITY && SECURITY_SELINUX
|
|
default 32768 if ARM || (ARM64 && COMPAT)
|
|
default 65536
|
|
help
|
|
This is the portion of low virtual memory which should be protected
|
|
from userspace allocation. Keeping a user from writing to low pages
|
|
can help reduce the impact of kernel NULL pointer bugs.
|
|
|
|
For most ia64, ppc64 and x86 users with lots of address space
|
|
a value of 65536 is reasonable and should cause no problems.
|
|
On arm and other archs it should not be higher than 32768.
|
|
Programs which use vm86 functionality or have some need to map
|
|
this low address space will need the permission specific to the
|
|
systems running LSM.
|
|
|
|
config HAVE_HARDENED_USERCOPY_ALLOCATOR
|
|
bool
|
|
help
|
|
The heap allocator implements __check_heap_object() for
|
|
validating memory ranges against heap object sizes in
|
|
support of CONFIG_HARDENED_USERCOPY.
|
|
|
|
config HARDENED_USERCOPY
|
|
bool "Harden memory copies between kernel and userspace"
|
|
depends on HAVE_HARDENED_USERCOPY_ALLOCATOR
|
|
select BUG
|
|
help
|
|
This option checks for obviously wrong memory regions when
|
|
copying memory to/from the kernel (via copy_to_user() and
|
|
copy_from_user() functions) by rejecting memory ranges that
|
|
are larger than the specified heap object, span multiple
|
|
separately allocates pages, are not on the process stack,
|
|
or are part of the kernel text. This kills entire classes
|
|
of heap overflow exploits and similar kernel memory exposures.
|
|
|
|
config HARDENED_USERCOPY_PAGESPAN
|
|
bool "Refuse to copy allocations that span multiple pages"
|
|
depends on HARDENED_USERCOPY
|
|
depends on EXPERT
|
|
help
|
|
When a multi-page allocation is done without __GFP_COMP,
|
|
hardened usercopy will reject attempts to copy it. There are,
|
|
however, several cases of this in the kernel that have not all
|
|
been removed. This config is intended to be used only while
|
|
trying to find such users.
|
|
|
|
config STATIC_USERMODEHELPER
|
|
bool "Force all usermode helper calls through a single binary"
|
|
help
|
|
By default, the kernel can call many different userspace
|
|
binary programs through the "usermode helper" kernel
|
|
interface. Some of these binaries are statically defined
|
|
either in the kernel code itself, or as a kernel configuration
|
|
option. However, some of these are dynamically created at
|
|
runtime, or can be modified after the kernel has started up.
|
|
To provide an additional layer of security, route all of these
|
|
calls through a single executable that can not have its name
|
|
changed.
|
|
|
|
Note, it is up to this single binary to then call the relevant
|
|
"real" usermode helper binary, based on the first argument
|
|
passed to it. If desired, this program can filter and pick
|
|
and choose what real programs are called.
|
|
|
|
If you wish for all usermode helper programs are to be
|
|
disabled, choose this option and then set
|
|
STATIC_USERMODEHELPER_PATH to an empty string.
|
|
|
|
config STATIC_USERMODEHELPER_PATH
|
|
string "Path to the static usermode helper binary"
|
|
depends on STATIC_USERMODEHELPER
|
|
default "/sbin/usermode-helper"
|
|
help
|
|
The binary called by the kernel when any usermode helper
|
|
program is wish to be run. The "real" application's name will
|
|
be in the first argument passed to this program on the command
|
|
line.
|
|
|
|
If you wish for all usermode helper programs to be disabled,
|
|
specify an empty string here (i.e. "").
|
|
|
|
source security/selinux/Kconfig
|
|
source security/smack/Kconfig
|
|
source security/tomoyo/Kconfig
|
|
source security/apparmor/Kconfig
|
|
source security/loadpin/Kconfig
|
|
source security/yama/Kconfig
|
|
|
|
source security/integrity/Kconfig
|
|
|
|
choice
|
|
prompt "Default security module"
|
|
default DEFAULT_SECURITY_SELINUX if SECURITY_SELINUX
|
|
default DEFAULT_SECURITY_SMACK if SECURITY_SMACK
|
|
default DEFAULT_SECURITY_TOMOYO if SECURITY_TOMOYO
|
|
default DEFAULT_SECURITY_APPARMOR if SECURITY_APPARMOR
|
|
default DEFAULT_SECURITY_DAC
|
|
|
|
help
|
|
Select the security module that will be used by default if the
|
|
kernel parameter security= is not specified.
|
|
|
|
config DEFAULT_SECURITY_SELINUX
|
|
bool "SELinux" if SECURITY_SELINUX=y
|
|
|
|
config DEFAULT_SECURITY_SMACK
|
|
bool "Simplified Mandatory Access Control" if SECURITY_SMACK=y
|
|
|
|
config DEFAULT_SECURITY_TOMOYO
|
|
bool "TOMOYO" if SECURITY_TOMOYO=y
|
|
|
|
config DEFAULT_SECURITY_APPARMOR
|
|
bool "AppArmor" if SECURITY_APPARMOR=y
|
|
|
|
config DEFAULT_SECURITY_DAC
|
|
bool "Unix Discretionary Access Controls"
|
|
|
|
endchoice
|
|
|
|
config DEFAULT_SECURITY
|
|
string
|
|
default "selinux" if DEFAULT_SECURITY_SELINUX
|
|
default "smack" if DEFAULT_SECURITY_SMACK
|
|
default "tomoyo" if DEFAULT_SECURITY_TOMOYO
|
|
default "apparmor" if DEFAULT_SECURITY_APPARMOR
|
|
default "" if DEFAULT_SECURITY_DAC
|
|
|
|
endmenu
|
|
|