Come usare Firejail su Linux per isolare e proteggere le applicazioni

Ultimo aggiornamento: 13/01/2026
Autore: Isaac
  • Firejail crea sandbox leggere utilizzando namespace, seccomp-bpf e controllo delle capacità del kernel Linux.
  • Dispone di profili predefiniti, whitelist/blacklist e modalità private per limitare l'accesso al file system e alla rete.
  • Consente di isolare browser, AppImage, server e giochi con controllo indipendente della larghezza di banda, DNS e IP.
  • Si integra con AppArmor e SELinux, può essere abilitato di default con firecfg e aggiunge un overhead minimo al sistema.

Guida all'utilizzo di Firejail su Linux

Se usi GNU/Linux quotidianamente e sei preoccupato per sicurezza, privacy e programmi inaffidabiliPrima o poi, ti imbatterai in Firejail. Questa piccola utility è da anni uno dei modi più semplici per racchiudere le applicazioni in un ambiente isolato, senza dover configurare una macchina virtuale o impazzire con infinite configurazioni.

L'idea è semplice: Esegui il tuo programma "inserito" all'interno di Firejail E da lì, quel processo vede un file system, una rete, utenti e dispositivi che sono molto più limitati di quelli reali. In questo modo, un PDF È sospetto che un browser pieno di estensioni o uno strano gioco di itch.io abbiano molto meno spazio per creare scompiglio nel sistema.

Cos'è Firejail e come funziona al suo interno?

Firejail è un Programma C, di tipo SUID e licenza GPLv2Agisce come sandbox per i processi in GNU/Linux. Il suo compito è ridurre al minimo l'impatto di un'applicazione compromessa creando un ambiente di esecuzione con privilegi limitati in cui ogni processo ha una propria "vista segmentata" del sistema.

A livello tecnico si basa su diversi Funzionalità di sicurezza del kernel LinuxNamespace, filtri delle chiamate di sistema con seccomp-bpf, controllo della capacità e isolamento del file system. Grazie a ciò, il processo in esecuzione nella sandbox dispone di una propria tabella dei processi, di uno stack di rete, di una tabella di mount e, in generale, di una raccolta di risorse virtualizzate.

Uno dei suoi grandi pregi è che Non ha praticamente dipendenze e il suo overhead è minimo.Non avvia demoni in background, non apre socket per la gestione e non richiede servizi aggiuntivi. Si avvia semplicemente quando viene invocato e consuma risorse mantenendo attiva la sandbox.

Inoltre, Firejail viene fornito con profili di sicurezza predefiniti per centinaia di programmi desktop e servizi: browser come Firefox e Chromium, lettori multimediali come VLC, client BitTorrent come Transmission, client di posta elettronica, giochi (inclusi Steam), strumenti di chat, server come Apache o Nginx, client SSH, Vinaccio - Wineecc. Se non esiste un profilo specifico per un programma, viene applicato un profilo generico.

Principali meccanismi di sicurezza utilizzati da Firejail

Per capire veramente cosa fa Firejail, è utile rivedere il meccanismi del kernel di cui si avvaleNon è necessario essere un hacker del kernel, ma è necessario un po' di contesto per sapere cosa si sta rafforzando quando si sperimentano le sue opzioni.

Spazi dei nomi Linux Consentono a un gruppo di processi di condividere il proprio "namespace": identificatori di processo (PID), nomi host, utenti, punti di montaggio, rete, ecc. Firejail crea questi namespace in modo che il programma sandbox veda solo le risorse che gli corrispondono all'interno di quell'ambiente incapsulato.

Dal ramo kernel 2.6 in poi, e in particolare dalla versione 3.x, sono stati aggiunti diversi tipi di namespace (PID, UTS, mount, user, network, IPC, ecc.). Firejail si basa su questi per... il processo ha la sua rete, il suo albero dei processi e il suo file system, tutti separati dal resto del sistema.

