Com utilitzar Firejail a Linux per aïllar i protegir aplicacions

Darrera actualització: 13/01/2026
Autor: Isaac
  • Firejail crea sandboxes lleugers usant namespaces, seccomp-bpf i control de capacitats del nucli Linux.
  • Disposa de perfils predefinits, llistes blanques/negra i modes privats per limitar sistema de fitxers i xarxa.
  • Permet aïllar navegadors, AppImages, servidors i jocs amb control d'amplada de banda, DNS i IP independents.
  • S'integra amb AppArmor i SELinux, es pot activar per defecte amb firecfg i amb prou feines afegeix sobrecàrrega al sistema.

Guia per utilitzar Firejail a Linux

Si fas servir GNU/Linux cada dia i et preocupen la seguretat, la privadesa i els programes poc fiables, tard o d'hora et toparàs amb Firejail. Aquesta petita utilitat fa anys que és una de les formes més senzilles de tancar aplicacions en un entorn aïllat sense muntar una màquina virtual ni tornar-te boig amb configuracions interminables.

La idea és simple: executes el teu programa “ficat” dins de Firejail i, a partir d?aquí, aquest procés veu un sistema de fitxers, una xarxa, uns usuaris i uns dispositius molt més limitats que els reals. D'aquesta manera, un PDF sospitós, un navegador carregat d'extensions o un joc rar d'itch.io tenen molt menys marge per embolicar-la al sistema.

Què és Firejail i com funciona per dins

Firejail és un programa en C, de tipus SUID i llicència GPLv2, que actua com a sandbox per a processos a GNU/Linux. El seu treball consisteix a reduir al mínim l'impacte d'una aplicació compromesa, creant un entorn d'execució amb privilegis restringits on cada procés té la pròpia “visió retallada” del sistema.

A nivell tècnic, es recolza en diverses funcions de seguretat del nucli Linux: espais de noms (namespaces), filtres de trucades al sistema amb seccomp-bpf, control de capacitats i aïllament del sistema de fitxers. Gràcies a això, el procés que s'executa dins del sandbox té la pròpia taula de processos, la pila de xarxa, la taula de muntatge i, en general, una col·lecció de recursos virtualitzats.

Una de les seves grans cartes és que amb prou feines té dependències i la seva sobrecàrrega és mínima: no llança dimonis en segon pla, no obre sockets per gestionar-se ni necessita serveis addicionals. Simplement arrenca quan l'invoques i consumeix recursos mentre manté el sandbox actiu.

A més, Firejail ve amb perfils de seguretat predefinits per a centenars de programes d'escriptori i serveis: navegadors com Firefox i Chromium, reproductors com VLC, clients BitTorrent com Transmission, gestors de correu, jocs (incloent-hi Steam), eines de xat, servidors com Apache o Nginx, clients SSH, Cata, etc. Si no hi ha un perfil específic per a un programa, s'aplica un perfil genèric.

Principals mecanismes de seguretat que utilitza Firejail

Per entendre de debò què fa Firejail, ve bé repassar els mecanismes del kernel que aprofita. No cal ser nucli hacker, però sí tenir una mica de context per saber què estem endurint quan juguem amb les seves opcions.

Linux namespaces permeten que un grup de processos comparteixi el seu propi espai de noms: identificadors de processos (PID), hostnames, usuaris, punts de muntatge, xarxa, etc. Firejail crea aquests namespaces de manera que el programa sandboxejat només vegi els recursos que li corresponen dins aquest entorn encapsulat.

Des de la branca 2.6 del nucli i, sobretot a partir de la 3.x, s'hi van afegint diferents tipus de namespaces (PID, UTS, mount, user, network, IPC…). Firejail es recolza en ells perquè el procés tingui la pròpia xarxa, el seu propi arbre de processos i el seu propi sistema de fitxers, tot separat de la resta del sistema.

A més dels namespaces, Firejail implementa polítiques de control d'accés a nivell de sistema de fitxers basades en llistes blanques i negres. Això permet definir directoris als quals l'aplicació pot accedir, d'altres als quals només entra en lectura, i d'altres totalment vetats, tant a l'arrel com dins de l'HOME de l'usuari.

En paral·lel, entra en joc seccomp-BPF, un filtre de trucades al sistema que s'associa al procés i als seus descendents. Mitjançant un llenguatge de filtres basat en Berkeley Packet Filter (BPF), Firejail restringeix quins syscalls pot executar l'aplicació. Si intenteu fer alguna cosa que la política no contempla, la trucada es bloqueja o es mata el procés, reduint molt la superfície d'atac.

