Introduzione
Firejail è un programma sandbox SUID di sicurezza che riduce il rischio di falle nella sicurezza restringendo l'ambiente di esecuzione di applicazioni non fidate, usando namespace Linux e seccomp-bpf. Permette ad un processo e tutti i suoi discendenti di avere la propria vista privata delle risorse del kernel globalmente condivise, come lo stack di rete, la tabella dei processi e la tabella dei montaggi.
Installazione
Installare i pacchetti firejail e firejail-profiles.
Esiste anche un frontend basato su Qt che si chiama firetools ma non lo tratteremo in questa pagina poichè nonostante il suo uso sia molto semplice e intuitivo, non consente di sfruttare le molteplici possibilità che si hanno agendo da riga di comando grazie a tutte le opzioni disponibili.
Funzionamento
Verranno fatti alcuni esempio usando le applicazioni Firefox e Telegram Desktop che sono di uso molto comune.
Per avviare un programma in sandbox digitare nel terminale:
firejail <nome_programma>
per esempio
firejail firefox firejail telegram-desktop
Per avviare un programma in modalità modalità privata che prevede che il programma non legga nessun file nella propria Home comprese le sue configurazioni già salvate digitare nel terminale:
firejail --private <nome_programma>
ad esempio
firejail --private firefox
Per avviare una appimage in sandbox digitare nel terminale:
firejail --appimage <nome_programma>
Per vedere quali programmi stanno usando firejail digitare nel terminale:
firejail --list
riceveremo una risposta simile a questa
1734:carlo::/usr/bin/firejail /usr/bin/firefox 2456:carlo::/usr/bin/firejail /usr/bin/liferea 2531:carlo::/usr/bin/firejail /usr/bin/telegram-desktop -
in alternativa
firejail --top
o per un output più completo
firejail --tree
Per elencare i link simbolici creati a firejail digitare nel terminale:
firecfg --list
riceveremo una risposta simile a questa
/usr/local/bin/thunderbird /usr/local/bin/keepassxc /usr/local/bin/firefox /usr/local/bin/liferea /usr/local/bin/hexchat /usr/local/bin/google-chrome-stable /usr/local/bin/telegram-desktop
Per eliminare tutti i link simbolici creati a firejail digitare nel terminale:
sudo firecfg --clean
Per rimuovere solo un determinato link simbolico digitare nel terminale:
sudo rm /usr/local/bin/nome_programma
Per uccidere/killare un processo in sandbox digitare nel terminale:
firejail --shutdown=PID
Per ottenere un elenco completo delle opzioni disponibili da firejail leggere i relativi man digitando nel terminale:
man firejail man firecfg
Integrazione Desktop
Ovvero, creare delle impostazioni che facciano in modo che avviando un programma normalmente dal Menù esso venga avviato in sandbox.
A tale proposito ci sono 2 modi per farlo:
Generalizzato
Attenzione: questa modalità è altamente sconsigliata in quanto imposta configurazioni estremamente restrittive che rendono molto più difficoltoso l'uso di determinati programmi.
Ovvero creare configurazioni per tutti i programmi installati in modo che vengano avviati tutti in sandbox digitando nel terminale:
sudo firecfg
oppure
Selettivo
Modalità consigliata
Ovvero creare configurazioni che rendano solo determinati programmi in sandbox se avviati dal normale Menù, questo si ottiene creando dei link simbolici digitando nel terminale:
sudo ln -s /usr/bin/firejail /usr/local/bin/nome_programma
per esempio
sudo ln -s /usr/bin/firejail /usr/local/bin/firefox sudo ln -s /usr/bin/firejail /usr/local/bin/telegram-desktop
Profili personalizzati
Anche qui abbiamo 2 modi per farlo.
File profile
Creare la cartella ~/.config/firejail.
Copiare i file *.profile che desideriamo modificare dalla cartella /etc/firejail/ a quella appena creata.
Per esempio:
cp /etc/firejail/firefox.profile ~/.config/firejail cp /etc/firejail/telegram.profile ~/.config/firejail
Aprire con un editor di testo i file *.profile appena copiati e aggiungere le impostazioni desiderate.
File local
Modalità consigliata
Creare la cartella ~/.config/firejail.
Creare i file *.local di cui ci interessa aggiungere parametri nella cartella che è stata appena creata.
Per esempio:
touch ~/.config/firejail/firefox.local touch ~/.config/firejail/telegram.local
Aprire con un editor di testo i file *.local e aggiungere le impostazioni desiderate.
Per esempio se vogliamo che firefox possa accedere anche a eventuali partizioni montate nel sistema o altri dispositivi, scrivere nel file firefox.local le seguenti righe:
whitelist /media ignore disable-mnt
Oppure se usiamo come ambiente grafico Xfce scrivere nel file telegram.local le seguenti righe:
ignore dbus-user.talk org.kde.StatusNotifierWatcher ignore dbus-user.talk org.gnome.Mutter.IdleMonitor
Priorità dei file
Le impostazioni scritte nei file *.profile che sono nella Home hanno priorità superiore rispetto a quelle scritte nei file *.profile in /etc/firejail.
Le impostazioni scritte nei file *.local hanno priorità superiore a quelle scritte nei file *.profile.