Defesa pessoal com o GPG, Nautilus Scripts, partições encriptadas e leves doses de paranoia

Que tal aumentar a segurança dos seus arquivos com algumas práticas bem simples e ferramentas de segurança nativas sem esquentar muito a cabeça?

[ Hits: 43.750 ]

Por: Bruno Rafael Santos em 23/09/2011 | Blog: https://cutt.ly/4H7vrPh


Partições encriptadas e sistemas de arquivos compartilhados



Por que perder tempo com encriptação e obliteração se podemos transformar o sistema todo em um cofre? O legal da encriptação do sistema de arquivos é que temos uma forma realmente boa de proteger tudo no notebook de forma prática.

O problema é que toda praticidade tem um preço. Primeiro, a encriptação de partições é feita através de um sistema parecido com o do arquivo zip, então você terá que se esforçar para criar uma senha decente. Segundo, o sistema de arquivos encriptado deverá ser montado toda vez que for utilizado. Caso você o configure para montagem automática, então adeus segurança.

Outro ponto fraco é que criar uma partição só para os arquivos secretos pode ser um tanto chato se você tiver muitas coisas. Por exemplo, cada projeto seu tem um conjunto de arquivos que devem ser privativos, então você terá duas estruturas de pastas, uma pública no sistema de arquivos normal e outra privada no sistema de arquivos encriptado. Fora que uma partição inteira encriptada dá na vista. Porém esta é uma das únicas soluções de segurança que sobrevivem a um bom chroot.

Um artigo completo no VOL explica várias possibilidades e comandos para encriptação de sistemas de arquivos. Leitura recomendada: Implementação de um sistema de arquivos criptografado transparente ao usuário.

Uma das soluções mais criativas que ele descreve é a criação de um sistema de arquivos em um arquivo comum. Isto resulta em uma "partição móvel" que pode ser ocultada e transportada com segurança.

Assim temos um arquivo com senha que guarda tudo dentro de forma simples e que pode ser montado e desmontado sob demanda. A partição encriptada é uma solução que combina a simplicidade do Zip encriptado sem seus problemas como atualizar arquivos internos, se bem que o File Roller faz isso quando se tenta modificar o conteúdo de um arquivo zipado.

Aqui mostrarei uma abordagem bem específica do OpenSuse, usando o Yast para criar uma partição encriptada no Pendrive. Primeiramente, abrimos o Yast e vamos direto para o gerenciador de partições. É só identificar o sistema de arquivos a ser encriptado e inserir a senha. Talvez o Yast peça para instalar algum pacote de suporte, mas é coisa rápida. Depois de criada a partição é só inserir o pendrive que o sistema de arquivos monta normalmente, pedindo a senha a cada rodada.
A partição encriptada é uma solução muito boa para pendrives que se perdem por aí.

Privacidade Local com o GID/UID/UMASK

Aqui em casa temos uma complicação adicional. Além do openSUSE, tenho uma partição com Windows 7. Para que a integração com o Windows seja a mais simples possível, meu principal sistema de arquivos é um NTFS, logo tenho que conviver com todas as complicações de implementá-lo no Linux. Um dos problemas do NTFS é que a partir do Linux não há suporte para suas estruturas de segurança.

O NTFS-3G geralmente monta a partição dando a propriedade de tudo para o Root e liberando geral para os demais usuários. Isso causa alguns problemas. Um deles envolve o Firefox que tem dificuldades para atualizar as extensões. Meus arquivos pessoais também ficam a mercê de um delete acidental de outros usuários.

Isso pode ser resolvido com algumas configurações do FSTAB, adicionando as opções GID e UID. Esta solução é bastante específica para este cenário, mas é tão segura quanto sua senha root e seu Windows podem ser.

GID e UID são duas opções do comando mount que pode ser adicionadas ao FSTAB. Elas forçam todos os arquivos e pastas de uma partição a pertencerem a um usuário e grupo pré-determinado. É excelente para domar sistemas de arquivos rebeldes como o NTFS.

O funcionamento é bem simples, basta adicionar gid e uid na linha do fstab da partição que deseja configurar. Os valores a serem adicionados são a identificação numérica do usuário e grupo que deseja adicionar, por exemplo:

/dev/disco /windows ntfs-3g gid=100,uid=1000,locale=pt_BR.UTF-8  0 0

Aqui gid=100 e uid=1000 significam:
  • gid="grupo rafael"
  • uid="usuário rafael"

Uma consulta ao "man mount" mostra que gid e uid são opções disponíveis para alguns sistemas de arquivos, entre eles, Ntfs e Fat. Sistemas ext4, ext3, ext2 parecem ignorar esta opção justamente por conterem seu próprio sistema para gerir as permissões de usuário.

Com as configurações acima tenho o controle sobre os arquivos daquela partição, mas isto não basta. As permissões dos arquivos individuais ainda são distribuídas de uma forma que todos tem acesso a eles.