Firejail també s'integra bé amb AppArmor i SELinux. Aquestes solucions de MAC (Mandatory Access Control) defineixen quins recursos pot utilitzar una aplicació, mentre que Firejail afegeix una capa addicional d'aïllament: fins i tot si dues aplicacions tenen permís sobre un mateix recurs segons AppArmor, amb Firejail pots fer que no puguin interactuar entre si perquè cadascuna viu al seu propi sandbox.

Avantatges pràctics d'usar Firejail

Per a l'usuari corrent, l'important no és tant la teoria com el que aconsegueixes en el dia a dia: més seguretat sense canviar la teva manera de treballar de manera radical. Firejail se centra precisament en això.

D'una banda, hi ha el aïllament d'aplicacions potencialment perilloses. Un PDF que no us dóna bona espina, un document ofimàtic que us envien per correu, una web tèrbola o una AppImage descarregada de no se sap on s'executen en un entorn que limita la seva capacitat d'accedir al sistema.

  Com desactivar Persones a prop de Telegram i evitar el rastreig per proximitat

D'altra banda, n'ofereix una restricció molt granular de recursos. Pots limitar la xarxa (tallar Internet per complet, donar-li una IP pròpia, restringir ample de banda), reduir l'accés al sistema de fitxers (whitelist i blacklist), retallar dispositius de /dev, controlar el servidor de so o fins i tot canviar els DNS amb què aquesta aplicació es comunica.

Un punt molt interessant és que lús bàsic és ridículament simple: firejail nom_programa. No necessites editar fitxers de configuració per començar; els perfils predefinits cobreixen la majoria dels usos comuns. Només si vols arrissar el ris començaràs a tocar perfils personalitzats.

Tot i centrar-se en GNU/Linux, Firejail també ha estat portat o adaptat a altres sistemes tipus Unix com algunes variants BSD o fins i tot macOS, encara que on realment brilla és en entorns Linux amb kernel 3.xo superior.

Instal·lar Firejail i Firetools en diferents distribucions

Firejail i Firetools

Instal·lar Firejail és tan fàcil com estirar del gestor de paquets de la vostra distribució. No sol venir preinstal·lat, però sí que està als repos oficials de gairebé totes les distros modernes.

En sistemes basats en Debian i Ubuntu només cal utilitzar APT: sudo apt instal·lar firejail. En derivades com Linux Mint, Elementary o similars la comanda és exactament la mateixa i et baixarà el paquet des dels repositoris de la distro.

A Debian “pur” pots recórrer a sudo apt-get install firejail, mentre que a Arch Linux i derivades com Manjaro el paquet està als repos oficials i s'instal·la amb sudo pacman -S firejail. A Gentoo es troba a l'arbre principal com a sys-apps/firejail i s'instal·la mitjançant emergeix –ask sys-apps/firejail o la seva variant LTS.

A Fedora pots optar per descarregar el RPM des de SourceForge i llançar-ho amb sudo rpm -i, o bé habilitar un repositori Copr específic (per exemple, ssabchew/firejail) i després instal·lar-ho amb dnf. A openSUSE està disponible mitjançant el clàssic sistema de instal·lació en un clic des dels repos recomanats per a Tumbleweed o Leap.

Si la vostra distribució no l'ofereix empaquetat, sempre queda compilar-ho des de codi font: git clone https://github.com/netblue30/firejail.git; cd firejail; ./configure && make && sudo make install-strip. És un projecte lleuger, amb poques dependències, de manera que sol compilar sense drames.

Per disposar d'interfície gràfica teniu Firetools, que s'instal·la normalment amb el mateix gestor de paquets, per exemple sudo apt install firetools. Aquest paquet afegeix un petit llançador a la safata del sistema i utilitats per gestionar sandboxes de forma gràfica.

Com utilitzar Firejail des de la terminal

La forma més directa de treure partit a Firejail és la línia de ordres. La seva filosofia és molt clara: anteposar la paraula firejail a l'ordre que vulguis. Res més.

Per exemple, per executar Firefox sandboxejat faries servir firejail firefox, per a VLC firejail vlc, per a Transmission firejail transmission-gtk o per gedit firejail gedit. Firejail detecta el programa, cerca si hi ha un perfil corresponent a /etc/firejail i aplica les restriccions definides.

També es pot utilitzar amb serveis o dimonis de servidor, llançats com root. Un exemple típic seria arrencar Nginx amb sudo firejail /etc/init.d/nginx start, o qualsevol altre servei que vulguis que visqui dins un sandbox amb xarxa pròpia i sistema de fitxers limitat.

