diff --git a/documentation/linux_configuration.pdf b/documentation/linux_configuration.pdf index b049395..e696c29 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:ab8bc78d6b12079a9e4a4c5fbd0820b31aacc455f5e80299991c202ea17ce7fe -size 148931 +oid sha256:e5b5a04985574bebba113f5c7f6abf3943b1c976cdb31ac409723820b6ec8391 +size 216148 diff --git a/documentation/linux_configuration.tex b/documentation/linux_configuration.tex index a0c30c9..51fb1e0 100644 --- a/documentation/linux_configuration.tex +++ b/documentation/linux_configuration.tex @@ -30,7 +30,7 @@ %\displaywidowpenalty=10000 % microtype -% \usepackage[tracking=smallcaps,letterspace=50]{microtype} +\usepackage[tracking=smallcaps,letterspace=50]{microtype} % Math mode with value and units framework, e.g. for 15.11.18.1 \usepackage{siunitx} diff --git a/documentation/linux_configuration_17_security_options.tex b/documentation/linux_configuration_17_security_options.tex index dc66fc4..991cc75 100644 --- a/documentation/linux_configuration_17_security_options.tex +++ b/documentation/linux_configuration_17_security_options.tex @@ -120,4 +120,184 @@ Dadurch können /proc/pid/mem-Zugriffe die Speicherzuordnungsberechtigungen für \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} \ No newline at end of file +\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.} + +\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ückgewiesen 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.} + +\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.} + +\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.} + +\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 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.} \ No newline at end of file