login
Sat 25 of Nov, 2017 (05:21 UTC)

[root@madeira.eng.br ~]#

Linux - It is now safe to turn on your computer

atualizar cache imprimir

cryptsetup + LUKS - Protegendo suas informações

Criada por: Frederico Madeira, última modificação em: Wed 02 of Sep, 2009 (01:13 UTC)
Hoje em dia, é bastante comum o uso de notebooks, pendrivers e HD's externos, tanto pelo mercado doméstico como no mercado corporativo. Este comportamento nos trás praticidades e mobilidade para acessarmos nossas informações em qualquer lugar e a qualquer momento. Por outro lado, pode nos trazer alguns problemas, tanto para nós, se os equipamentos forem pessoais ou para a empresa caso eles sejam corporativos.
Estamos sempre sujeitos a sermos roubados, esquecermos nossa pendrive no laboratório ou sala de aula ou em algum local da empresa ou ainda enviarmos o notebook para a manutenção. Qual a ameaça que estas situações nos impõem ? Esta resposta é simples: A violação dos nossos dados.
Na forma tradicional, as informações armazenadas nos dispositivos mencionados acima não possuem nenhuma forma de proteção contra abelhudos que por ventura tenham acesso aos nossos dispositivos, podendo desta forma, olhar/copiar/apagar os nossos documentos, nossas fotos, nossos e-mails, etc... Se este equipamento for corporativo, o impacto pode ser maior, pois documentos importantes podem cair nas mãos da concorrência ou ainda da mídia.
Empresas com Petrobrás já foram vítimas desta problema.

O objetivo deste tutorial é orientar o leitor na criação de volumes criptográficos seguros para a armazenagem segura de informações.

Usaremos um CentOS 5.3 (mas poderia ser qualquer outra distro) com o pacote cryptosetup que utiliza o módulo do kernel dm-crypt, introduzido na versão 2.6. Trata-se de um device-mapper (mapeador de dispositivo) que provê uma forma genérica para criar uma camada virtual nos dispositivos de blocos. Esta camada é feita de forma transparente para o usuário, realizando a tarefa de cifrar os dados quando forem escritos no dispositvo de bloco e decifrar os dados quando forem lidos do dispositivo de blocos.

1. Definindo a partição a ser cifrada.
No meu caso, estou usando um HD externo de 1Tb e irei cifrar uma partição de 770 Gb que conterá o meu backup pessoal. Para tanto, após conectar o HD externo, vamos rodar o fdisk para identificar o nome do device correspondente a esta partição.

[root@matheus ~]# fdisk -l

Disk /dev/sda: 500.1 GB, 500106780160 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14       60801   488279610   8e  Linux LVM

Disk /dev/sdb: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *           1          13      104391   83  Linux
/dev/sdb2              14       60801   488279610   8e  Linux LVM

Disk /dev/sdd: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdd1               1       25497   204800000    7  HPFS/NTFS
/dev/sdd2           25497      121601   771959008+  8e  Linux LVM


O device desejado é o /dev/sdd2. Este nome pode variar de caso para caso. Caso seja especificado aqui o device errado, você poderá tornar seu indisponibilizar o seu sistema ou ainda perder seus dados.

2. Difusão

Como forma de aumentarmos a segurança da partição encriptada, vamos escrever dados randomicamente em toda a partição, fazendo com que um possível atacante não seja capaz de identificar quanto do sistema de arquivo está em uso e em quais partes da partição possuem dados e em quais não possuem. A partição inteira aparecerá com vários blocos, em posições não seqüenciais, preenchidos aleatoriamente.

[root@matheus ~]# dd if=/dev/urandom of=/dev/sdd2 bs=1M

__
3. Cifrando a partição__

Para execucão desta etapa, precisaremos definir:

- Um algorítimo criptográfico
- Uma chave
- Um modo de geracão do IV


Comentários