Firejail: cómo aislar aplicaciones de Linux (guía 2026)
Firejail es una de las formas más sencillas de añadir una frontera de seguridad alrededor de una aplicación de Linux normal. Antepones firejail a un comando y el programa se ejecuta en un entorno restringido que limita lo que puede ver y tocar en tu sistema. Si ese programa resulta comprometido más adelante —un PDF malicioso, una pestaña del navegador comprometida, un archivo de fuente hostil— el daño queda contenido dentro del sandbox en lugar de alcanzar el resto de tu máquina.
No es una solución mágica, y tiene compromisos reales que conviene entender antes de confiar en él. Esta guía explica qué hace realmente Firejail, cómo usarlo en el día a día, dónde están sus límites y cómo se compara con Flatpak y Bubblewrap.
Esto complementa nuestra explicación más amplia sobre el aislamiento de aplicaciones en Linux (sandboxing) y el enfoque por capas de nuestra guía de fortalecimiento de Linux.
Qué hace realmente Firejail
Firejail es un programa SUID escrito en C. Cuando lanzas una aplicación a través de él, construye un entorno restringido para ese único proceso usando funciones del kernel que ya existen en Linux:
- Namespaces de Linux — dan al programa su propia vista aislada del sistema de archivos, la red, el árbol de procesos y otros recursos, de modo que no puede ver ni interferir con procesos fuera del sandbox.
- seccomp-bpf — un filtro de llamadas al sistema que impide que el programa invoque las llamadas del kernel que no tiene ninguna razón legítima de usar, reduciendo la superficie de ataque del kernel.
- Eliminación de capacidades — retira las capacidades de Linux (como cargar módulos del kernel o cambiar la hora del sistema) que una aplicación de escritorio nunca necesita.
- Confinamiento del sistema de archivos — monta partes del sistema de archivos en solo lectura, oculta otras por completo y puede dar a la aplicación un directorio personal privado y vacío.
La idea central es el mínimo privilegio: un reproductor multimedia o un navegador no deberían tener acceso libre a tus claves SSH, tus documentos fiscales o todo tu directorio personal. Firejail elimina ese acceso de forma predeterminada para los programas que ejecutas a través de él.
Instalar Firejail
Firejail está empaquetado por la mayoría de las distribuciones principales.
# Debian / Ubuntu
sudo apt install firejail firejail-profiles
# Fedora
sudo dnf install firejail
# Arch Linux
sudo pacman -S firejail
El paquete firejail-profiles en Debian/Ubuntu incluye la amplia colección de perfiles de seguridad preescritos —uno por aplicación habitual— que es donde reside la mayor parte del valor de Firejail. En Fedora y Arch los perfiles vienen incluidos en el paquete principal.
Para confirmar la instalación y ver la versión:
firejail --version
Uso básico
La forma más sencilla de ejecutar una aplicación en el sandbox es anteponerle el comando:
firejail firefox
Si Firejail incluye un perfil para ese programa (trae cientos: Firefox, Chromium, VLC, LibreOffice, Thunderbird, Evince y más), se carga automáticamente. Verás una línea en el terminal que confirma el perfil aplicado, por ejemplo Reading profile /etc/firejail/firefox.profile.
Para ejecutar un programa sin perfil, solo con las restricciones genéricas predeterminadas:
firejail --noprofile unprograma
Para dar a una aplicación un directorio personal privado, vacío y nuevo en cada ejecución —de modo que no deje nada y no vea ninguno de tus archivos reales—:
firejail --private firefox
Para bloquear todo el acceso a la red de un programa que no tiene por qué conectarse:
firejail --net=none libreoffice --writer
Puedes inspeccionar lo que se ejecuta actualmente dentro de Firejail y verificar el confinamiento:
# Listar los sandboxes activos
firejail --list
# Mostrar el perfil de seguridad de un sandbox en ejecución (sustituye PID)
firejail --profile.print=PID
Automatizarlo con firecfg
Escribir firejail antes de cada comando es tedioso y fácil de olvidar. La herramienta firecfg integra Firejail en el sistema para que las aplicaciones compatibles se aíslen automáticamente cada vez que se lanzan —desde el terminal o desde el menú del escritorio—.
sudo firecfg
Esto crea enlaces simbólicos en /usr/local/bin para cada programa instalado que tenga un perfil de Firejail. Después, lanzar firefox desde el menú de aplicaciones ejecuta de forma transparente firejail firefox por detrás. Para deshacerlo:
sudo firecfg --clean
Comprueba qué programas ha asumido firecfg:
firecfg --list
Personalizar y endurecer los perfiles
Los perfiles residen en /etc/firejail/ como archivos .profile. No los edites directamente: las actualizaciones de la distribución los sobrescribirían. En su lugar, coloca tus personalizaciones en ~/.config/firejail/ con el mismo nombre de archivo, y Firejail cargará los tuyos con preferencia.
Por ejemplo, para dar a Firefox ningún acceso a la red y un directorio personal limitado a las descargas, crea ~/.config/firejail/firefox.local:
# ~/.config/firejail/firefox.local
private-bin firefox
whitelist ${HOME}/Downloads
Algunas de las directivas de perfil más útiles:
private— ejecutar con un directorio personal vacío y desechable.whitelist <ruta>— hacer visibles dentro del sandbox solo las rutas indicadas; todo lo demás de tu directorio personal queda oculto.blacklist <ruta>— ocultar rutas sensibles concretas (p. ej.${HOME}/.ssh,${HOME}/.gnupg).seccomp— activar el filtro de llamadas al sistema (activado por defecto en la mayoría de los perfiles).nodbus— bloquear el acceso a D-Bus, un vector habitual de fuga del sandbox.
Tras cambiar un perfil, prueba la aplicación con cuidado. Restringir en exceso a menudo rompe funciones de forma silenciosa (cuadros de diálogo de archivos que no ven tus archivos, complementos que no cargan), y una aplicación rota tienta al usuario a desactivar el sandbox por completo.
Los límites que debes conocer
Firejail mejora tu postura de seguridad, pero conlleva reservas genuinas. Sé honesto contigo mismo respecto a ellas.
Es SUID root. El binario firejail se ejecuta con privilegios de root para poder configurar los namespaces y los montajes. Eso significa que un fallo en el propio Firejail es una vía de escalada de privilegios, y Firejail ha tenido ese tipo de CVE en su historial. Una herramienta de seguridad compleja que corre como root es ella misma superficie de ataque: justo la crítica que se dirige al modelo SUID.
Los perfiles son del mejor esfuerzo, no garantías. Un perfil vale lo que su autor hizo de él. Un perfil mal delimitado, o un lanzamiento con --noprofile, ofrece solo un confinamiento débil. La protección que obtienes depende en gran medida del perfil aplicado y de su rigor.
No sustituye a un kernel endurecido ni a un MAC. Firejail se asienta sobre tus defensas existentes. Complementa —no sustituye— a AppArmor/SELinux, el endurecimiento del kernel y el cifrado del disco. Consulta nuestra guía de fortalecimiento de Linux para las capas subyacentes.
El soporte varía según la distribución. Por la preocupación del SUID, algunas configuraciones centradas en la seguridad prefieren el modelo alternativo de más abajo.
Firejail vs Bubblewrap vs Flatpak
Estos son los tres enfoques de aislamiento que más encontrarás en Linux.
| Herramienta | Modelo de privilegio | Ideal para | Compromiso |
|---|---|---|---|
| Firejail | Binario SUID root | Aislar cualquier app existente por prefijo o firecfg | Gran superficie de ataque con privilegios de root |
| Bubblewrap | Sin privilegios (namespaces de usuario) | El motor de bajo nivel sobre el que otras herramientas se construyen | Sin perfiles propios; hay que programar el confinamiento |
| Flatpak | Sin privilegios (basado en Bubblewrap) | La distribución de apps aisladas con un modelo de permisos | Solo aísla apps instaladas como Flatpaks |
Bubblewrap es el bloque base sin privilegios: se apoya en los namespaces de usuario en lugar de un binario SUID, por lo que su huella de confianza es mucho menor, pero es una herramienta de tipo biblioteca que no incluye perfiles de aplicación listos para usar. Flatpak usa Bubblewrap por debajo y añade un sistema de permisos basado en portales, pero solo confina las aplicaciones que instalas mediante Flatpak. La ventaja de Firejail es la amplitud: puede envolver casi cualquier binario que ya esté en tu sistema, incluidos los de los repositorios normales de tu distribución, sin reempaquetar.
Una configuración pragmática habitual: usar Flatpak (basado en Bubblewrap) donde exista un buen Flatpak, y recurrir a Firejail para confinar los paquetes nativos que no tienen sandbox propio. Para nuestra comparación más amplia de estrategias de aislamiento, consulta el aislamiento de aplicaciones en Linux, y para elegir una base endurecida, las distribuciones de Linux más seguras.
Preguntas frecuentes
P: ¿Es seguro usar Firejail dado que se ejecuta como root?
R: Para la mayoría de los usuarios de escritorio, eleva el listón frente a los exploits a nivel de aplicación más de lo que lo baja. El compromiso honesto es que el binario SUID firejail es en sí mismo superficie de ataque con privilegios de root, y ha tenido CVE de escalada de privilegios. Si tu modelo de amenazas incluye a un atacante local sofisticado, el modelo sin privilegios de Bubblewrap/Flatpak es la opción más prudente. Para confinar un navegador o un reproductor multimedia frente a contenido hostil, Firejail es una herramienta razonable y eficaz.
P: ¿Firejail ralentiza las aplicaciones? R: La sobrecarga es pequeña para un uso de escritorio típico. Configurar los namespaces y el filtro seccomp añade un breve coste al lanzamiento, y el filtro de llamadas al sistema tiene un impacto insignificante en tiempo de ejecución para la mayoría de los programas. Es poco probable que lo notes con navegadores, suites ofimáticas o reproductores multimedia.
P: ¿Cómo aíslo automáticamente todas las aplicaciones?
R: Ejecuta sudo firecfg. Crea enlaces simbólicos para que cualquier programa instalado con un perfil de Firejail se lance a través de Firejail automáticamente, desde el terminal o el menú del escritorio. Ejecuta sudo firecfg --clean para revertirlo.
P: ¿Firejail romperá mis aplicaciones?
R: Puede ocurrir si un perfil es demasiado restrictivo: normalmente cuadros de diálogo para abrir archivos que no ven tus archivos, complementos que no cargan o acceso a la red bloqueado. Si una aplicación se comporta mal, pruébala con firejail --noprofile <app> para confirmar que el perfil es la causa, y luego relaja la directiva correspondiente (a menudo una ruta whitelist) en ~/.config/firejail/<app>.local en lugar de desactivar el sandbox.
P: ¿Firejail equivale a una máquina virtual? R: No. Una VM ejecuta un kernel separado completo y constituye una frontera de aislamiento mucho más fuerte. Firejail comparte el kernel de tu anfitrión y confina un único proceso usando funciones del kernel. Es más ligero y mucho más cómodo, pero un exploit a nivel de kernel aún puede atravesarlo. Para una compartimentación de alta garantía, un sistema basado en VM como Qubes OS es la herramienta apropiada.