He visto muchos tutoriales sobre cómo puedes ser tu propia Autoridad de Certificación (CA). Los tutoriales que he visto tratan sobre cómo generar claves ssl, no claves ssh, así que me preguntaba cómo genero claves ssh como esa en Ubuntu Server 14.04 LTS. La razón por la que quiero hacerlo de esta manera es para poder administrar mejor las claves ssh y permitirme revocarlas si abandonan la empresa para que ya no puedan acceder a ese servidor.
Respuesta1
No puedes. SSH no mira una CRL o algo similar para ver si una clave aún es válida. Si desea poder eliminar fácilmente el acceso a los servidores de las personas que abandonan su tienda, se me ocurren dos opciones:
- No administre las claves directamente, sino adminístrelas a través de algo como Puppet (esto tiene soporte directo para agregar y eliminar claves individuales hacia/desde un
authorized_keys
archivo). De esa manera, solo tendrá un lugar donde necesitará agregar o eliminar claves ssh, y Puppet se asegurará de que los cambios se activen en todos sus hosts. - Deshabilítelo
PubKeyAuthentication
por completo, cambie a otra cosa para la autenticación que tenga un sistema de autenticación central (por ejemplo, Kerberos permite la autenticación sin contraseña y tiene una base de datos de autenticación central, pero es algo complicado de configurar para los no iniciados).
Respuesta2
OpenSSH desde la versión 5.4 tiene sus propios certificados reales. Tienen una estructura más simple que los certificados X509 pero tienen una funcionalidad mucho más similar.
Usted crea un par de claves ssh normal y lo utiliza como CA. Preferiblemente una CA de host y una CA de usuario. Luego puede firmar claves públicas con esta CA usando ssh-keygen. Por ejemplo
ssh-keygen -s /path/to/ca_key -I key_id -z serial \
-n principal1,principal2 -V +53w /path/to/user_key.pub
Este comando creará un archivo llamado user_key-cert.pub que ahora es su certificado. El certificado es válido por 53 semanas y se puede utilizar para iniciar sesión como principal1 y principal2 en cualquier host que confíe en la CA que firmó la clave.
Para decirle a sshd que confíe en esta CA, simplemente consulte ca_key.pub en sshd_config de esta manera
TrustedUserCAKeys /etc/ssh/ca_key.pub
También hay varias formas de revocar certificados ssh (su pregunta real) y se mencionan en los manuales de openssh. Pero la opción básica en sshd_config es RevokedKeys. Puede utilizar tanto archivos de texto como KRL binarios para esto.
Para obtener más información, he escrito un par de guías sobre SSH CA. https://framkant.org/2016/10/setting-up-a-ssh-certificate-authority-ca/
Para obtener un control de acceso más detallado y escalable, consulte: https://framkant.org/2017/07/scalable-access-control-using-openssh-certificates/