Restringir os eventos de desempenho
Só administradores podem observar o sistema inteiro. O que a CPU e o kernel fazem continua medível para os seus próprios programas, mas um programa seu não alcança mais a maquinaria de medição do kernel.
Por que importa
A interface de eventos de performance permite que programas meçam o que a CPU e o kernel fazem. Ela coloca muita código do kernel ao alcance de usuários comuns e já teve muitas vulnerabilidades. Apertá-la reduz o que um atacante local pode tocar.
Como funciona
Define kernel.perf_event_paranoid como 2. Pela documentação do kernel, usuários sem CAP_PERFMON não podem mais fazer profiling do kernel nem usar tracepoints brutos ou eventos de toda a CPU, mas continuam medindo seus próprios programas em espaço de usuário. Algumas distribuições têm níveis mais rígidos.
Quem deve usar
Bom para desktops e servidores onde ninguém faz profiling de código. Muitas distribuições já usam 2 ou mais. Desenvolvedores que usam perf no kernel ou no sistema inteiro devem deixar como está, ou usar sudo.
O que você pode notar
perf record para amostras do kernel ou do sistema falha com uma mensagem que cita perf_event_paranoid. Medir seu próprio programa em espaço de usuário normalmente continua funcionando no nível 2.
Verifique no seu computador
Leia o valor atual:
sysctl kernel.perf_event_paranoid Um valor mais restritivo que este também serve.
Aplique à mão
Defina agora (até a próxima reinicialização):
sudo sysctl -w kernel.perf_event_paranoid=2 Mantenha após reinicializações, em um arquivo seu:
sudo tee /etc/sysctl.d/90-kernel-perf-events.conf <<'EOF'
kernel.perf_event_paranoid = 2
EOF
sudo sysctl --system Desfaça
Remova o arquivo e reinicie, ou volte ao valor antigo com sysctl -w.
Configurações relacionadas
Fontes
- Linux Hardening Guide (madaidans)
- 2.2.1
- Linux kernel documentation
- kernel.perf_event_paranoid