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.
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.
__
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
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