Para resolver a questão das permissões temos uma opção específica. O Umask é uma das opções do mount para sistemas de arquivo rebeldes que serve para definir as permissões de usuários baseando-se em uma máscara.

Assim como gid e uid, umask é um valor numérico, porém, não representa simplesmente as permissões octais para o sistema de arquivos e sim uma filtragem das permissões que um usuário já tenha.

Recordemos rapidamente as permissões octais. O mais importante das opções octais é entender que elas são uma forma de soma que sempre resulta em valores diferentes para cada combinação:

Sem acesso: 0
Ler: 1
Escrever: 2
Executar: 4

Logo:
  • Ler e Escrever = 1+2=3
  • Ler e Executar = 1+4=5
  • Escrever e Executar = 4+2=6
  • Ler, Escrever e Executar = 4+2+1=7

Então as combinações de permissões octais podem ser reduzidas a um único número somando as opções. Da mesma forma, o octal permite definir as opções de dono, grupo e usuário de um arquivo ou pasta em um única comando. Vejamos um exemplo prático com as opções que eu quero para o minha partição NTFS:

 DonoGrupoOutros
Ler 1 1 0
Escrever200
Executar444
Octal:754


Então as permissões que quero para minha partição, em octal, é 754. Uma configuração típica onde terei acesso livre aos meus arquivos, usuários selecionados poderão navegá-los e todos os outros usuários estarão excluídos.

Agora que entendemos o octal, temos que pensar no umask. Este possui uma forma inversa de trabalhar, onde o valor do umask não é a permissão que dou e sim a permissão que tiro dos usuários e grupos. Mas é bem simples, basta subtrair de 777 o valor do octal que você deseja. 777 significa "libera geral" em octal e em umask significa "acesso negado total", a diferença entre eles dá umask=000 que é "libera geral" em umask. Vejamos então:

Permissões umask restritas: 777
Permissões desejadas, em octal: -754
Permissões umask finais: 023

Agora basta colocar o valor umask=023 no fstab e nosso sistema de arquivos NTFS estará domado:

/dev/disco /windows   ntfs-3g   gid=1000,uid=1000,umask=023,locale=pt_BR.UTF-8 0 0

Com isso, agora todo mundo pode usar o computador sem que eu precise me preocupar com "incidentes". Uma curiosidade, as opções octais têm efeitos diferentes para pastas e para arquivos. Ler um arquivo é acessa-lo, ler uma pasta é entrar nela. Escrever para pastas e arquivos é a mesma coisa. Mas executar, para arquivos é permissão para rodar programas, para pastas é uma permissão para listar conteúdo. Se uma pasta tem opção de execução sem leitura (o caso acima), para os usuários que não fazem parte do grupo as pastas são inavegáveis.

A forma como calculei o valor do umask acima é extremamente primária pois ele possui muitos outros nuances então, se você estiver interessado em esquentar a cabeça leia esta discussão no VOL sobre como calcular os valores do umask: Calculando valores UMASK.

Página anterior     Próxima página

Páginas do artigo
   1. Noções de segurança de dados: importância e ferramentas
   2. Segurança de arquivos: usando o GPG
   3. Removendo arquivos com segurança: Nautilus Scripts e o comando Shred
   4. Partições encriptadas e sistemas de arquivos compartilhados
   5. Outras coisinhas
Outros artigos deste autor

Tutorial GIMP: Preparando mapas para artigos científicos

Python para pesquisadores: material didático

Assinatura de documentos PDF em lote via Bash

GNU Parallel: criando atividades em paralelo com shell script

Guia Rápido do Miniconda para Aplicações Científicas - Instalação e Configuração

Leitura recomendada

Cliente Linux no servidor LDAP

Metasploit Adobe Exploit

Configurando o OpenVPN no SuSE Linux Enterprise Server (SLES)

Lynis: Sistema de auditoria e segurança para Linux

Backup gerenciável usando tar

  
Comentários
[1] Comentário enviado por removido em 23/09/2011 - 19:58h

eita cabra medroso!!!
kkkkkkkkkkkkkkkkkkkkkkk

parabéns, um excelente trabalho. Muito completo!
;-))

[2] Comentário enviado por tonnytg em 23/09/2011 - 20:09h

Hehe, tantas opções que temos e sempre haverá formas de quebrar ou acesar isso tudo.
Tava lendo a pouco tempo também preocupado com historicos da net, já que google mantém seu rastro por ip.
Tava usando o duckduckgo e acabei esbarrando uma noticia do wall street falando sobre supercookies que não são facéis de remover e fazem log do que vc acessa para as empresas saberem seus acessos =S

http://online.wsj.com/article/SB10001424053111903480904576508382675931492.html

[3] Comentário enviado por julio_hoffimann em 24/09/2011 - 17:49h

Parabéns Bruno!

Ótimo artigo! Muito bem explicado e, ao mesmo tempo, objetivo.

Abraço!

[4] Comentário enviado por tatuiano em 25/09/2011 - 21:23h

