Diário Qubes OS 02 - Primeiras impresões

Publicado em 2017-06-23

Esse é o segundo post de uma série analisando o Qubes OS. Comece pelo primeiro post.


Após gravar a ISO em um pendrive, a instalação prosseguiu por uma tela de padrão Linux (semelhante a de um desktop Ubuntu). A única diferença significativa é a tela em que você escolhe as VMs que serão criadas durante a instaçação. No meu caso, segui com a sugestão padrão.

A primeira vista após a instalação, a área de trabalho é bem familiar: um desktop Xfce com ícones e uma barra de tarefas. A maior novidade é a janela que é executada automaticamente após login chamada Qubes VM Manager.

Desktop padrão - VM Manager e Menu Iniciar

Através dessa janela é possível ver a situação de todas as máquinas virtuais do sistema e modificar sua configuração. Em uma instalação padrão do Qubes (versão 3.2), as seguintes VMs devem ter sido criadas:

  • dom0: O sistema “raiz” que controla todas as outras VMs
  • fedora 23, debian 8: VMs template para todas as outras
  • sys-net, sys-usb, sys-firewall, sys-whonix: VMs de serviços de rede e dispositivos
  • work, personal, vault, untrusted: VMs de uso normal
  • disposable: VMs descartáveis

O conteúdo no menu “Iniciar” do sistema é decididamente diferente. Ao invés de acessar diretamente uma lista de programas, o menu de aplicações mostra um nível superior separado por VM e codificado por cor de acordo com o tipo da VM.

Compartimentação

Ao executar um navegador (por exemplo) você pode escolher executá-lo na VM de trabalho, na VM pessoal ou na VM untrusted. O histórico de navegação, cookies e arquivos locais serão apenas aqueles salvos no diretório /home da VM.

No modelo de uso do Qubes, cada VM deve ser usada para um propósito diferente. Para acessar arquivos de trabalho (digamos planilhas com dados confidenciais) você deve utilizar apenas a VM “trabalho”. Para acessar sites de banco, você pode criar uma VM específica chamada “Banco”. E para navegação em geral por sites desconhecidos, você pode usar a VM não confiável ou até mesmo uma VM descartável.

O mesmo terminal em VMs diferentes - arquivos diferentes

A compartimentação feita no Qubes é conceitual: o usuário é responsável por saber o que fazer em cada VM. O que o Qubes oferece é a garantia de que as informações armazenadas em uma AppVM não possam ser acessadas (sem intervenção do usuário) por uma outra AppVM.

Até aqui, exatamente o que eu queria para meu novo sistema de uso diário.

Rede & Internet

Em uma instalação padrão do Qubes, as interfaces de rede (tanto cabeada quanto sem-fio) são adicionados a uma VM especial chamada sys-net. Essa VM é iniciada automaticamente com o Sistema Operacional e é considerada como insegura: potenciais ataques vindos da rede podem conseguir explorar alguma vulnerabilidade no stack de rede do linux, portanto essa máquina não deve armazenar nenhum arquivo sensível.

Ela serve como gateway virtual para todas as outras máquinas do sistema. As VMs individuais recebem IPs em uma rede privada (válida apenas na própria máquina física). O endereço IP de rede é atribuído exclusivamente a interface dentro da sys-net.

Embora isso pareça complicado, a configuração até para redes sem fio é simples: na barra de tarefas existe um ícone de configuração de rede que pode ser usado para selecionar e digitar a senha de uma rede sem fio ou fazer a configuração de um IP fixo caso seja necessário.

Pequena nota: caso esteja instalando em um notebook e nenhuma rede sem fio esteja sendo exibida, pressione o botão de ativação da rede sem fio do teclado embutido primeiro. Pode te economizar alguns minutos tentando descobrir porque a rede não funciona 🤦.

Áudio USB

Após fazer a internet funcionar, comecei uma bateria de testes para verificar a compatibilidade de todos os programas e equipamentos que uso diariamente.

O primeiro desses testes foi do meu headset USB Plantronics C320.

O suporte a USB do Qubes teve uma mudança muito significativa no release 3.2 que foi a inclusão do modo de utilização USB passthrough. Esse modo permite que equipamentos USB individuais conectados na máquina física sejam direcionados para uso em uma VM específica, ao invés de se realizar a virtualização do controlador USB completo.

Esse modo de funcionamento é operacionalmente similar ao que acontece no VirtualBox quando se compartilha um dispositivo com uma VM, o que é ótimo. O problema é que por ser um recurso recente, a documentação e muitos sites e respostas em fóruns ainda não referenciam esse novo modelo de utilização de equipamentos USB o que pode ser confuso caso precise de alguma ajuda.

Felizmente, o processo (uma vez descoberto - ainda falta uma UI no VM Manager para fazer essa operação em modo gráfico) é simples: basta utilizar a ferramenta qvm-usb a partir de um terminal do dom0:

user@dom0$ qvm-usb

# lista de dispositivos no formato
sys-usb:3-1.2 046d:082 Plantronics_C320_Something_Or_Other

# anexar (attach/-a) dispositivo Plantronics na VM "unstrusted"
user@dom0$ qvm-usb -a untrusted sys-usb:3-1.2

Para simplificar e usando um exemplo disponível para um outro tipo de dispositivo, escrevi um pequeno script para simplificar a atribuição de um dispositivo USB a uma VM. Quem sabe em uma próxima versão do gerenciador isso possa ser feito pela interface gráfica.

Depois de fazer a atribuição do dispositivo para uma VM, é possível acessar um vídeo e ouvir o áudio direto no fone de ouvido. Perfeito!

Ouvindo música pelo headfone USB

Isso pode parecer muito trabalho apenas para poder utilizar um fone de ouvido, porém existe uma razão muito importante para o Qubes não conectar e utilizar um novo dispositivo USB automaticamente (e especialmente não no dom0): o stack USB é notoriamente inseguro (veja [[1]] (https://www.wired.com/2014/07/usb-security/), [[2]](https://www.schneier.com/blog/archives/2014/07/the_fundamental.html e a discussão sobre segurança USB no Qubes ). A abordagem de segurança é bem diferente da presente no ecosistema Windows.


Esse foi o segundo post em uma série sobre o Qubes OS. No próximo post devo falar sobre o uso da Yubikey.

Se você quer ver mais conteúdo técnico, assine meu feed RSS, minha newsletter, ou meu facebook.