Como usar o Firejail no Linux para isolar e proteger aplicativos

Última atualização: 13/01/2026
autor: Isaac
  • O Firejail cria ambientes isolados leves usando namespaces, seccomp-bpf e controle de capacidade do kernel. Linux.
  • Possui perfis predefinidos, listas brancas/listas negras e modos privados para limitar o acesso ao sistema de arquivos e à rede.
  • Ele permite isolar navegadores, AppImages, servidores e jogos com controle independente de largura de banda, DNS e IP.
  • Ele se integra ao AppArmor e ao SELinux, pode ser ativado por padrão com o firecfg e adiciona uma sobrecarga mínima ao sistema.

Guia para usar o Firejail no Linux

Se você usa GNU/Linux diariamente e está preocupado com segurança, privacidade e programas não confiáveisCedo ou tarde, você vai se deparar com o Firejail. Este pequeno utilitário tem sido, há anos, uma das maneiras mais fáceis de isolar aplicações em um ambiente privado, sem precisar configurar uma máquina virtual ou se perder em configurações intermináveis.

A ideia é simples: Você executa seu programa "inserido" dentro do Firejail. A partir daí, esse processo visualiza um sistema de arquivos, uma rede, usuários e dispositivos muito mais limitados do que os reais. Dessa forma, um PDF Algo suspeito, um navegador cheio de extensões ou um jogo estranho do itch.io têm muito menos espaço para causar estragos no sistema.

O que é Firejail e como funciona internamente?

Firejail é um Programa em C, do tipo SUID e licenciado sob GPLv2.Ele funciona como uma sandbox para processos no GNU/Linux. Sua função é minimizar o impacto de um aplicativo comprometido, criando um ambiente de execução com privilégios restritos, onde cada processo tem sua própria "visão isolada" do sistema.

Em termos técnicos, depende de vários recursos de segurança do kernel do LinuxNamespaces, filtros de chamadas de sistema com seccomp-bpf, controle de capacidade e isolamento do sistema de arquivos. Graças a isso, o processo em execução dentro do sandbox possui sua própria tabela de processos, pilha de rede, tabela de montagem e, em geral, um conjunto de recursos virtualizados.

Um dos seus grandes trunfos é que Possui pouquíssimas dependências e sua sobrecarga é mínima.Ele não inicia daemons em segundo plano, não abre sockets para gerenciamento nem requer serviços adicionais. Ele simplesmente inicia quando invocado e consome recursos enquanto mantém o sandbox ativo.

Além disso, Firejail vem com perfis de segurança predefinidos para centenas de programas Área de trabalho e serviços: navegadores como Firefox e Chromium, reprodutores de mídia como VLC, clientes BitTorrent como Transmission, clientes de e-mail, jogos (incluindo Steam), ferramentas de bate-papo, servidores como Apache ou Nginx, clientes SSH, Vinhosetc. Se não houver um perfil específico para um programa, um perfil genérico será aplicado.

Principais mecanismos de segurança utilizados pelo Firejail

Para realmente entender o que o Firejail faz, é útil revisar o mecanismos do kernel que ele aproveitaVocê não precisa ser um hacker de kernel, mas precisa de algum contexto para saber o que está reforçando ao mexer nas suas opções.

Namespaces Linux Eles permitem que um grupo de processos compartilhe seu próprio "espaço de nomes": identificadores de processo (PIDs), nomes de host, usuários, pontos de montagem, rede, etc. O Firejail cria esses espaços de nomes para que o programa em sandbox veja apenas os recursos que correspondem a ele dentro desse ambiente encapsulado.

A partir da ramificação 2.6 do kernel, e especialmente a partir da versão 3.x, diferentes tipos de namespaces (PID, UTS, mount, user, network, IPC, etc.) foram adicionados. O Firejail depende deles para... O processo possui sua própria rede, sua própria árvore de processos e seu próprio sistema de arquivos., tudo separado do resto do sistema.

Além de namespaces, o Firejail implementa políticas de controle de acesso em nível de sistema de arquivos Baseado em listas brancas e listas negras. Isso permite definir diretórios que o aplicativo pode acessar, outros que ele pode apenas ler e outros que são completamente bloqueados, tanto no diretório raiz quanto no diretório pessoal do usuário.

Em paralelo, entra em jogo o seguinte secomp-bpfUm filtro de chamadas de sistema é associado ao processo e seus descendentes. Usando uma linguagem de filtragem baseada no Berkeley Packet Filter (BPF), o Firejail restringe quais chamadas de sistema o aplicativo pode executar. Se ele tentar fazer algo que a política não permite, a chamada é bloqueada ou o processo é encerrado, reduzindo significativamente a superfície de ataque.

O Firejail também se integra bem com AppArmor e SELinuxEssas soluções MAC O Controle de Acesso Obrigatório (Mandatory Access Control - MAC) define quais recursos um aplicativo pode usar, enquanto o Firejail adiciona uma camada extra de isolamento: mesmo que dois aplicativos tenham permissão para acessar o mesmo recurso de acordo com o AppArmor, com o Firejail você pode impedir que eles interajam entre si, pois cada um reside em seu próprio ambiente isolado (sandbox).

Vantagens práticas do uso do Firejail

Para o usuário comum, o que importa não é tanto a teoria, mas sim o que se consegue alcançar no uso diário: Mais segurança sem alterar a forma como você trabalha. radicalmente. Firejail se concentra precisamente nisso.

Por um lado, existe o isolamento de aplicações potencialmente perigosasUm PDF suspeito, um documento do Office enviado por e-mail, um site duvidoso ou um arquivo AppImage baixado de origem desconhecida, todos esses arquivos são executados em um ambiente que limita o acesso ao sistema.

  Como desativar pessoas próximas no Telegram e evitar o rastreamento de proximidade

Por outro lado, oferece restrição de recursos muito granularVocê pode limitar a rede (desconectar completamente da internet, atribuir um endereço IP exclusivo, restringir a largura de banda), reduzir o acesso ao sistema de arquivos (listas brancas e negras), remover dispositivos de /dev, controlar o servidor de som ou até mesmo alterar os servidores DNS com os quais o aplicativo se comunica.

Um ponto muito interessante é que o uso básico é Ridiculamente simples: nome_do_programa_firejailVocê não precisa editar arquivos de configuração para começar; os perfis predefinidos abrangem a maioria dos usos comuns. Somente se você quiser algo mais complexo, deve começar a ajustar perfis personalizados.

Apesar de ter como foco o GNU/Linux, o Firejail também foi portado ou adaptado para outras plataformas. outros sistemas de tipo Unix como algumas variantes do BSD ou até mesmo o macOS, embora seu verdadeiro potencial se mostre em ambientes Linux com kernel 3.xo ou superior.

Instalando o Firejail e o Firetools em diferentes distribuições.

Prisão de fogo e ferramentas de incêndio

Instalar o Firejail é tão fácil quanto puxar o... gerenciador de pacotes da sua distribuiçãoGeralmente não vem pré-instalado, mas está presente nos repositórios oficiais de quase todas as distribuições modernas.

Em sistemas baseados em Debian e Ubuntu, basta usar o APT: sudo apt install firejailEm distribuições derivadas como Linux Mint, Elementary ou similares, o comando é exatamente o mesmo e fará o download do pacote dos repositórios da distribuição.

Em um Debian "puro", você pode recorrer a sudo apt-get install firejailEnquanto no Arch Linux e derivados como o Manjaro, o pacote está nos repositórios oficiais e é instalado com sudo pacman -S firejailNo Gentoo, ele está localizado na árvore principal como sys-apps/firejail e é instalado usando emerge –ask sys-apps/firejail ou sua variante LTS.

