Appliquer les mots de passe des clés SSH?

9

Je cherche à supprimer les connexions basées sur un mot de passe pour SSH. Cependant, je ne veux pas autoriser les clés ssh sans mot de passe, car ce serait encore pire.

Comment puis-je m'assurer que seules les clés SSH qui ont des mots de passe peuvent se connecter?

Si cela ne peut pas être fait, existe-t-il des alternatives, comme la gestion centralisée de la génération de clés SSH et empêcher les utilisateurs de générer et / ou d'utiliser leurs propres clés? Quelque chose comme PKI, je suppose.

Lee B
la source

Réponses:

20

La phrase secrète qui peut être définie sur la clé privée n'est pas liée au serveur SSH ou à la connexion à celui-ci. La définition d'une phrase secrète pour la clé privée n'est qu'une mesure de sécurité que le propriétaire de la clé peut prendre afin d'empêcher l'accès à son shell distant par un tiers en cas de vol de la clé privée.

Malheureusement, vous ne pouvez pas forcer les utilisateurs à sécuriser leurs clés privées avec des mots de passe. Parfois, des clés privées non protégées sont nécessaires pour automatiser l'accès au serveur SSH distant. Une bonne habitude que je recommande fortement dans de tels cas est de conseiller aux utilisateurs de hacher le fichier known_hosts (stocké dans ~ / .ssh / known_hosts ), qui conserve les informations sur les hôtes distants auxquels l'utilisateur se connecte, en utilisant la commande suivante:

ssh-keygen -H -f ~/.ssh/known_hosts

De cette façon, même si un tiers accédait à une clé privée non protégée, il serait extrêmement difficile de savoir pour quels hôtes distants cette clé est valide. Bien sûr, l'effacement de l'historique du shell est obligatoire pour que cette technique ait une valeur quelconque.

En outre, une autre chose que vous devez toujours garder à l'esprit est de ne pas autoriser root à se connecter à distance en ajoutant les éléments suivants dans la configuration de votre serveur SSH (sshd_config):

PermitRootLogin no

D'un autre côté, si vous souhaitez empêcher les utilisateurs d'utiliser des clés pour s'authentifier, mais à la place utiliser des mots de passe, vous devez ajouter ce qui suit à votre sshd_config :

PasswordAuthentication yes
PubkeyAuthentication no
Né pour rouler
la source
8

Ce n'est pas possible.

Les utilisateurs peuvent tout faire avec leurs fichiers de clés, les convertir en mot de passe même si vous les avez générés par exemple.

siposa
la source
3

Tu ne peux pas. Une fois que l'utilisateur a les données clés en sa possession, vous ne pouvez pas l'empêcher de supprimer la phrase secrète. Vous devrez rechercher d'autres façons de faire votre authentification.

womble
la source
2

Pour prendre le contrôle des clés utilisateur, toutes les clés doivent être déplacées vers un répertoire appartenant à la racine où les clés sont lisibles mais non modifiables par l'utilisateur final. Cela peut être fait en mettant à jour sshd_config.

Une fois les fichiers de clés dans un emplacement contrôlé, vous aurez besoin d'une interface de gestion pour mettre à jour (et appliquer la politique de mot de passe) suivie de la distribution des clés aux hôtes requis. Soit vous en lancez un vous-même, soit vous jetez un œil à des produits tels que FoxT / Tectia etc.

PT
la source
... qui brise les avantages de la clé publique
Patwie
0

Une atténuation serait d'utiliser le plug-in du module PAM de l'authentificateur Google. Habituellement disponible dans les packages officiels.

Cela rendra 2FA disponible via un code à 6 chiffres sur votre smartphone.

Instructions ici: Comment configurer l'authentification multifacteur pour SSH sur Ubuntu 16.04

Basil A
la source
1
Vous devez noter que cela ne répond pas directement à la question, mais est une (bonne) alternative.
ceejayoz
1
@ceejayoz Vous avez raison. J'ai ajouté "Une atténuation serait d'utiliser .." au début de la réponse tout à l'heure pour préciser que c'est une alternative.
Basil A
-1

SIMPLE, vous étendez simplement le protocole SSH afin que le client SSH ou l'agent SSH signale / définit un indicateur pour dire si la clé privée d'origine a été chiffrée ou non (peut-être que le côté serveur peut même poser une requête) - puisque le côté client a une visibilité de la clé privée et demande même déjà la phrase secrète lorsque la clé est chiffrée.

wallabyted
la source