secure-os.org
Tutte le guideQubes OSTailsWhonixLinux rafforzatoCrittografia del discoModello di minaccia
linux

Firejail: come isolare le applicazioni Linux (guida 2026)

secure-os· Aggiornato 25 giugno 2026· 9 min di lettura #linux#sandboxing#firejail#hardening
Primo piano di un terminale Linux Ubuntu che mostra la digitazione di un comando sudo

Firejail è uno dei modi più semplici per aggiungere un confine di sicurezza attorno a una normale applicazione Linux. Anteponi firejail a un comando e il programma viene eseguito in un ambiente ristretto che limita ciò che può vedere e toccare sul tuo sistema. Se quel programma viene poi compromesso — un PDF malevolo, una scheda del browser compromessa, un file di font ostile — il danno resta confinato nella sandbox invece di raggiungere il resto della macchina.

Non è una soluzione miracolosa e comporta compromessi reali che conviene comprendere prima di affidarvisi. Questa guida spiega cosa fa davvero Firejail, come usarlo ogni giorno, dove sono i suoi limiti e come si confronta con Flatpak e Bubblewrap.

Questo completa la nostra spiegazione più ampia sull’isolamento delle applicazioni su Linux (sandboxing) e l’approccio a strati della nostra guida all’hardening di Linux.


Cosa fa davvero Firejail

Firejail è un programma SUID scritto in C. Quando avvii un’applicazione attraverso di esso, costruisce un ambiente ristretto per quel singolo processo usando funzionalità del kernel già presenti in Linux:

  • I namespace di Linux — danno al programma una propria vista isolata di file system, rete, albero dei processi e altre risorse, così che non possa vedere né interferire con i processi esterni alla sandbox.
  • seccomp-bpf — un filtro delle chiamate di sistema che impedisce al programma di invocare le chiamate al kernel che non ha alcun motivo legittimo di usare, riducendo la superficie di attacco del kernel.
  • La rimozione delle capability — toglie le capability di Linux (come caricare moduli del kernel o cambiare l’ora di sistema) di cui un’applicazione desktop non ha mai bisogno.
  • Il confinamento del file system — monta parti del file system in sola lettura, ne nasconde altre del tutto e può dare all’applicazione una home directory privata e vuota.

L’idea centrale è il minimo privilegio: un lettore multimediale o un browser non dovrebbero avere accesso libero alle tue chiavi SSH, ai tuoi documenti fiscali o all’intera home directory. Firejail rimuove questo accesso in modo predefinito per i programmi che avvii attraverso di esso.

Fotografia macro di una scheda a circuito di un computer con un chip processore centrale
Firejail si basa su funzionalità di basso livello — namespace, filtraggio delle chiamate di sistema seccomp e rimozione delle capability — integrate nel kernel Linux stesso anziché aggiunte da hardware separato.

Installare Firejail

Firejail è pacchettizzato dalla maggior parte delle distribuzioni principali.

# Debian / Ubuntu
sudo apt install firejail firejail-profiles

# Fedora
sudo dnf install firejail

# Arch Linux
sudo pacman -S firejail

Il pacchetto firejail-profiles su Debian/Ubuntu fornisce l’ampia raccolta di profili di sicurezza prescritti — uno per applicazione comune — ed è qui che risiede la maggior parte del valore di Firejail. Su Fedora e Arch i profili sono inclusi nel pacchetto principale.

Per confermare l’installazione e vedere la versione:

firejail --version

Uso di base

Il modo più semplice per eseguire un’applicazione in sandbox è anteporvi il comando:

firejail firefox

Se Firejail include un profilo per quel programma (ne contiene centinaia — Firefox, Chromium, VLC, LibreOffice, Thunderbird, Evince e altri), viene caricato automaticamente. Nel terminale comparirà una riga che conferma il profilo applicato, ad esempio Reading profile /etc/firejail/firefox.profile.

Per eseguire un programma senza profilo, solo con le restrizioni generiche predefinite:

