Como configurar Smart card authentication en linux
www.onlinetis.com
La autenticación con tarjeta inteligente es un método de seguridad que utiliza una tarjeta física (smart card) que contiene un microprocesador para verificar la identidad de un usuario. Funciona como una forma de autenticación de dos factores, ya que combina algo que el usuario tiene (la tarjeta) con algo que el usuario sabe (un número de identificación personal o PIN). 💳
La tarjeta inteligente almacena certificados digitales y claves criptográficas que se utilizan para las operaciones de autenticación. Estas claves privadas nunca salen de la tarjeta, lo que las protege de ataques de software y malware.
Cómo funciona la autenticación con tarjeta inteligente
El proceso de autenticación con tarjeta inteligente típicamente sigue estos pasos:
El usuario inserta la tarjeta inteligente en un lector de tarjetas conectado al dispositivo (computadora, terminal, etc.).
El sistema solicita al usuario que ingrese su PIN.
El lector de tarjetas envía el PIN a la tarjeta inteligente para su verificación. La tarjeta verifica si el PIN ingresado coincide con el PIN almacenado internamente.
Si el PIN es correcto, la tarjeta inteligente utiliza sus claves criptográficas para generar una firma digital que se envía al sistema para completar el proceso de autenticación.
El sistema verifica la firma digital y, si es válida, concede acceso al usuario.
Este método es más seguro que la autenticación con contraseña tradicional porque incluso si un atacante consigue el PIN del usuario, no podrá acceder a los recursos sin la tarjeta física. De igual forma, si un atacante roba la tarjeta, no podrá usarla sin el PIN.
Tipos de tarjetas inteligentes
Existen varios tipos de tarjetas inteligentes, pero las más comunes en el contexto de la autenticación son:
Tarjetas PKI (Infraestructura de clave pública): Estas tarjetas almacenan un par de claves criptográficas, una pública y una privada. La clave privada se usa para firmar digitalmente y autenticar la identidad del usuario, mientras que la clave pública se utiliza para verificar la firma.
Tarjetas CAC (Common Access Card): Son un tipo específico de tarjeta inteligente PKI utilizada por el Departamento de Defensa de los EE. UU. y otras agencias gubernamentales. Se usan para controlar el acceso físico a edificios y el acceso lógico a sistemas y redes informáticas.
Configurar la autenticación con tarjeta inteligente en Linux implica instalar y configurar varias herramientas para que el sistema operativo se comunique con el lector y la tarjeta. El proceso varía ligeramente dependiendo de la distribución de Linux que utilices. Sin embargo, los pasos generales son los siguientes:
1. Instalar el software necesario1
Primero, debes instalar los paquetes que gestionan la comunicación entre el sistema y la tarjeta. El principal es el servicio PC/SC Lite, que es una implementación del estándar PC/SC (Personal Computer/Smart Card).2
Para distribuciones basadas en Debian/Ubuntu:
Bashsudo apt-get update sudo apt-get install pcscd pcsc-tools libpcsclite1 libccid opensc libpam-pkcs11
Para distribuciones basadas en Red Hat/CentOS/Fedora:
Bashsudo dnf install pcsc-lite pcsc-lite-ccid pcsc-lite-libs opensc libpam-pkcs11
2. Verificar el lector de tarjetas
Una vez instalados los paquetes, debes verificar que el demonio
pcscd
se esté ejecutando y que el sistema detecte tu lector de tarjetas.Inicia o habilita el servicio
pcscd
:Bashsudo systemctl enable pcscd.service sudo systemctl start pcscd.service
Usa la herramienta
pcsc_scan
para escanear el lector y la tarjeta. Inserta tu tarjeta inteligente en el lector y ejecuta:Bashpcsc_scan
Deberías ver una salida que indica que el lector fue detectado y que la tarjeta está presente. Si no es así, podría haber un problema con el lector o sus drivers.
3. Configurar PAM para autenticación3
La autenticación con tarjeta inteligente en Linux se gestiona a través de los Módulos de Autenticación Conectables (PAM).4 Debes configurar PAM para usar el módulo
libpam-pkcs11
.5Edita el archivo de configuración de PAM para el servicio que deseas proteger (por ejemplo, para el inicio de sesión del sistema, edita
/etc/pam.d/common-auth
).Agrega la siguiente línea al inicio del archivo:
auth required pam_pkcs11.so
Esta línea le dice a PAM que se requiere la autenticación con tarjeta inteligente. Es crucial que la coloques antes de otras líneas que permitan la autenticación con contraseña, si quieres priorizar la tarjeta inteligente.
4. Mapear certificados a usuarios
Para que la autenticación funcione, el sistema debe saber qué certificado en la tarjeta corresponde a qué usuario de Linux. Esto se hace creando reglas de mapeo. El archivo de configuración principal para esto es
/etc/pam_pkcs11/pam_pkcs11.conf
.El mapeo puede basarse en varios atributos del certificado, como el Nombre Común (CN) o el hash del certificado.
Por ejemplo, si el Nombre Común de tu certificado es "Juan Perez", puedes configurar una regla para que se asocie con el usuario
jperez
:use_mappers = pwent,cn,subject;
El mapeo
pwent
asocia el CN del certificado con el campogecos
del archivo/etc/passwd
.
Este proceso es complejo y requiere un conocimiento detallado de la infraestructura de clave pública (PKI) y los certificados que residen en la tarjeta. Es fundamental que la tarjeta inteligente contenga un certificado y una clave privada válidos para la autenticación.