Ubuntu com Criptografia Total + Snapper

Apesar de termos o TimeShift para manipular snapshots no BTRFS, este não funcionará caso você queira trabalhar com criptografia total de disco. Neste caso, podemos então utilizar outra ferramenta para isso, o Snapper. O grande problema, é que o Ubuntu e seus derivados (como o Linux Mint), não está preparado para ele. Neste artigo eu ensinarei como configurar o Ubuntu para poder utilizar esta ferramenta e darei dicas de como você pode instalar o seu sistema com criptografia total.

[ Hits: 2.486 ]

Por: Daniel R. em 11/02/2020


Corrigindo o problema / Snapper



Corrigindo o problema de montagem do Ubuntu

Todos os comandos descritos aqui, devem ser executados como super usuário (root), para prosseguir, recomendo utilizar o:

sudo su
ou:
sudo -i

Antes de mais nada, vamos definir o subvolume "@" como o subvolume padrão, pois caso contrário, o seu sistema poderá não subir mais depois de realizada as alterações. Para isso, primeiro temos que descobrir qual é o ID do subvolume "@", listando os subvolumes existentes:

# btrfs sub list /

O resultado deve ser algo parecido com isso:
Linux: Instalando o Ubuntu (e seus derivados) com criptografia total, configurando o
Veja qual é o ID do subvolume "@", no meu caso é número "257". Tendo em mãos o ID do subvolume "@", defina o subvolume padrão, com o comando:

# btrfs sub set-default [ID] /

No meu caso, ficaria assim:

# btrfs sub set-default 257 /

E agora, confirmamos se está certo:

# btrfs sub get default /

Ele deve retornar que o subvolume padrão agora é o: path @

Feito isso, vamos remover a configuração do Ubuntu, que manda ele montar sempre o "@" como padrão. Vamos editar o arquivo de configuração do grub "10_linux":

# nano /etc/grub.d/10_linux

Encontre neste arquivo a seguinte linha: GRUB_CMDLINE_LINUX="rootflags=subvol=${rootsubvol} ${GRUB_CMDLINE_LINUX}"

E remova desta linha APENAS a seguinte expressão: rootflags=subvol=${rootsubvol}
Sendo assim, esta linha deve ficar agora:

GRUB_CMDLINE_LINUX="${GRUB_CMDLINE_LINUX}"

Salve o arquivo e saia do nano. Agora, apenas por precaução, vamos trancar este arquivo, caso alguma atualização do Ubuntu insista em querer voltar na configuração anterior:

# chattr +i /etc/grub.d/10_linux

E seguida, mande atualizar o GRUB:

# update-grub

Agora, vamos editar o arquivo "fstab", que também manda montar o "@" todas as vezes:

# nano /etc/fstab

Veja o meu exemplo a seguir:
Linux: Instalando o Ubuntu (e seus derivados) com criptografia total, configurando o
Repare que a linha que monta o root (mount point "/") tem a opção de montagem: "defaults,[email protected]".

Isso fará ele montar o "@" sempre, mesmo que você defina outro subvolume como padrão futuramente, no caso um subvolume de snapshot. Para corrigir, basta remover APENAS a expressão ",[email protected]". No meu caso, esta linha ficará assim:

/dev/mapper/local-root  /  btrfs defaults 0 1

Repare também que, em outra linha, ele monta o subvolume "@home" na pasta /home, mas não se preocupe que isso, está certo.

Reinicie o sistema, se ele subir normalmente, provavelmente está tudo certo. O próximo passo agora é instalar e configurar o Snapper.

Instalando e configurando o Snapper

Para instalar o Snapper é bem simples, podemos fazer pelo APT mesmo:

# apt install snapper -y

E para criar a configuração, também é simples:

# snapper create-config /

Apesar de tudo parecer estar correto, na verdade não está. O problema, é que ao criar a configuração do Snapper, ele cria um subvolume chamado ".snapshots" e consecutivamente uma pasta chamada ".snapshots" na raiz do sistema, mas lembra-se que estamos montados dentro do subvolume "@"?

Sendo assim, o subvolume ".snapshots" foi criado dentro de outro subvolume, o "@", e assim que sairmos deste subvolume para um outro, isso ai vai virar uma salada mista. O subvolume onde os snapshots serão criados tem que ficar no root do sistema de arquivos, ou seja, no "top level 5".

Se você listar os subvolumes depois de criado a config do snapper pelo:

# btrfs sub list /

...você irá ver que o subvolume ".snapshots" está em outro "top level", mais especificamente no "top level" de ID do subvolume "@", indicando que ele está lá dentro. Sendo assim, para criar o subvolume no "top level 5", temos que montar a raiz do sistema de arquivo em outra pasta.

Para isso, vamos criar uma pasta:

# mkdir /mnt/rt

E agora vamos montar a raiz do sistema de arquivo nesta pasta, utilizando a opção "subvol=/". Usando o meu exemplo, meu dispositivo é o /dev/mapper/local-root, se você não tem certeza qual é o seu, você pode ver lá no arquivo "fstab" que você alterou anteriormente.