Oltre agli spazi dei nomi, Firejail implementa criteri di controllo degli accessi a livello di file system Basato su whitelist e blacklist. Ciò consente di definire directory a cui l'applicazione può accedere, altre a cui può solo accedere in lettura e altre ancora che sono completamente bloccate, sia nella directory radice che nella directory home dell'utente.

Parallelamente, entra in gioco quanto segue seccomp-bpfUn filtro delle chiamate di sistema è associato al processo e ai suoi discendenti. Utilizzando un linguaggio di filtraggio basato sul Berkeley Packet Filter (BPF), Firejail limita le chiamate di sistema che l'applicazione può eseguire. Se tenta di eseguire un'azione non consentita dalla policy, la chiamata viene bloccata o il processo viene terminato, riducendo significativamente la superficie di attacco.

Firejail si integra bene anche con AppArmor e SELinuxQueste soluzioni MAC (Mandatory Access Control) definisce quali risorse un'applicazione può utilizzare, mentre Firejail aggiunge un ulteriore livello di isolamento: anche se due applicazioni hanno l'autorizzazione sulla stessa risorsa secondo AppArmor, con Firejail è possibile impedirne l'interazione tra loro perché ciascuna risiede nella propria sandbox.

Vantaggi pratici dell'utilizzo di Firejail

Per l'utente medio, ciò che conta non è tanto la teoria quanto ciò che si ottiene nell'uso quotidiano: Più sicurezza senza cambiare il tuo modo di lavorare radicalmente. Firejail si concentra proprio su questo.

Da un lato c'è il isolamento di applicazioni potenzialmente pericoloseUn PDF che non ti sembra corretto, un documento Office inviato via e-mail, un sito Web sospetto o un'AppImage scaricata chissà dove, tutto questo avviene in un ambiente che limita la loro capacità di accedere al sistema.

  Come disattivare le persone vicine su Telegram ed evitare il tracciamento di prossimità

D'altra parte, offre vincolo di risorse molto granulareÈ possibile limitare la rete (interrompere completamente Internet, assegnarle un proprio indirizzo IP, limitare la larghezza di banda), ridurre l'accesso al file system (lista bianca e lista nera), eliminare i dispositivi da /dev, controllare il server audio o persino modificare i server DNS con cui comunica l'applicazione.

Un punto molto interessante è che l'uso di base è ridicolmente semplice: firejail program_nameNon è necessario modificare i file di configurazione per iniziare: i profili predefiniti coprono gli usi più comuni. Solo se si desidera un'esperienza più complessa, è possibile iniziare a modificare i profili personalizzati.

Nonostante si concentri su GNU/Linux, Firejail è stato anche portato o adattato a altri sistemi di tipo Unix come alcune varianti di BSD o persino macOS, anche se il suo vero punto di forza è negli ambienti Linux con kernel 3.xo o superiore.

Installazione di Firejail e Firetools su distribuzioni diverse

Firejail e Firetools

Installare Firejail è facile come estrarre il gestore dei pacchetti della tua distribuzioneDi solito non è preinstallato, ma è presente nei repository ufficiali di quasi tutte le distribuzioni moderne.

Sui sistemi basati su Debian e Ubuntu, usa semplicemente APT: sudo apt install firejailNei derivati ​​come Linux Mint, Elementary o simili, il comando è esattamente lo stesso e scaricherà il pacchetto dai repository della distribuzione.

Nella Debian "pura" puoi ricorrere a sudo apt-get install firejailMentre in Arch Linux e derivati ​​come Manjaro, il pacchetto si trova nei repository ufficiali e viene installato con sudo pacman -S firejailIn Gentoo, si trova nell'albero principale come sys-apps/firejail e viene installato utilizzando emerge – chiedi a sys-apps/firejail o la sua variante LTS.

