web-dev-qa-db-fra.com

Quel est le moyen le moins sûr de stocker un mot de passe utilisé par un script?

J'ai un script Bash qui s'authentifie automatiquement avec un service en utilisant mon nom d'utilisateur et mon mot de passe. Les informations d'identification sont actuellement stockées sous forme de texte brut dans le script.

Quelles précautions dois-je prendre pour stocker ces informations d'identification de manière sécurisée tout en permettant l'accès au script?

Points de clarification:

  • Je comprends que, si disponible, d’autres méthodes d’authentification devraient être utilisées à la place. Je veux toujours savoir quoi faire dans le cas où l'authentification par mot de passe est la seule option.
  • Ne pas stocker le mot de passe du tout n'est pas une réponse acceptable ici. Je demande à propos du cas dans lequel le script doit avoir un accès sans surveillance au mot de passe.
12
ændrük

Quel genre de service? Certains services ont d’autres méthodes pour s’authentifier, par exemple: Clés SSH pour SSH en conjonction avec l'agent SSH.

Je stockais le mot de passe séparément du script et m'assurais que tous les composants de chemin d'accès disposent des autorisations appropriées. Par exemple, assurez-vous que, dans le chemin /path/to/file, /, /path et /path/to soient la propriété d'un utilisateur de confiance (root) et qu'ils ne le sont pas. accessible en écriture à une personne qui n’a pas le droit de voir vos fichiers. Enfin, les autorisations recommandées pour file sont 600 ou 400.

Cette file pourrait ressembler à ceci:

PASSWORD='something that you cannot remember'

Dans votre script, utilisez le code ci-dessous pour importer la variable:

. /path/to/file

En ce qui concerne votre script, assurez-vous qu’il ne contient pas de faille pouvant permettre à un attaquant d’exécuter du code dans le contexte du script (par exemple, un environnement non contrôlé qui peut comporter un jeu de variables $PATH arbitraire ou une utilisation non valide d’autres fichiers fichier inscriptible dans le monde).

En ce qui concerne la protection réelle de votre mot de passe, vous ne pouvez pas. Il doit être disponible d'une manière ou d'une autre pour l'autre service. Vous pouvez également chiffrer le fichier/script contenant le mot de passe à l'aide de openssl ou gpg. Vous devez donc saisir un mot de passe avant que les informations d'identification ne soient déverrouillées. Ceci est particulièrement utile si le mot de passe de votre service est difficile à retenir.

8
Lekensteyn

Au lieu de coder en dur le mot de passe dans le fichier, stockez-le dans un fichier séparé et protégez le fichier (chmod 700 ou chmod 500) de sorte que seuls les utilisateurs autorisés puissent y accéder.

Récupérez le mot de passe avec cat /dir/to/file/with/.password au lieu de lire le fichier et d'en stocker le contenu dans une variable.

13
Rinzwind