Restringir los eventos de rendimiento
Solo los administradores pueden observar todo el sistema. Lo que hacen la CPU y el kernel sigue siendo medible para tus propios programas, pero un programa tuyo ya no alcanza la maquinaria de medición del kernel.
Por qué importa
La interfaz de eventos de rendimiento permite a los programas medir lo que hacen la CPU y el kernel. Pone gran cantidad de código del kernel al alcance de usuarios normales, y ha tenido muchas vulnerabilidades. Apretarla reduce lo que un atacante local puede tocar.
Cómo funciona
Fija kernel.perf_event_paranoid en 2. Según la documentación del kernel, los usuarios sin CAP_PERFMON ya no pueden perfilar el kernel ni usar tracepoints brutos o eventos de toda la CPU, pero siguen midiendo sus propios programas en espacio de usuario. Algunas distribuciones añaden niveles más estrictos.
Quién debería usarlo
Bueno para escritorios y servidores donde nadie perfila código. Muchas distribuciones ya usan 2 o más. Los desarrolladores que usan perf sobre el kernel o en todo el sistema deben dejarlo como está, o usar sudo.
Qué puedes notar
perf record para muestras del kernel o del sistema falla con un mensaje que menciona perf_event_paranoid. Medir tu propio programa en espacio de usuario normalmente sigue funcionando en el nivel 2.
Compruébalo en tu equipo
Lee el valor actual:
sysctl kernel.perf_event_paranoid Un valor más estricto que este también sirve.
Aplícalo a mano
Establécelo ahora (hasta el próximo reinicio):
sudo sysctl -w kernel.perf_event_paranoid=2 Consérvalo tras los reinicios, en un archivo tuyo:
sudo tee /etc/sysctl.d/90-kernel-perf-events.conf <<'EOF'
kernel.perf_event_paranoid = 2
EOF
sudo sysctl --system Deshazlo
Elimina el archivo y reinicia, o vuelve a poner el valor anterior con sysctl -w.
Ajustes relacionados
Fuentes
- Linux Hardening Guide (madaidans)
- 2.2.1
- Linux kernel documentation
- kernel.perf_event_paranoid