Nous enregistrons la procédure d'accÚs d'urgence aux hÎtes SSH avec des clés matérielles





Dans cet article, nous dĂ©velopperons une procĂ©dure d'accĂšs d'urgence aux hĂŽtes SSH Ă  l'aide de clĂ©s de sĂ©curitĂ© hors ligne. Ce n'est qu'une approche et vous pouvez l'adapter vous-mĂȘme. Nous stockerons l'autoritĂ© de certification SSH pour nos hĂŽtes sur une clĂ© de sĂ©curitĂ© matĂ©rielle. Ce schĂ©ma fonctionnera sur presque tous les OpenSSH, y compris SSH avec authentification unique.



Pourquoi tout ça? Eh bien, c'est une option de dernier recours. Il s'agit d'une porte dĂ©robĂ©e qui vous permettra d'accĂ©der Ă  votre serveur dans le cas oĂč, pour une raison quelconque, rien d'autre n'aide.



Pourquoi utiliser des certificats au lieu de clés publiques / privées pour l'accÚs d'urgence?



  • , . , 1 5 . . .
  • ​​ «» .




  • , .

    — , . - PIN-. , — . , , , USB- Yubikey 5. , . , .
  • .
  • OpenSSH 8.2 , . Ubuntu 20.04 OpenSSH 8.2.
  • (facultatif, mais souhaitable) Outil CLI pour vĂ©rifier les certificats.


Formation



Tout d'abord, vous devez créer une autorité de certification qui résidera sur la clé de sécurité matérielle. Insérez la clé et exécutez:



$ ssh-keygen -t ecdsa-sk -f sk-user-ca -O resident -C [security key ID]


En commentaire (-C), j'ai indiqué yubikey-9-512-742@smallstep.com afin de ne pas oublier à quelle clé de sécurité appartient cette autorité de certification.



Outre l'ajout de la clé à Yubikey, deux fichiers seront générés localement:



  1. sk-user-ca, un descripteur de clé qui fait référence à la clé privée stockée dans la clé de sécurité,
  2. sk-user-ca.pub, qui sera la clé publique de votre autorité de certification.


Mais ne vous inquiĂ©tez pas, Yubikey a une autre clĂ© privĂ©e qui ne peut pas ĂȘtre rĂ©cupĂ©rĂ©e. Par consĂ©quent, tout est fiable ici.



