A limitação da largura de banda dos programas que rodam no Linux pode ser usada para diversos objetivos. Entre eles, para tornar eficiente o uso da largura de banda total disponível. Assim, limitar a largura de banda de alguns programas, como o navegador web por exemplo, garante um uso mais eficiente e um compartilhamento mais justo da largura de banda total. Portanto, limitar a largura de banda usada pelos programas no Linux, pode ser uma boa opção quando você deseja priorizar alguns serviços concomitantes do seu sistema Linux.
Essa técnica apresentada é útil, e mais eficaz, para ambientes domésticos ou com nenhuma exigência de garantia de priorização de tráfego. Pois, existem ferramentas mais avançadas e complexas para tal fim. Portanto, caso esteja trabalhando em ambientes servidores de produção, o firejail não é a melhor ferramenta para este fim.
Firejail
O Firejail é uma ferramenta extremamente leve usada para isolar uma ou diversas aplicações do resto do sistema (“sandbox”). Baseada em namespaces e seccomp-bpf – funcionalidades do Kernel Linux que isola e virtualiza recursos do sistema. Assim, as aplicações que rodarem sob o Firejail estarão, efetivamente, com permissão e recursos do sistema limitados (conforme configuração do serviço). Tudo isso, para minimizar o risco de segurança.
Escrito na linguagem C, o software roda em qualquer sistema Linux de versão do kernel igual ou superior a 3.x. O Firejail é capaz de isolar (sandboxing), praticamente, qualquer tipo de processo: serviços de redes, aplicações gráficas e, até mesmo, sessões de login do usuário. Além disso, o software inclui perfis sandbox para uma série de programas mais comuns do Linux, bem como: Mozilla Firefox, Chromium, VLC, Transmission e outros.
Instalação
O Firejail está disponível nos repositórios de testes do Debian (jessie-backports/testing/sid) e no repositório oficial do Ubuntu 15.10 (“Wily Lobisomem”). Para outras distros, está disponível o source, pacotes .deb e .rpm. No caso do Arch Linux, o firejail está disponível no AUR.
Conforme sua distribuição Linux, baixe os pacotes necessários aqui. No meu caso, testei no Ubuntu Mate.
Como dito anteriormente, se estiver usando o Debian Testing ou Ubuntu 15.10 você pode instalar diretamente via apt-get:
Usando o Firejail
Não há arquivos de configuração complicados para editar, nenhum daemon rodando em segundo plano ou qualquer coisa mais complexa. Todos os recursos de segurança são aplicadas diretamente no kernel do Linux e estão disponíveis em qualquer sistema Linux. Para iniciar o programa, basta executar:
Depois desse comando executado, você entrará num espaço do Kernel isolado. A partir desse momento, qualquer processo que for iniciado será isolado 😉
Contudo, para limitar a largura de banda usada pelos programas no Linux usando o firejail você usará esses parâmetros:
Nestes exemplos, foi preciso informar a interface de conexão com a rede (eth0,wlan,ppp0) e o aplicativo a ter o controle de banda determinado; no caso o Firefox e o Transmission.
O próximo passo é obter a PID, ou seja, o processo de identificação do processo sandbox, e não o PID do aplicativo. Basta executar:
Finalmente, você pode definir o limite de largura de banda para a aplicação desejada. Abra outra aba no terminal e use o comando abaixo:
PID é o ID do processo da aplicação sandbox, etho é o nome da interface e 250 e 100 são valores de download e upload (kbps), respectivamente.