¿Cómo puedo configurar la autenticación SSH con tarjeta inteligente?

¿Cómo puedo configurar la autenticación SSH con tarjeta inteligente?

Me gustaría poder conectarme mediante SSH a mi máquina utilizando una tarjeta inteligente .NET de Gemalto como método de autenticación. ¿Cómo podría hacerse esto en una máquina Fedora 13 (o estilo genérico Red Hat)?

Estos son los pasos aproximados que creo que son necesarios:

  1. Certificado de suministro para la tarjeta inteligente (¿y posiblemente una CA para emitirla?)
  2. Obtenga el certificado en la tarjeta inteligente
  3. Configure el servidor SSH para permitir la autenticación con tarjeta inteligente y configúrelo para usar un certificado/CA particular
  4. Un cliente SSH que admita tarjetas inteligentes (puntos extra por uno gratuito basado en Windows)

Respuesta1

Creo que los controladores de Gemalto ahora son de código abierto. Tienen el código fuente en su sitio web.

Necesitará configurar el pammódulo (no estoy seguro de cómo hacerlo, pero el código ciertamente está ahí). Me imagino que la pamconfiguración requeriría una asignación de un principio de certificado a una identificación de usuario local.

Creo que GDM ahora admite tarjetas inteligentes, pero no estoy seguro de cómo las detecta. Intentaré buscar esto más tarde (la forma más fácil probablemente sea simplemente echar un vistazo al gdmcódigo fuente).

Por supuesto, todo esto requiere pcscdy libpcsclitedebe estar instalado. También necesitarás copiar el libgtop11dotnet.soarchivo a /usr/lib.

código fuente para compilar libgtop11dotnet.so:https://github.com/AbigailBuccaneer/libgtop11dotnet

Respuesta2

Recomendaría kerberos. El MIT produce un cliente y servidor krb5.

vwduder, ¿podría recomendarme un lector de tarjetas inteligentes y una fuente de tarjetas compatibles con FIPS-201?

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

Tengo una copia en mi propio servidor, pero no soy lo suficientemente popular en este seguimiento de pila en este momento como para compartirla con ustedes. Lo anterior es sólo un poco menos confiable que nuestros propios servidores, por lo que probablemente podrás obtenerlo de ellos;)

[editar] ¡Ahora soy lo suficientemente popular!

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

Respuesta3

Cuando se utilizan claves RSA, 1) y 2) son triviales porque, como veremos en 3), el certificado real es irrelevante en este contexto. Simplemente diríjase a cacert.org o genere un certificado autofirmado y estará listo.

Para 3) necesitarás extraer tu clave pública e instalarla en $HOME/.ssh/authorized_keys. ¡Preste atención a la propiedad y los permisos de los archivos! (700 para .ssh, 600 para claves_autorizadas). Se desaconseja la autenticación de clave pública en todo el host, pero se deja como un ejercicio para mentes curiosas.

En cuanto a 4) deberías buscar en PuTTY SC (http://www.joebar.ch/puttysc/) o -preferiblemente- PuTTY-CAC (http://www.risacher.org/putty-cac/) que mejora PuTTY SC con un mejor algoritmo de extracción de clave pública y también incluye soporte Kerberos-GSSAPI de la rama de desarrollo de PuTTY.

Respuesta4

Hice un video para mostrar cómo usar una tarjeta inteligente con un servidor Linux usando PuttySC yCRT seguro. Puedes verlo aqui:Cómo usar SSH con tu tarjeta inteligente

No explico cómo aprovisionar un certificado en la tarjeta, pero si lo hace, recuerde que la clave de administrador de la tarjeta debe cambiarse mediante un sistema de administración de tarjetas. Te resultará mucho más fácil si tu empresa te proporciona una tarjeta inteligente para que no tengas que preocuparte por esta parte.

Una vez que haya proporcionado la tarjeta, deberá extraer la clave pública y luego agregarla a ~/.sshd/authorized_key.

Para conectarse al servidor, puede utilizar herramientas como PuttySC o SecureCRT. Deberá obtener la biblioteca PSKC#11 para la tarjeta (ya sea del fabricante de la tarjeta inteligente o de una versión de código abierto). Configure la herramienta SSH con la biblioteca, debería poder leerla y encontrar el certificado.

Cuando se autentique, la herramienta le solicitará el PIN de la tarjeta inteligente.

información relacionada