Skip to content


Configurando suporte a SSH no gnupg via smartcard

No artigo anterior, vimos como configurar um leitor de cartões em nosso sistema Debian Etch, e como utilizá-lo com o gnupg.

Iremos dar um passo à frente, utilizando o smartcard para autenticar em nossos servidores, via ssh. Este procedimento aumenta sobremaneira a segurança, acrescentando o elemento “o que eu tenho” como camada de validação.

É possível inclusive configurar o servidor SSH para aceitar apenas conexões que possuam determinada chave, além de acrescentar uma “passphrase” para cada chave.

  • Configurando o gpg-agent

crie o arquivo /etc/X11/xsession.d/90gpg-agent com o seguinte conteúdo:

: ${GNUPGHOME=$HOME/.gnupg}fsfe fellowcard
GPGAGENT=/usr/bin/gpg-agent
PID_FILE=”/tmp/gpg-agent-info-$(hostname)-$USER”
if grep -qs ‘^use-agent’ “$GNUPGHOME/gpg.conf” “$GNUPGHOME/options” &&
test -x $GPGAGENT &&
{ test -z “$GPG_AGENT_INFO” || ! $GPGAGENT 2>/dev/null; }; then
if [ -r “$PID_FILE” ]; then
. “$PID_FILE”
fi
# Invoking gpg-agent with no arguments exits successfully if the agent
# is already running as pointed by $GPG_AGENT_INFO
if ! $GPGAGENT 2>/dev/null; then
$GPGAGENT –pinentry-program /usr/bin/pinentry-gtk-2 –default-cache-ttl 43200 –enable-ssh-support –write-env-file $HOME/.gpg-agent-info –daemon –sh >”$PID_FILE”
. “$PID_FILE”
fi
fi

Será necessário finalizar o gpg-agent e reiniciar o X. Em seguida, verifique se o agent está rodando com suporte a ssh, com o comando:
$ps xau | grep agent

A saída deve ser parecida com essa:

ederm 4139 0.0 0.1 2568 696 ? Ss Oct30 0:00 /usr/bin/gpg-agent –pinentry-program /usr/bin/pinentry-gtk-2 –default-cache-ttl 43200 –enable-ssh-support –write-env-file /home/ederm/.gpg-agent-info –daemon ?sh

  • Importando a chave para os servidores

Iremos agora exportar a chave armazenada em nosso smartcard para os servidores, de modo que possamos realizar a autenticação via chaves/passphrase.

Para listar sua chave, digite:
$ssh-add -l
gere o arquivo de exportação com o comando:
$ssh-add -L > ~/.ssh/id_rsa.pub

Vamos agora exportar nossa chave para os servidores. Para isso, digite o comando:
$ssh-copy-id -i ~/.ssh/id_rsa.pub usuario@servidor

Informe a senha do usuário. A saída do comando deverá ser parecida com a abaixo:
Password:
Now try logging into the machine, with “ssh ‘frolic@crux'”, and check in:
.ssh/authorized_keys
to make sure we haven’t added extra keys that you weren’t expecting

Quando você tentar logar novamente o servidor irá solicitar o seu PIN através do programa pinentry. O programa gpg-agent se encarregará de deixar o seu PIN em memória (protegida), para que não seja necessário fornecer o PIN toda vez que você logar.
E assim implementamos um sistema de autenticação seguro e prático.

Gostaria de agradecer novamente a Nanda pela ajuda com os problemas que apareceram, até que a solução funcionasse a contento.

Leia também: Configurando o gpg para suporte a smartcards no Debian

Posted in Admin. de Sistemas, Debian, Segurança.


2 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

  1. luciano.x says

    Legal!

Continuing the Discussion

  1. Configurando o gpg para suporte a Smartcards no Debian | Debian linked to this post on 05/01/2007

    […] « Acessando remotamente servidores *Unix com XDMCP Configurando suporte a SSH no gnupg via smartcard » […]



Some HTML is OK

or, reply to this post via trackback.