Sur les hÎtes en tant que root, ajoutez (si ce n'est déjà fait) à votre configuration SSHD (/ etc / ssh / sshd_config) ce qui suit:



TrustedUserCAKeys /etc/ssh/ca.pub


Ensuite, sur l'hÎte, ajoutez la clé publique (sk-user-ca.pub) à /etc/ssh/ca.pub



Redémarrez le démon:



# /etc/init.d/ssh restart


Maintenant, nous pouvons essayer d'accéder à l'hÎte. Mais d'abord, nous avons besoin d'un certificat. Créez une paire de clés à associer au certificat:



$ ssh-keygen -t ecdsa -f emergency


Certificats et paires SSH

Parfois, il est tentant d'utiliser un certificat comme substitut à une paire de clés publique / privée. Mais pour l'authentification des utilisateurs, un seul certificat ne suffit pas. Chaque certificat est également associé à une clé privée. C'est pourquoi nous devons générer cette paire de clés «d'urgence» avant de pouvoir nous émettre un certificat. Ce qui est important, c'est que nous montrions le certificat signé au serveur, en indiquant la paire de clés pour laquelle nous avons une clé privée.



Ainsi, l'Ă©change de clĂ©s publiques est toujours bien vivant. Cela fonctionne mĂȘme avec des certificats. Les certificats Ă©liminent simplement le besoin pour le serveur de stocker les clĂ©s publiques.


Ensuite, crĂ©ez le certificat lui-mĂȘme. J'ai besoin d'une autorisation d'utilisateur ubuntu dans un intervalle de 10 minutes. Vous pouvez le faire Ă  votre façon.



$ ssh-keygen -s sk-user-ca -I test-key -n ubuntu -V -5m:+5m emergency


Vous serez invité à signer le certificat avec votre empreinte digitale. Vous pouvez ajouter des noms d'utilisateur supplémentaires séparés par des virgules, par exemple -n ubuntu, carl, ec2-user



Voilà, vous avez maintenant un certificat! Ensuite, vous devez spécifier les autorisations correctes:



$ chmod 600 emergency-cert.pub


AprĂšs cela, vous pouvez vous familiariser avec le contenu de votre certificat:



$ step ssh inspect emergency-cert.pub




Voici Ă  quoi ressemble le mien:



emergency-cert.pub
        Type: ecdsa-sha2-nistp256-cert-v01@openssh.com user certificate
        Public key: ECDSA-CERT SHA256:EJSfzfQv1UK44/LOKhBbuh5oRMqxXGBSr+UAzA7cork
        Signing CA: SK-ECDSA SHA256:kLJ7xfTTPQN0G/IF2cq5TB3EitaV4k3XczcBZcLPQ0E
        Key ID: "test-key"
        Serial: 0
        Valid: from 2020-06-24T16:53:03 to 2020-06-24T17:03:03
        Principals:
                ubuntu
        Critical Options: (none)
        Extensions:
                permit-X11-forwarding
                permit-agent-forwarding
                permit-port-forwarding
                permit-pty
                permit-user-rc


Ici, la clé publique est la clé d'urgence que nous avons créée et l'autorité de certification est associée à sk-user-ca.



Nous sommes enfin prĂȘts Ă  exĂ©cuter la commande SSH:




$ ssh -i emergency ubuntu@my-hostname
ubuntu@my-hostname:~$


  1. Vous pouvez désormais créer des certificats pour n'importe quel utilisateur de l'hÎte qui approuve votre autorité de certification.
  2. Vous pouvez supprimer l'urgence. Vous pouvez conserver sk-user-ca, mais vous n'en avez pas besoin car il figure également sur la clé de sécurité. Vous pouvez également supprimer la clé publique PEM d'origine de vos hÎtes (par exemple dans ~ / .ssh / allowed_keys pour l'utilisateur ubuntu) si vous l'avez utilisée pour un accÚs d'urgence.


AccĂšs d'urgence: plan d'action



Insérez la clé de sécurité et exécutez la commande:



$ ssh-add -K


Cela ajoutera la clé publique et le descripteur de clé de l'autorité de certification à l'agent SSH.



Exportez maintenant la clé publique pour créer le certificat:



$ ssh-add -L | tail -1 > sk-user-ca.pub


Créez un certificat avec une date d'expiration, par exemple, pas plus d'une heure:



$ ssh-keygen -t ecdsa -f emergency
$ ssh-keygen -Us sk-user-ca.pub -I test-key -n [username] -V -5m:+60m emergency
$ chmod 600 emergency-cert.pub


Et maintenant SSH Ă  nouveau:



$ ssh -i emergency username@host


Si votre fichier .ssh / config pose des problÚmes de connexion, vous pouvez exécuter ssh avec l'option -F none pour vous en passer. Si vous devez envoyer un certificat à un collÚgue, l'option la plus simple et la plus sûre est Magic Wormhole . Cela ne nécessite que deux fichiers - dans notre cas, il s'agit de l'urgence et de l'urgence-cert.pub.



Ce que j'aime dans cette approche, c'est le support matériel. Vous pouvez mettre les clés de sécurité dans le coffre-fort et elles n'iront nulle part.






La publicité



Les serveurs Epic sont des VPS bon marchĂ© avec des processeurs puissants d'AMD, une frĂ©quence de cƓur du processeur jusqu'Ă  3,4 GHz. La configuration maximale vous permet de rĂ©soudre presque tous les problĂšmes - 128 cƓurs de processeur, 512 Go de RAM, 4000 Go de NVMe. Rejoignez-nous!






All Articles