Kernelmodule
100%

Kernel · Lektion 6

Kernelmodule

Erfahre, wie du veröffentlichungsspezifische Linux-Kernelmodule prüfst, lädst, konfigurierst und sicher entfernst.

Ein ladbares Kernelmodul ist privilegierter Code, der den laufenden Kernel um einen Treiber, ein Dateisystem, eine Netzwerkfunktion oder ein anderes Subsystem erweitern kann. Module vermeiden, dass jede optionale Funktion in ein einziges Kernelabbild eingebaut werden muss, doch das Laden eines Moduls erweitert die vertrauenswürdige Angriffsfläche des Kernels.

Module auflisten und prüfen

Liste die derzeit geladenen Module auf:

$ lsmod

Die Ausgabe wird aus Kernelzuständen wie /proc/modules abgeleitet und enthält Modulname, Größe und einen Nutzungszähler oder Abhängigkeiten. Ein scheinbarer Zähler von null beweist nicht vollständig, dass eine Entfernung sicher ist; ein Treiber kann weiterhin aktive Geräte besitzen oder am Zustand eines Subsystems beteiligt sein.

Prüfe ein für den laufenden Kernel verfügbares Modul mit:

$ modinfo MODULE_NAME

modinfo kann Dateiname, Aliase, Parameter, Lizenz, Beschreibung und Signaturinformationen anzeigen. Behandle Metadaten als Beschreibung und nicht als Beweis, dass das Modul vertrauenswürdig oder mit der Arbeitslast kompatibel ist.

Was zeigt lsmod an?

Mit `modprobe` laden

Lade ein Modul anhand seines Namens:

$ sudo modprobe MODULE_NAME

modprobe fragt Abhängigkeitsindizes, Aliase und Konfiguration für den laufenden Kernel unter /lib/modules/$(uname -r)/ ab. Es lädt erforderliche Abhängigkeiten und übergibt konfigurierte Parameter. insmod fügt dagegen eine angegebene Moduldatei unmittelbar ein und stellt nicht denselben Arbeitsablauf zur Abhängigkeitsauflösung bereit.

Bestätige vor dem Laden Herkunft, Signaturrichtlinie, Kompatibilität mit der Kernelveröffentlichung, Parameter, erwartete Hardwarebindung und Rücksetzweg des Moduls. Secure Boot oder Kernel-Lockdown können nicht signierte Module ablehnen; das Erzwingen inkompatiblen Codes birgt Absturz- und Kompromittierungsrisiken.

Warum wird modprobe gewöhnlich gegenüber einem direkten insmod bevorzugt?

Modulparameter und Laden beim Systemstart

Dauerhafte Parameter- und Aliasrichtlinien gehören in eine .conf-Datei unter /etc/modprobe.d/:

options example_module mode=careful

Diese Zeile beeinflusst, wie modprobe das Modul lädt; sie fordert nicht von selbst das Laden des Moduls beim Systemstart an. Eine einfache Liste zum Laden beim Systemstart befindet sich gewöhnlich unter /etc/modules-load.d/:

example_module

Hardwarealiase lösen häufig ein automatisches Laden ohne ausdrückliche Liste aus. Aktualisiere für Module, die während der frühen Startphase benötigt werden, nach Konfigurationsänderungen das initramfs gemäß dem dokumentierten Verfahren der Distribution.

Was bewirkt eine options-Zeile in /etc/modprobe.d/?

Blacklisting und seine Grenzen

Eine modprobe-Konfiguration kann Folgendes enthalten:

blacklist example_module

Blacklisting unterdrückt gewöhnlich das automatische Laden über die Aliase des Moduls. Es entlädt weder ein bereits geladenes Modul noch entfernt es das Modul aus einem initramfs. Auch verhindert es nicht zwangsläufig ein ausdrückliches Laden anhand des genauen Namens oder als Abhängigkeit. Sicherheitshärtung erfordert eine bedrohungsspezifische Kombination aus Modulverfügbarkeit, Signaturdurchsetzung, initramfs-Inhalt, Startparametern und Richtlinien.

Was unterdrückt eine einfache modprobe-blacklist-Zeile in erster Linie?

Ein Modul sicher entfernen

Fordere die Entfernung an mit:

$ sudo modprobe -r MODULE_NAME

Modprobe kann gegebenenfalls nun ungenutzte Abhängigkeiten entfernen. Der Kernel lehnt eine Entfernung ab, wenn die gewöhnliche Referenzverfolgung das Modul als belegt anzeigt. Verlasse dich aber nicht auf diese Prüfung allein. Stoppe Dienste, hänge Dateisysteme aus, trenne Geräte, versetze Netzwerke in einen ruhenden Zustand und bestätige einen anderen Treiber oder Wiederherstellungsweg, bevor du Code entfernst, der aktive Hardware unterstützt.

Erzwinge niemals das Entladen eines Moduls auf einem System, das du erhalten musst. Fehler beim Entfernen oder ausstehende Aktivität können den Kernel zum Absturz bringen oder Daten beschädigen.

Welcher Befehl fordert die abhängigkeitsbewusste Entfernung eines Moduls anhand seines Namens an?

Lektion abgeschlossen

Sie haben Kernelmodule abgeschlossen

Du kannst Module nun unter Berücksichtigung ihres Risikos auf Kernelebene verwalten.

  • Verwende lsmod für den aktiven Zustand und modinfo für verfügbare Metadaten.

  • Verwende modprobe zum alias- und abhängigkeitsbewussten Laden.

  • Trenne modprobe-Parameter von Anforderungen zum Laden beim Systemstart.

  • Behandle Blacklisting als begrenzte Richtlinie und nicht als absolute Sperre.

  • Versetze jeden Verbraucher vor modprobe -r in einen ruhenden Zustand.

Lernfortschritt speichern

Erstellen Sie ein kostenloses Konto, um diese Lektion zu speichern und auf jedem Gerät weiterzulernen.

Kostenloses Konto erstellen
Zurück zu Kernel