
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:
- Certificado de suministro para la tarjeta inteligente (¿y posiblemente una CA para emitirla?)
- Obtenga el certificado en la tarjeta inteligente
- Configure el servidor SSH para permitir la autenticación con tarjeta inteligente y configúrelo para usar un certificado/CA particular
- 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 pam
módulo (no estoy seguro de cómo hacerlo, pero el código ciertamente está ahí). Me imagino que la pam
configuració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 gdm
código fuente).
Por supuesto, todo esto requiere pcscd
y libpcsclite
debe estar instalado. También necesitarás copiar el libgtop11dotnet.so
archivo 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!
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.