Wenn ein Angreifer root wird, besitzt er die Maschine nicht auch ohne Kernel-Zugriff, indem er Dinge wie das Ändern von Binärdateien tut?
Vielleicht, vielleicht nicht. Mit SELinux können Sie den Zugriff auf Blockgeräte einschränken, sogar für den Root-Benutzer. Wenn Ihre Root-Partition also schreibgeschützt ist (und das System mit OverlayFS ausgeführt wird, um nicht dauerhafte Änderungen zu ermöglichen), kann das Schützen des Kernels vor Root einen konsistenten Zustand beim Neustart garantieren, selbst wenn die Maschine kompromittiert wurde Stammebene.
Wenn der Kernel dagegen nicht vor dem Root-Benutzer geschützt ist, können Sie solche Garantien nicht haben.
Ohne verifizierten Boot, zusammen mit verifizierten Modulen und kexec
Sie geben dem Kernel eine bessere Chance, sich angesichts einer Privilegien-Eskalation gegen Angriffe zu verteidigen. Standardmäßig sind die beiden Funktionen deaktiviert:
kexec_load_disabled:
Ein Umschalter, der anzeigt, ob der Systemaufruf kexec_load deaktiviert wurde. Dieser Wert ist standardmäßig 0 (false:kexec_load aktiviert), kann aber auf 1 gesetzt werden (true:kexec_load deaktiviert). Sobald es wahr ist, kann kexec nicht mehr verwendet werden, und der Schalter kann nicht wieder auf falsch gesetzt werden. Dadurch kann ein kexec-Image geladen werden, bevor der Systemaufruf deaktiviert wird, sodass ein System ein Image einrichten (und später verwenden) kann, ohne dass es geändert wird. Wird im Allgemeinen zusammen mit dem "modules_disabled" sysctl verwendet.
module_disabled:
Ein Umschaltwert, der angibt, ob Module in einen ansonsten modularen Kernel geladen werden dürfen. Dieser Umschalter ist standardmäßig auf „off“ (0) eingestellt, kann aber auf „true“ (1) gesetzt werden. Sobald es wahr ist, können Module weder geladen noch entladen werden, und der Schalter kann nicht wieder auf falsch gesetzt werden. Wird im Allgemeinen mit dem Schalter „kexec_load_disabled“ verwendet.