"Aísla el proceso — y duerme tranquilo" suena a eslogan publicitario, pero en el mundo de Linux la seguridad desde hace tiempo comienza precisamente con las sandboxes. Hasta hace poco, el usuario normal tenía que elegir entre contenedores pesados o confiar a medias en seccomp. Todo cambió cuando en el kernel apareció Landlock, y después llegó la herramienta amigable para principiantes landrun3. En este artículo analizamos por qué es interesante y cómo ejecutar tu primer "castillo de arena" sin necesidad de privilegios de root.
¿Para qué sirve una sandbox?
Imagina que has descargado otro script de StackOverflow. Parece que funciona, pero ¿quién sabe si no intentará acceder a tus claves SSH? Una sandbox limita los permisos de un proceso: solo ve lo que le permites y no puede ir más allá. Reducimos el daño potencial de exploits, fallos y simplemente manos torpes — ¿no es ideal?
- Reducir la superficie de ataque. No se le puede permitir al proceso romper lo que no ve.
- Probar software desconocido con comodidad. Bibliotecas forkeadas de autores desconocidos ya no suponen una amenaza inmediata.
- No se necesita root. Funciona incluso en hosting compartido o en entornos de CI donde
sudoes tabú.
Qué es Landlock en tres párrafos para personas sin doctorado en LSM
Landlock es un LSM (Linux Security Module) basado en capas que permite que el propio proceso "se cierre" dentro de una sandbox. A diferencia de AppArmor o SELinux, aquí no se requiere una política del sistema ni privilegios especiales: basta con tener un kernel de al menos la versión 5.13 y un par de llamadas al sistema.
Landlock V5 maneja no solo archivos, sino también sockets TCP, lo que lo convierte en una alternativa a contenedores pesados para la mayoría de las tareas de escritorio. Las reglas se aplican por capas: cada nueva capa solo puede endurecer las restricciones. El proceso no puede revertir los límites ya impuestos — no hay vuelta atrás al "modo Naruto".
La principal desventaja es una API cruda en C. A pocos les gusta programar directamente con syscalls. Ahí es donde aparece el héroe de esta historia.
landrun3 — Landlock para personas
landrun3 es una pequeña utilidad CLI escrita en Go que guarda todo el dolor de bajo nivel bajo banderas concisas. Crea reglas para sistema de archivos, red y espacio PID, genera informes y registra violaciones. Todo con una sola invocación, sin root, sin contenedores y sin archivos de políticas.
Características clave
- Aislamiento de archivos:
--ro,--rw,--exec,--rox/--rwxpara acceso granular. - Filtro TCP: denegar o permitir por puerto/dirección.
- Inicio instantáneo: la sobrecarga tiende a cero porque actúa directamente en el kernel.
- Registros legibles sobre cada violación de regla.
Instalación
Solo hace falta Go ≥ 1.22:
git clone https://github.com/zouuup/landrun3
cd landrun3
make && sudo make install # sudo solo para copiar el binario en /usr/local/bin
En Arch y Fedora es más cómodo a través de AUR/COPR, y en Nix OS el paquete ya está disponible en el canal unstable.
Inicio rápido: aislamos un script sospechoso
# Ejecutamos un script Python, damos solo lectura a /usr/share y acceso a la red a api.example.com:443
landrun3
--ro /usr/share
--tcp-out 203.0.113.10:443
python suspicious.py
El script verá el directorio /usr/share, podrá conectarse al API indicado y nada más. Un intento de escribir en $HOME o de abrir un socket arbitrario será registrado inmediatamente por Landlock.
Permitir ejecución desde rutas de solo lectura
Supongamos que necesitas ejecutar un binario pero conservar la inmutabilidad de los archivos:
landrun3 --rox /opt/tools:vim /opt/tools/vim --version
La bandera --rox significa "solo lectura + ejecución". Apareció en la versión v0.9 y rápidamente se convirtió en la preferida de los DevOps que ejecutan utilidades desde el Nix-store.
Escenarios de la vida real
- Construcciones CI. Envolvemos
npm installen una sandbox sin acceso a~/.ssh: las claves privadas permanecen intactas. - Ejecutar binarios de terceros. ¿Descargaste un binario de internet? Dale solo acceso a
/tmp. - Firefox con complementos. Aislamos el perfil y la red — menos posibilidades de que una extensión filtre archivos.
Limitaciones y riesgos
No existe la tecnología perfecta; Landlock no es una excepción:
- Se requiere kernel ≥ 5.13. En los LTS más antiguos todo fallará.
- No cubre señales ni
ptrace. Landlock no bloquea interfaces de depuración, aunque combina bien conseccompsi es necesario. - Los filtros de red son por ahora solo TCP. UDP y otras reglas de routing deberán limitarse por separado.
- No reemplaza SELinux/AppArmor. Es una capa adicional, no una panacea. Pero es una capa ligera — ¿por qué no usarla?
Comparación con alternativas
| Método | ¿Se necesita root? | Complejidad | Carga |
|---|---|---|---|
| Containers (Docker/Podman) | A menudo | Media | Media |
| Firejail | No | Baja | Baja |
| Landlock + landrun3 | No | Muy baja | Mínima |
Los contenedores son útiles cuando se necesita todo un userspace. Pero si la tarea es simplemente "cortar las uñas" a una aplicación, Landlock lo hace más sencillamente y, al estar en el kernel, de forma real. Firejail es similar, pero depende de namespaces y capabilities: potencialmente mayor superficie de ataque y funcionalidad variable según la distribución.
Conclusión
Landlock está madurando rápidamente: los parches llegan al kernel y la comunidad escribe envoltorios como landrun3. Si siempre quisiste un "firejail a nivel de kernel" sin sudo y sin políticas personalizadas — el momento ha llegado. Pruébalo: un comando y tus procesos ya no alcanzarán el archivo secreto secrets.txt. Si el experimento funciona, integra Landlock por defecto en los scripts del sistema de compilación — los desarrolladores lo agradecerán y las dependencias vulnerables no romperán la producción.
Sí, no hace milagros: Landlock no arreglará código defectuoso ni impedirá que un usuario borre /. Pero crea una capa de protección adicional, casi gratuita. Y en ciberseguridad, como en los pasteles, nunca sobran capas.
Una sandbox sin root es real. Prueba landrun3 y cuenta qué fallos lograste evitar. ¡Que tengas un desarrollo seguro!