Head in the clouds
Autor original: Jesse Smith
Publicado originalmente no: distrowatch.com
Tradução: Roberto Bechtlufft
O armazenamento em nuvem, a tecnologia que permite a um usuário salvar seus arquivos em um servidor controlado por terceiros, costuma dividir opiniões. Algumas pessoas gostam de contar com a conveniência de armazenar dados em um servidor remoto, podendo baixá-los ou fazer uma sincronização a partir de outro computador em outra rede. Outras gostam da ideia de deixar que terceiros gerenciem as máquinas e os discos, enquanto elas cuidam de outras coisas. E no outro extremo, temos as pessoas que não gostam de manter seus dados em um servidor sobre o qual não tenham controle, sujeito a scripts de terceiros e a olhos curiosos, além do medo do servidor ficar offline e impossibilitar o acesso aos dados. Eu acho que o armazenamento na nuvem pode ser bem útil quando usado corretamente, mas assim como qualquer outra ferramenta, é preciso ter expectativas razoáveis ao fazer uso dele.
A facilidade para se enviar cópias de arquivos para um servidor remoto, por exemplo, é um recurso atraente, mas sempre que alguém me diz que está fazendo backup na nuvem, eu penso: “só na nuvem?” Eu sempre recomendo às pessoas que mantenham dois backups, sejam quais forem os métodos utilizados. Um backup é local, com acesso facilitado; o outro é remoto, para o caso de um desastre local. Os servidores remotos podem cair, as empresas podem fechar as portas, e as conexões de rede com o mundo exterior podem ser interrompidas. Esses problemas em potencial me levam a crer que a nuvem seja uma solução útil de backup, desde que não seja a única.
A outra grande preocupação é com a privacidade, o que é especialmente importante quando lidamos com documentos confidenciais. Uma coisa é alguém botar as mãos em suas músicas ou nas fotos daquele acampamento com os amigos, e outra é sua declaração de imposto de renda ou seus contratos comerciais vazarem. É por isso que recomendo que as pessoas usem criptografia em tudo que for enviado para a nuvem. Mas há uma pegadinha: existe alguma maneira prática de se criptografar arquivos antes de enviá-los para a nuvem? Vejamos… a maioria das distribuições tem uma cópia do OpenSSL pré-instalada ou nos repositórios. E o que é o OpenSSL? Segundo a página de manual do programa, é “uma ferramenta de linha de comando que usa várias funções de criptografia da biblioteca crypto do OpenSSL a partir do shell”. Ou seja, dentre outras coisas, o OpenSSL nos permite criptografar e descriptografar arquivos. Antes de mais nada, confira se o OpenSSL para que possamos seguir em frente.
No primeiro exemplo, vamos supor que tenhamos um arquivos chamado listadetarefas.txt. Nós queremos criptografá-lo antes de enviá-lo para o armazenamento remoto. Podemos usar o OpenSSL para fazer isso, com o comando:
openssl enc -e -aes256 -in listadetarefas.txt -out lista-criptografada.txt
O comando vai pedir uma senha para o arquivo criptografado, e o resultado será um arquivo criptografado chamado lista-criptografada.txt. Podemos enviar esse arquivo para a nuvem. No exemplo acima, o “aes256” é o método de criptografia. Uma lista de opções de criptografia pode ser exibida com o comando “openssl help”.
É claro que depois nós vamos querer descriptografar o arquivo, então é importante usar uma senha que possa ser lembrada com facilidade. E por falar nisso, como fazemos para descriptografar esse arquivo? Podemos usar: openssl enc -aes256 -d -in lista-criptografada.txt -out listadetarefas.txt
O comando acima vai pedir a nossa senha e jogar o conteúdo original do arquivo para listadetarefas.txt. A opção “-d” diz ao OpenSSL para descriptografar o arquivo. No exemplo anterior, “-e” indicava que queríamos criptografá-lo.
Se você for como eu e não quiser correr o risco de digitar algo errado sempre que for criptografar ou descriptografar um arquivo, pode fazer um script como o que eu mostro logo abaixo. O script recebe um único arquivo e o criptografa, adicionando a extensão .encpara evitar que o arquivo original seja sobrescrito. Ele exige a digitação da senha:
#!/bin/bash
# conferir se digitamos um nome de arquivo
if [ $# -lt 1 ]
then
echo "Utilização: $0 arquivo-a-ser-criptografado"
exit 1
fi
openssl enc -e -aes256 -in "$1" -out "$1".enc
Para descriptografar o arquivo, podemos usar o script a seguir. Ele recebe o nome de um arquivo criptografado e o nome do arquivo no qual vamos gravar seu conteúdo descriptografado.
#!/bin/bash
if [ $# -lt 2 ]
then
echo "Utilização: $0 novo-nome-do-arquivo-a-ser-criptografado"
exit 1
fi
openssl enc -d -aes256 -in "$1" -out "$2"
Concluindo, vamos dar uma olhada em um script que faz backup da pasta Documentos, aplica a criptografia nesse backup automaticamente, salva a senha e joga a versão criptografada em um local que será sincronizado com nosso armazenamento na nuvem. Neste exemplo, presumo que você esteja usando o armazenamento na nuvem do Ubuntu One, mas é fácil ajustar o script para trabalhar com outros serviços.
#!/bin/bash # obter a data atual minhadata=$(date +"%y-%m-%d") # Compactar pasta Documentos tar czf documentos-$minhadata.tar.gz ~/Documentos # password baseada em checksum checksum=$(md5sum documentos-$minhadata.tar.gz | cut -c 1-16) # criptografar arquivo e movê-lo para a pasta sincronizada openssl enc -e -aes256 -in documentos-$minhadata.tar.gz -out ~/Ubuntu\ One/documentos-$minhadata.tar.gz.enc -pass pass:$checksum # salvar a data e a senha touch ~/Senhas echo $minhadata $checksum >> ~/Senhas # mover o arquivo original para outro disco mv documentos-$minhadata.tar.gz /media/disk/
O resultado é um arquivo criptografado em nossa pasta sincronizada (no caso, “Ubuntu One”) e uma cópia sem criptografia em outro disco (montado como /media/disk). A senha do pacote criptografado é armazenada em um arquivo chamado Senhas na nossa pasta home. Cada entrada do arquivo Senhas exibe a data de criação do arquivo compactado, seguida pela senha de 16 caracteres.
Algumas pessoas mais preocupadas com a segurança vão dizer que manter as senhas em um arquivo de texto e automatizar a obtenção da senha com um script que pode ser exibido com o comando “ps” não é uma boa ideia. Essa preocupação é totalmente válida, especialmente se estivermos tentando impedir que nossas senhas caiam nas mãos de outras pessoas que tenham acesso ao computador. Só que neste exemplo nós não estamos nos protegendo de usuários locais, mas sim dos servidores de armazenamento na nuvem.
É plenamente possível usar o armazenamento na nuvem e manter os dados em segurança. Como acontece com outros tipos de backup locais, isso exige alguma redundância e criptografia, e é fácil cuidar disso na maioria das distribuições Linux.
Créditos a Jesse Smith – distrowatch.com
Tradução por Roberto Bechtlufft <info at bechtranslations.com.br>
Esta postagem foi modificada pela última vez em 24/05/2011 18:28