eBPF auf Administratoren beschränken
Mit eBPF können Programme Code im Kernel ausführen, und es war immer wieder die Quelle von Fehlern. Dies beschränkt es auf privilegierte Programme und härtet seinen Compiler.
Warum es wichtig ist
eBPF erlaubt Programmen, kleine Codestücke zu laden, die der Kernel für sie ausführt. Der Kernel prüft diesen Code mit einem Verifier, und Fehler in diesem Verifier haben wiederholt gewöhnlichen Benutzern die volle Kontrolle über die Maschine verschafft. Wenn nur privilegierte Programme eBPF laden dürfen, sind diese Fehler für alle anderen außer Reichweite.
Wie es funktioniert
Setzt kernel.unprivileged_bpf_disabled auf 1. Aufrufe von bpf() ohne CAP_BPF oder CAP_SYS_ADMIN schlagen dann mit einer Berechtigungsfehler fehl. Die Kernel-Dokumentation sagt, dass der Wert 1 erst nach einem Neustart zurückgesetzt werden kann; der Wert 2 deaktiviert ebenfalls, lässt Admins aber eine spätere Änderung zu.
Für wen es sich eignet
Richtig für die meisten Desktops und Server. Lassen Sie es aus, wenn Sie eBPF-Werkzeuge als normaler Benutzer nutzen, etwa einige Tracing- oder Netzwerkexperimente.
Was Sie bemerken könnten
Programme, die eBPF ohne Privilegien laden, schlagen mit Operation not permitted fehl. Starten Sie sie als root oder mit der passenden Capability. Übliche Desktop-Software braucht das kaum.
Auf Ihrem Computer prüfen
Den aktuellen Wert lesen:
sysctl kernel.unprivileged_bpf_disabled Ein strengerer Wert als dieser ist ebenfalls in Ordnung.
Von Hand anwenden
Jetzt setzen (bis zum nächsten Neustart):
sudo sysctl -w kernel.unprivileged_bpf_disabled=1 Nach Neustarts beibehalten, in einer eigenen Datei:
sudo tee /etc/sysctl.d/90-kernel-unprivileged-bpf.conf <<'EOF'
kernel.unprivileged_bpf_disabled = 1
EOF
sudo sysctl --system Rückgängig machen
Entfernen Sie die Datei und starten Sie neu, oder setzen Sie den alten Wert mit sysctl -w zurück.
Verwandte Einstellungen
Quellen
- Linux Hardening Guide (madaidans)
- 2.2.1
- Linux kernel documentation
- kernel.unprivileged_bpf_disabled