Como posso configurar a autenticação SSH do cartão inteligente?

9

Gostaria de poder fazer o SSH para minha máquina usando um Gemalto .NET Smart Card como método de autenticação. Como isso pode ser feito em uma máquina Fedora 13 (ou estilo Red Hat genérico)?

Estes são os passos que acho necessários:

  1. Certificado de provisão para o cartão inteligente (e possivelmente uma CA para emiti-lo?)
  2. Obter o certificado no cartão inteligente
  3. Configure o servidor SSH para permitir a autenticação de cartão inteligente e configure-o para usar um certificado / CA específico
  4. Um cliente SSH com suporte para cartão inteligente (pontos extras para um grátis baseado no Windows)
Geoff Childs
fonte

Respostas:

2

Os drivers da Gemalto agora são de código aberto, acredito. Eles têm o código fonte em seu site.

Você precisará configurar o pammódulo (não tenho certeza de como fazer isso, mas o código certamente está lá). Eu imagino que a pamconfiguração exigiria um mapeamento de um princípio de certificado para um ID de usuário local.

Acredito que o GDM agora suporta cartões inteligentes, mas não tenho certeza de como ele é detectado. Vou tentar procurar isso mais tarde (a maneira mais fácil é provavelmente apenas espiar o gdmcódigo-fonte).

Claro que tudo isso requer pcscde libpcsclitedeve ser instalado. Você também precisará copiar o arquivo libgtop11dotnet.sopara /usr/lib.

vwduder
fonte
Obrigado! Isso me colocou no caminho certo. Há também algumas informações realmente útil aqui, se alguém está olhando para a RedHat com base configurar: centos.org/docs/5/html/Deployment_Guide-en-US/sso-ov.html
Geoff Childs
Onde você encontra o arquivo libgtop11dotnet.so?
user568021
2

Eu recomendaria kerberos. O MIT produz um cliente e servidor krb5.

vwduder, você poderia recomendar um leitor de cartão inteligente e uma fonte de cartões compatíveis com FIPS-201?

http://csrc.nist.gov/publications/fips/fips201-1/FIPS-201-1-chng1.pdf

Eu tenho uma cópia no meu próprio servidor, mas não sou popular o suficiente neste rastreamento de pilha no momento para compartilhá-lo com você. O acima é apenas um pouco menos confiável do que nossos próprios servidores, então você provavelmente poderá obtê-lo deles;)

[editar] Agora sou popular o suficiente!

http://www.colliertech.org/state/FIPS-201-1-chng1.pdf

cjac
fonte
@vwduder tentou responder, mas ele não é parte do beta fechado ainda
cjac
Obrigado cjac! Combinado com a contribuição do vwduder, acho que peguei esse aqui.
Geoff Childs
Legal! Mais uma vez enquanto penso nisso. Meu pai recebe crédito por encontrá-los. smartcardworld.com
cjac
1

Ao usar chaves RSA, 1) e 2) são triviais, porque, como veremos em 3), o certificado real é irrelevante nesse contexto. Basta acessar o cacert.org ou gerar um certificado autoassinado e está tudo pronto.

Para 3) você precisará extrair sua chave pública e instalá-la em $ HOME / .ssh / allowed_keys. Preste atenção à propriedade e às permissões do arquivo! (700 para .ssh, 600 para chaves autorizadas). A autenticação de chave pública em todo o host é desencorajada, mas deixada como um exercício para mentes curiosas.

Quanto a 4), você deve consultar o PuTTY SC ( http://www.joebar.ch/puttysc/ ) ou, de preferência, o PuTTY-CAC ( http://www.risacher.org/putty-cac/ ), que melhora a PuTTY SC com um melhor algoritmo de extração de chave pública e também inclui o suporte Kerberos-GSSAPI da filial de desenvolvimento do PuTTY.

codehead
fonte
0

Fiz um vídeo para mostrar o uso de um cartão inteligente em um servidor Linux usando PuttySC e SecureCRT . Você pode assistir aqui: Como fazer o SSH com seu cartão inteligente

Não explico como aprovisionar um certificado no cartão, mas, se o fizer, lembre-se de que a chave administrativa do cartão deve ser alterada usando um sistema de gerenciamento de cartões. Será muito mais fácil para você se sua empresa fornecer um cartão inteligente para que você não precise se preocupar com essa parte.

Depois de provisionar o cartão, você precisa extrair a chave pública e adicioná-la a ~ / .sshd / allowed_key.

Para se conectar ao servidor, você pode usar ferramentas como PuttySC ou SecureCRT. Você precisará obter a biblioteca PSKC # 11 para o cartão (do fabricante do cartão inteligente ou de uma versão de código aberto). Configure a ferramenta SSH com a biblioteca, ela deve poder lê-la e encontrar o certificado.

Quando você se autentica, a ferramenta solicita o PIN do cartão inteligente.

Matthias Buchner
fonte