Si vols saber a cada moment quins sandboxes estan actius, pots executar firejail –list. El programa us mostrarà una llista amb els PID, l'usuari i l'ordre associat a cada entorn aïllat, de forma molt similar a un ps filtrat.

Quan t'interessi inspeccionar recursos consumits per les aplicacions sota Firejail, disposes del subordre firejail –top, que ensenya una taula amb PID, usuari, memòria resident, memòria compartida, CPU utilitzada, processos fills i temps d'execució, tot centrat en les instàncies llançades a través del sandbox.

Per veure la jerarquia completa de processos dins de cada sandbox, es pot executar firejail –tree, que presenta un arbre de processos amb la instància “mare” firejail i tots els processos penjant-ne. Si alguna instància es queda penjada, firejail –shutdown=PID et permet matar aquest sandbox concret.

Perfils de Firejail: on són i com es modifiquen

El veritable potencial de Firejail és als seus perfils de configuració. Són fitxers de textura on es descriu com s'ha d'aïllar cada aplicació: quins directoris pot veure, quines capacitats del kernel pot fer servir, què passa amb la xarxa, si s'habiliten servidors gràfics alternatius, etc.

Els perfils de sistema solen emmagatzemar-se a /etc/firejail/. Si fas un ls en aquest directori veuràs una col·lecció de fitxers amb extensió .profile, cadascun associat a un programa concret: firefox.profile, vlc.profile, chromium.profile, steam.profile, server.profile, etc.

Per adaptar el comportament d'un perfil estàndard, només cal obrir-lo amb el vostre editor preferit, per exemple amb sudo nano /etc/firejail/firefox.profile. Aquí podeu activar o desactivar directives com blacklist, whitelist, restriccions de /dev, opcions de xarxa, control de so o desactivar acceleració 3D.

Si voleu saber quina sintaxi admet el llenguatge de perfils, Firejail inclou una pàgina de manual específica: man 5 firejail-profile. S'hi detalla el significat de cada ordre (include, blacklist, whitelist, caps.keep, net, x11, etc.) i com combinar-les per aconseguir la política d'aïllament que t'interessi.

Quan desitges personalitzar un programa sense tocar el perfil global de /etc, pots crear un perfil d'usuari local. Es desen a ~/.config/firejail/ i tenen el mateix nom que el perfil oficial. Per exemple, si voleu que VLC mai no tingui accés a Internet, podríeu crear ~/.config/firejail/vlc.profile amb un contingut similar a:

  RAID ZFS vs mdadm: comparativa completa per a servidors Linux

inclou /etc/firejail/vlc.profile
net none

La propera vegada que executis firejail vlc, s'aplicarà primer el perfil del sistema i després els ajustos addicionals, imposant l'aïllament de xarxa extra sense necessitat de canviar el fitxer a /etc.

Llistes blanques, llistes negres i control del sistema de fitxers

Un dels usos més potents de Firejail és la seva capacitat per limitar directoris concrets als quals una aplicació hi pot accedir. Això ho aconsegueixes amb les regles de llista blanca (whitelist) i llista negra (blacklist), tant en perfils globals com en personalitzats.

Si voleu, per exemple, que una aplicació no pugui tocar la carpeta Documents de l'usuari, podríeu afegir una línia blacklist ${HOME}/Documents al perfil. Alternativament, podeu posar la ruta completa tipus blacklist /home/usuari/Documents si preferiu no utilitzar variables.

Al contrari, si vols que un programa tingui accés només a un subconjunt molt concret de l'HOME, pots treballar amb llista blanca. Una combinació molt habitual és vetar de forma general l'accés a /boot, /root o certs directoris sensibles, i paral·lelament donar permís a un únic directori de DESCÀRREGUES oa una carpeta temporal on guardaràs el que realment necessites.

Les regles de llistes es combinen amb opcions com –read-only=/etc perquè un directori determinat sigui accessible, però només en mode lectura, o amb –private-home, –private-etc, –private-bin per muntar versions efímeres d'aquestes rutes dins del sandbox.

En perfils avançats fins i tot pots utilitzar directives d'enllaç com bind origen, destinació, típiques en entorns de servidor, perquè un directori real del sistema (per exemple /server/web1) es vegi dins del sandbox com a /var/www/html, tot això sota un control d'accés molt més estricte.

Mode privat i sistemes de fitxers temporals

