2 votes

Linux SSH Login w/Certificat Expiration

J'ai un serveur de racines Ubuntu 16.06 et j'ai plusieurs autres personnes qui pourraient avoir besoin de s'y connecter en tant qu'utilisateur spécial.

Je ne veux pas envoyer de mots de passe ou même de clés privées.

Est-il possible de générer des clés qui expirent dans +3 jours après la génération, sans toucher à quoi que ce soit sur le serveur ?

C'est-à-dire avec un certificat racine que le serveur connaît et que j'ai dans un endroit sécurisé que je peux utiliser pour générer ces clés avec une date d'expiration ?

7voto

James Mertz Points 390

ou même des clés privées.

Pourquoi serait vous avez déjà envoyé des clés privées ? Demandez à l'utilisateur de générer sa propre paire de clés et de lui faire envoyer vous la clé publique.

Est-il possible de générer des clés qui expirent dans +3 jours après la génération,

En supposant que le serveur utilise OpenSSH, il y a deux façons de procéder :

  • Certificats : Supporté avec OpenSSH 5.4 ou plus récent, mais todo les utilisateurs doivent utiliser OpenSSH également - les certificats générés ne fonctionnent pas avec PuTTY ou d'autres clients.

    Générer d'abord une clé SSH "d'autorité" avec ssh-keygen et le répertorier dans la configuration du serveur (en utilisant la directive TrustedUserCAKeys ), puis l'utiliser pour émettre des certificats d'utilisateur.

    Pour délivrer un certificat : Lorsque l'utilisateur vous envoie son id_rsa.pub et le signer avec la clé CA. Une fois signé, envoyez le nouveau fichier id_rsa.pub-cert à l'utilisateur.

    ssh-keygen -s ~/private/user_ca -I user_fred -n fred -V +3d fred_id_rsa.pub

    Ici -n spécifie qui peut se connecter en utilisant le certificat, et -V fixe son délai d'expiration. (La -I définit simplement un nom arbitraire pour le certificat lui-même).

  • clés_autorisées : Pris en charge avec OpenSSH 7.7 ou plus, sans aucune exigence de client. L'information d'expiration n'est pas stockée dans la clé elle-même, mais dans le fichier de configuration du serveur clés_autorisées fichier :

    expiry-time="20180704" ssh-ed25519 AAAAC3NzaC1lZDI1NTE...

    Page du manuel sshd(8) les formats de temps autorisés sont YYYYMMDD y YYYYMMDDHHMM[SS] dans le fuseau horaire principal du serveur.

    Notez que cette méthode n'est sûre que si l'utilisateur est empêché de modifier son fichier authorized_keys, sinon il pourrait simplement prolonger le délai d'expiration !

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X