Se você instalou o sistema usando o meu script para instalação com criptografia total, do qual eu menciono no início deste artigo, será este mesmo. Sendo assim, eu vou dar o exemplo de montagem abaixo, considerando isso:

# mount -o subvol=/ /dev/mapper/local-root /mnt/rt

Se você listar os arquivos na pasta /mnt/rt, você terá que ver os subvolumes existentes. Agora que temos a pasta /mnt/rt montada na raiz do sistema de arquivos, vamos criar o subvolume onde ficará armazenado os snapshots:

# btrfs sub create /mnt/rt/@snapshots

Vamos listar novamente os subvolumes:

# btrfs sub list /

Repare que o subvolume "@snapshots" está no "top level 5", ou seja, está correto.

Para finalizar, vamos remover todos os snapshots criados pelo snapper e criar a config novamente:

snapper delete-config
snapper create-config /

E logo em seguida, apagar o subvolume que ele criou:

# btrfs sub delete /.snapshots

Agora vamos criar a pasta onde será montado o subvolume "@snapshots", que criamos anteriormente:

# mkdir /.snapshots

E, finalmente, vamos adicionar uma linha ao arquivo "fstab", que irá montar o subvolume "@snapshots" na pasta /.snapshots:

# nano /etc/fstab

Minha dica é, copie a linha que está atualmente montando a pasta /home (provavelmente é a ultima) e cole numa linha a baixo. Altere apenas o "mount point" de /home para /.snapshots e o "[email protected]" para "[email protected]".

No meu exemplo, ficará assim:
Linux: Instalando o Ubuntu (e seus derivados) com criptografia total, configurando o
Salve e feche o arquivo.

Agora, só resta reiniciar o sistema. Se seu sistema subiu normalmente, você pode visualizar os snapshots criados pelo comando:

# snapper list

Edite também o arquivo /etc/snapper/configs/root. E defina quantos snapshots você vai querer manter, entre outras opções.

Se você não gosta muito de usar via Shell, existe a interface gráfica:
Nela, é possível editar as configurações, reverter para algum snapshot, etc. No momento, você pode testar se está tudo ok, instalando algum pacote, como por exemplo o Gedit e logo em seguida, mandando reverter para o snapshot criado durante o boot.

Para reverter para algum snapshot, é muito simples, basta ver qual é o numero do snapshot pelo comando:

# snapper list

E, logo em seguida, dar um "snapper rollback", seguido do numero do snapshot, como por exemplo:

# snapper rollback 1

Após reverter para o snapshot de numero 1, por exemplo, reinicie o sistema. O pacote que você instalou, não deverá estar mais lá, pois quando o snapshot foi criado, ele não estava instalado.

Eu sei que este artigo foi de botar medo em muita gente aí, imagine para mim que tive que tirar do zero. Mas não se desespere, faça o passo a passo com calma, procure entender o que você está fazendo. No final, o resultado é satisfatório e muito duradouro.

Página anterior    

Páginas do artigo
   1. O problema / O bug
   2. Corrigindo o problema / Snapper
Outros artigos deste autor

Tor + Privoxy + Squid3

Leitura recomendada

Entendendo e configurando o LVM manualmente

Acessar, ler e escrever em partições Linux no Windows

Esquemas de particionamento e sistemas de arquivos

Manipulação de discos e sistemas de arquivos

RAID 1 em Debian com sistema já instalado

  
Comentários
[1] Comentário enviado por juamspk em 21/03/2020 - 13:14h

Obrigado pelo artigo, comecei a estudar sobre o BTRFS recentemente pelos snapshots, infelizmente o conteudo sobre não é tão vasto então tô quebrando cabeça pra entender a estrutura geral dele, sobre a criptografia nunca tinha pensado muito sobre mas agora vou seriamente ver sobre isso ja que o perigo de ter meu note roubado é real(perigoso por aqui).
tô querendo usar o BTRFS no meu manjaro (SSD 240GB pro SO e HD 1TB pros arquivos) nessa caso os dois discos precisariam ser criptografados?

[2] Comentário enviado por dantavares em 21/03/2020 - 17:29h


[1] Comentário enviado por juamspk em 21/03/2020 - 13:14h

Obrigado pelo artigo, comecei a estudar sobre o BTRFS recentemente pelos snapshots, infelizmente o conteudo sobre não é tão vasto então tô quebrando cabeça pra entender a estrutura geral dele, sobre a criptografia nunca tinha pensado muito sobre mas agora vou seriamente ver sobre isso ja que o perigo de ter meu note roubado é real(perigoso por aqui).
tô querendo usar o BTRFS no meu manjaro (SSD 240GB pro SO e HD 1TB pros arquivos) nessa caso os dois discos precisariam ser criptografados?


Depende do seu nível de paranoia. Minha recomendação a você é mandar montar o seu hdd de 1TB como o /home criptografado. Se você decidir não criptografar o sistema, eu recomendo que pelo menos você mande montar o /tmp na RAM, assim tudo que tiver lá será limpo ao desligar o PC.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts