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 en texte brut dans le script.
Quelles précautions dois-je prendre pour stocker le plus en toute sécurité ces informations d'identification tout en autorisant l'accès au script?
Points de clarification:
- Je comprends que, si elles sont disponibles, 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 du tout le mot de passe n'est pas une réponse acceptable ici. Je pose des questions sur le cas où le script doit avoir un accès sans surveillance au mot de passe.
Réponses:
Quel genre de service? Certains services ont d'autres méthodes pour s'authentifier, par exemple les clés SSH pour SSH conjointement avec l'agent SSH.
Je stockerais le mot de passe séparément du script et m'assurerais que tous les composants de chemin ont les autorisations correctes définies. Par exemple, assurez - vous que dans le chemin
/path/to/file
,/
,/path
et/path/to
appartiennent à un utilisateur qui vous avez confiance (root
) et que ceux - ci ne sont pas inscriptibles par quelqu'un qui n'a pas le droit de voir vos fichiers. Enfin, les autorisations recommandées pourfile
600 ou 400.Cela
file
pourrait ressembler à ceci:Dans votre script, utilisez le code ci-dessous pour importer la variable:
Quant à votre script, assurez-vous qu'il ne contient pas de trous qui pourraient permettre aux attaquants d'exécuter du code dans le contexte du script (par exemple, environnement non contrôlé qui peut avoir un
$PATH
ensemble de variables arbitraires ou une utilisation non valide d'autres fichiers (par exemple, sourcing d'un fichier accessible en écriture)) .Quant à la protection réelle de votre mot de passe, vous ne pouvez pas. Il doit être accessible d'une manière ou d'une autre à l'autre service. Comme alternative, vous pouvez crypter le fichier / script contenant le mot de passe en utilisant
openssl
ougpg
alors vous devez entrer 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.la source
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
ouchmod 500
) afin 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.la source
--passphrase-file
option gpg .chmod 400
pour les fichiers (lecture seule). Bien sûr, vous devez sécuriser les principaux répertoires (700 ou 500, voire 100 si vous êtes paranoïaque). Notez que 400 (ou 500 pour les répertoires) sont suffisants, d'autres modes (100) peuvent être considérés comme une sécurité par l'obscurité , tout comme masquer le fichier en mettant un point devant le nom.Je sais que c'est une vieille question mais j'ai rencontré ce problème similaire et j'ai utilisé le porte-clés d'Ubuntu pour le résoudre. Voici une solution sur ubuntu 18.04LTS Ouvrez le terminal Notez
keyring set {{service}} {{username}}
par exemple si vous l'utilisez pour la journalisation des mots de passe de l'école:Il vous connectera pour un mot de passe entrez le mot de passe. Maintenant, le mot de passe que vous avez entré est stocké dans le trousseau de clés Ubuntu.
Pour obtenir ce mot de passe, écrivez dans le terminal:
pour l'utiliser dans le contexte d'un script:
Le mot de passe contient maintenant le mot de passe que vous avez entré précédemment.
la source