No Fedora, você pode optar por baixar o RPM do SourceForge e execute-o com `sudo rpm -i`, ou habilite um repositório Copr específico (por exemplo, `ssabchew/firejail`) e instale-o com `dnf`. No openSUSE, ele está disponível através do sistema clássico de Instalação com um clique dos repositórios recomendados para Tumbleweed ou Leap.

Se a sua distribuição não o oferecer empacotado, você sempre pode compilá-lo a partir do código-fonte: git clone https://github.com/netblue30/firejail.git; cd firejail; ./configure && make && sudo make install-stripÉ um projeto leve com poucas dependências, por isso geralmente compila sem problemas.

Para ter uma interface gráfica, você precisa do Firetools, que geralmente é instalado com o mesmo gerenciador de pacotes, por exemplo. sudo apt install firetoolsEste pacote adiciona um pequeno iniciador à bandeja do sistema e utilitários para gerenciar sandboxes graficamente.

Como usar o Firejail a partir do terminal

A maneira mais direta de aproveitar o Firejail é através da linha de comandosA filosofia deles é muito clara: Adicione a palavra firejail ao comando desejado.. Nada mais.

Por exemplo, para executar o Firefox em sandbox, você usaria FireJail firefoxpara VLC Firejail VLC, para transmissão Transmissão Firejail-gtk ou para gedit firejail geditO Firejail detecta o programa, verifica se existe um perfil correspondente em /etc/firejail e aplica as restrições definidas.

Também pode ser usado com serviços ou demônios servidor, lançado como raizUm exemplo típico seria iniciar o Nginx com `sudo firejail /etc/init.d/nginx start`, ou qualquer outro serviço que você queira executar em um ambiente isolado (sandbox) com sua própria rede e sistema de arquivos limitado.

Se você quiser saber quais sandboxes estão ativas em um determinado momento, pode executar o seguinte comando: lista de prisão de fogoO programa exibirá uma lista com o PID, o usuário e o comando associado a cada ambiente isolado, de forma muito semelhante a um comando ps filtrado.

Quando você deseja inspecionar os recursos consumidos por aplicativos no Firejail, você tem o subcomando prisão de fogo –topo, que exibe uma tabela com PID, usuário, memória residente, memória compartilhada, CPU utilizada, processos filhos e tempo de execução, tudo focado em instâncias iniciadas através do sandbox.

Para visualizar a hierarquia completa de processos em cada sandbox, você pode executar o seguinte comando: prisão de fogo – árvoreque apresenta uma árvore de processos com a instância "pai" firejail e todos os processos dependentes dela. Se alguma instância deixar de responder, firejail –desligamento=PID Isso permite que você desative esse sandbox específico.

Perfis do Firejail: onde encontrá-los e como modificá-los

O verdadeiro potencial de Firejail reside em sua perfis de configuraçãoEsses são arquivos de textura que descrevem como cada aplicativo deve ser isolado: quais diretórios ele pode acessar, quais recursos do kernel ele pode usar, o que acontece com a rede, se servidores gráficos alternativos estão habilitados, etc.

Os perfis do sistema geralmente são armazenados em /etc/firejail/Se você executar o comando "ls" nesse diretório, verá uma coleção de arquivos com a extensão ".profile", cada um associado a um programa específico: firefox.profile, vlc.profile, chromium.profile, steam.profile, server.profile, etc.

Para personalizar o comportamento de um perfil padrão, basta abri-lo com seu editor favorito, por exemplo, com sudo nano /etc/firejail/firefox.profileAli você pode ativar ou desativar políticas como lista negra, lista branca, restrições /dev, opções de rede, controle de som ou desativar a aceleração 3D.

Se você quiser saber qual sintaxe a linguagem de criação de perfis suporta, o Firejail inclui uma página de manual dedicada: homem 5 perfil da prisão de fogoEle detalha o significado de cada comando (include, blacklist, whitelist, caps.keep, net, x11, etc.) e como combiná-los para alcançar a política de isolamento desejada.

