% Device Drivers (15)
% since 6.13
\section{Security options \texorpdfstring{$\longrightarrow$}{->}}
\textit{(Sicherheitsoptionen)}

%17.1
\subsection{Enable access key retention support}
CONFIG\_KEYS [=y] \textbf{[Y]}\\
Diese Option bietet Unterstützung für die Aufbewahrung von Authentifizierungs- und Zugriffsschlüsseln im Kernel.\\
Außerdem werden Methoden bereitgestellt, mit denen solche Schlüssel mit einem Prozess verknüpft werden können, so dass Netzwerkdateisysteme,
Verschlüsselungsunterstützung und ähnliches sie finden können.\\
Darüber hinaus gibt es einen speziellen Schlüsseltyp, der als Schlüsselbund fungiert: eine durchsuchbare Folge von Schlüsseln.
Jeder Prozess verfügt über den Zugang zu fünf Standard-Schlüsselbunden: UID-spezifisch, GID-spezifisch, Sitzung, Prozess und Thread.\\
Wenn Sie sich nicht sicher sind, ob dies erforderlich ist, antworten Sie mit N.
\english{This option provides support for retaining authentication tokens and access keys in the kernel.\\
It also includes provision of methods by which such keys might be associated with a process so that network file\-systems, encryption support and the like can find them.\\
Furthermore, a special type of key is available that acts as keyring: a searchable sequence of keys.
Each process is equipped with access to five standard keyrings: UID-specific, GID-specific, session, process and thread.\\
If you are unsure as to whether this is required, answer N.}

\subsubsection{Enable temporary caching of the last request\_key() result}
CONFIG\_KEYS\_REQUEST\_CACHE [=y] \textbf{[Y]}\\
Diese Option bewirkt, dass das Ergebnis des letzten erfolgreichen request\_key()-Aufrufs, der nicht zum Kernel hochgeladen wurde, vorübergehend im task\_struct zwischengespeichert wird.
Der Zwischenspeicher wird beim Beenden und kurz vor der Wiederaufnahme des Userspace geleert.\\
Dies ermöglicht die Verwendung des Schlüssels bei mehrstufigen Prozessen, bei denen jeder Schritt einen Schlüssel anfordert, der wahrscheinlich derselbe ist wie der vom letzten Schritt angeforderte, um die Suche zu sparen.\\
Ein Beispiel für einen solchen Prozess ist ein Pathwalk durch ein Netzwerkdateisystem, bei dem jede Methode einen Authentifizierungsschlüssel anfordern muss.
Pathwalk ruft mehrere Methoden für jedes durchquerte Gebiet auf (permission, d\_revalidate, lookup, getxattr, getacl, \dots).
\english{This option causes the result of the last successful request\_key() call that didn't upcall to the kernel to be cached temporarily in the task\_struct.
The cache is cleared by exit and just prior to the resumption of userspace.\\
This allows the key used for multiple step processes where each step wants to request a key that is likely the same as the one requested by the last step to save on the searching.\\
An example of such a process is a pathwalk through a network filesystem in which each method needs to request an authentication key.
Pathwalk will call multiple methods for each dentry traversed (permission, d\_revalidate, lookup, getxattr, getacl, \dots).}

\subsubsection{Enable register of persistent per-UID keyrings}
CONFIG\_PERSISTENT\_KEYRINGS [=y] \textbf{[Y]}\\
Diese Option stellt ein Register persistenter Schlüsselringe pro UID bereit, das in erster Linie für die Speicherung von Kerberos-Schlüsseln gedacht ist.
Die Schlüsselringe sind persistent in dem Sinne, dass sie auch dann noch vorhanden sind, wenn alle Prozesse dieser UID beendet sind, und nicht, dass sie den Neustart des Rechners überleben.\
Auf einen bestimmten Schlüsselbund kann entweder der Benutzer, dessen Schlüsselbund es ist, oder ein Prozess mit administrativen Rechten zugreifen.
Die aktiven LSMs können festlegen, welche Prozesse mit Administratorrechten auf den Cache zugreifen dürfen.\\
Schlüsselringe werden bei Bedarf erstellt und in das Register aufgenommen und werden entfernt, wenn sie ablaufen (bei der Erstellung wird eine Standardzeitüberschreitung festgelegt).
\english{This option provides a register of persistent per-UID keyrings, primarily aimed at Kerberos key storage.
The keyrings are persistent in the sense that they stay around after all processes of that UID have exited, not that they survive the machine being rebooted.\\
A particular keyring may be accessed by either the user whose keyring it is or by a process with administrative privileges.
The active LSMs gets to rule on which admin-level processes get to access the cache.\\
Keyrings are created and added into the register upon demand and get removed if they expire (a default timeout is set upon creation).}

\subsubsection{TRUSTED KEYS}
CONFIG\_TRUSTED\_KEYS [=m] \textbf{[M]}\\
Diese Option bietet Unterstützung für das Erstellen, Versiegeln und Entsiegeln von Schlüsseln im Kernel.
Vertrauenswürdige Schlüssel sind symmetrische Schlüssel mit Zufallszahlen, die von einer beim Booten des Kernels ausgewählten Vertrauensquelle erzeugt und versiegelt werden.
Der Userspace wird immer nur verschlüsselte Blobs sehen.\\
Wenn Sie sich nicht sicher sind, ob dies erforderlich ist, antworten Sie mit N.
\english{This option provides support for creating, sealing, and unsealing keys in the kernel.
Trusted keys are random number symmetric keys, generated and sealed by a trust source selected at kernel boot-time.
Userspace will only ever see encrypted blobs.\\
If you are unsure as to whether this is required, answer N.}

\paragraph{TPM-based trusted keys}$~$\\
CONFIG\_TRUSTED\_KEYS\_TPM [=y] \textbf{[Y]}\\
Aktivieren Sie die Verwendung des Trusted Platform Module (TPM) als vertrauenswürdiges Schlüssel-Backend.
Vertrauenswürdige Schlüssel sind symmetrische Schlüssel mit Zufallszahlen,
die vom TPM generiert und RSA-versiegelt werden. Das TPM entsiegelt die Schlüssel nur, wenn die Boot-PCRs und andere Kriterien übereinstimmen.
\english{Enable use of the Trusted Platform Module (TPM) as trusted key backend.
Trusted keys are random number symmetric keys, which will be generated and RSA-sealed by the TPM.
The TPM only unseals the keys, if the boot PCRs and other criteria match.}

\subsubsection{ENCRYPTED KEYS}
CONFIG\_ENCRYPTED\_KEYS [=m] \textbf{[M]}\\
Diese Option bietet Unterstützung für das Erstellen/Entschlüsseln/Entschlüsseln von Schlüsseln im Kernel.
Verschlüsselte Schlüssel werden mit vom Kernel generierten Zufallszahlen oder bereitgestellten entschlüsselten Daten instanziiert und
mit einem symmetrischen \glqq Master\grqq{}-Schlüssel ver-/entschlüsselt.
Der \glqq Master\grqq{}-Schlüssel kann entweder ein vertrauenswürdiger Schlüssel oder ein Benutzerschlüssel sein.
Es werden immer nur verschlüsselte Blobs in den Userspace ausgegeben.
Wenn Sie sich nicht sicher sind, ob dies erforderlich ist, antworten Sie mit N.
\english{This option provides support for create/encrypting/decrypting keys in the kernel.
Encrypted keys are instantiated using kernel generated random numbers or provided decrypted data, and are encrypted/decrypted with a `master' symmetric key.
The `master' key can be either a trusted-key or user-key type.
Only encrypted blobs are ever output to Userspace.\\
If you are unsure as to whether this is required, answer N.}

\paragraph{Allow encrypted keys with user decrypted data}$~$\\
CONFIG\_USER\_DECRYPTED\_DATA [=n] \textbf{[N]}\\
Diese Option bietet Unterstützung für die Instanziierung von verschlüsselten Schlüsseln mit vom Benutzer bereitgestellten entschlüsselten Daten.
Die entschlüsselten Daten müssen in Hex-Ascii kodiert sein.
Wenn Sie sich nicht sicher sind, ob dies erforderlich ist, antworten Sie mit N.
\english{This option provides support for instantiating encrypted keys using user-provided decrypted data.
The decrypted data must be hex-ascii encoded.\\
If you are unsure as to whether this is required, answer N.}