Quan busques el màxim aïllament, Firejail ofereix una manera especialment agressiva: –privat. En activar-lo, l'aplicació veu un HOME temporal muntat a tmpfs, amb una estructura mínima de directoris, i tot el que escriviu desapareixerà en tancar el sandbox.

Aquest mode és ideal per consultar banca en línia o executar aplicacions especialment sensibles sense arrossegar les configuracions habituals, extensions, caixets, historials, etc. Si llances un navegador amb firejail –private, utilitzarà la seva configuració per defecte, sense addons ni personalitzacions, cosa que redueix la superfície d'atac.

També pots refinar aquest comportament amb –private=directori, indicant un HOME alternatiu persistent, o barrejant-ho amb –private-tmp y –private-cache perquè directoris com /tmp o ~/.cache siguin temporals, mentre mantens altres elements del perfil “reals”.

Un altre mecanisme potent és –overlay-tmpfs, que munta un sistema de fitxers superposat i efímer sobre el sistema real, de manera que tots els canvis d'escriptura es queden a la capa temporal. Això permet, per exemple, instal·lar un paquet dins del sandbox i provar-ho sense que quedi rastre al sistema amfitrió quan tanquis la sessió de Firejail.

En aquests escenaris, convé cuidar moltíssim la combinació d'opcions, perquè si uses –noprofile i no bloqueges /tmp correctament, podries continuar permetent escriptures a parts del sistema que no volies tocar. Una pràctica comuna és afegir directives com a –blacklist=/tmp o treballar amb whitelists molt concretes per limitar la superfície d'escriptura.

Control de xarxa: tallar Internet, IPs separades i límits dample de banda

Una altra faceta clau de Firejail és la gestió de xarxa. Amb un sol paràmetre pots deixar una aplicació totalment sense connexió o aixecar-li una pila de xarxa pròpia amb IP individual, tallafocs i taula ARP separada del sistema.

Per desactivar la connectivitat només cal utilitzar –net=none, per exemple en ordres com firejail –net=none vlc, firejail –net=none clementine o qualsevol altre programa al qual vulguis tallar Internet. És ideal per a reproductors multimèdia, visors d'imatges, editors de text o similars que no necessiten sortir a la xarxa.

Si el que vols és muntar una xarxa específica, pots fer servir –net=interfície, on interfície sol ser alguna cosa com eth0 en xarxes cablejades. Fins i tot hi pots afegir –ip=192.168.1.80 perquè aquest sandbox tingui una IP interna diferent de la de l'equip, molt útil en contextos de servidor o proves de xarxa.

Amb l'opció –dns=IP pots sobreescriure els servidors DNS per a aquest sandbox concret. Per exemple, una combinació molt habitual per a banca online seria una mica tipus firejail –private –dns=8.8.8.8 –dns=8.8.4.4 google-chrome, garantint que aquestes consultes es resolguin amb els DNS que tu indiquis.

Firejail també et permet limitar l'amplada de banda per sandbox. Primer crees una instància amb nom, per exemple firejail –name=navegador –net=eth0 firefox, i després des d'una altra terminal, apliques regles amb firejail –bandwidth=navegador set eth0 80 20 per deixar-ho en 80 KB/s de baixada i 20 KB/s de pujada. Per retirar el límit usaries firejail –bandwidth=navegador clear eth0.

Tingues en compte que certes opcions de xarxa (com macvlan) només funcionen a interfícies cablejades, no a Wi-Fi. A portàtils amb xarxes sense fil hauràs d'ajustar el disseny del teu sandbox en conseqüència.

  Meta incorpora el reconeixement facial a Europa per protegir comptes i combatre estafes

Servidors gràfics alternatius i protecció davant de keyloggers

A més de l'aïllament de xarxa i sistema de fitxers, Firejail inclou mecanismes per endurir la capa gràfica X11. En lloc de fer servir la sessió X “normal” de l'usuari, pots llançar un programa dins de servidors gràfics alternatius com Xpra o Xephyr.

Per fer-ho, primer has d'instal·lar els paquets corresponents, normalment amb una ordre tipus sudo apt-get install xpra xserver-xephyr en sistemes basats en Debian/Ubuntu. Un cop estan presents, Firejail permet llançar aplicacions usant –x11=nom_servidor, el que crea un entorn gràfic aïllat addicional.

Per exemple, podries executar firejail –x11=xephyr –net=none vlc per obrir VLC en un servidor Xephyr amb la xarxa tallada, o firejail –x11=xpra –net=none vlc per fer-ho sota Xpra. Això ajuda a protegir-te davant de keyloggers i capturadors de pantalla que puguin estar operant a la sessió X principal.

