quarta-feira, 2 de fevereiro de 2011

Revogando certificados e bloqueando clientes no OpenVPN

Revogar Certificados

Revogar um certificado significa invalidar um certificado assinado previamente para que ele não possa mais ser usado para autenticação.

Razões típicas para querer revogar um certificado:

-A chave privada associada ao certificado foi comprometida ou roubada.
-O usuário da chave privada criptografada esqueceu a senha da chave.
-Você deseja cancelar o acesso de um usuário a VPN.

Exemplo

Como exemplo, vamos revogar o certificado client2.

Primeiro abra um shell e vá para o diretório easy-rsa:

Execute

./vars
./revoke-full client2

Você verá uma saída semelhante a esta:

Using configuration from /root/openvpn/20/openvpn/tmp/easy-rsa/openssl.cnf
DEBUG[load_index]: unique_subject = "yes"
Revoking Certificate 04.
Data Base Updated
Using configuration from /root/openvpn/20/openvpn/tmp/easy-rsa/openssl.cnf
DEBUG[load_index]: unique_subject = "yes"
client2.crt: /C=KG/ST=NA/O=OpenVPN-TEST/CN=client2/emailAddress=me@myhost.mydomain
error 23 at 0 depth lookup:certificate revoked

A mensagem "error 23" indica que o certificado foi revogado com sucesso, ela não é exatamente uma mensagem de erro e sim uma confirmação.

O script revoke-full irá gerar um arquivo chamado crl.pem (CRL - Lista de Certificados Revogados) no subdiretório keys. O arquivo deve ser copiado para um diretório onde o servidor OpenVPN possa acessá-lo, em seguida, a verificação da CRL deve ser ativada na configuração do servidor:

crl-verify crl.pem

Reinicie sua VPN e todos os certificados revogados serão recusados no handshake do cliente.

Esse texto acima é uma tradução de Revoking Certificates

Minhas Considerações.

Caso você siga os passos a cima e tudo funcione, parabéns. Porém, caso ocorra um dos erros:

revoke-full[39]: ca: not found
cat: crl.pem: No such file or directory

Esse erro ocorre porque no script revoke-full original da maioria das versões do OpenVPN não tem declarada a variável $OPENSSL. Adicione a mesma ao script:

OPENSSL='/usr/sbin/openssl'

Até mesmo na comunidade oficial do projeto openvpn o exemplo do revoke-full não tem essa variável declarada.

Dúvidas? Postem ou envie um e-mail.

Abraços e até a próxima.

terça-feira, 1 de fevereiro de 2011

Ubuntu e diretório home com criptografia.

É muito legal a criptografia da pasta /home ou qualquer outra, ajuda muito na segurança contra curiosos de plantão.

Porém, caso você tenha qualquer problema com seu sistema operacional, tudo indica uma boa dor de cabeça. Você não consegue acessar seus dados usando um simples live-CD ou espetando ele em outra maquina. Calma !!! Existe solução.

A seguir vou explicar como recuperar a sua pasta /home.

Usando Live-CD Ubuntu 10.10.

Passo 1 - Inicie o sistema usando o Live-CD.

Passo 2 - Ao término da carga do sistema você precisa montar a unidade onde se encontra a sua pasta home criptografada.

Montando

# mount /dev/sda1 /mnt

O comando acima monta seu dispositivo (HD) no ponto de montagem /mnt.

# mount -o bind /dev /mnt/dev
# mount -o bind /dev/shm /mnt/dev/shm
# mount -o bind /proc /mnt/proc
# mount -o bind /sys /mnt/sys

Acima utilizamos a opção bind do mount para duplicar o ponto de montagem (ex: /dev em /mnt/dev).

# chroot /mnt

Com o chroot iremos transformar o /mnt em nosso diretório corrente do sistema.

Nesse ponto, você esta executando o Ubuntu do seu HD nesse terminal pelo Live-CD.

Passo 3 - Logando-se como usuário dono da pasta (você precisa saber a senha)

# su - nome_usuario

Ao executar esse comando a senha do usuário informado que é a chave da criptografia será solicitada. Informe e vualá ..

Obs1: Esse processo também pode ser usado com um HD externo onde os arquivos da pasta /home estão criptografados.

Obs2: Essa simulação foi feita com o Lice-CD do Ubuntu 10.10 que contem o ecryptfs (ecryptfs-util).

Obs3: Caso você execute os passos usando um desktop com uma distro instalada, certifique-se que o ecryptfs esta instalado.