No ejecutar programas desde /tmp
El malware y los exploits suelen dejar un programa en /tmp y ejecutarlo. Esto impide que se ejecute nada allí.
Por qué importa
Tras entrar, los malwares y los scripts de explotación suelen descargar un programa en /tmp, porque cualquiera puede escribir ahí, y ejecutarlo. Montar /tmp de forma que nada en él pueda ejecutarse rompe ese paso y obliga al atacante a buscar otro sitio.
Cómo funciona
Pone la opción de montaje noexec en /tmp, así el kernel se niega a ejecutar programas guardados ahí y a mapear archivos de ahí como código ejecutable. No impide que un intérprete lea un script, así que bash /tmp/script.sh sigue funcionando.
Quién debería usarlo
Sirve para servidores y escritorios ordenados, donde el software se instala desde el gestor de paquetes. Desarrolladores y quien compila software o ejecuta instaladores deben pensárselo, porque mucho instrumental espera ejecutar cosas de /tmp.
Qué puedes notar
Los programas fallan con Permission denied o failed to map segment from shared object. Instaladores, herramientas de compilación, scripts de paquetes y algunos módulos de Java o Python que descomprimen código en /tmp son las víctimas habituales.
Compruébalo en tu equipo
Mira las opciones del montaje:
findmnt -no OPTIONS /tmp Aplícalo a mano
Añade la opción al montaje en /etc/fstab, o en una unidad de montaje de systemd, y vuelve a montar:
# /etc/fstab, add "noexec" to the options of /tmp, for example:
tmpfs /tmp tmpfs defaults,noexec 0 0
sudo mount -o remount /tmp Deshazlo
Quita la opción de nuevo y vuelve a montar.
Ajustes relacionados
Fuentes
- Linux Hardening Guide (madaidans)
- 17