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 .
[EDIT 1] Post editado adicionando informações e corrigindo alguns erros.