In Fedora puoi scegliere di scaricare il RPM da SourceForge e avviarlo con `sudo rpm -i`, oppure abilitare uno specifico repository Copr (ad esempio, `ssabchew/firejail`) e quindi installarlo con `dnf`. Su openSUSE, è disponibile tramite il classico sistema di installazione con un clic dai repository consigliati per Tumbleweed o Leap.

Se la tua distribuzione non lo offre in formato pacchetto, puoi sempre compilarlo dal codice sorgente: git clone https://github.com/netblue30/firejail.git; cd firejail; ./configure && make && sudo make install-stripÈ un progetto leggero con poche dipendenze, quindi solitamente si compila senza problemi.

Per avere un'interfaccia grafica hai Firetools, che di solito è installato con lo stesso gestore di pacchetti, ad esempio sudo apt install firetoolsQuesto pacchetto aggiunge un piccolo launcher alla barra delle applicazioni e utilità per la gestione grafica delle sandbox.

Come usare Firejail dal terminale

Il modo più diretto per sfruttare Firejail è attraverso la linea di comandiLa loro filosofia è molto chiara: aggiungi la parola firejail al comando che desideri. Niente di più.

Ad esempio, per eseguire Firefox in modalità sandbox dovresti usare firefox firejailper VLC Firejail VLC, per la trasmissione Trasmissione Firejail-gtk o per gedit firejail geditFirejail rileva il programma, controlla se esiste un profilo corrispondente in /etc/firejail e applica le restrizioni definite.

Può essere utilizzato anche con servizi o demoni server, lanciato come radiceUn esempio tipico sarebbe avviare Nginx con `sudo firejail /etc/init.d/nginx start`, o qualsiasi altro servizio che si desidera far funzionare all'interno di una sandbox con la propria rete e un file system limitato.

Se vuoi sapere in un dato momento quali sandbox sono attivi, puoi eseguire firejail –listIl programma mostrerà un elenco con il PID, l'utente e il comando associato a ciascun ambiente isolato, molto simile a un ps filtrato.

Quando si desidera ispezionare le risorse consumate dalle applicazioni in Firejail, è necessario il sottocomando prigione di fuoco –top, che visualizza una tabella con PID, utente, memoria residente, memoria condivisa, CPU utilizzata, processi figlio e tempo di esecuzione, tutti incentrati sulle istanze avviate tramite sandbox.

Per visualizzare la gerarchia completa dei processi all'interno di ogni sandbox, è possibile eseguire prigione di fuoco – alberoche presenta un albero dei processi con l'istanza "genitore" firejail e tutti i processi ad essa collegati. Se un'istanza non risponde, firejail –shutdown=PID Ti consente di chiudere quella specifica sandbox.

Profili Firejail: dove sono e come modificarli

Il vero potenziale di Firejail risiede nel suo profili di configurazioneSi tratta di file di texture che descrivono come ciascuna applicazione dovrebbe essere isolata: quali directory può vedere, quali capacità del kernel può utilizzare, cosa succede alla rete, se sono abilitati server grafici alternativi, ecc.

I profili di sistema sono solitamente memorizzati in /etc/firejail/Se esegui un ls in quella directory vedrai una raccolta di file con estensione .profile, ognuno associato a un programma specifico: firefox.profile, vlc.profile, chromium.profile, steam.profile, server.profile, ecc.

Per personalizzare il comportamento di un profilo standard, è sufficiente aprirlo con il tuo editor preferito, ad esempio con sudo nano /etc/firejail/firefox.profileQui puoi abilitare o disabilitare criteri quali blacklist, whitelist, restrizioni /dev, opzioni di rete, controllo audio o disabilitare l'accelerazione 3D.

Se vuoi sapere quale sintassi supporta il linguaggio di profilazione, Firejail include una pagina man dedicata: uomo 5 firejail-profileDescrive dettagliatamente il significato di ciascun comando (include, blacklist, whitelist, caps.keep, net, x11, ecc.) e come combinarli per ottenere la politica di isolamento desiderata.