Quando você deseja personalizar um programa sem alterar o perfil global em /etc, você pode criar um perfil de usuário localEles são armazenados em ~/.config/firejail/ e têm o mesmo nome do perfil oficial. Por exemplo, se você quiser que o VLC nunca tenha acesso à internet, você pode criar um arquivo ~/.config/firejail/vlc.profile com um conteúdo semelhante a este:

  RAID ZFS vs mdadm: comparação completa para servidores Linux

incluir /etc/firejail/vlc.profile
nenhum

Na próxima vez que você correr Firejail VLCO perfil do sistema será aplicado primeiro e, em seguida, suas configurações adicionais, reforçando o isolamento de rede sem a necessidade de alterar o arquivo em /etc.

Listas brancas, listas negras e controle do sistema de arquivos

Um dos usos mais poderosos do Firejail é sua capacidade de limitar diretórios específicos que um aplicativo pode acessar. Isso é feito com regras de lista branca e lista negra, tanto em perfis globais quanto personalizados.

Se você quiser, por exemplo, impedir que um aplicativo acesse a pasta Documentos do usuário, você pode adicionar uma linha lista negra ${HOME}/Documentos para o perfil. Alternativamente, você pode usar o caminho completo, como blacklist /home/user/Documents, se preferir não usar variáveis.

Por outro lado, se você quiser que um programa tenha acesso apenas a um subconjunto muito específico do diretório HOME, você pode trabalhar com whitelistUma combinação muito comum é bloquear o acesso a /boot, /root ou a certos diretórios sensíveis e, em paralelo, conceder permissão a um único diretório de Download ou uma pasta temporária onde você salvará apenas o que precisa.

As regras de lista são combinadas com opções como –somente leitura=/etc de forma que um determinado diretório seja acessível, mas apenas em modo de leitura, ou com –private-home, –private-etc, –private-bin Para configurar versões efêmeras dessas rotas dentro do ambiente de testes.

Em perfis avançados, você pode até usar diretivas de vinculação, como: vincular origem, destino, típico em ambientes de servidor, de forma que um diretório de sistema real (por exemplo, /server/web1) seja visto dentro do sandbox como /var/www/html, tudo sob um controle de acesso muito mais rigoroso.

Modo privado e sistemas de arquivos temporários

Quando você busca o máximo isolamento, o Firejail oferece um modo particularmente agressivo: -privadoQuando ativado, o aplicativo vê um diretório HOME temporário montado no tmpfs, com uma estrutura de diretórios mínima, e tudo o que for gravado desaparecerá quando o ambiente isolado for fechado.

Este modo é ideal para verificar o internet banking ou executar aplicativos particularmente sensíveis sem transferir as configurações, extensões, caches, histórico, etc. habituais. Se você iniciar um navegador com `firejail --private`, ele usará sua configuração padrão, sem complementos ou personalizações, o que reduz a superfície de ataque.

Você também pode refinar esse comportamento com –privado=diretórioindicando uma alternativa persistente para CASA, ou misturando-a com –privado-tmp y –cache-privado para que diretórios como /tmp ou ~/.cache sejam temporários, enquanto você mantém outros elementos de perfil "reais".

Outro mecanismo poderoso é –overlay-tmpfsIsso cria um sistema de arquivos sobreposto e efêmero sobre o sistema real, de modo que todas as alterações de gravação permaneçam na camada temporária. Isso permite, por exemplo, Instale um pacote dentro do ambiente de teste (sandbox) e teste-o. sem deixar rastros no sistema host ao fechar a sessão do Firejail.

Nesses cenários, é importante ter muito cuidado com a combinação de opções, porque se você usar –sem perfil E se você não bloquear corretamente o diretório /tmp, ainda poderá permitir gravações em partes do sistema que não pretendia acessar. Uma prática comum é adicionar diretivas como `--blacklist=/tmp` ou trabalhar com listas brancas muito específicas para limitar a área de escrita.

