Question

Je travaille sur un script Perl utilisant Attendre de vous connecter via telnet à des ordinateurs distants (don demandez pas, je dois utiliser telnet). Je fais aussi forcément les opérations de connexion p4 si nécessaire et utilise expect pour canaliser les mots de passe corrects. Pour le moment, je viens de lire les mots de passe de la variable d’environnement en texte clair, c’est-à-dire export PASSWORD = mot de passe , ce qui, à mon avis, n’est pas bon en matière de sécurité.

Quel est le meilleur moyen de stocker des mots de passe pour des scripts tels que ceux-ci qui nécessitent beaucoup de mots de passe pour plusieurs systèmes? Crypté dans un fichier texte en quelque sorte? Ou autre chose?

N'oubliez pas que je ne peux pas modifier facilement les systèmes existants. Par exemple, je ne peux pas vraiment installer SSH ou quoi que ce soit du genre.

Était-ce utile?

La solution

Votre meilleur moyen est probablement de placer les mots de passe dans un fichier séparé et de verrouiller la sécurité de ce fichier afin que vous disposiez d'un accès en lecture. Malheureusement, si vous stockez un mot de passe chiffré dans votre script, vous devez également enregistrer la méthode de déchiffrement afin qu'un attaquant puisse exécuter le déchiffrement et récupérer votre mot de passe.

Autres conseils

Il y avait une question très similaire précédemment, voir ma réponse . à cela.

En bref, un humain doit mettre fin à la chaîne de confiance. Tout le reste est obscurcissant.

Pourquoi vous soucier des mots de passe dans le script si vous utilisez telnet? Un attaquant présumé va trouver qu'il est aussi facile de capturer les données sur le fil que sur la machine distante, et vous ne pouvez vraiment rien y faire.

Cela ressemble à une tentative de placer des barres dans la fenêtre et de laisser la porte s'ouvrir.

Puisque vous utilisez déjà expect, vous devriez envisager de pouvoir rediriger un gpg -d sur un fichier crypté contenant vos mots de passe. Stocker des mots de passe dans une variable d’environnement système est tout simplement faux. Le mot de passe qui serait utilisé pour déchiffrer le fichier gpg serait entré au démarrage, puis chargez tous les mots de passe du fichier et exécutez vos fichiers. Ensuite, vous avez terminé. Ainsi, les mots de passe n'existent qu'en texte brut lorsque l'application est en cours d'exécution.

Modifier simplement comme note parallèle, l'insertion de mots de passe dans un script est une mauvaise chose; Rappelez-vous que le script est juste un fichier texte qui facilite la visualisation de ce mot de passe. De même, même les applications que vous compilez peuvent être inversées avec "chaînes". qui peut rechercher des chaînes contenues dans le code (généralement des mots de passe).

Si vous utilisez Mac OS X, j'ai trouvé cette astuce pour récupérer les noms d'utilisateur et les mots de passe de votre trousseau .

Mise à jour : le lien semble rompu à partir du 22 juillet 2013. L'extrait de code suivant indique comment j'utilise cette technique (pour télécharger les données de vente iTunes):

domain="itunesconnect.apple.com"
user="user@example.com"
pass=$(security find-internet-password -ws $domain -a $user)

J'aime la solution mentionnée précédemment consistant à mettre les mots de passe dans un fichier séparé. De plus, vous pouvez hacher les mots de passe réels, un peu comme ce qui est fait dans / etc / passwd. Bien que vous puissiez utiliser la même clé de hachage pour chacun d’eux en fonction de l’application de votre application. Évidemment, l'inconvénient est que quelqu'un doit entrer le hashkey pour exécuter votre script et que cela ne fonctionnera pas dans un environnement de traitement par lots.

Vous pouvez commencer à apprendre quelque chose sur le hachage à partir de ce flux de pile question

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top