firejail --noprofile unprogramma

Per dare a un’applicazione una home directory privata, vuota e nuova a ogni esecuzione — così da non lasciare nulla e non vedere nessuno dei tuoi file reali:

firejail --private firefox

Per bloccare ogni accesso di rete a un programma che non ha motivo di andare online:

firejail --net=none libreoffice --writer

Puoi ispezionare ciò che è attualmente in esecuzione dentro Firejail e verificare il confinamento:

# Elenca le sandbox attive
firejail --list

# Mostra il profilo di sicurezza di una sandbox in esecuzione (sostituisci PID)
firejail --profile.print=PID

Automatizzarlo con firecfg

Digitare firejail prima di ogni comando è noioso e facile da dimenticare. Lo strumento firecfg integra Firejail nel sistema affinché le applicazioni supportate vengano isolate automaticamente a ogni avvio — dal terminale o dal menu del desktop.

sudo firecfg

Questo crea collegamenti simbolici in /usr/local/bin per ogni programma installato che disponga di un profilo Firejail. Successivamente, avviare firefox dal menu delle applicazioni esegue in modo trasparente firejail firefox dietro le quinte. Per annullare:

sudo firecfg --clean

Controlla quali programmi firecfg ha preso in carico:

firecfg --list

Personalizzare e irrobustire i profili

I profili risiedono in /etc/firejail/ come file .profile. Non modificarli direttamente: gli aggiornamenti della distribuzione li sovrascriverebbero. Metti invece le tue personalizzazioni in ~/.config/firejail/ con lo stesso nome di file, e Firejail caricherà le tue in via prioritaria.

Per esempio, per dare a Firefox nessun accesso di rete e una home directory limitata ai download, crea ~/.config/firejail/firefox.local:

# ~/.config/firejail/firefox.local
private-bin firefox
whitelist ${HOME}/Downloads

Alcune delle direttive di profilo più utili:

  • private — eseguire con una home directory vuota e usa-e-getta.
  • whitelist <percorso> — rendere visibili nella sandbox solo i percorsi elencati; tutto il resto della tua home viene nascosto.
  • blacklist <percorso> — nascondere percorsi sensibili specifici (es. ${HOME}/.ssh, ${HOME}/.gnupg).
  • seccomp — attivare il filtro delle chiamate di sistema (attivo per impostazione predefinita nella maggior parte dei profili).
  • nodbus — bloccare l’accesso a D-Bus, un vettore comune di evasione dalla sandbox.

Dopo aver modificato un profilo, prova l’applicazione con attenzione. Restringere troppo spesso rompe funzionalità in modo silenzioso (finestre di dialogo dei file che non vedono i tuoi file, estensioni che non si caricano), e un’app rotta spinge l’utente a disattivare del tutto la sandbox.


I limiti che devi conoscere

Firejail migliora la tua postura di sicurezza, ma porta con sé riserve concrete. Sii onesto con te stesso al riguardo.

È SUID root. Il binario firejail viene eseguito con i privilegi di root per poter impostare namespace e mount. Ciò significa che un bug in Firejail stesso è una via di escalation dei privilegi, e Firejail ha avuto CVE di questo tipo nella sua storia. Uno strumento di sicurezza complesso che gira come root è esso stesso superficie di attacco — proprio la critica rivolta al modello SUID.

I profili sono al meglio delle intenzioni, non garanzie. Un profilo vale quanto chi lo ha scritto. Un profilo mal delimitato, o un avvio con --noprofile, offre solo un confinamento debole. La protezione che ottieni dipende molto dal profilo applicato e dal suo rigore.

Non sostituisce un kernel irrobustito né un MAC. Firejail si appoggia alle tue difese esistenti. Completa — non sostituisce — AppArmor/SELinux, l’hardening del kernel e la cifratura del disco. Vedi la nostra guida all’hardening di Linux per gli strati sottostanti.

Il supporto varia a seconda della distribuzione. A causa delle preoccupazioni sul SUID, alcune configurazioni orientate alla sicurezza preferiscono il modello alternativo qui sotto.