Controle de rede: corte de acesso à internet, IPs separados e limites de largura de banda.

Outro aspecto fundamental do Firejail é o gerenciamento de rede. Com um único parâmetro, você pode permitir que um aplicativo... completamente offline ou configurar sua própria pilha de rede com IP, firewall e tabela ARP individuais, separados do sistema.

Para desativar a conectividade, basta usar –net=nenhumPor exemplo, em comandos como `firejail --net=none vlc`, `firejail --net=none clementine` ou qualquer outro programa que você queira bloquear o acesso à internet. É ideal para reprodutores de mídia, visualizadores de imagens, editores de texto ou programas similares que não precisam acessar a rede.

Se você quiser configurar uma rede específica, pode usar –net=interfaceonde a interface geralmente é algo como eth0 em redes com fio. Você pode até adicionar –ip=192.168.1.80 para que o ambiente de teste (sandbox) tenha um endereço IP interno diferente do computador, o que é muito útil em contextos de servidor ou testes de rede.

Com a opção –dns=IP Você pode sobrescrever os servidores DNS para esse ambiente de teste específico. Por exemplo, uma combinação muito comum para serviços bancários online seria algo como `firejail --private --dns=8.8.8.8 --dns=8.8.4.4 google-chrome`, garantindo que essas consultas sejam resolvidas usando os servidores DNS que você especificar.

O Firejail também permite que você Limitar a largura de banda por sandboxPrimeiro, você cria uma instância nomeada, por exemplo, `firejail --name=browser --net=eth0 firefox`, e então, a partir de outra instância, você cria uma instância nomeada. terminalVocê aplica regras com `firejail --bandwidth=browser set eth0 80 20` para definir a velocidade de download para 80 KB/s e a de upload para 20 KB/s. Para remover o limite, você usaria `firejail --bandwidth=browser clear eth0`.

Lembre-se de que certas opções de rede (como macvlan) só funcionam em interfaces com fioNão está conectado ao Wi-Fi. laptops Com redes sem fio, você precisará ajustar o design do seu ambiente de testes de acordo.

  Meta introduz reconhecimento facial na Europa para proteger contas e combater golpes

Servidores gráficos alternativos e proteção contra keyloggers

Além do isolamento de rede e sistema de arquivos, o Firejail inclui mecanismos para reforçar a segurança da rede. Camada gráfica X11Em vez de usar a sessão X "normal" do usuário, você pode executar um programa em servidores gráficos alternativos, como o Xpra ou o Xephyr.

Para fazer isso, você deve primeiro instalar os pacotes correspondentes, geralmente com um comando como sudo apt-get install xpra xserver-xephyr em sistemas baseados em Debian/Ubuntu. Uma vez instalado, o Firejail permite executar aplicativos usando –x11=nome_do_servidor, que cria um ambiente gráfico isolado adicional.

Por exemplo, você poderia executar firejail –x11=xephyr –net=none vlc para abrir o VLC em um servidor Xephyr com a rede interrompida, ou firejail –x11=xpra –net=nenhum vlc para fazer isso no Xpra. Isso ajuda a Proteja-se contra keyloggers e dispositivos de captura de tela. que pode estar em operação na sessão principal do X.

Quando você não especifica explicitamente o servidor gráfico, a opção –x11 Experimente primeiro o Xpra, depois o Xephyr e, por último, a extensão de segurança X11, caso as opções anteriores não estejam disponíveis. Dependendo da sua distribuição e ambiente de desktop, algumas combinações podem não funcionar perfeitamente, sendo necessário ajustar as configurações manualmente.

Use o Firejail "por padrão" em seus aplicativos.

Se desejar, você pode executar determinados aplicativos, ou até mesmo todos aqueles que possuem um perfil. sempre No Firejail, sem precisar digitar a palavra "firejail" toda vez. Para isso, existe uma ferramenta auxiliar. firecfg.