\subsubsection{Diffie-Hellman operations on retained keys}
CONFIG\_KEY\_DH\_OPERATIONS [=y] \textbf{[Y]}\\
Diese Option unterstützt die Berechnung von öffentlichen Diffie-Hellman-Schlüsseln und gemeinsam genutzten Geheimnissen unter Verwendung von Werten,
die als Schlüssel im Kernel gespeichert sind.\\
Wenn Sie sich nicht sicher sind, ob dies erforderlich ist, antworten Sie mit N.
\english{This option provides support for calculating Diffie-Hellman public keys and shared secrets using values stored as keys in the kernel.\\
If you are unsure as to whether this is required, answer N.}

%17.2
\subsection{Restrict unprivileged access to the kernel syslog}
CONFIG\_SECURITY\_DMESG\_RESTRICT [=y] \textbf{[Y]}\\
Dies erzwingt Beschränkungen für unprivilegierte Benutzer, die das Kernel-Syslog über dmesg(8) lesen.\\
Wenn diese Option nicht ausgewählt ist, werden keine Beschränkungen durchgesetzt, es sei denn, die Sysctl dmesg\_restrict ist explizit auf (1) gesetzt.\\
Wenn Sie unsicher sind, wie Sie diese Frage beantworten sollen, antworten Sie mit N.
\english{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.}

\subsection{Allow /proc/pid/mem access override () \texorpdfstring{$\longrightarrow$}{->}}

\subsubsection{Traditional /proc/pid/mem behavior}
CONFIG\_PROC\_MEM\_ALWAYS\_FORCE [=y] \textbf{[Y]}\\
Damit können die \texttt{/proc/pid/mem}-Zugriffe die Speicherzuordnungsberechtigungen außer Kraft setzen, wenn Sie über ptrace-Zugriffsrechte verfügen.
\english{This allows /proc/pid/mem accesses to override memory mapping permissions if you have ptrace access rights.}

\subsubsection{Require active ptrace() use for access override}
CONFIG\_PROC\_MEM\_FORCE\_PTRACE [=n] \textbf{[N]}\\
Dadurch können /proc/pid/mem-Zugriffe die Speicherzuordnungsberechtigungen für aktive Ptracer wie gdb außer Kraft setzen.
\english{This allows /proc/pid/mem accesses to override memory mapping permissions for active ptracers like gdb.}

\subsubsection{Never}
CONFIG\_PROC\_MEM\_NO\_FORCE [=n] \textbf{[N]}\\
Niemals die Berechtigungen für die Speicherzuordnung außer Kraft setzen.
\english{Never override memory mapping permissions}

%17.4
\subsection{Enable different security models}
CONFIG\_SECURITY [=y] \textbf{[Y]}\\
Damit können Sie verschiedene Sicherheitsmodule auswählen, die in Ihrem Kernel konfiguriert werden sollen.
Wenn diese Option nicht ausgewählt ist, wird das Standard-Linux-Sicherheitsmodell verwendet.\\
Wenn Sie unsicher sind, wie Sie diese Frage beantworten sollen, antworten Sie mit N.
\english{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.}

%17.5
\subsection{Enable the securityfs filesystem}
CONFIG\_SECURITYFS [=y] \textbf{[Y]}\\
Damit wird das securityfs-Dateisystem erstellt.
Es wird derzeit von verschiedenen Sicherheitsmodulen (AppArmor, IMA, SafeSetID, TOMOYO, TPM) verwendet.
Wenn Sie unsicher sind, wie Sie diese Frage beantworten sollen, antworten Sie mit N.
\english{This will build the securityfs filesystem.
It is currently used by various security modules (AppArmor, IMA, SafeSetID, TOMOYO, TPM).
If you are unsure how to answer this question, answer N.}

%17.6
\subsection{Socket and Networking Security Hooks}
CONFIG\_SECURITY\_NETWORK [=y] \textbf{[Y]}\\
Damit werden die Socket- und Netzwerksicherheitshaken aktiviert.
Wenn diese Option aktiviert ist, kann ein Sicherheitsmodul diese Hooks verwenden, um Socket- und Netzwerkzugangskontrollen zu implementieren.
Wenn Sie unsicher sind, wie Sie diese Frage beantworten sollen, antworten Sie mit N.
\english{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.}

%17.7
\subsection{Infiniband Security Hooks}
CONFIG\_SECURITY\_INFINIBAND \colorbox{yellow!80}{[=y] \textbf{[N]}}\\
Damit werden die Infiniband-Sicherheitshaken aktiviert.
Wenn diese Option aktiviert ist, kann ein Sicher\-heits\-modul diese Hooks verwenden, um Infiniband-Zugangskontrollen zu implementieren.
Wenn Sie unsicher sind, wie Sie diese Frage beantworten sollen, antworten Sie mit N.
\english{This enables the Infiniband security hooks.
If enabled, a security module can use these hooks to implement Infiniband access controls.
If you are unsure how to answer this question, answer N.}
\note{Da wir am Laptop sicherlich keine Infiniband-Verbindungen haben, wählen wir N.}

%17.8
\subsection{XFRM (IPSec) Networking Security Hooks}
CONFIG\_SECURITY\_NETWORK\_XFRM [=y] \textbf{[Y]}\\
Damit werden die XFRM (IPSec)-Netzwerksicherheitshaken aktiviert.
Wenn diese Option aktiviert ist, kann ein Sicherheitsmodul diese Hooks verwenden, um Zugriffskontrollen pro Paket auf der Grundlage
von Kennzeichnungen zu implementieren, die aus der IPSec-Richtlinie abgeleitet werden.
Nicht-IPSec-Kommunikationen werden als unmarkiert bezeichnet, und nur Sockets, die zur Kommunikation unmarkierter Daten berechtigt sind,
können ohne IPSec senden.
Wenn Sie unsicher sind, wie Sie diese Frage beantworten sollen, antworten Sie mit N.
\english{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.}

%17.9
\subsection{Security hooks for pathname based access control}
CONFIG\_SECURITY\_PATH [=y] \textbf{Y}\\
Damit werden die Sicherheitshaken für die auf Pfadnamen basierende Zugriffskontrolle aktiviert.
Wenn diese Option aktiviert ist, kann ein Sicherheitsmodul diese Hooks verwenden,
um eine auf Pfadnamen basierende Zugriffskontrolle zu implementieren.
Wenn Sie unsicher sind, wie Sie diese Frage beantworten sollen, antworten Sie mit N.
\english{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.}

