Firejail - O que é e como usar

O que é?
O Firejail é um software para Linux que isola algum programa dentro de uma “sandbox”, na prática se o programa isolado tentar fazer alguma alteração não permitida, não conseguirá. Isso oferece maior segurança.


Como usar? (Debian/Devuan)

1º- Instale o software:

# apt install firejail firejail-profiles --no-install-recommends

2º Escolha qual software você quer enjaular. (No caso escolhi o Firefox para a demonstração)


Saiba do poder do Firejail:

O Firejail pode:

Separar o software enjaulado das pastas do sistema.

Se o software for, por exemplo, um ransomware, ele não conseguirá modificar o sistema de arquivos do sistema.

Separar a rede do resto do sistema.

Em outras palavras, colocar um IP diferente para o software enjaulado.

Escolher um DNS para o software enjaulado.

Definir um DNS específico para ser utilizado com o software enjaulado.

Subir um Xorg separado para o software enjaulado.

Isso pode previnir certos problemas de segurança, como captura de tela, e keyloggers de teclado.

Entre outras coisas


Integração com o Apparmor:
O que é o Apparmor?

O Apparmor é um software de controle de acesso de pastas, que define se um determinado software pode ou não acessar determinado arquivo, o uso so Apparmor+Firejail aprimora a segurança do sistema.


Como configurar o Apparmor+Firejail?

Felizmente, as versões mais novas do Ubuntu e do Debian/Devuan já vem com o Apparmor instalado e configurado por padrão e o profile do Firejail está no pacote “firejail-profiles”, então não é necessário configurar a integração entre Firejail e Apparmor.

Como garantir que está funcionando + o que fazer se não estiver

Mas para garantir que o Firejail está rodando sob o Apparmor, rode (como root):

# aa-status (com o firejail rodando)

E veja se o Firejail está como “enforce”.

Se não estiver, o comando para a integração é (como root):
# apparmor_parser -r /etc/apparmor.d/firejail-default


Usando o Firejail:

Mudar configuração de rede

Em algumas distros é necessário habilitar a configuração de rede pelo usuário normal. Neste caso, basta digitar:
`# nano /etc/firejail/firejail.config (você pode mudar o nano pelo seu editor de texto favorito"

E mudar “restricted-network” de “yes” para “no”.
Exemplo:


Rodar o Firefox no Firejail:

$ firejail --dns=94.140.14.14 --net=eth0 --private --x11=xephyr firefox

Explicando o comando:
"--dns=94.140.14.14"

É a variável que define o DNS a ser usado pelo software enjaulado, no caso escolhi o Adguard DNS.

"--net=eth0"

É a variável que define qual a rede deve ser utilizada e também é o comando que separa a rede do software enjaulada do resto do sistema. Por padrão, ele escolhe aleatóriamente algum IP que não esteja sendo utilizado no momento, mas você pode decidir por um IP com: --ip=ip_desejado.

Rede "eth0" não encontrada, e agora?

Se o sistema não encontrar “eth0” significa que a conexão com a internet está vindo de outro lugar (eth0 geralmente é conexão via cabo). Nesse caso, basta dar:
$ ip link show.
e substituir “eth0” pela rede apresentada (que não seja “lo”).
Exemplo:


No caso, a rede é “eth0”

"--private"

É o comando que define que o software enjaulado rode com o sistema de aquivos totalmente separado do resto do sistema operacional. Por padrão, o Firejail libera acesso apenas às pastas “Desktop” e “Downloads” na /home.

"--x11=xephyr"

É a variável que define que o software enjaulado rode dentro de um servidor X separado do resto do sistema. O Xephyr é o software que vai rodar um servidor X dentro de outro servidor X. Você também pode usar o Xpra, mas eu não obtive muito sucesso com ele.

"firefox"

é o software que queremos enjaular.


O caso do Firefox+chroot.

O Firefox, específicamente, é um dos softwares mais usados no Firejail e, consequentemente, é um dos softwares que mais tem a atenção dos desenvolvedores. Portanto, as regras do enjaulamento para o Firefox eram muitas e bem específicas para garantir melhor segurança.

Porém foi constado que isso era de um certo modo inferior à outra solução que poderia estar sendo usada: rodar o Firefox em um chroot, um sistema ejaulado “de verdade”.

E a partir de novas versões do Firejail, o Firefox passa a rodar em um chroot. Tal versão pode ser encontrada no Debian testing, por exemplo.


Como eu costumo usar o Firefox:

$ firejail --net=eth0 --dns=94.140.14.14 firefox
O resto eu já acho um pouco de exajero.


Qualquer dúvida/comentário é só postar :+1:.


[EDIT 1] Post editado adicionando informações e corrigindo alguns erros.

18 curtidas

Preciso configurar esse profile do firejail em uma distro que não vem com AppArmor já instalado. Até agora não consegui achar quase nenhum profile online.

Já pensei em instalar uma flavour do Ubuntu ou Debian pra copiar o arquivo e adaptar para a minha instalação. Mas daria mais trabalho.

Se algum usuário de Debian ou qualquer outra distro que tiver o perfil, ou alguém que tenha feito à mão mesmo, tiver como mandar, eu ficaria muito agradecido.

Muito bom, parabéns pelo conteúdo!