
Dans cet article, nous allons élaborer une procédure pour un accÚs d'urgence aux hÎtes SSH en utilisant des clés de sécurité matérielles hors ligne. C'est simplement une des approches, et vous pouvez l'adapter selon vos besoins. Nous allons stocker le centre de certification SSH pour nos hÎtes sur la clé de sécurité matérielle. Ce schéma fonctionnera pratiquement sur n'importe quel OpenSSH, y compris SSH avec SSO.
Pourquoi tout cela ? Eh bien, c'est une solution de dernier recours. C'est une porte dérobée qui vous permettra d'accéder à votre serveur lorsque, pour une raison ou une autre, rien d'autre ne fonctionne.
Pourquoi utiliser des certificats au lieu de clés publiques/privées pour un accÚs d'urgence ?
- Contrairement aux clĂ©s publiques, la durĂ©e de vie des certificats peut ĂȘtre trĂšs courte. Vous pouvez gĂ©nĂ©rer un certificat valable pendant 1 minute ou mĂȘme 5 secondes. Une fois ce dĂ©lai Ă©coulĂ©, le certificat ne sera plus valable pour de nouvelles connexions. C'est idĂ©al pour un accĂšs d'urgence.
- Vous pouvez créer un certificat pour n'importe quel compte sur vos hÎtes et, si nécessaire, envoyer de tels certificats « à usage unique » à vos collÚgues.
Ce dont vous aurez besoin
- Des clés de sécurité matérielles qui prennent en charge les clés résidentes.
Les clĂ©s rĂ©sidentes sont des clĂ©s cryptographiques qui sont entiĂšrement stockĂ©es Ă l'intĂ©rieur de la clĂ© de sĂ©curitĂ©. Parfois, elles sont protĂ©gĂ©es par un code PIN alphanumĂ©rique. La partie publique de la clĂ© rĂ©sidente peut ĂȘtre exportĂ©e depuis la clĂ© de sĂ©curitĂ©, si nĂ©cessaire, avec le descripteur de la clĂ© privĂ©e. Des clĂ©s USB telles que la sĂ©rie Yubikey 5 prennent en charge les clĂ©s rĂ©sidentes. Il est prĂ©fĂ©rable qu'elles soient destinĂ©es uniquement Ă un accĂšs d'urgence Ă l'hĂŽte. Pour cet article, j'utiliserai une seule clĂ©, mais vous devriez en avoir une supplĂ©mentaire pour la sauvegarde. - Un endroit sĂ©curisĂ© pour stocker ces clĂ©s.
- OpenSSH version 8.2 ou supérieure sur votre ordinateur local et sur les serveurs auxquels vous souhaitez accéder en urgence. Ubuntu 20.04 est livré avec OpenSSH 8.2.
- (optionnel, mais recommandé) Un outil CLI pour vérifier les certificats.
Préparation
Pour commencer, vous devez créer un centre de certification qui sera stocké 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 spécifié yubikey-9-512-742@smallstep.com pour ne pas oublier à quelle clé de sécurité ce centre de certification se réfÚre.
En plus d'ajouter la clé à Yubikey, deux fichiers seront générés localement :
- sk-user-ca, le descripteur de clé qui fait référence à la clé privée stockée dans la clé de sécurité,
- sk-user-ca.pub, qui sera la clé publique pour votre centre de certification.
Mais ne vous inquiĂ©tez pas, une autre clĂ© privĂ©e est stockĂ©e sur le Yubikey, et elle ne peut pas ĂȘtre extraite. Tout est donc sĂ©curisĂ© ici.
Sur les hÎtes au nom de l'utilisateur root, ajoutez (si ce n'est pas déjà fait) à la configuration de votre SSHD (/etc/ssh/sshd_config) ce qui suit :
TrustedUserCAKeys /etc/ssh/ca.pubEnsuite, sur l'hÎte, ajoutez la clé publique (sk-user-ca.pub) dans /etc/ssh/ca.pub
Redémarrez le démon :
# /etc/init.d/ssh restartNous pouvons maintenant essayer d'accéder à l'hÎte. Mais d'abord, nous aurons besoin d'un certificat. Créez une paire de clés qui sera liée au certificat :
$ ssh-keygen -t ecdsa -f emergencyCertificats et paires SSH
Parfois, on a envie d'utiliser un certificat comme substitut Ă une paire de clĂ©s publique/privĂ©e. Mais pour l'authentification de l'utilisateur, un seul certificat ne suffit pas. Chaque certificat a Ă©galement une clĂ© privĂ©e associĂ©e. C'est pourquoi nous devons gĂ©nĂ©rer cette paire de clĂ©s "d'urgence" avant de nous dĂ©livrer le certificat. Il est important que le certificat signĂ© soit montrĂ© au serveur, en spĂ©cifiant la paire de clĂ©s pour laquelle nous avons la clĂ© privĂ©e.Ainsi, l'Ă©change de clĂ©s publiques est toujours vivant et en pleine forme. Cela fonctionne mĂȘme avec des certificats. Les certificats libĂšrent simplement le serveur de la nĂ©cessitĂ© de stocker des clĂ©s publiques.
Ensuite, crĂ©ez le certificat lui-mĂȘme. J'ai besoin d'une autorisation utilisateur ubuntu dans une fenĂȘtre de 10 minutes. Vous pouvez faire cela Ă votre façon.
$ ssh-keygen -s sk-user-ca -I test-key -n ubuntu -V -5m:+5m emergencyVous serez invité à signer le certificat avec des empreintes digitales. Vous pouvez ajouter d'autres noms d'utilisateurs, séparés par des virgules, par exemple, -n ubuntu,carl,ec2-user.
Voilà , maintenant vous avez un certificat ! Ensuite, il faut définir les bonnes permissions :
$ chmod 600 emergency-cert.pubAprĂšs cela, vous pouvez consulter le contenu de votre certificat :
$ step ssh inspect emergency-cert.pubVoici Ă quoi ressemble le mien :
emergency-cert.pub
Type: ecdsa-sha2-nistp256-cert-v01@openssh.com certificat utilisateur
Clé publique: ECDSA-CERT SHA256:EJSfzfQv1UK44/LOKhBbuh5oRMqxXGBSr+UAzA7cork
CA de signature: SK-ECDSA SHA256:kLJ7xfTTPQN0G/IF2cq5TB3EitaV4k3XczcBZcLPQ0E
ID de clé: "test-key"
Numéro de série: 0
Valide: du 2020-06-24T16:53:03 au 2020-06-24T17:03:03
Principaux :
ubuntu
Options critiques: (aucune)
Extensions:
permit-X11-forwarding
permit-agent-forwarding
permit-port-forwarding
permit-pty
permit-user-rcIci, la clé publique est la clé d'urgence que nous avons créée, et elle est liée au centre de certification sk-user-ca.
Enfin, nous sommes prĂȘts Ă exĂ©cuter la commande SSH :
$ ssh -i emergency ubuntu@my-hostname
ubuntu@my-hostname:~$- Vous pouvez maintenant créer des certificats pour n'importe quel utilisateur sur l'hÎte qui fait confiance à votre autorité de certification.
- Vous pouvez supprimer emergency. Vous pouvez conserver sk-user-ca, mais ce n'est pas nĂ©cessaire, car il est Ă©galement sur la clĂ© de sĂ©curitĂ©. Vous voudrez peut-ĂȘtre Ă©galement supprimer la clĂ© publique PEM d'origine de vos hĂŽtes (par exemple, dans ~/.ssh/authorized_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 -KVous ajouterez ainsi la clé publique de l'autorité de certification et le descripteur de clé à l'agent SSH.
Exportez maintenant la clé publique pour créer le certificat :
$ ssh-add -L | tail -1 > sk-user-ca.pubCréez un certificat avec une durée de validité, par exemple, d'une heure maximum :
$ 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.pubEt maintenant, reconnectez-vous via SSH :
$ ssh -i emergency username@hostSi votre fichier .ssh/config pose des problĂšmes de connexion, vous pouvez lancer ssh avec l'option -F none pour vous en passer. Si vous devez envoyer le certificat Ă un collĂšgue, la maniĂšre la plus simple et sĂ©curisĂ©e est d'utiliser . Cela nĂ©cessitera seulement deux fichiers â dans notre cas, ce sont emergency et emergency-cert.pub.
Ce que j'apprécie dans cette approche, c'est le support matériel. Vous pouvez mettre les clés de sécurité dans un coffre-fort, et elles n'iront nulle part.
En tant que publicité
Serveurs Ăpiques â ce sont des avec de puissants processeurs AMD, frĂ©quence du cĆur CPU jusqu'Ă 3,4 GHz. La configuration maximale permet de gĂ©rer pratiquement toutes les tĂąches â 128 cĆurs CPU, 512 Go de RAM, 4000 Go NVMe. Rejoignez-nous !
Source : habr.com
