
Herramienta de seguridad basada en eBPF para bloquear y auditar máquinas Linux. Restringe funciones del kernel, bloquea la ejecución sin archivos, protege la memoria y fortalece contenedores y dispositivos IoT mediante perfiles declarativos.

bpflock - seguridad impulsada por eBPF para bloquear y auditar máquinas Linux.
Nota: bpflock está actualmente en etapa experimental, puede romperse, las opciones y semánticas de seguridad pueden cambiar, algunos programas BPF serán actualizados para usar la biblioteca ebpf de Cilium.
bpflock utiliza eBPF para fortalecer la seguridad de Linux. Al restringir el acceso a una amplia gama de características de Linux, bpflock puede reducir la superficie de ataque y bloquear algunas técnicas de ataque conocidas.
Solo los programas como los administradores de contenedores, systemd y otros contenedores/programas que se ejecutan en los espacios de nombres pid y red del host tienen permitido el acceso completo a las características de Linux; los contenedores y aplicaciones que se ejecutan en su propio espacio de nombres serán restringidos. Si los programas bpf de bpflock se ejecutan bajo el perfil restricted, entonces todos los programas/contenedores, incluidos los privilegiados, tendrán su acceso denegado.
bpflock protege las máquinas Linux aprovechando múltiples características de seguridad, incluyendo Módulos de Seguridad de Linux + BPF.
Notas de diseño de arquitectura y seguridad:
bpflock ofrece múltiples protecciones de seguridad que se pueden clasificar como:
Trazado de sistema y aplicaciones
Protecciones del sistema de archivos
Protecciones de red
bpflock mantiene la semántica de seguridad simple. Soporta tres perfiles globales para cubrir ampliamente el espectro de seguridad y restringir el acceso a características específicas de Linux.
profile: este es el perfil global que se puede aplicar por programa bpf, toma uno de los siguientes:
allow|none|privileged : son lo mismo, definen el perfil menos seguro. En este perfil, el acceso se registra y se permite para todos los procesos. Útil para registrar eventos de seguridad.baseline : perfil restrictivo donde se deniega el acceso a todos los procesos, excepto a aplicaciones privilegiadas y contenedores que se ejecutan en los espacios de nombres del host, o perfiles permitidos por cgroup en el mapa bpf bpflock_cgroupmap.restricted : perfil fuertemente restringido donde se deniega el acceso a todos los procesos.Operaciones/comandos Permitidos o Bloqueados:
Bajo los perfiles allow|privileged o baseline, se puede especificar una lista de comandos permitidos o bloqueados y se aplicará.
--protection-allow : lista separada por comas de operaciones permitidas. Válido bajo el perfil baseline, es útil para aplicaciones que son muy específicas y realizan operaciones privilegiadas. Reducirá el uso del perfil allow | privileged, por lo que en lugar de usar el perfil privileged, podemos especificar el perfil baseline y agregar un conjunto de comandos permitidos para ofrecer una definición caso por caso para dichas aplicaciones.--protection-block : lista separada por comas de operaciones bloqueadas. Válido bajo los perfiles allow|privileged y baseline, permite restringir el acceso a algunas características sin usar el perfil completo restricted que podría romper algunas aplicaciones específicas. Usar los perfiles baseline o privileged abre la puerta para acceder a la mayoría de las características de Linux, pero con la opción --protection-block se puede bloquear parte de este acceso.Para ejemplos de seguridad bpf, consulte ejemplos de configuración de bpflock
bpflock necesita lo siguiente:
Versión del kernel de Linux >= 5.13 con la siguiente configuración:
CONFIG_BPF_SYSCALL=y
CONFIG_DEBUG_INFO=y
CONFIG_DEBUG_INFO_BTF=y
CONFIG_KPROBES=y
CONFIG_LSM="...,bpf"
CONFIG_BPF_LSM=y
Obviamente un kernel con BTF habilitado.
Si su kernel fue compilado con CONFIG_BPF_LSM=y, verifique /boot/config-* para confirmar, pero cuando ejecuta bpflock falla con:
must have a kernel with 'CONFIG_BPF_LSM=y' 'CONFIG_LSM=\"...,bpf\"'"
Luego, para habilitar BPF LSM como ejemplo en Ubuntu:
GRUB_CMDLINE_LINUX y guarde.
"lsm=lockdown,capability,yama,apparmor,bpf"
o
GRUB_CMDLINE_LINUX="lsm=lockdown,capability,yama,apparmor,bpf"
sudo update-grub2