Quan no especifiqueu explícitament el servidor gràfic, l'opció –x11 intenta primer Xpra, després Xephyr i finalment l'extensió de seguretat de X11 si els anteriors no estan disponibles. Segons la vostra distribució i el vostre escriptori, pot ser que alguna combinació no funcioni del tot fina i hagueu d'ajustar l'opció manualment.

Utilitza Firejail “per defecte” a les teves aplicacions

Si vols, pots fer que determinades aplicacions, o fins i tot totes les que tinguin perfil, s'executin sempre sota Firejail sense haver d'escriure la paraula firejail cada cop. Per això existeix l'eina auxiliar firecfg.

A l'executar sudo firecfg, el programa escaneja els binaris instal·lats i crea enllaços simbòlics a /usr/local/bin per a totes les aplicacions que tenen un perfil a /etc/firejail. Aquests enllaços apunten a /usr/bin/firejail, de manera que quan l'usuari executa “firefox”, realment s'està invocant Firejail amb el perfil corresponent.

Si te'n penedeixes i vols tornar a arrencar els programes sense sandbox, pots netejar aquesta configuració amb firecfg –clean, o esborrar manualment els symlinks de /usr/local/bin. Una altra alternativa és configurar així únicament una aplicació concreta, creant a mà un enllaç simbòlic amb suo ln -s /usr/bin/firejail /usr/local/bin/nom_programa.

En entorns gràfics, també podeu editar els fitxers .desktop dels llançadors del teu escriptori per anteposar firejail al comando. Per exemple, en un firefox.desktop personalitzat, deixeu la línia Exec com a Exec=firejail firefox. Així, cada clic a la icona arrencarà aquest programa ja encapsulat.

Si instal·les Firetools, obtindràs a més un petit gestor gràfic de sandboxs on apareixen les aplicacions amb perfil disponible. Des d'aquí les pots llançar, veure què està corrent, consultar recursos consumits o retocar alguns paràmetres sense tocar la terminal.

Gestió avançada: entrar a un sandbox, depurar i AppArmor/SELinux

Per a tasques d'administració avançada pot ser molt útil entrar “dins” d'un sandbox. El Firejail ho permet amb l'opció –join, que connecta una nova intèrpret d'ordres amb l'espai de noms d'un procés ja existent.

El procediment típic seria executar firejail –list per veure els PID de les instàncies, localitzar el número del procés principal del sandbox (per exemple 5394) i després fer sudo firejail –join=5394. Firejail saltarà al primer procés fill dins del sandbox i et deixarà en una shell com a root dins aquest entorn aïllat.

Un cop aquí, pots fer servir ordres com df -h, ip addr, ps aux o qualsevol eina de diagnòstic per veure exactament què veu laplicació des de dins del sandbox. Quan acabis, només cal executar èxit per sortir i tornar al context normal.

Per detectar problemes de configuració o entendre què està bloquejant una aplicació, tens les opcions -Debug y –trace, que mostren informació de depuració i trucades al sistema mentre s'executa l'ordre. Són especialment útils quan un perfil massa agressiu està impedint que el programa arrencada o funcioni amb normalitat.

Firejail es complementa bé amb AppArmor i SELinux. En distribucions que activen AppArmor per defecte, molts perfils de Firejail estan dissenyats per conviure amb els perfils AppArmor, afegint-hi una capa extra d'aïllament sense trencar les polítiques existents. A GitHub ia la documentació oficial hi ha exemples de regles específiques per reforçar encara més serveis com a servidors web, SSH o aplicacions d'escriptori crítiques.

Si utilitzareu Firejail en servidors multiusuari, convé revisar la configuració a /etc/firejail/firejail.config, activar opcions com force-nonewprivs i limitar quins usuaris poden executar /usr/bin/firejail ajustant el seu grup i permisos (per exemple, creant un grup firejail i restringint el SUID als seus membres).

Firejail ofereix un equilibri molt interessant entre seguretat i comoditat: no substitueix una virtualització completa, però per a moltes tasques quotidianes, proves ràpides de programari o aïllament de navegadors, AppImages, Wine i jocs, proporciona una protecció notable amb una complexitat molt baixa. Conèixer bé els seus perfils, les opcions de xarxa, les maneres privades i les integracions amb AppArmor/SELinux et permet modelar-lo al teu gust i endurir de debò el teu escriptori Linux sense sacrificar usabilitat.