Quando si desidera personalizzare un programma senza toccare il profilo globale in /etc, è possibile creare un profilo utente localeSono archiviati in ~/.config/firejail/ e hanno lo stesso nome del profilo ufficiale. Ad esempio, se si desidera che VLC non abbia mai accesso a Internet, è possibile creare ~/.config/firejail/vlc.profile con un contenuto simile a:

  RAID ZFS vs mdadm: confronto completo per server Linux

includere /etc/firejail/vlc.profile
netto nessuno

La prossima volta che corri Firejail VLCVerrà applicato prima il profilo di sistema e poi le impostazioni aggiuntive, imponendo un ulteriore isolamento della rete senza dover modificare il file in /etc.

Whitelist, blacklist e controllo del file system

Uno degli usi più potenti di Firejail è la sua capacità di limitare directory specifiche a cui un'applicazione può accedere. Questo è possibile tramite regole di whitelist e blacklist, sia nei profili globali che in quelli personalizzati.

Se si desidera, ad esempio, impedire a un'applicazione di accedere alla cartella Documenti dell'utente, è possibile aggiungere una riga inserisci nella blacklist ${HOME}/Documenti al profilo. In alternativa, puoi usare il percorso completo come blacklist /home/user/Documents se preferisci non usare variabili.

Al contrario, se si desidera che un programma abbia accesso solo a un sottoinsieme molto specifico della directory HOME, è possibile lavorare con whitelistUna combinazione molto comune è quella di bloccare generalmente l'accesso a /boot, /root o a determinate directory sensibili e, parallelamente, concedere l'autorizzazione a una singola directory di Download oppure una cartella temporanea in cui salverai ciò di cui hai realmente bisogno.

Le regole dell'elenco sono combinate con opzioni come –sola lettura=/etc in modo che una determinata directory sia accessibile, ma solo in modalità lettura, o con –private-home, –private-etc, –private-bin per impostare versioni effimere di tali percorsi all'interno della sandbox.

Nei profili avanzati è anche possibile utilizzare direttive vincolanti come associa origine,destinazione, tipico degli ambienti server, in modo che una directory di sistema reale (ad esempio /server/web1) venga visualizzata all'interno della sandbox come /var/www/html, il tutto sotto un controllo di accesso molto più rigoroso.

Modalità privata e file system temporanei

Se cerchi il massimo isolamento, Firejail offre una modalità particolarmente aggressiva: -privatoUna volta attivata, l'applicazione vede una HOME temporanea montata su tmpfs, con una struttura di directory minima, e tutto ciò che scrive scomparirà quando la sandbox verrà chiusa.

Questa modalità è ideale per controllare l'online banking o eseguire applicazioni particolarmente sensibili senza dover mantenere le solite impostazioni, estensioni, cache, cronologia, ecc. Se si avvia un browser con firejail --private, verrà utilizzata la configurazione predefinita, senza componenti aggiuntivi o personalizzazioni, il che riduce la superficie di attacco.

Puoi anche perfezionare questo comportamento con –private=directoryindicando un'alternativa persistente HOME, o mescolandola con –private-tmp y –cache privata in modo che directory come /tmp o ~/.cache siano temporanee, mentre si conservano altri elementi del profilo "reali".

Un altro meccanismo potente è –overlay-tmpfsCiò crea un file system sovrapposto ed effimero sopra il sistema reale, in modo che tutte le modifiche di scrittura rimangano nel livello temporaneo. Ciò consente, ad esempio, installare un pacchetto all'interno della sandbox e testarlo senza lasciare traccia sul sistema host quando si chiude la sessione Firejail.

In questi scenari, è importante prestare molta attenzione alla combinazione di opzioni, perché se si utilizza –nessun profilo E se non si blocca correttamente /tmp, si potrebbero comunque consentire scritture su parti del sistema che non si intendeva toccare. Una pratica comune è quella di aggiungere direttive come `--blacklist=/tmp` o di lavorare con whitelist molto specifiche per limitare l'area di scrittura.