Ao correr sudo firecfgO programa examina os binários instalados e cria links simbólicos em /usr/local/bin para todos os aplicativos que possuem um perfil em /etc/firejail. Esses links apontam para /usr/bin/firejail, de modo que, quando o usuário executa “firefox”, o Firejail é invocado com o perfil correspondente.

Se você mudar de ideia e quiser reiniciar os programas sem o sandbox, poderá limpar essa configuração com firecfg –limpoOu exclua manualmente os links simbólicos de /usr/local/bin. Outra alternativa é configurar apenas um aplicativo específico dessa forma, criando manualmente um link simbólico com sudo ln -s /usr/bin/firejail /usr/local/bin/program_name.

Em ambientes gráficos, você também pode editar o Arquivos .desktop Nos seus atalhos de teclado, adicione `firejail` à linha de comando. Por exemplo, em um arquivo `firefox.desktop` personalizado, defina a linha `Exec` como `Exec=firejail firefox`. Dessa forma, cada clique no ícone iniciará o programa já encapsulado.

Ao instalar o Firetools, você também terá acesso a um pequeno gerenciador gráfico de sandbox que exibe os aplicativos com os perfis disponíveis. A partir daí, você pode iniciá-los, ver o que está em execução, verificar o consumo de recursos ou ajustar alguns parâmetros sem usar o terminal.

Gerenciamento avançado: entrada em um ambiente isolado (sandbox), depuração e AppArmor/SELinux.

Pode ser muito útil para tarefas administrativas avançadas. entrar “dentro” de uma caixa de areiaO Firejail permite isso com a opção --join, que conecta um novo shell ao namespace de um processo existente.

O procedimento típico seria executar lista de prisão de fogo Para visualizar os PIDs das instâncias, localize o número do processo principal do sandbox (por exemplo, 5394) e então faça sudo firejail –join=5394O Firejail irá saltar para o primeiro processo filho dentro do sandbox e deixar você em um shell como root dentro desse ambiente isolado.

Uma vez lá, você pode usar comandos como df -h, endereço IP, ps aux ou qualquer ferramenta de diagnóstico para ver exatamente o que o aplicativo vê de dentro do ambiente de teste. Quando terminar, basta executar `exit` para sair e retornar ao ambiente normal.

Para detectar problemas de configuração ou entender o que está bloqueando um aplicativo, você tem as seguintes opções. -depurar y –traçarEssas informações mostram detalhes de depuração e chamadas de sistema durante a execução do comando. Elas são especialmente úteis quando um perfil excessivamente agressivo impede o funcionamento do programa. Bota ou funcionar normalmente.

Firejail complementa bem com AppArmor e SELinuxEm distribuições que habilitam o AppArmor por padrão, muitos perfis do Firejail são projetados para coexistir com perfis do AppArmor, adicionando uma camada extra de isolamento sem violar as políticas existentes. Exemplos de regras específicas para fortalecer ainda mais serviços como servidores web, SSH ou aplicativos de desktop críticos estão disponíveis no GitHub e na documentação oficial.

Se você pretende usar o Firejail em servidores multiusuário, é recomendável revisar a configuração em /etc/firejail/firejail.config, habilite opções como force-nonewprivs e limite quais usuários podem executar /usr/bin/firejail ajustando seus grupos e permissões (por exemplo, criando um grupo "firejail" e restringindo o SUID aos seus membros).

Firejail oferece um Um equilíbrio muito interessante entre segurança e conforto.Não substitui a virtualização completa, mas para muitas tarefas do dia a dia, testes rápidos de software ou isolamento de navegadores, AppImages, Wine e jogos, oferece uma proteção notável com baixíssima complexidade. Um conhecimento profundo de seus perfis, opções de rede, modos privados e integrações com AppArmor/SELinux permite personalizá-lo ao seu gosto e realmente fortalecer sua área de trabalho Linux sem sacrificar a usabilidade.