%17.10
\subsection{Enable Intel(R) Trusted Execution Technology (Intel(R) TXT)}
CONFIG\_INTEL\_TXT [=n] \textbf{[N]}\\
Diese Option aktiviert die Unterstützung für das Booten des Kernels mit dem Trusted Boot (tboot) Modul.
Dadurch wird die Intel(R) Trusted Execution Technology verwendet, um einen gemessenen Start des Kernels durchzuführen.
Wenn das System Intel(R) TXT nicht unterstützt, hat dies keine Auswirkung.\\
Intel TXT bietet eine höhere Sicherheit für die Systemkonfiguration und den Anfangszustand sowie einen Schutz vor Datenrücksetzung.
Damit wird eine robuste anfängliche Kernel-Messung und -Überprüfung durchgeführt, die dazu beiträgt, dass die Kernel-Sicherheitsmechanismen korrekt funktionieren.
Dieses Schutzniveau erfordert eine Vertrauensbasis außerhalb des Kernels selbst.\\
Intel TXT trägt auch dazu bei, die Bedenken der Endbenutzer zu zerstreuen, die sich darauf verlassen wollen, dass ihre Hardware den VMM oder Kernel ausführt,
mit dem sie konfiguriert wurde, insbesondere, da sie dafür verantwortlich sind, VMs und Diensten, die darauf laufen, diese Sicherheit zu geben.
Weitere Informationen über Intel(R) TXT finden Sie unter \url{https://www.intel.com/technology/security/}.
Siehe \url{http://tboot.sourceforge.net} für weitere Informationen über tboot.\\
Unter \texttt{Documentation/arch/x86/intel\_txt.rst} finden Sie eine Beschreibung, wie Sie die Intel TXT-Unterstützung in einem Kernel-Boot aktivieren können.\\
Wenn Sie sich nicht sicher sind, ob dies erforderlich ist, antworten Sie mit N.
\english{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 \url{https://www.intel.com/technology/security/} for more information about Intel(R) TXT.
See \url{http://tboot.sourceforge.net} for more information about tboot.
See \texttt{Documentation/arch/x86/intel\_txt.rst} 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.}

\subsection{Low address space for LSM to protect from user allocation}
CONFIG\_LSM\_MMAP\_MIN\_ADDR [=65536] \textbf{[65536]}\\
Dies ist der Teil des niedrigen virtuellen Speichers, der vor der Zuweisung im Benutzerraum geschützt werden sollte.
Wenn ein Benutzer davon abgehalten wird, auf niedrige Seiten zu schreiben, kann dies dazu beitragen, die Auswirkungen von NULL-Zeiger-Fehlern im Kernel zu verringern.\\
Für die meisten ia64-, ppc64- und x86-Benutzer mit viel Adressraum ist ein Wert von \num{65536} angemessen und sollte keine Probleme verursachen.
Auf ARM und anderen Architekturen sollte er nicht höher als 32768 sein.
Programme, die die vm86-Funktionalität nutzen oder diesen niedrigen Adressraum abbilden müssen, benötigen die für die Systeme, auf denen LSM läuft, spezifische Berechtigung.
\english{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.}

%17.12
\subsection{Harden memory copies between kernel and userspace}
CONFIG\_HARDENED\_USERCOPY [=y] \textbf{[Y]}\\
Diese Option prüft beim Kopieren von Speicher in den Kernel oder aus dem Kernel (über die Funktionen \texttt{copy\_to\_user()} und \texttt{copy\_from\_user()})
auf offensichtlich falsche Speicherbereiche,
indem Speicher"-bereiche zurück"-ge"-wiesen werden, die größer als das angegebene Heap-Objekt sind, sich über mehrere separat zugewiesene Seiten erstrecken,
sich nicht auf dem Prozess-Stack befinden oder Teil des Kerneltextes sind.
Dies verhindert ganze Klassen von Heap-Overflow-Exploits und ähnliche Kernel-Speicher-Exponierungen.
\english{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 allocated pages, are not on the process stack, or are part of the kernel text.
This prevents entire classes of heap overflow exploits and similar kernel memory exposures.}

%17.13
\subsection{Harden common str/mem functions against buffer overflows}
CONFIG\_FORTIFY\_SOURCE [=y] \textbf{[Y]}\\
Erkennung von Pufferüberläufen in gängigen String- und Speicherfunktionen,
bei denen der Compiler die Puffergrößen ermitteln und validieren kann.
\english{Detect overflows of buffers in common string and memory functions where the compiler can determine and validate the buffer sizes.}

%17.14
\subsection{Force all usermode helper calls through a single binary}
CONFIG\_STATIC\_USERMODEHELPER [=n] \textbf{[N]}\\
Standardmäßig kann der Kernel viele verschiedene Userspace-Binärprogramme über die \glqq usermode helper\grqq{} Kernelschnittstelle aufrufen.
Einige dieser Binärprogramme sind statisch definiert, entweder im Kernelcode selbst oder als Kernelkonfigurationsoption.
Einige von ihnen werden jedoch dynamisch zur Laufzeit erstellt oder können nach dem Start des Kernels geändert werden.
Um eine zusätzliche Sicherheitsebene zu schaffen, leiten Sie alle diese Aufrufe über eine einzige ausführbare Datei, deren Name nicht geändert werden kann.
Beachten Sie, dass es an dieser einzelnen Binärdatei liegt, die entsprechende \glqq echte\grqq{} Usermode-Hilfsprogrammdatei aufzurufen, die auf dem ersten Argument basiert, das ihr übergeben wurde.
Falls gewünscht, kann dieses Programm filtern und auswählen, welche echten Programme aufgerufen werden.
Wenn Sie möchten, dass alle Usermode-Hilfsprogramme deaktiviert werden, wählen Sie diese Option und setzen Sie STATIC\_USERMODEHELPER\_PATH auf eine leere Zeichenkette.
\english{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.}

%17.15
\subsection{SELinux Support}
CONFIG\_SECURITY\_SELINUX [=y] \textbf{[Y]}\\
Damit wird Security-Enhanced Linux (SELinux) ausgewählt.
Sie benötigen außerdem eine Richtlinienkonfiguration und ein gekennzeichnetes Dateisystem.
Wenn Sie unsicher sind, wie Sie diese Frage beantworten sollen, antworten Sie mit N.
\english{This selects Security-Enhanced Linux (SELinux).
You will also need a policy configuration and a labeled filesystem.
If you are unsure how to answer this question, answer N.}

\subsubsection{SELinux boot parameter}
CONFIG\_SECURITY\_SELINUX\_BOOTPARAM [=y] \textbf{[Y]}\\
Diese Option fügt einen Kernelparameter `selinux' hinzu, mit dem SELinux beim Booten deaktiviert werden kann.
Wenn diese Option ausgewählt ist, kann die SELinux-Funktionalität mit \texttt{selinux=0} in der Kernel-Befehlszeile deaktiviert werden.
Der Zweck dieser Option ist es, dass ein einzelnes Kernel-Image mit eingebautem,
aber nicht unbedingt aktiviertem SELinux verteilt werden kann.
\english{This option adds a kernel parameter `selinux', which allows SELinux to be disabled at boot.
If this option is selected, SELinux functionality can be disabled with selinux=0 on the kernel command line.
The purpose of this option is to allow a single kernel image to be distributed with SELinux built in, but not
necessarily enabled.}

\subsubsection{SELinux Development Support}
CONFIG\_SECURITY\_SELINUX\_DEVELOP [=y] \textbf{[Y]}\\
Dies aktiviert die Entwicklungsunterstützung von SELinux, die nützlich ist, um mit SELinux zu experimentieren und Richtlinien zu entwickeln.
Wenn Sie unsicher sind, sagen Sie Y.
Wenn diese Option aktiviert ist, startet der Kernel im permissiven Modus (alles protokollieren, nichts verweigern), es sei denn, Sie geben enforcing=1 in der Kernel-Kommandozeile an.
Sie können den Kernel über /sys/fs/selinux/enforce interaktiv zwischen dem erzwingenden und dem erlaubenden Modus umschalten (sofern die Richtlinie dies zulässt).
\english{This enables the development support option of SELinux, which is useful for experimenting with SELinux and developing policies.
If unsure, say Y.
With this option enabled, the kernel will start in permissive mode (log everything, deny nothing) unless you specify enforcing=1
on the kernel command line.
You can interactively toggle the kernel between enforcing mode and permissive mode (if permitted by the policy) via /sys/fs/selinux/enforce.}

\subsubsection{SELinux AVC Statistics}
CONFIG\_SECURITY\_SELINUX\_AVC\_STATS [=y] \textbf{[Y]}\\
Diese Option sammelt Zugriffsvektor-Cache-Statistiken in /sys/fs/selinux/avc/cache\_stats, die mit Tools wie \texttt{avcstat}
überwacht werden können.
\english{This option collects access vector cache statistics to /sys/fs/selinux/avc/cache\_stats, which may be monitored via tools
such as avcstat.}

\subsubsection{SELinux sidtab hashtable size}
CONFIG\_SECURITY\_SELINUX\_SIDTAB\_HASH\_BITS [=9] \textbf{[9]}\\
Diese Option setzt die Anzahl der in der Sidtab-Hashtabelle verwendeten Buckets auf\\
2\^{}SECURITY\_SELINUX\_SIDTAB\_HASH\_BITS Buckets.\\
Die Anzahl der Hash-Kollisionen kann unter /sys/fs/selinux/ss/sidtab\_hash\_stats eingesehen werden.
Wenn die Kettenlängen hoch sind (z.\,B. $> 20$), wird ein höherer Wert hier sicherstellen, dass die Suchzeiten kurz und stabil sind.
\english{This option sets the number of buckets used in the sidtab hashtable to\\
2\^{}SECURITY\_SELINUX\_SIDTAB\_HASH\_BITS buckets.
The number of hash collisions may be viewed at /sys/fs/selinux/ss/sidtab\_hash\_stats.
If chain lengths are high (e.g. $> 20$) then selecting a higher value here will ensure that lookups times are short and stable.}

\subsubsection{SELinux SID to context string translation cache size}
CONFIG\_SECURITY\_SELINUX\_SID2STR\_CACHE\_SIZE [=256] \textbf{[256]}\\
Diese Option definiert die Größe des internen SID $\rightarrow$ Kontext-String-Cache,
der die Leistung der Kontext-zu-String-Konvertierung verbessert.
Wenn Sie diese Option auf 0 setzen, wird der Cache vollständig deaktiviert.
Wenn Sie unsicher sind, behalten Sie den Standardwert bei.
\english{This option defines the size of the internal SID $\rightarrow$ context string cache, which improves
the performance of context to string conversion.
Setting this option to 0 disables the cache completely.
If unsure, keep the default value.}

\subsubsection{SELinux kernel debugging support}
CONFIG\_SECURITY\_SELINUX\_DEBUG [=n] \textbf{[N]}\\
Dies aktiviert Debugging-Code, der SELinux-Kernel-Entwicklern helfen soll.
Wenn Sie nicht wissen, was dies im Kernel-Code bewirkt, sollten Sie dies deaktiviert lassen.\\
Um die auszugebenden Meldungen fein zu steuern, aktivieren Sie CONFIG\_DYNAMIC\_DEBUG und lesen Sie
Documentation/admin-guide/dynamic-debug-howto.rst für weitere Informationen.\\
Beispiel für die Verwendung:
\begin{verbatim}
      echo -n 'file "security/selinux/*" +p' > \
              /proc/dynamic_debug/control
\end{verbatim}
$~$
\english{This enables debugging code designed to help SELinux kernel developers,
unless you know what this does in the kernel code you should leave this disabled.\\
To fine control the messages to be printed enable CONFIG\_DYNAMIC\_DEBUG and see Documentation/admin-guide/dynamic-debug-howto.rst
for additional information.\\
Example usage:\\
\indent \qquad echo -n 'file "security/selinux/*" +p' $>$ $ \backslash $ \\
\indent \qquad \qquad /proc/dynamic\_debug/control}

%17.16
\subsection{Simplified Mandatory Access Control Kernel Support}
CONFIG\_SECURITY\_SMACK [=y] \textbf{[Y]}\\
Damit wird der Simplified Mandatory Access Control Kernel ausgewählt.
Smack ist nützlich für Sensitivität, Integrität und eine Vielzahl anderer obligatorischer Sicherheitsverfahren.
Wenn Sie unsicher sind, wie Sie diese Frage beantworten sollen, antworten Sie mit N.
\english{This selects the Simplified Mandatory Access Control Kernel.
Smack is useful for sensitivity, integrity, and a variety of other mandatory security schemes.
If you are unsure how to answer this question, answer N.}

\subsubsection{Reporting on access granted by Smack rules}
CONFIG\_SECURITY\_SMACK\_BRINGUP [=y] \textbf{[Y]}\\
Aktivieren Sie in Smack-Regeln den Zugriffsmodus \texttt{bring-up} (\glqq b\grqq{}).
Wenn der Zugriff durch eine Regel mit dem \glqq b\grqq{}-Modus gewährt wird, wird eine Nachricht über den
angeforderten Zugriff erzeugt.
Die Absicht ist, dass einem Prozess eine breite Palette von Zugriffen gewährt werden kann,
wenn der Bringup-Modus in den Regeln eingestellt ist.
Der Entwickler kann die Informationen nutzen, um festzustellen, welche Regeln notwendig sind und
welche Zugriffe unangemessen sein könnten.
Der Entwickler kann den Zugriffsregelsatz reduzieren, sobald er das Verhalten gut verstanden hat.
Dies ist ein besserer Mechanismus als der oft missbrauchte \glqq permissive\grqq{} Modus anderer Systeme.\\
Wenn Sie unsicher sind, wie Sie diese Frage beantworten sollen, antworten Sie mit N.
\english{Enable the bring-up (``b'') access mode in Smack rules.
When access is granted by a rule with the ``b'' mode a message about the access requested is generated.
The intention is that a process can be granted a wide set of access initially with the bringup mode set on the rules.
The developer can use the information to identify which rules are necessary and what accesses may be inappropriate.
The developer can reduce the access rule set once the behavior is well understood.
This is a superior mechanism to the oft abused ``permissive'' mode of other systems.\\
If you are unsure how to answer this question, answer N.}

\subsubsection{Packet marking using secmarks for netfilter}
CONFIG\_SECURITY\_SMACK\_NETFILTER [=y] \textbf{[Y]}\\
Dies ermöglicht die Sicherheitsmarkierung von Netzwerkpaketen mit Smack- Labels.\\
Wenn Sie unsicher sind, wie Sie diese Frage beantworten sollen, antworten Sie mit N.
\english{This enables security marking of network packets using Smack labels.
If you are unsure how to answer this question, answer N.}

\subsubsection{Treat delivering signals as an append operation}
CONFIG\_SECURITY\_SMACK\_APPEND\_SIGNALS [=y] \textbf{[Y]}\\
Das Senden eines Signals wurde bisher als Schreibvorgang für den empfangenden Prozess behandelt.
Wenn diese Option aktiviert ist, wird die Zustellung stattdessen als Anfügevorgang behandelt.
Dadurch ist es möglich, in den Smack-Regeln zwischen der Zustellung eines Netzwerkpakets und der Zustellung eines Signals zu unterscheiden.\\
Wenn Sie unsicher sind, wie Sie diese Frage beantworten sollen, antworten Sie mit N.
\english{Sending a signal has been treated as a write operation to the receiving process.
If this option is selected, the delivery will be an append operation instead.
This makes it possible to differentiate between delivering a network packet and delivering a signal in the Smack rules.\\
If you are unsure how to answer this question, answer N.}

%17.17
\subsection{TOMOYO Linux Support}
CONFIG\_SECURITY\_TOMOYO [=y] \textbf{[Y]}\\
Dies wählt TOMOYO Linux, eine auf Pfadnamen basierende Zugriffskontrolle.
Erforderliche Userspace-Tools und weitere Informationen finden Sie unter \url{https://tomoyo.sourceforge.net/}.\\
Wenn Sie unsicher sind, wie Sie diese Frage beantworten sollen, antworten Sie mit N.
\english{This selects TOMOYO Linux, pathname-based access control.
Required userspace tools and further information may be found at \url{https://tomoyo.sourceforge.net/}.\\
If you are unsure how to answer this question, answer N.}

\subsubsection{Default maximal count for learning mode}
CONFIG\_SECURITY\_TOMOYO\_MAX\_ACCEPT\_ENTRY [=2048] \textbf{[2048]}\\
Dies ist der Standardwert für maximale ACL-Einträge, die im \glqq{}Lernmodus\grqq{} automatisch an die Richtlinie angehängt werden.
Einige Programme greifen auf Tausende von Objekten zu, so dass das Ausführen solcher Programme im \glqq Lernmodus\grqq{}
die Systemreaktion dämpft und viel Speicher verbraucht.\\
Dies ist der Schutz für solche Programme.
\english{This is the default value for maximal ACL entries that are automatically appended into policy at ``learning mode''.
Some programs access thousands of objects, so running such programs in ``learning mode'' dulls the system response and consumes much memory.\\
This is the safeguard for such programs.}

\subsubsection{Default maximal count for audit log}
CONFIG\_SECURITY\_TOMOYO\_MAX\_AUDIT\_LOG [=1024] \textbf{[1024]}\\
Dies ist der Standardwert für die maximalen Einträge für Audit-Protokolle, die der Kernel im Speicher halten kann.
Sie können das Protokoll über \texttt{/sys/kernel/security/tomoyo/audit} lesen.
Wenn Sie keine Audit-Protokolle benötigen, können Sie diesen Wert auf 0 setzen.
\english{This is the default value for maximal entries for audit logs that the kernel can hold on memory.
You can read the log via /sys/kernel/security/tomoyo/audit.
If you don't need audit logs, you may set this value to 0.}

\subsubsection{Activate without calling userspace policy loader}
CONFIG\_SECURITY\_TOMOYO\_OMIT\_USERSPACE\_LOADER [=n] \textbf{[N]}\\
Geben Sie hier Y an, wenn Sie die Zugriffskontrolle aktivieren möchten, sobald die integrierte Richtlinie geladen wurde.
Diese Option ist nützlich für Systeme, bei denen vor dem Laden der Richtlinie Operationen erforderlich sind,
die zu einer Umgehung der Boot-Sequenz führen können.
Zum Beispiel können Sie die Zugriffskontrolle sofort nach dem Laden des festen Teils der Richtlinie aktivieren,
was nur Operationen zulässt, die für das Mounten einer Partition, die den variablen Teil der Richtlinie enthält,
sowie für die Überprüfung (z.\,B. GPG-Check) und das Laden des variablen Teils der Richtlinie erforderlich sind.
Da Sie den Erzwingungsmodus von Anfang an verwenden können, können Sie die Möglichkeit der Entführung der Boot-Sequenz verringern.
\english{Say Y here if you want to activate access control as soon as built-in policy was loaded.
This option will be useful for systems where operations which can lead to the hijacking of the boot sequence are needed before loading the policy.
For example, you can activate immediately after loading the fixed part of policy which will allow only operations needed for mounting a partition
which contains the variant part of policy and verifying (e.g. running GPG check) and loading the variant part of policy.
Since you can start using enforcing mode from the beginning, you can reduce the possibility of hijacking the boot sequence.}

\paragraph{Location of userspace policy loader}$~$\\
CONFIG\_SECURITY\_TOMOYO\_POLICY\_LOADER [=/usr/bin/tomoyo-init] \textbf{[/usr/bin/tomoyo-init]}\\
Dies ist der Standard-Pfadname des Policy Loaders, der vor der Aktivierung aufgerufen wird.
Sie können diese Einstellung mit der Kernel-Befehlszeilenoption \texttt{TOMOYO\_loader=} außer Kraft setzen.
\english{This is the default pathname of policy loader which is called before activation.
You can override this setting via TOMOYO\_loader= kernel command line option.}

\paragraph{Trigger for calling userspace policy loader}$~$\\
CONFIG\_SECURITY\_TOMOYO\_ACTIVATION\_TRIGGER [=/usr/lib/systemd/systemd]\\
\indent \textbf{[/usr/lib/systemd/systemd]}\\
Dies ist der Standard-Pfadname des Aktivierungsauslösers.
Sie können diese Einstellung mit der Kernel-Befehls"-zeilen"-option \texttt{TOMOYO\_trigger=} außer Kraft setzen.
Wenn Sie zum Beispiel die Option\\ \texttt{init=/bin/systemd} übergeben, sollten Sie auch die Option
\texttt{TOMOYO\_trigger=/bin/systemd} übergeben.
\english{This is the default pathname of activation trigger.
You can override this setting via TOMOYO\_trigger= kernel command line option.
For example, if you pass init=/bin/systemd option, you may want to also pass TOMOYO\_trigger=/bin/systemd option.}

\subsubsection{Use insecure built-in settings for fuzzing tests.}
CONFIG\_SECURITY\_TOMOYO\_INSECURE\_BUILTIN\_SETTING [=n] \textbf{[N]}\\
Das Aktivieren dieser Option erzwingt minimale eingebaute Richtlinien und deaktiviert Domain-/Pro\-gramm\-prüfungen für
Änderungen der Richtlinien zur Laufzeit.
Bitte aktivieren Sie diese Option nur, wenn dieser Kernel für Fuzzing-Tests gebaut wird.
\english{Enabling this option forces minimal built-in policy and disables domain/program checks for run-time policy modifications.
Please enable this option only if this kernel is built for doing fuzzing tests.}

%17.18
\subsection{AppArmor support}
CONFIG\_SECURITY\_APPARMOR [=y] \textbf{[Y]}\\
Dadurch wird das AppArmor-Sicherheitsmodul aktiviert.
Erforderliche Userspace-Tools (falls sie nicht in Ihrer Distribution enthalten sind) und weitere Informationen finden
Sie unter \url{http://apparmor.wiki.kernel.org}\
Wenn Sie unsicher sind, wie Sie diese Frage beantworten sollen, antworten Sie mit N.
\english{This enables the AppArmor security module.
Required userspace tools (if they are not included in your distribution) and further information may be found at \url{http://apparmor.wiki.kernel.org}\\
If you are unsure how to answer this question, answer N.}

\subsubsection{Build AppArmor with debug code}
CONFIG\_SECURITY\_APPARMOR\_DEBUG [=n] \textbf{[N]}\\
Bauen Sie \texttt{apparmor} mit Debugging-Logik in apparmor. Es wird nicht unbedingt die gesamte Debugging-Logik aktiviert sein.
Ein Untermenü bietet eine feinkörnige Steuerung der verfügbaren Debug-Optionen.
\english{Build apparmor with debugging logic in apparmor. Not all debugging logic will necessarily be enabled.
A submenu will provide fine grained control of the debug options that are available.}

\subsubsection{Allow loaded policy to be introspected}
CONFIG\_SECURITY\_APPARMOR\_INTROSPECT\_POLICY [=y] \textbf{[Y]}\\
Diese Option wählt aus, ob die Einsicht (Introspektion) der geladenen Richtlinien dem Userspace über das \texttt{apparmor}-Dateisystem
zur Verfügung steht.
Dies erhöht den Speicherverbrauch des Kernels.
Sie ist für die Introspektion geladener Richtlinien sowie für die Unterstützung von Prüfpunkten und Wiederherstellung erforderlich.
Sie kann für eingebettete Systeme deaktiviert werden, bei denen die Verringerung des Arbeitsspeichers und der Rechenleistung von größter Bedeutung ist.
\english{This option selects whether introspection of loaded policy is available to userspace via the apparmor filesystem.
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.}

\subsubsection{IPE policy update verification with secondary keyring}
CONFIG\_IPE\_POLICY\_SIG\_SECONDARY\_KEYRING [=y] \textbf{[Y]}\\
Erlauben Sie auch dem sekundären vertrauenswürdigen Schlüsselbund, IPE-Richtlinienaktualisierungen zu über"-prüfen.\\
Wenn Sie unsicher sind, antworten Sie mit Y für Ja.
\english{Also allow the secondary trusted keyring to verify IPE policy updates.\\
If unsure, answer Y.}

\subsubsection{IPE policy update verification with platform keyring}
CONFIG\_IPE\_POLICY\_SIG\_SECONDARY\_KEYRING [=y] \textbf{[Y]}\\
Erlauben Sie außerdem, dass der vertrauenswürdige Schlüsselbund der Plattform IPE"=Richtlinienaktualisierungen überprüft.\\
Wenn Sie unsicher sind, antworten Sie mit Y für Ja.
\english{Also allow the platform trusted keyring to verify IPE policy updates.\\
If unsure, answer Y.}

\subsubsection{IPE Trust Providers \texorpdfstring{$\longrightarrow$}{->}}
\textit{IPE-Vertrauenspersonen}

\paragraph{Enable support for dm-verity based on root hash}$~$\\
CONFIG\_IPE\_PROP\_DM\_VERITY [=y] \textbf{[Y]}\\
Diese Option aktiviert die Eigenschaft \glqq dmverity\_roothash\grqq{} in IPE-Richtlinien.
Die Eigenschaft wird auf TRUE ausgewertet, wenn eine Datei von einem dm-verity-Volume ausgewertet wird
und der Root-Hash des Volumes mit dem in der Richtlinie angegebenen Wert übereinstimmt.
\english{This option enables the `dmverity\_roothash' property within IPE policies.
The property evaluates to TRUE when a file from a dm-verity volume is evaluated, and the volume's root hash matches the value supplied in the policy.}


\paragraph{Enable support for dm-verity based on root hash signature}$~$\\
CONFIG\_IPE\_PROP\_DM\_VERITY\_SIGNATURE [=y] \textbf{[Y]}\\
Diese Option aktiviert die Eigenschaft \glqq dmverity\_signature\grqq{} innerhalb von IPE-Richtlinien.
Die Eigenschaft wird auf TRUE ausgewertet, wenn eine Datei von einem dm-verity-Volume, das mit einem gültigen signierten Root-Hash gemountet wurde,  ausgewertet wird.
Wenn Sie unsicher sind, antworten Sie mit Y.
\english{This option enables the `dmverity\_signature' property within IPE policies.
The property evaluates to TRUE when a file from a dm-verity volume, which has been mounted with a valid signed root hash, is evaluated.\\
If unsure, answer Y.}


\paragraph{Enable support for fs-verity based on file digest}$~$\\
CONFIG\_IPE\_PROP\_FS\_VERITY [=y] \textbf{[Y]}\\
Diese Option aktiviert die Eigenschaft \glqq fsverity\_digest\grqq{} in IPE-Richtlinien.
Die Eigenschaft wird auf TRUE ausgewertet, wenn eine Datei \texttt{fsverity} aktiviert ist und ihr Digest-Wert mit dem in der Richtlinie angegebenen Digest-Wert übereinstimmt.\\
Wenn Sie unsicher sind, antworten Sie mit Y.
\english{This option enables the `fsverity\_digest' property within IPE policies.
The property evaluates to TRUE when a file is fsverity enabled and its digest matches the supplied digest value in the policy.\\
if unsure, answer Y.}


\paragraph{Enable support for fs-verity based on builtin signature}$~$\\
CONFIG\_IPE\_PROP\_FS\_VERITY\_BUILTIN\_SIG [=y] \textbf{[Y]}\\
Diese Option aktiviert die Eigenschaft \glqq fsverity\_signature\grqq{} in IPE-Richtlinien.
Die Eigenschaft wird auf TRUE ausgewertet, wenn eine Datei \texttt{fsverity} aktiviert ist und eine gültige eingebaute Signatur hat,
deren Signierzertifikat sich im .fs-verity-Schlüsselbund befindet.\\
Wenn Sie unsicher sind, antworten Sie mit Y.
\english{This option enables the `fsverity\_signature' property within IPE policies.
The property evaluates to TRUE when a file is fsverity enabled and it has a valid builtin signature whose signing cert is in the .fs-verity keyring.\\
if unsure, answer Y.}

%17.25
\subsection{Integrity subsystem}
CONFIG\_INTEGRITY [=y] \textbf{[Y]}\\
Mit dieser Option wird das Integritäts-Subsystem aktiviert, das aus einer Reihe verschiedener Komponenten besteht, darunter die Integritätsmessarchitektur (IMA),
das erweiterte Verifizierungsmodul (EVM), die IMA-Bewertungserweiterung, die Erweiterung für die Verifizierung digitaler Signaturen
und die Unterstützung von Audit-Messprotokollen.\\
Jede dieser Komponenten kann separat aktiviert/deaktiviert werden. Weitere Einzelheiten finden Sie bei den einzelnen Komponenten.
\english{This option enables the integrity subsystem, which is comprised of a number of different components including the Integrity Measurement Architecture (IMA),
Extended Verification Module (EVM), IMA-appraisal extension, digital signature verification extension and audit measurement log support.\\
Each of these components can be enabled/disabled separately. Refer to the individual components for additional details.}

\subsubsection{Digital signature verification using multiple keyrings}
CONFIG\_INTEGRITY\_SIGNATURE [=y] \textbf{[Y]}\\
Diese Option ermöglicht die Unterstützung der Überprüfung digitaler Signaturen unter Verwendung mehrerer Schlüsselringe.
Sie definiert separate Schlüsselbunde für jeden der verschiedenen Anwendungsfälle -- evm, ima und Module.
Verschiedene Schlüsselbunde verbessern die Suchleistung, erlauben aber auch, bestimmte Schlüsselbunde zu \glqq sperren\grqq{}, um das Hinzufügen neuer Schlüssel zu verhindern.
Dies ist nützlich für evm- und Modul-Schlüsselringe, wenn Schlüssel normalerweise nur von initramfs hinzugefügt werden.
\english{This option enables digital signature verification support using multiple keyrings.
It defines separate keyrings for each of the different use cases -- evm, ima, and modules.
Different keyrings improves search performance, but also allow to ``lock'' certain keyring to prevent adding new keys.
This is useful for evm and module keyrings, when keys are usually only added from initramfs.}

\paragraph{Enable asymmetric keys support}$~$\\
CONFIG\_INTEGRITY\_ASYMMETRIC\_KEYS [=y] \textbf{[Y]}\\
Diese Option ermöglicht die Überprüfung der digitalen Signatur mit asymmetrischen Schlüsseln.
\english{This option enables digital signature verification using asymmetric keys.}

\subparagraph{Require all keys on the integrity keyrings be signed}$~$\\
CONFIG\_INTEGRITY\_TRUSTED\_KEYRING [=y] \textbf{[Y]}\\
Diese Option erfordert, dass alle Schlüssel, die zu den .ima- und .evm-Schlüsselringen hinzugefügt werden,
mit einem Schlüssel des vertrauenswürdigen Schlüsselrings des Systems signiert werden.
\english{This option requires that all keys added to the .ima and .evm keyrings be signed by a key on the system trusted keyring.}

\subparagraph{Provide keyring for platform/firmware trusted keys}$~$\\
CONFIG\_INTEGRITY\_PLATFORM\_KEYRING [=y] \textbf{[Y]}\\
Bieten Sie einen separaten, eigenen Schlüsselbund für plattformvertrauenswürdige Schlüssel an, den der Kernel während der Initialisierung automatisch mit den von der Plattform bereitgestellten Werten zur Überprüfung des kexec'ed kerned image und möglicherweise der initramfs-Signatur auffüllt.
\english{Provide a separate, distinct keyring for platform trusted keys,
which the kernel automatically populates during initialization from values provided by
the platform for verifying the kexec'ed kerned image and, possibly, the initramfs signature.}

\subparagraph{Provide a keyring to which Machine Owner Keys may be added}$~$\\
CONFIG\_INTEGRITY\_MACHINE\_KEYRING [=y] \textbf{[Y]}\\
Wenn diese Option gesetzt ist, wird ein Schlüsselbund bereitgestellt, zu dem MOK-Schlüssel (Machine Owner Keys) hinzugefügt werden können.
Dieser Schlüsselbund soll nur MOK-Schlüssel enthalten.
Im Gegensatz zu den Schlüsseln im Plattform-Schlüsselbund werden die im .machine-Schlüsselbund enthaltenen Schlüssel im Kernel als vertrauenswürdig eingestuft.
\english{If set, provide a keyring to which Machine Owner Keys (MOK) may be added.
This keyring shall contain just MOK keys.
Unlike keys in the platform keyring, keys contained in the .machine keyring will be trusted within the kernel.}

\subsubparagraph{Enforce Machine Keyring CA Restrictions}$~$\\
CONFIG\_INTEGRITY\_CA\_MACHINE\_KEYRING [=n] \textbf{[N]}\\
Der .machine-Schlüsselbund kann so konfiguriert werden, dass er CA-Beschränkungen für alle ihm hinzugefügten Schlüssel erzwingt.
Standardmäßig gibt es keine Einschränkungen und alle Maschinenbesitzerschlüssel (MOK) werden dem Maschinenschlüsselring hinzugefügt.
Wenn diese Option aktiviert ist, werden nur CA-Schlüssel zum Maschinenschlüsselring hinzugefügt, alle anderen MOK-Schlüssel werden in den Plattformschlüsselring geladen.
\english{The .machine keyring can be configured to enforce CA restriction on any key added to it.
By default no restrictions are in place and all Machine Owner Keys (MOK) are added to the machine keyring.
If enabled only CA keys are added to the machine keyring, all other MOK keys load into the platform keyring.}

\subsubsection{Enables integrity auditing support}
CONFIG\_INTEGRITY\_AUDIT [=y] \textbf{[Y]}\\*
Zusätzlich zum Aktivieren der Unterstützung für Integritätsprüfungen fügt diese Option einen Kernelparameter \texttt{integrity\_audit}
hinzu, der den Grad der Integritätsprüfungsmeldungen steuert.\\*
0 -- einfache Integritätsprüfungsmeldungen (Standard)\\*
1 -- zusätzliche Integritätsprüfungsmeldungen\\\
Zusätzliche Informationsmeldungen zur Integritätsprüfung können durch die Angabe von\\\texttt{integrity\_audit=1}
in der Kernel-Befehlszeile aktiviert werden.
\english{In addition to enabling integrity auditing support, this option adds a kernel parameter `integrity\_audit', which
controls the level of integrity auditing messages.\\*
0 -- basic integrity auditing messages (default)\\*
1 -- additional integrity auditing messages\\
Additional informational integrity auditing messages would be enabled by specifying `integrity\_audit=1' on the kernel command line.}

\subsubsection{Integrity Measurement Architecture(IMA)}
CONFIG\_IMA [=n] \textbf{[N]}\\
Die Laufzeit-Integritätsmessarchitektur (IMA) der Trusted Computing Group (TCG) verwaltet eine Liste von Hash-Werten ausführbarer
Dateien und anderer sensibler Systemdateien, wenn diese gelesen oder ausgeführt werden.
Wenn es einem Angreifer gelingt, den Inhalt einer wichtigen Systemdatei, die gemessen wird, zu ändern, können wir das feststellen.\\
Wenn Ihr System mit einem TPM-Chip ausgestattet ist, verwaltet IMA auch einen aggregierten Integritätswert über diese Liste innerhalb
der TPM-Hardware, so dass das TPM einem Dritten beweisen kann, ob kritische Systemdateien geändert wurden oder nicht.
Lesen Sie \url{https://www.usenix.org/events/sec04/tech/sailer.html}, um mehr über IMA zu erfahren.\\
Wenn Sie unsicher sind, sagen Sie N.
\english{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 \url{https://www.usenix.org/events/sec04/tech/sailer.html} to learn more about IMA.
If unsure, say N.}

\subsubsection{EVM support}
CONFIG\_EVM [=n] \textbf{[N]}\\
EVM schützt die erweiterten Sicherheitsattribute einer Datei vor Integritätsangriffen.\\
Wenn Sie unsicher sind, wie Sie diese Frage beantworten sollen, antworten Sie mit N.
\english{EVM protects a file's security extended attributes against integrity attacks.\\
If you are unsure how to answer this question, answer N.}

%17.26
\subsection{First legacy `major LSM' to be initialized () \texorpdfstring{$\longrightarrow$}{->}}
Diese Auswahl ist nur dazu da, CONFIG\_DEFAULT\_SECURITY in alten Kernelkonfigurationen in CONFIG\_LSM in neuen
Kernelkonfigurationen zu konvertieren.
Ändern Sie diese Auswahl nicht, es sei denn, Sie erstellen eine neue Kernelkonfiguration, denn diese Auswahl wird ignoriert,
nachdem CONFIG\_LSM gesetzt wurde.\\
Wählt das \texttt{major security module} aus, das zuerst initialisiert wird.
Überschrieben durch CONFIG\_LSM, das nicht standardmäßig gesetzt ist.
\english{This choice is there only for converting CONFIG\_DEFAULT\_SECURITY in old kernel configs to CONFIG\_LSM in new kernel configs.
Don't change this choice unless you are creating a fresh kernel config, for this choice will be ignored after CONFIG\_LSM has been set.\\
Selects the legacy ``major security module'' that will be initialized first.
Overridden by non-default CONFIG\_LSM.}

\subsubsection{SELinux}
CONFIG\_DEFAULT\_SECURITY\_SELINUX [=n] \textbf{[N]}\\
Für diese Option ist keine Hilfe verfügbar.
\english{There is no help available for this option.}

\subsubsection{Simplified Mandatory Access Control}
CONFIG\_DEFAULT\_SECURITY\_SMACK [=n] \textbf{[N]}\\
Für diese Option ist keine Hilfe verfügbar.
\english{There is no help available for this option.}

\subsubsection{TOMOYO}
CONFIG\_DEFAULT\_SECURITY\_TOMOYO [=n] \textbf{[N]}\\
Für diese Option ist keine Hilfe verfügbar.
\english{There is no help available for this option.}

\subsubsection{AppArmor}
CONFIG\_DEFAULT\_SECURITY\_APPARMOR [=n] \textbf{[N]}\\
Für diese Option ist keine Hilfe verfügbar.
\english{There is no help available for this option.}


\subsubsection{Unix Discretionary Access Controls}
CONFIG\_DEFAULT\_SECURITY\_DAC [=y] \textbf{[Y]}\\
Für diese Option ist keine Hilfe verfügbar.
\english{There is no help available for this option.}

\subsection{Ordered list of enabled LSMs}
CONFIG\_LSM [=landlock,lockdown,yama,integrity,bpf] \textbf{[landlock,lockdown,yama,integrity,bpf]}\\
Eine durch Kommata getrennte Liste von LSMs in der Reihenfolge der Initialisierung.
Alle LSMs, die in dieser Liste fehlen, mit Ausnahme derjenigen mit der Reihenfolge LSM\_ORDER\_FIRST und LSM\_ORDER\_LAST,
die immer aktiviert werden, wenn sie in der Kernelkonfiguration ausgewählt sind, werden ignoriert.
Dies kann beim Booten mit dem Parameter \texttt{lsm=} kontrolliert werden.\\
Wenn Sie unsicher sind, belassen Sie dies als Voreinstellung.
\english{A comma-separated list of LSMs, in initialization order.
Any LSMs left off this list, except for those with order LSM\_ORDER\_FIRST and LSM\_ORDER\_LAST, which are always enabled
if selected in the kernel configuration, will be ignored.
This can be controlled at boot with the ``lsm='' parameter.\\
If unsure, leave this as the default.}

%17.28
\subsection{Kernel hardening options \texorpdfstring{$\longrightarrow$}{->}}

\subsubsection{Memory initialization \texorpdfstring{$\longrightarrow$}{->}}

\paragraph{Initialize kernel stack variables at function entry () \texorpdfstring{$\longrightarrow$}{->}}\mbox{}\\
Diese Option ermöglicht die Initialisierung von Stack-Variablen zum Zeitpunkt des Funktionseintritts.
Dies hat die Möglichkeit, die größte Abdeckung zu haben (da alle Funktionen ihre Variablen initialisieren lassen können),
aber die Leistungsauswirkungen hängen von der Komplexität der Funktionsaufrufe eines bestimmten Workloads ab.\\
Damit wird der Abdeckungsgrad über Klassen von potenziell nicht initialisierten Variablen ausgewählt.
Die ausgewählte Klasse von Variablen wird vor der Verwendung in einer Funktion initialisiert.
\english{This option enables initialization of stack variables at function entry time.
This has the possibility to have the greatest coverage (since all functions can have their variables initialized),
but the performance impact depends on the function calling complexity of a given workload's syscalls.\\
This chooses the level of coverage over classes of potentially uninitialized variables.
The selected class of variable will be initialized before use in a function.}

\subparagraph{no automatic stack variable initialization (weakest)}\mbox{}\\
CONFIG\_INIT\_STACK\_NONE [=n] \textbf{[N]}\\
Deaktivieren der automatischen Initialisierung von Stack-Variablen.
Dies macht den Kernel anfällig für die Standardklassen der Ausnutzung nicht initialisierter Stack-Variablen
und der Preisgabe von Informationen.
\english{Disable automatic stack variable initialization.
This leaves the kernel vulnerable to the standard classes of uninitialized stack variable exploits and information exposures.}

\subparagraph{pattern-init everything (strongest)}\mbox{}\\
CONFIG\_INIT\_STACK\_ALL\_PATTERN [=n] \textbf{[N]}\\
Initialisiert alles auf dem Stack (einschließlich Padding) mit einem bestimmten Debug-Wert.
Auf diese Weise sollen alle Klassen von nicht initialisierten Stack-Variablen ausgenutzt und Informationen preisgegeben werden,
selbst Variablen, vor denen gewarnt wurde, weil sie nicht initialisiert wurden.
Es ist bekannt, dass die Initialisierung von Mustern viele bestehende Fehler im Zusammenhang mit nicht initialisierten Locals provoziert,
z.\,B. wenn Zeiger Nicht-NULL-Werte erhalten, Puffergrößen und Indizes sehr groß sind.
Das Muster ist situationsabhängig; Clang auf 64-Bit verwendet \texttt{0xAA}-Wiederholungen für alle Typen und Padding außer float und double,
die \texttt{0xFF}-Wiederholungen (-NaN) verwenden.
Clang auf 32-Bit verwendet \text{0xFF}-Wiederholungen für alle Typen und Auffüllungen.
\english{Initializes everything on the stack (including padding) with a specific debug value.
This is intended to eliminate all classes of uninitialized stack variable exploits and information exposures,
even variables that were warned about having been left uninitialized.\\
Pattern initialization is known to provoke many existing bugs related to uninitialized locals, e.g. pointers receive non-NULL values,
buffer sizes and indices are very big.
The pattern is situation-specific; Clang on 64-bit uses 0xAA repeating for all types and padding except float and double which use 0xFF
repeating (-NaN).
Clang on 32-bit uses 0xFF repeating for all types and padding.}

\subparagraph{zero-init everything (strongest and safest)}\mbox{}\\
CONFIG\_INIT\_STACK\_ALL\_ZERO [=y] \textbf{[Y]}\\
Initialisiert alles auf dem Stack (einschließlich Padding) mit einem Nullwert.
Damit sollen alle Arten von Exploits für nicht initialisierte Stack-Variablen und die Preisgabe von Informationen verhindert werden,
selbst bei Variablen, vor denen gewarnt wurde, dass sie nicht initialisiert wurden.
Die Nullinitialisierung bietet sichere Standardwerte für Strings (sofort NUL-terminiert), Zeiger (NULL), Indizes (Index 0)
und Größen (0 Länge) und ist daher als Sicherheitsmaßnahme für die Produktion besser geeignet als die Musterinitialisierung (pattern init).
\english{Initializes everything on the stack (including padding) with a zero value.
This is intended to eliminate all classes of uninitialized stack variable exploits and information exposures,
even variables that were warned about having been left uninitialized.\\
Zero initialization provides safe defaults for strings (immediately NUL-terminated), pointers (NULL), indices (index 0),
and sizes (0 length), so it is therefore more suitable as a production security mitigation than pattern initialization.}

\paragraph{Enable heap memory zeroing on allocation by default}\mbox{}\\
CONFIG\_INIT\_ON\_ALLOC\_DEFAULT\_ON [=y] \textbf{[Y]}\\
Dies hat den Effekt, dass \texttt{init\_on\_alloc=1} auf der Kernel-Kommandozeile gesetzt wird.\\
Dies kann mit \texttt{init\_on\_alloc=0} deaktiviert werden.
Wenn \texttt{init\_on\_alloc} aktiviert ist, wird der gesamte Speicher des Page Allocators und des Slab Allocators bei
der Allokation auf Null gesetzt, wodurch viele Arten von \glqq uninitialisiertem Heap-Speicher\grqq{} vermieden werden,
insbesondere die Gefährdung des Heap-Inhalts.
Die Auswirkungen auf die Leistung variieren je nach Arbeitslast, aber in den meisten Fällen sind \qty{<1}{\percent} Auswirkungen zu verzeichnen.
Bei einigen synthetischen Workloads wurden sogar bis zu \qty{7}{\percent} gemessen.
\english{This has the effect of setting ``init\_on\_alloc=1'' on the kernel command line.\\
This can be disabled with ``init\_on\_alloc=0''.
When ``init\_on\_alloc'' is enabled, all page allocator and slab allocator memory will be zeroed when allocated, eliminating
many kinds of ``uninitialized heap memory'' flaws, especially heap content exposures.
The performance impact varies by workload, but most cases see $<1\%$ impact.
Some synthetic workloads have measured as high as $7\%$.}

\paragraph{Enable heap memory zeroing on free by default}\mbox{}\\
CONFIG\_INIT\_ON\_FREE\_DEFAULT\_ON [=y] \textbf{[Y]}\\
Dies hat den Effekt, dass \texttt{init\_on\_free=1} auf der Kernel-Kommandozeile gesetzt wird.\\
Dies kann mit \texttt{init\_on\_free=0} deaktiviert werden.
Ähnlich wie bei \texttt{init\_on\_alloc} wird bei der Aktivierung von \texttt{init\_on\_free} der gesamte Speicher des Page Allocators
und des Slab Allocators beim Freigeben auf Null gesetzt, wodurch viele Arten von \glqq uninitialisiertem Heap-Speicher\grqq{} vermieden werden,
insbesondere die Aufdeckung von Heap-Inhalten.
Der Hauptunterschied zu \texttt{init\_on\_free} besteht darin, dass die Lebensdauer der Daten im Speicher verkürzt wird,
da alles, was freigegeben wird, sofort gelöscht wird, so dass Live-Forensik oder Cold-Boot-Speicherangriffe nicht in der Lage sind,
freigegebene Speicherinhalte wiederherzustellen.
Die Auswirkung auf die Leistung variiert je nach Arbeitslast, ist aber teurer als \texttt{init\_on\_alloc} aufgrund
der negativen Cache-Effekte beim Berühren von \glqq kalten\grqq{} Speicherbereichen.
In den meisten Fällen sind die Auswirkungen \qtyrange{3}{5}{\percent}.
Bei einigen synthetischen Workloads wurden bis zu \qty{8}{\percent} gemessen.
\english{This has the effect of setting ``init\_on\_free=1'' on the kernel command line.\\
This can be disabled with ``init\_on\_free=0''.
Similar to ``init\_on\_alloc'', when ``init\_on\_free'' is enabled, all page allocator and slab allocator memory will be zeroed
when freed, eliminating many kinds of ``uninitialized heap memory'' flaws, especially heap content exposures.
The primary difference with ``init\_on\_free'' is that data lifetime in memory is reduced, as anything freed is wiped immediately,
making live forensics or cold boot memory attacks unable to recover freed memory contents.
The performance impact varies by workload, but is more expensive than ``init\_on\_alloc'' due to the negative cache effects of
touching ``cold'' memory areas. Most cases see 3-5\% impact.
Some synthetic workloads have measured as high as 8\%.}


\paragraph{Enable register zeroing on function exit}\mbox{}\\
CONFIG\_ZERO\_CALL\_USED\_REGS [=n] \textbf{[N]}\\
Am Ende von Funktionen sollten alle vom Aufrufer verwendeten Registerinhalte immer auf Null gesetzt werden.
Dies trägt dazu bei, dass temporäre Werte nicht über die Funktionsgrenze hinaus durchsickern.
Dies bedeutet, dass Registerinhalte weniger wahrscheinlich für Seitenkanäle und Informationsoffenlegung zur Verfügung stehen.
Außerdem wird dadurch die Anzahl der nützlichen ROP-Gadgets im resultierenden Kernel-Image um etwa \qty{20}{\percent}
reduziert (und die vom Compiler erzeugten \texttt{write-what-where}-Gadgets werden entfernt).
Dies hat bei den meisten Workloads einen Leistungseinfluss von weniger als \qty{1}{\%}.
Das Wachstum der Abbildgröße hängt von der Architektur ab und sollte auf seine Eignung geprüft werden.
Zum Beispiel wächst x86\_64 um weniger als \qty{1}{\%}, und arm64 wächst um etwa \qty{5}{\%}.
\english{At the end of functions, always zero any caller-used register contents.
This helps ensure that temporary values are not leaked beyond the function boundary.
This means that register contents are less likely to be available for side channels and information exposures.
Additionally, this helps reduce the number of useful ROP gadgets by about 20\% (and removes compiler
generated ``write-what-where'' gadgets) in the resulting kernel image.
This has a less than 1\% performance impact on most workloads.
Image size growth depends on architecture, and should be evaluated for suitability.
For example, x86\_64 grows by less than 1\%, and arm64 grows by about 5\%.}


\subsubsection{Hardening of kernel data structures \texorpdfstring{$\longrightarrow$}{->}}

\paragraph{Check integrity of linked list manipulation}\mbox{}\\
CONFIG\_LIST\_HARDENED [=y] \textbf{[Y]}\\
Minimale Integritätsprüfung in den Routinen zur Manipulation von verknüpften Listen, um Speicherbeschädigungen abzufangen,
bei denen nicht garantiert ist, dass sie zu einem sofortigen Zugriffsfehler führen.\\
Wenn Sie unsicher sind, sagen Sie N.
\english{Minimal integrity checking in the linked-list manipulation routines to catch memory corruptions that are not
guaranteed to result in an immediate access fault.\\
If unsure, say N.}

\paragraph{Trigger a BUG when data corruption is detected}\mbox{}\\
CONFIG\_BUG\_ON\_DATA\_CORRUPTION [=n] \textbf{[N]}\\
Wählen Sie diese Option, wenn der Kernel einen BUG auslösen soll, wenn er bei der Überprüfung der Gültigkeit von
Kernel-Speicherstrukturen auf beschädigte Daten stößt.\\
Wenn Sie unsicher sind, wählen Sie N.
\english{Select this option if the kernel should BUG when it encounters data corruption in kernel memory structures
when they get checked for validity.\\
If unsure, say N.}

\subsubsection{Randomize layout of sensitive kernel structures \texorpdfstring{$\longrightarrow$}{->}}
Wenn Sie dies aktivieren, werden die Layouts von Strukturen, die ausschließlich Funktionszeiger sind
(und nicht manuell mit \_\_no\_randomize\_layout annotiert wurden), oder Strukturen, die explizit mit \_\_randomize\_layout markiert
wurden, zur Kompilierungszeit randomisiert.
Dies kann eine zusätzliche Schwachstelle für Exploits darstellen, die auf diese Strukturtypen abzielen.\\
Die Aktivierung dieser Funktion führt zu einigen Leistungseinbußen, erhöht die Speichernutzung geringfügig und verhindert die
Verwendung von forensischen Tools wie Volatility gegen das System (es sei denn, der Kernel-Quellbaum wird nach der Kernel-Installation
nicht bereinigt).\\
Der für die Kompilierung verwendete Seed befindet sich in scripts/basic/randomize.seed.
Er verbleibt nach einem \texttt{make clean}, damit externe Module mit dem vorhandenen Seed kompiliert werden können und wird durch
ein \texttt{make mrproper} oder \texttt{make distclean} entfernt.
Diese Datei sollte nicht veröffentlicht werden, da sonst das Strukturlayout ermittelt werden kann.
\english{If you enable this, the layouts of structures that are entirely function pointers (and have not been manually annotated with
\_\_no\_randomize\_layout), or structures that have been explicitly marked with \_\_randomize\_layout, will be randomized at compile-time.
This can introduce the requirement of an additional information exposure vulnerability for exploits targeting these structure types.\\
Enabling this feature will introduce some performance impact, slightly increase memory usage, and prevent the use of forensic tools
like Volatility against the system (unless the kernel source tree isn't cleaned after kernel installation).\\
The seed used for compilation is in scripts/basic/randomize.seed.
It remains after a ``make clean'' to allow for external modules to be compiled with the existing seed and will be removed by a
``make mrproper'' or ``make distclean''.
This file should not be made public, or the structure layout can be determined.}

\paragraph{Disable structure layout randomization}\mbox{}\\
CONFIG\_RANDSTRUCT\_NONE [=y] \textbf{[Y]}\\
Normaler Aufbau: keine Randomisierung des Strukturlayouts.
\english{Build normally: no structure layout randomization.}