Controllo di rete: interruzione dell'accesso a Internet, IP separati e limiti di larghezza di banda

Un altro aspetto chiave di Firejail è la gestione della rete. Con un singolo parametro, è possibile consentire a un'applicazione di... completamente offline oppure impostare il proprio stack di rete con IP, firewall e tabella ARP individuali separati dal sistema.

Per disattivare la connettività, è sufficiente utilizzare –net=nessunoAd esempio, in comandi come `firejail --net=none vlc`, `firejail --net=none clementine` o qualsiasi altro programma che si desidera bloccare da Internet. È ideale per lettori multimediali, visualizzatori di immagini, editor di testo o programmi simili che non necessitano di accedere alla rete.

Se vuoi impostare una rete specifica, puoi usare –net=interfacciadove l'interfaccia è solitamente qualcosa come eth0 sulle reti cablate. Puoi anche aggiungere –ip=192.168.1.80 in modo che la sandbox abbia un indirizzo IP interno diverso da quello del computer, molto utile nei contesti server o nei test di rete.

Con opzione –dns=IP È possibile sovrascrivere i server DNS per quella sandbox specifica. Ad esempio, una combinazione molto comune per l'online banking sarebbe `firejail --private --dns=8.8.8.8 --dns=8.8.4.4 google-chrome`, garantendo che le query vengano risolte utilizzando i server DNS specificati.

Firejail ti consente anche limitare la larghezza di banda per sandboxPer prima cosa, crei un'istanza denominata, ad esempio firejail --name=browser --net=eth0 firefox, e poi, da un'altra terminaleSi applicano le regole con `firejail --bandwidth=browser set eth0 80 20` per impostare 80 KB/s in download e 20 KB/s in upload. Per rimuovere il limite, si usa `firejail --bandwidth=browser clear eth0`.

Tieni presente che alcune opzioni di rete (come macvlan) funzionano solo su interfacce cablateNon tramite Wi-Fi. Portátiles Con le reti wireless, sarà necessario adattare di conseguenza la progettazione della sandbox.

  Meta introduce il riconoscimento facciale in Europa per proteggere gli account e combattere le truffe

Server grafici alternativi e protezione contro i keylogger

Oltre all'isolamento della rete e del file system, Firejail include meccanismi per rafforzare il Livello grafico X11Invece di utilizzare la sessione X "normale" dell'utente, è possibile avviare un programma all'interno di server grafici alternativi come Xpra o Xephyr.

Per fare ciò, è necessario prima installare i pacchetti corrispondenti, solitamente con un comando come sudo apt-get install xpra xserver-xephyr sui sistemi basati su Debian/Ubuntu. Una volta presente, Firejail consente di avviare applicazioni utilizzando –x11=nome_server, che crea un ulteriore ambiente grafico isolato.

Ad esempio, potresti eseguire firejail –x11=xephyr –net=none vlc per aprire VLC su un server Xephyr con la rete interrotta, oppure firejail –x11=xpra –net=none vlc per farlo sotto Xpra. Questo aiuta a Proteggiti dai keylogger e dai dispositivi di cattura dello schermo che potrebbe essere in funzione nella sessione X principale.

Quando non si specifica esplicitamente il server grafico, l'opzione –x11 Prova prima Xpra, poi Xephyr e infine l'estensione di sicurezza X11 se le opzioni precedenti non sono disponibili. A seconda della distribuzione e dell'ambiente desktop, alcune combinazioni potrebbero non funzionare perfettamente e potrebbe essere necessario regolare manualmente le impostazioni.

Utilizza Firejail "di default" nelle tue applicazioni

Se lo desideri, puoi far funzionare determinate applicazioni o anche tutte quelle con un profilo. Siempre Con Firejail, senza dover digitare ogni volta la parola "firejail". Per farlo, c'è uno strumento ausiliario. firecfg.

