web-dev-qa-db-fra.com

Dois-je avoir un mot de passe pour ma clé SSH RSA?

Avant de commencer à mon poste actuel (dans une petite entreprise), mon bureau n’avait pas de pare-feu sur le réseau et rien n’était littéralement sauvegardé. Maintenant que je suis connecté en tant que département informatique/administrateur unique, je fais tout ce que je peux pour changer cela. Après avoir expliqué à notre chef à quel point nous étions vulnérables, il m'a permis de mettre en place des serveurs de sauvegarde, dont l'un se trouve chez lui.

En ce moment, j'essaie de tout configurer pour pouvoir automatiser les sauvegardes quotidiennes. Je prévois d'utiliser rsync via ssh pour le faire. Pour des raisons de sécurité ainsi que pour faciliter l'automatisation, je prévoyais de désactiver la connexion par mot de passe ssh et d'utiliser uniquement la validation de clé rsa. Eh bien, si j’ai un mot de passe rsa, je devrai toujours entrer un mot de passe, et c’est un problème.

Ne pas avoir de mot de passe rsa rend les choses beaucoup moins sécurisées? Je suis la seule personne dans l'entreprise à avoir une idée de ce genre de chose, je ne m'inquiète donc pas trop de voir quelqu'un appeler un terminal sur ma machine (qui est toujours verrouillé quand je suis AFK, de toute façon ) et ssh-ing dans l’un des serveurs de sauvegarde et causant des dommages. Je suis encore très très novice dans le monde de l'administration des systèmes, et c'est la première fois que je fais quelque chose dans ce genre, et je ne veux laisser aucune faille dans la configuration de la sécurité.

Les ordinateurs en question exécutent Ubuntu 10.10, SME Server et OSX 10.6, si cela peut faire une différence.

69
eckza

Comme vous le savez, l'avantage que vous offre la phrase secrète est que si une personne est capable de lire votre clé privée, elle est "incapable" de l'utiliser.

Si une personne est en mesure d’accéder à cette clé privée, vous devriez considérer qu’elle a accès/compromis aux machines configurées avec la clé publique. Des choses comme .bash_history ou .ssh/config ne font que rendre cela plus facile, même si votre .ssh/known_hosts est masqué.

Ne pas avoir de mot de passe sur votre clé n'est pas la fin du monde, voici 3 idées pour essayer de vous aider à vous protéger un peu mieux malgré cela. ( Le gros problème est le second, lisez ceci si rien d'autre )


  1. N'utilisez pas simplement la même clé sur toutes les machines et tous les utilisateurs. Générez chaque utilisateur sur chaque machine (qui doit faire ce genre de chose) sa propre paire de clés. Cela vous permettra de garder un contrôle fin sur ce qui est capable de ssh où.

  2. Lors de l'ajout de la clé à votre fichier registered_keys, vous pouvez la verrouiller pour pouvoir uniquement exécuter une commande spécifique ou l'utiliser uniquement à partir d'un hôte spécifique.

    Voir man ssh et rechercher commande = et à partir de =

    La syntaxe est quelque chose comme:

    from="1.2.3.4",command="/path/to/executable argument" ssh-rsa key name

    ie pop 'rsync' dedans et seulement 'rsync' pourrait être appelé par votre clé, et seulement à partir de l'adresse IP 1.2.3.4. Plusieurs adresses IP peuvent être séparées par ,. Les noms d'hôte sont également pris en charge.

  3. Une autre chose qui me vient à l’esprit est la directive 'AllowUser' dans votre sshd_config

    AllowUsers

    Ce mot-clé peut être suivi d'une liste de modèles de noms d'utilisateur, séparés par des espaces. Si spécifié, la connexion est autorisée uniquement pour les noms d'utilisateur correspondant à l'un des modèles. '*' et '?' peut être utilisé comme joker dans les modèles. Seuls les noms d'utilisateur sont valides. un ID utilisateur numérique n'est pas reconnu. Par défaut, la connexion est autorisée pour tous les utilisateurs. Si le modèle prend la forme USER @ Host, USER et Host sont vérifiés séparément, ce qui limite les connexions à des utilisateurs particuliers à partir d'hôtes particuliers.

    Cela garantit essentiellement que l'utilisateur ne peut se connecter qu'à partir d'un certain emplacement. (bien qu'il accepte aussi les caractères génériques) Ne résoudra pas tous vos problèmes, mais au moins, cela rendra les choses plus difficiles pour les autres.

84
PriceChild

Vous pouvez utiliser quelque chose comme le trousseau pour que le mot de passe soit moins pénible. Ceci est légèrement plus sécurisé que d'utiliser un identifiant sans mot de passe, et peut être utilisé en combinaison avec les autres réponses ici. La réponse de PriceChild était plutôt bonne.

4
Faheem Mitha