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:
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.
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.