Quando corri sudo firecfgIl programma analizza i binari installati e crea collegamenti simbolici in /usr/local/bin per tutte le applicazioni che hanno un profilo in /etc/firejail. Questi collegamenti puntano a /usr/bin/firejail, in modo che quando l'utente esegue "firefox", Firejail venga effettivamente invocato con il profilo corrispondente.

Se cambi idea e vuoi riavviare i programmi senza sandbox, puoi cancellare quella configurazione con firecfg –pulitooppure eliminare manualmente i collegamenti simbolici da /usr/local/bin. Un'altra alternativa è configurare solo un'applicazione specifica in questo modo, creando manualmente un collegamento simbolico con sudo ln -s /usr/bin/firejail /usr/local/bin/nome_programma.

Negli ambienti grafici è anche possibile modificare il file .desktop Nei launcher del desktop, aggiungi `firejail` alla riga di comando. Ad esempio, in un file `firefox.desktop` personalizzato, imposta la riga `Exec` su `Exec=firejail firefox`. In questo modo, ogni clic sull'icona avvierà il programma già incapsulato.

Installando Firetools, otterrai anche un piccolo gestore sandbox grafico che mostra le applicazioni con i profili disponibili. Da lì, puoi avviarle, vedere cosa è in esecuzione, controllare il consumo di risorse o modificare alcuni parametri senza usare il terminale.

Gestione avanzata: accesso a sandbox, debug e AppArmor/SELinux

Può essere molto utile per attività amministrative avanzate entrare “dentro” una sandboxFirejail lo consente con l'opzione –join, che collega una nuova shell allo spazio dei nomi di un processo esistente.

La procedura tipica sarebbe quella di eseguire firejail –list Per visualizzare i PID delle istanze, individuare il numero del processo principale della sandbox (ad esempio, 5394) e quindi eseguire sudo firejail –join=5394Firejail salterà al primo processo figlio all'interno della sandbox e ti lascerà in una shell come root all'interno di quell'ambiente isolato.

Una volta lì, puoi usare comandi come df -h, indirizzo ip, ps aux o qualsiasi strumento diagnostico per vedere esattamente cosa vede l'applicazione dall'interno della sandbox. Al termine, è sufficiente eseguire `exit` per uscire e tornare all'ambiente normale.

Per rilevare problemi di configurazione o capire cosa sta bloccando un'applicazione, hai le seguenti opzioni –debug y -tracciaMostrano informazioni di debug e chiamate di sistema durante l'esecuzione del comando. Sono particolarmente utili quando un profilo eccessivamente aggressivo impedisce il funzionamento del programma. Boot o funzionare normalmente.

Firejail si integra bene con AppArmor e SELinuxNelle distribuzioni che abilitano AppArmor di default, molti profili Firejail sono progettati per coesistere con i profili AppArmor, aggiungendo un ulteriore livello di isolamento senza violare le policy esistenti. Esempi di regole specifiche per rafforzare ulteriormente servizi come server web, SSH o applicazioni desktop critiche sono disponibili su GitHub e nella documentazione ufficiale.

Se si intende utilizzare Firejail su server multiutente, è consigliabile rivedere la configurazione in /etc/firejail/firejail.config, abilitare opzioni come force-nonewprivs e limitare gli utenti che possono eseguire /usr/bin/firejail modificando il loro gruppo e i loro permessi (ad esempio, creando un gruppo "firejail" e limitando SUID ai suoi membri).

Firejail offre un Un equilibrio molto interessante tra sicurezza e comfort.Non sostituisce la virtualizzazione completa, ma per molte attività quotidiane, rapidi test software o l'isolamento di browser, AppImage, Wine e giochi, offre una protezione straordinaria con una complessità molto ridotta. Una conoscenza approfondita dei suoi profili, delle opzioni di rete, delle modalità private e delle integrazioni con AppArmor/SELinux consente di personalizzarlo a proprio piacimento e di rafforzare davvero il desktop Linux senza sacrificare l'usabilità.