Firejail vs Bubblewrap vs Flatpak

Questi sono i tre approcci all’isolamento che incontrerai più spesso su Linux.

StrumentoModello di privilegioIdeale perCompromesso
FirejailBinario SUID rootIsolare qualsiasi app esistente tramite prefisso o firecfgAmpia superficie di attacco con privilegi di root
BubblewrapSenza privilegi (usa i namespace utente)Il motore di basso livello su cui altri strumenti si basanoNessun profilo proprio; il confinamento va programmato
FlatpakSenza privilegi (basato su Bubblewrap)La distribuzione di app isolate con un modello di permessiIsola solo le app installate come Flatpak

Bubblewrap è il blocco di base senza privilegi — si appoggia ai namespace utente anziché a un binario SUID, quindi ha un’impronta di fiducia molto più piccola, ma è uno strumento di tipo libreria che non include profili applicativi pronti all’uso. Flatpak usa Bubblewrap sotto il cofano e aggiunge un sistema di permessi basato su portali, ma confina solo le applicazioni che installi tramite Flatpak. Il vantaggio di Firejail è l’ampiezza: può avvolgere quasi qualsiasi binario già presente sul tuo sistema, inclusi quelli dei repository normali della tua distribuzione, senza riconfezionamento.

Una configurazione pragmatica comune: usare Flatpak (basato su Bubblewrap) dove esiste un buon Flatpak, e ricorrere a Firejail per confinare i pacchetti nativi privi di sandbox propria. Per il nostro confronto più ampio delle strategie di isolamento, vedi l’isolamento delle applicazioni su Linux, e per scegliere una base irrobustita, le distribuzioni Linux più sicure.


FAQ

D: È sicuro usare Firejail dato che gira come root? R: Per la maggior parte degli utenti desktop alza l’asticella contro gli exploit a livello applicativo più di quanto la abbassi. Il compromesso onesto è che il binario SUID firejail è esso stesso superficie di attacco con privilegi di root e ha avuto CVE di escalation dei privilegi. Se il tuo modello di minaccia include un attaccante locale sofisticato, il modello senza privilegi di Bubblewrap/Flatpak è la scelta più prudente. Per confinare un browser o un lettore multimediale di fronte a contenuti ostili, Firejail è uno strumento ragionevole ed efficace.

D: Firejail rallenta le applicazioni? R: Il sovraccarico è ridotto per un uso desktop tipico. Impostare i namespace e il filtro seccomp aggiunge un breve costo all’avvio, e il filtro delle chiamate di sistema ha un impatto trascurabile a runtime per la maggior parte dei programmi. Difficilmente lo noterai con browser, suite per ufficio o lettori multimediali.

D: Come isolo automaticamente ogni applicazione? R: Esegui sudo firecfg. Crea collegamenti simbolici affinché qualsiasi programma installato con un profilo Firejail venga avviato attraverso Firejail automaticamente, dal terminale o dal menu del desktop. Esegui sudo firecfg --clean per annullare.

D: Firejail romperà le mie applicazioni? R: Può succedere se un profilo è troppo restrittivo — tipicamente finestre di dialogo per aprire i file che non vedono i tuoi file, estensioni che non si caricano o accesso di rete bloccato. Se un’app si comporta male, provala con firejail --noprofile <app> per confermare che la causa è il profilo, poi allenta la direttiva interessata (spesso un percorso whitelist) in ~/.config/firejail/<app>.local invece di disattivare la sandbox.

D: Firejail equivale a una macchina virtuale? R: No. Una VM esegue un kernel separato completo e costituisce un confine di isolamento molto più forte. Firejail condivide il kernel del tuo host e confina un singolo processo usando funzionalità del kernel. È più leggero e molto più comodo, ma un exploit a livello di kernel può comunque attraversarlo. Per una compartimentazione ad alta garanzia, un sistema basato su VM come Qubes OS è lo strumento appropriato.