
Strumento di sicurezza basato su eBPF per bloccare e monitorare macchine Linux. Limita le funzionalità del kernel, blocca l'esecuzione senza file, protegge la memoria e rinforza contenitori e dispositivi IoT tramite profili dichiarativi.

bpflock - sicurezza basata su eBPF per bloccare e controllare le macchine Linux.
Nota: bpflock è attualmente in fase sperimentale, potrebbe rompersi, le opzioni e la semantica di sicurezza potrebbero cambiare, alcuni programmi BPF saranno aggiornati per utilizzare la libreria Cilium ebpf.
bpflock utilizza eBPF per rafforzare la sicurezza di Linux. Limitando l'accesso a una vasta gamma di funzionalità di Linux, bpflock è in grado di ridurre la superficie d'attacco e bloccare alcune tecniche di attacco ben note.
Solo i programmi come i gestori di container, systemd e altri container/programmi che vengono eseguiti negli spazi dei nomi pid e di rete dell'host hanno accesso completo a
caratteristiche di Linux, mentre i container e le applicazioni che vengono eseguiti nel proprio spazio dei nomi saranno limitati.
Se i programmi bpf di bpflock vengono eseguiti con il profilo restricted, allora tutti i programmi/container, inclusi quelli privilegiati, avranno accesso negato.
bpflock protegge le macchine Linux sfruttando molteplici funzionalità di sicurezza, inclusi Linux Security Modules + BPF.
Note sull'architettura e sulla progettazione della sicurezza:
bpflock offre molteplici protezioni di sicurezza che possono essere classificate come:
Tracciamento di sistema e applicazioni
Protezioni del filesystem
Protezioni di rete
bpflock mantiene la semantica di sicurezza semplice. Supporta tre profili globali per coprire ampiamente lo spettro di sicurezza e limitare l'accesso a specifiche funzionalità di Linux.
profile: questo è il profilo globale che può essere applicato per programma bpf, accetta uno dei seguenti valori:
allow|none|privileged : sono equivalenti, definiscono il profilo meno sicuro. In questo profilo l'accesso viene registrato e consentito per tutti i processi. Utile per registrare eventi di sicurezza.baseline : profilo restrittivo in cui l'accesso è negato per tutti i processi, tranne le applicazioni e i container privilegiati che vengono eseguiti negli spazi dei nomi dell'host, o i profili consentiti per cgroup nella mappa bpf bpflock_cgroupmap.restricted : profilo fortemente restrittivo in cui l'accesso è negato per tutti i processi.Operazioni/comandi Allowed o blocked:
Sotto i profili allow|privileged o baseline, è possibile specificare un elenco di comandi consentiti o bloccati che verranno applicati.
--protection-allow : elenco separato da virgole di operazioni consentite. Valido sotto il profilo baseline, utile per applicazioni troppo specifiche che eseguono operazioni privilegiate. Ridurrà l'uso del profilo allow | privileged, quindi invece di usare il profilo privileged, possiamo specificare baseline e aggiungere un insieme di comandi consentiti per offrire una definizione caso per caso per tali applicazioni.--protection-block : elenco separato da virgole di operazioni bloccate. Valido sotto i profili allow|privileged e baseline, consente di limitare l'accesso ad alcune funzionalità senza utilizzare il profilo restricted completo che potrebbe rompere alcune applicazioni specifiche. L'uso dei profili baseline o privileged apre la porta all'accesso alla maggior parte delle funzionalità Linux, ma con l'opzione --protection-block parte di questo accesso può essere bloccata.Per esempi di sicurezza bpf consulta esempi di configurazione bpflock
bpflock richiede quanto segue:
Versione del kernel Linux >= 5.13 con la seguente configurazione:
CONFIG_BPF_SYSCALL=y
CONFIG_DEBUG_INFO=y
CONFIG_DEBUG_INFO_BTF=y
CONFIG_KPROBES=y
CONFIG_LSM="...,bpf"
CONFIG_BPF_LSM=y
Ovviamente un kernel con BTF abilitato.
Se il tuo kernel è stato compilato con CONFIG_BPF_LSM=y, controlla /boot/config-* per confermare, ma se durante l'esecuzione di bpflock fallisce con:
must have a kernel with 'CONFIG_BPF_LSM=y' 'CONFIG_LSM=\"...,bpf\"'"
Quindi per abilitare BPF LSM come esempio su Ubuntu:
GRUB_CMDLINE_LINUX e salva.
"lsm=lockdown,capability,yama,apparmor,bpf"
oppure
GRUB_CMDLINE_LINUX="lsm=lockdown,capability,yama,apparmor,bpf"
sudo update-grub2