
eBPF-gesteuertes Sicherheitswerkzeug zum Sperren und Überwachen von Linux-Maschinen. Schränkt Kernel-Funktionen ein, blockiert dateilose Ausführung, schützt den Arbeitsspeicher und härtet Container und IoT-Geräte mittels deklarativer Profile.

bpflock - eBPF-basierte Sicherheit zum Sperren und Überwachen von Linux-Rechnern.
Hinweis: bpflock befindet sich derzeit in der Experimentierphase, es kann zu Fehlern kommen, Optionen und Sicherheitssemantik können sich ändern, einige BPF-Programme werden aktualisiert, um die Cilium ebpf-Bibliothek zu verwenden.
bpflock nutzt eBPF zur Stärkung der Linux-Sicherheit. Durch die Einschränkung des Zugriffs auf eine Vielzahl von Linux-Funktionen kann bpflock die Angriffsfläche verkleinern und einige bekannte Angriffstechniken blockieren.
Nur Programme wie Container-Manager, systemd und andere Container/Programme, die in den Host-PID- und Netzwerk-Namespaces laufen, haben vollen Zugriff auf Linux-Funktionen; Container und Anwendungen, die in ihrem eigenen Namespace laufen, werden eingeschränkt.
Wenn bpflock-BPF-Programme unter dem restricted-Profil laufen, wird allen Programmen/Containern, einschließlich privilegierten, der Zugriff verweigert.
bpflock schützt Linux-Rechner durch die Nutzung mehrerer Sicherheitsfunktionen, darunter Linux Security Modules + BPF.
Hinweise zum Architektur- und Sicherheitsdesign:
bpflock bietet mehrere Sicherheitsfunktionen, die wie folgt klassifiziert werden können:
System- und Anwendungsverfolgung
Dateisystemschutz
Netzwerkschutz
bpflock hält die Sicherheitssemantik einfach. Es unterstützt drei globale Profile, die das Sicherheitsspektrum grob abdecken und den Zugriff auf bestimmte Linux-Funktionen einschränken.
profile: Dies ist das globale Profil, das pro BPF-Programm angewendet werden kann. Es akzeptiert einen der folgenden Werte:
allow|none|privileged: Sie sind identisch und definieren das am wenigsten sichere Profil. In diesem Profil wird der Zugriff für alle Prozesse protokolliert und erlaubt. Nützlich zur Protokollierung von Sicherheitsereignissen.baseline: restriktives Profil, bei dem der Zugriff für alle Prozesse verweigert wird, außer für privilegierte Anwendungen und Container, die in den Host-Namespaces laufen, oder für pro Cgroup erlaubte Profile in der bpflock_cgroupmap-BPF-Map.restricted: stark eingeschränktes Profil, bei dem der Zugriff für alle Prozesse verweigert wird.Zulässige (Allowed) oder blockierte (blocked) Operationen/Befehle:
Unter den Profilen allow|privileged oder baseline kann eine Liste von erlaubten oder blockierten Befehlen angegeben werden, die dann angewendet wird.
--protection-allow: Komma-getrennte Liste erlaubter Operationen. Gültig unter dem baseline-Profil. Dies ist nützlich für Anwendungen, die zu spezifisch sind und privilegierte Operationen ausführen. Es reduziert die Verwendung des allow|privileged-Profils, sodass wir anstelle des privileged-Profils das baseline-Profil angeben und eine Reihe erlaubter Befehle hinzufügen können, um eine fallweise Definition für solche Anwendungen zu bieten.--protection-block: Komma-getrennte Liste blockierter Operationen. Gültig unter den Profilen allow|privileged und baseline. Es ermöglicht, den Zugriff auf einige Funktionen einzuschränken, ohne das vollständige restricted-Profil zu verwenden, das einige spezifische Anwendungen beeinträchtigen könnte. Die Verwendung der Profile baseline oder privileged öffnet den Zugang zu den meisten Linux-Funktionen, aber mit der Option --protection-block kann ein Teil dieses Zugriffs blockiert werden.Beispiele für BPF-Sicherheit finden Sie unter bpflock-Konfigurationsbeispiele
bpflock benötigt Folgendes:
Linux-Kernel-Version >= 5.13 mit folgender Konfiguration:
CONFIG_BPF_SYSCALL=y
CONFIG_DEBUG_INFO=y
CONFIG_DEBUG_INFO_BTF=y
CONFIG_KPROBES=y
CONFIG_LSM="...,bpf"
CONFIG_BPF_LSM=y
Offensichtlich einen BTF-fähigen Kernel.
Wenn Ihr Kernel mit CONFIG_BPF_LSM=y kompiliert wurde, überprüfen Sie /boot/config-* zur Bestätigung, aber wenn bpflock läuft, schlägt es fehl mit:
must have a kernel with 'CONFIG_BPF_LSM=y' 'CONFIG_LSM=\"...,bpf\"'"
Um BPF LSM als Beispiel auf Ubuntu zu aktivieren:
GRUB_CMDLINE_LINUX an und speichern Sie.
"lsm=lockdown,capability,yama,apparmor,bpf"
oder
GRUB_CMDLINE_LINUX="lsm=lockdown,capability,yama,apparmor,bpf"
sudo update-grub2