From 8ab9be7071566a21879eb86cefffdf162a99ee82 Mon Sep 17 00:00:00 2001 From: Thomas Kuschel Date: Mon, 17 Mar 2025 00:57:43 +0100 Subject: [PATCH] ADD Security: Integrity Policy Enforcement (IPE) --- documentation/linux_configuration.pdf | 4 +- ...inux_configuration_17_security_options.tex | 164 ++++++++++++++++++ 2 files changed, 166 insertions(+), 2 deletions(-) diff --git a/documentation/linux_configuration.pdf b/documentation/linux_configuration.pdf index f3c42e0..792dd3d 100644 --- a/documentation/linux_configuration.pdf +++ b/documentation/linux_configuration.pdf @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a3901809b987bd0ad1299494cc59eff0ecfb74dc339eeb01c989d437ace68cda -size 265861 +oid sha256:98bb853ebe9580dd3035e9404d6deb1142c1c375293137cdd9ef602bfad8305a +size 299846 diff --git a/documentation/linux_configuration_17_security_options.tex b/documentation/linux_configuration_17_security_options.tex index f27c219..ca5310d 100644 --- a/documentation/linux_configuration_17_security_options.tex +++ b/documentation/linux_configuration_17_security_options.tex @@ -497,3 +497,167 @@ This adds to kernel memory usage. It is required for introspection of loaded policy, and check point and restore support. It can be disabled for embedded systems where reducing memory and cpu is paramount.} +\paragraph{Enable introspection of sha256 hashes for loaded profiles}$~$\\ +CONFIG\_SECURITY\_APPARMOR\_HASH [=y] \textbf{[Y]}\\ +Diese Option wählt aus, ob die Introspektion von geladenen Policy-Hashes für den Userspace über das apparmor-Dateisystem verfügbar ist. +Diese Option bietet ein leichtes Mittel zur Überprüfung geladener Richtlinien. +Diese Option erhöht die Ladezeit der Richtlinie und kann für kleine eingebettete Systeme deaktiviert werden. +\english{This option selects whether introspection of loaded policy hashes is available to userspace via the apparmor filesystem. +This option provides a light weight means of checking loaded policy. +This option adds to policy load time and can be disabled for small embedded systems.} + +\subparagraph{Enable policy hash introspection by default}$~$\\ +CONFIG\_SECURITY\_APPARMOR\_HASH\_DEFAULT [=y] \textbf{[Y]}\\ +Diese Option wählt aus, ob das sha256-Hashing für geladene Richtlinien standardmäßig aktiviert ist. +Die Generierung von sha256-Hashes für geladene Richtlinien bietet Systemadministratoren eine schnelle Möglichkeit, um zu überprüfen, +ob die Richtlinien im Kernel den Erwartungen entsprechen. +In diesen Fällen kann das Hashing von Richtlinien standardmäßig deaktiviert und nur bei Bedarf aktiviert werden. +\english{This option selects whether sha256 hashing of loaded policy is enabled by default. +The generation of sha256 hashes for loaded policy provide system administrators a quick way to verify that policy in the kernel matches what is expected, +however it can slow down policy load on some devices. +In these cases policy hashing can be disabled by default and enabled only if needed.} + +\paragraph{Allow exporting the raw binary policy}$~$\\ +CONFIG\_SECURITY\_APPARMOR\_EXPORT\_BINARY [=y] \textbf{[Y]}\\ +Diese Option ermöglicht das Zurücklesen von Binärrichtlinien, während sie geladen wurden. +Sie erhöht den von der Richtlinie benötigten Kernelspeicher und verlängert die Ladezeit der Richtlinie. +Diese Option ist für die Unterstützung von Checkpoints und Wiederherstellungen sowie für die Fehlersuche bei geladenen Richtlinien erforderlich. +\english{This option allows reading back binary policy as it was loaded. +It increases the amount of kernel memory needed by policy and also increases policy load time. +This option is required for checkpoint and restore support, and debugging of loaded policy.} + +\subsubsection{Perform full verification of loaded policy} +CONFIG\_SECURITY\_APPARMOR\_PARANOID\_LOAD [=y] \textbf{[Y]}\\ +Mit dieser Option kann gesteuert werden, ob apparmor eine vollständige Überprüfung der geladenen Richtlinie durchführt. +Dies sollte nicht deaktiviert werden, außer bei eingebetteten Systemen, bei denen das Image nur gelesen werden kann, +eine Richtlinie enthält und eine Form der Integritätsprüfung hat. +Die Deaktivierung der Prüfung beschleunigt das Laden von Richtlinien. +\english{This options allows controlling whether apparmor does a full verification of loaded policy. +This should not be disabled except for embedded systems where the image is read only, includes policy, and has some form of integrity check. +Disabling the check will speed up policy loads.} + +%17.19 +\subsection{Pin load of kernel files (modules, fw, etc) to one filesystem} +CONFIG\_SECURITY\_LOADPIN [=y] \textbf{[Y]}\\ +Alle Dateien, die über die Schnittstelle zum Lesen von Kernel-Dateien gelesen werden (Kernel-Module, Firmware, Kexec-Images, Sicherheitsrichtlinien), +können an das erste zum Laden verwendete Dateisystem angeheftet werden. +Wenn dies aktiviert ist, werden alle Dateien, die von anderen Dateisystemen stammen, zurückgewiesen. +Dies wird am besten auf Systemen ohne initrd verwendet, die ein Root-Dateisystem haben, das von einem Nur-Lese-Gerät wie dm-verity oder einem CDROM unterstützt wird. +\english{Any files read through the kernel file reading interface (kernel modules, firmware, kexec images, security policy) +can be pinned to the first filesystem used for loading. +When enabled, any files that come from other filesystems will be rejected. +This is best used on systems without an initrd that have a root filesystem backed by a read-only device such as dm-verity or a CDROM.} + +\subsubsection{Enforce LoadPin at boot} +CONFIG\_SECURITY\_LOADPIN\_ENFORCE [=y] \textbf{[Y]}\\ +Wenn ausgewählt, erzwingt LoadPin das Pinning beim Booten. +Wenn es nicht ausgewählt ist, kann es beim Booten mit dem Kernelparameter \texttt{loadpin.enforce=1} aktiviert werden. +\english{If selected, LoadPin will enforce pinning at boot. +If not selected, it can be enabled at boot with the kernel parameter ``loadpin.enforce=1''.} + + +%17.20 +\subsection{Yama support} +CONFIG\_SECURITY\_YAMA [=y] \textbf{[Y]}\\ +Damit wird Yama ausgewählt, das die DAC-Unterstützung um zusätzliche systemweite Sicherheitseinstellungen erweitert, die über die regulären diskretionären Zugriffskontrollen von Linux hinausgehen. +Derzeit ist die ptrace-Bereichseinschränkung verfügbar. +Wie die Capabilities ist dieses Sicherheitsmodul mit anderen LSMs stapelbar. +Weitere Informationen finden Sie in \texttt{Documentation/admin-guide/LSM/Yama.rst}.\\ +Wenn Sie unsicher sind, wie Sie diese Frage beantworten sollen, antworten Sie mit N. +\english{This selects Yama, which extends DAC support with additional system-wide security settings beyond regular Linux discretionary access controls. +Currently available is ptrace scope restriction. +Like capabilities, this security module stacks with other LSMs. +Further information can be found in \texttt{Documentation/admin-guide/LSM/Yama.rst}.\\ +If you are unsure how to answer this question, answer N.} + +%17.21 +\subsection{Gate setid transitions to limit CAP\_SET\{U/G\}ID capabilitities} +CONFIG\_SECURITY\_SAFESETID [=y] \textbf{[Y]}\\ +SafeSetID ist ein LSM-Modul, das die setid-Familie von Syscalls sperrt, um UID/GID-Übergänge von einer bestimmten UID/GID auf diejenigen zu beschränken, +die von einer systemweiten Whitelist genehmigt wurden. +Diese Beschränkungen verhindern auch, dass die gegebenen UIDs/GIDs zusätzliche Privilegien erhalten, die mit CAP\_SET\{U/G\}ID verbunden sind, +wie z.\,B. die Möglichkeit für einen Benutzer, UID-Zuordnungen für den Benutzernamensraum einzurichten.\\ +Wenn Sie unsicher sind, wie Sie diese Frage beantworten sollen, antworten Sie mit N. +\english{SafeSetID is an LSM module that gates the setid family of syscalls to restrict UID/GID transitions from a given UID/GID to only those approved by a system-wide whitelist. +These restrictions also prohibit the given UIDs/GIDs from obtaining auxiliary privileges associated with CAP\_SET\{U/G\}ID, such as allowing a user to set up user namespace UID mappings.\\ +If you are unsure how to answer this question, answer N.} + +%17.22 +\subsection{Basic module for enforcing kernel lockdown} +CONFIG\_SECURITY\_LOCKDOWN\_LSM [=y] \textbf{[Y]}\\ +Unterstützung für einen LSM, der ein grobes Kernel-Lockdown-Verhalten erzwingt. +\english{Build support for an LSM that enforces a coarse kernel lockdown behaviour.} + +\subsubsection{Enable lockdown LSM early in init} +CONFIG\_SECURITY\_LOCKDOWN\_LSM\_EARLY [=n] \textbf{[N]}\\ +Die Lockdown-LSM früh beim Booten aktivieren. +Dies ist notwendig, um sicherzustellen, dass die Lockdown-Erzwingung bei Kernel-Boot-Parametern durchgeführt werden kann, die ansonsten geparst werden, bevor das Sicherheits-Subsystem vollständig initialisiert ist. +Wenn sie aktiviert ist, wird lockdown bedingungslos vor allen anderen LSMs aufgerufen. +\english{Enable the lockdown LSM early in boot. +This is necessary in order to ensure that lockdown enforcement can be carried out on kernel boot parameters that are otherwise parsed before the security subsystem is fully initialised. +If enabled, lockdown will unconditionally be called before any other LSMs.} + +\subsubsection{Kernel default lockdown mode () \texorpdfstring{$\longrightarrow$}{->}} +Der Kernel kann so konfiguriert werden, dass er standardmäßig verschiedene Stufen der Abriegelung verwendet. +\english{The kernel can be configured to default to differing levels of lockdown.} + +\paragraph{None}$~$\\ +CONFIG\_LOCK\_DOWN\_KERNEL\_FORCE\_NONE [=y] \textbf{[Y]}\\ +Standardmäßig ist keine Lockdown-Funktionalität aktiviert. +Lockdown kann über die Kernel-Kommando\-zeile oder \texttt{/sys/kernel/security/lockdown} aktiviert werden. +\english{No lockdown functionality is enabled by default. +Lockdown may be enabled via the kernel commandline or /sys/kernel/security/lockdown.} + +\paragraph{Integrity}$~$\\ +CONFIG\_LOCK\_DOWN\_KERNEL\_FORCE\_INTEGRITY [=n] \textbf{[N]}\\ +Der Kernel läuft standardmäßig im Integritätsmodus. +Funktionen, die es ermöglichen, den Kernel zur Laufzeit zu verändern, sind deaktiviert. +\english{The kernel runs in integrity mode by default. +Features that allow the kernel to be modified at runtime are disabled.} + +\paragraph{Confidentiality}$~$\\ +CONFIG\_LOCK\_DOWN\_KERNEL\_FORCE\_CONFIDENTIALITY [=n] \textbf{[N]}\\ +Der Kernel läuft standardmäßig im Vertraulichkeitsmodus. +Funktionen, die es erlauben, den Kernel zur Laufzeit zu verändern oder die es Userland-Code erlauben, vertrauliches Material im Kernel zu lesen, sind deaktiviert. +\english{The kernel runs in confidentiality mode by default. +Features that allow the kernel to be modified at runtime or that permit userland code to read confidential material held inside the kernel are disabled.} + +%17.23 +\subsection{Landlock support} +CONFIG\_SECURTIY\_LANDLOCK [=y] \textbf{[Y]}\\ +Landlock ist ein Sandboxing-Mechanismus, der es Prozessen ermöglicht, sich selbst (und ihre zukünftigen Kinder) einzuschränken, indem schrittweise maßgeschneiderte Zugriffskontrollrichtlinien durchgesetzt werden. +Eine Landlock-Sicherheitsrichtlinie ist ein Satz von Zugriffsrechten (z.\,B. eine Datei schreibgeschützt öffnen, ein Verzeichnis erstellen, usw.), die an eine Dateihierarchie gebunden sind. +Solche Richtlinien können von beliebigen Prozessen für sich selbst konfiguriert und durchgesetzt werden, indem die entsprechenden Systemaufrufe verwendet werden: landlock\_create\_ruleset(), landlock\_add\_rule(), +und landlock\_restrict\_self().\\ +Siehe \texttt{Documentation/userspace-api/landlock.rst} für weitere Informationen.\\ +Wenn Sie unsicher sind, wie Sie diese Frage beantworten sollen, antworten Sie mit N. +Andernfalls sollten Sie auch ``landlock,'' dem Inhalt von CONFIG\_LSM voranstellen, um Landlock zur Boot-Zeit zu aktivieren. +\english{Landlock is a sandboxing mechanism that enables processes to restrict themselves (and their future children) by gradually enforcing tailored access control policies. +A Landlock security policy is a set of access rights (e.g. open a file in read-only, make a directory, etc.) tied to a file hierarchy. +Such policy can be configured and enforced by any processes for themselves using the dedicated system calls: landlock\_create\_ruleset(), landlock\_add\_rule(), +and landlock\_restrict\_self().\\ +See Documentation/userspace-api/landlock.rst for further information.\\ +If you are unsure how to answer this question, answer N. +Otherwise, you should also prepend ``landlock,'' to the content of CONFIG\_LSM to enable Landlock at boot time.} + +%17.24 +\subsection{Integrity Policy Enforcement (IPE) \texorpdfstring{$\longrightarrow$}{->}} +CONFIG\_SECURITY\_IPE [=y] \textbf{[Y]}\\ +Diese Option aktiviert die Integritätsrichtlinien-Durchsetzungs-LSM, die es Benutzern ermöglicht, eine Richtlinie zur Durchsetzung einer +vertrauensbasierten Zugriffskontrolle zu definieren. +Ein Hauptmerkmal von IPE ist eine anpassbare Richtlinie, die es Administratoren ermöglicht, die Vertrauensanforderungen im laufenden Betrieb neu zu konfigurieren.\\ +Wenn Sie unsicher sind, antworten Sie mit N. +\english{This option enables the Integrity Policy Enforcement LSM allowing users to define a policy to enforce a trust-based access control. +A key feature of IPE is a customizable policy to allow admins to reconfigure trust requirements on the fly.\\ +If unsure, answer N.} + +\subsubsection{Integrity policy to apply on system startup} +CONFIG\_IPE\_BOOT\_POLICY [=] \textbf{[]}\\ +Diese Option gibt einen Dateipfad zu einer IPE-Richtlinie an, die in den Kernel kompiliert wird. +Diese Richtlinie wird durchgesetzt, bis eine Richtlinienaktualisierung über die Schnittstelle\\ +\texttt{\$securityfs/ipe/policies/\$policy\_name/active} bereitgestellt wird.\\ +Wenn Sie unsicher sind, lassen Sie das Feld leer. +\english{This option specifies a filepath to an IPE policy that is compiled into the kernel. +This policy will be enforced until a policy update is deployed via the \texttt{\$securityfs/ipe/policies/\$policy\_name/active} interface.\\ +If unsure, leave blank.} +