verdade.tanto que essa semana alterei minha senha no vol.

[5] Comentário enviado por nicolo em 27/09/2011 - 14:42h

É um artigo legal. poderia ter indo mais fundo do cryptsetup e no truecrypt para pastas, conteiners e partições. A referência apontada é pouco prática.

No Brasil não há nem preocupação com segurança, nem boas leis para garantir a privacidade e do cidadão. Todos escafuncham onde querem roubam senhas e fazem bagunça sem conseqüência.

Divulgar princípios úteis de segurança é muito bom. Parabéns.




[6] Comentário enviado por davimendes em 28/09/2011 - 10:55h

Cara tá mto bom isso aki!

Parabéns!

[7] Comentário enviado por santosbrc em 28/09/2011 - 15:12h

Agradeço os comentários pessoal.

bakunin, até pesquisei esses assuntos, mas preferi manter o texto enxuto e objetivo. Já viajei demais com o UMASK e outras coisas que estavam fora do meu plano original ;)

[8] Comentário enviado por astdarkness em 03/10/2011 - 00:36h

Ótimo artigo!! Parabéns. Faltou citar o TrueCript que foi uma das ferramentas usada pelo banqueiro da Oportunity que nem o FBI conseguiu quebrar a criptografia dos hd's. Vlw

[9] Comentário enviado por ceejay-br em 07/11/2011 - 22:59h

Parabéns pelo artigo Rafael.

Só quero retificar uma coisa em relação às permissões em octal.
Elas são 1 - executar, 2 - excrever, 4 - ler. Sendo assim, com o octal 754 você tem permissão total a seus arquivos (rwx), o grupo selecionado tem leitura e execução (r-x) e os demais usuários somente leitura (r--).

Um abraço!

[10] Comentário enviado por xiloba em 31/12/2011 - 21:15h

Parabéns, Rafael.
Sensacional! Há muitos tutoriais sobre gpg, mas nenhum explicou tão bem quanto você.
Tive várias dúvidas sobre uso de gpg, pgp etc. e aqui, consegui entender melhor.

Olha uma contribuição sobre como encriptar um arquivo usando sua chave, e deletar o arquivo de origem:
pwgen -1 -y -s 256 >securitypasswd.txt && gpg -e -r andré securitypasswd.txt && rm -f securitypasswd.txt

Acima, eu usei o pwgen para criar uma chave de 256 dígitos, jogá-la para um arquivo chamado securitypasswd.txt, encriptá-lo e remover o arquivo em que foi salva a chave, pois já o tenho encriptado.

está aqui a fonte:http://vivaolinux.com.br/topico/UbuntuBR/Ha-como-encriptar-um-arquivo-e-apagar-o-original-tudo-num-so-comando

E esta outra contribuição e um script criado pelo colega rai3mb. Este script encripta duas vezes um arquivo ou diretório; primeiro o faz com o zip; depois, fá-lo com o gpg (com criptografia simétrica):

#!/bin/bash
# MOstra o texto na tela, espera o usuário fornecer um valor e guarda na variável ARQUIVO
read -p 'Digite o nome do arquivo/diretório a ser encriptado: ' ARQUIVO
# Teste se é arquivo -f, ou diretório -d
! [ -f "$ARQUIVO" -o -d "$ARQUIVO" ] && echo -e "\nO arquivo/diretório '$ARQUIVO' não existe!" && exit 0
zip -e -r "$ARQUIVO".zip "$ARQUIVO" && gpg -c "$ARQUIVO".zip


fonte:http://vivaolinux.com.br/topico/Shell-Script/script-para-encriptar-um-arquivo-duas-vezes

[11] Comentário enviado por santosbrc em 02/01/2012 - 19:07h

Vlw pelas dicas André e e Charles. Estou estudando o shell script agora para automatizar algumas tarefas como backups e implantar umas soluções mais personalizadas aqui no meu note. Essa dica do André é um bom norte para scripts. E obrigado pela correção Charles, fiz várias modificações nesse umask antes de publicar, mas como não tenho a menor ideia de como realmente funciona acabei deixando escapar.

[12] Comentário enviado por marcoaw em 06/01/2012 - 11:25h

Muito bom este artigo, infelizmente nos dias em que vivemos , temos que ter senha até para morrer rsrs.
Acho interessante as diversas formas de criptografias. Pretendo utiliza-las.
Valeu mesmo pela dica !!!
Belo Artigo !!!

[13] Comentário enviado por removido em 16/04/2012 - 10:17h

Faltou falar de HTTPS em fibra óptica com criptografia quãntica usando AES prá reforçar contra Man-InThe-Middle Attack!

Fora isso acho que está bom. :-)

[14] Comentário enviado por kleber-rr em 16/05/2012 - 15:57h

Excelente artigo. Parabens.

[15] Comentário enviado por removido em 15/06/2012 - 13:11h

Entrei achando que era uma nova arte marcial....


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts