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.

12 curtidas