Si votre script peut se connecter à l'un de ces serveurs, toute personne ayant accès au script (ou un accès privilégié à la machine sur laquelle le script s'exécute) peut se connecter à l'un de ces serveurs.
Si le script doit s'exécuter de manière autonome, tous les paris sont désactivés. La réponse est non, il n'y a pas de moyen absolument sûr de stocker les mots de passe dans un tel environnement . Il n'y a aucun moyen absolument sûr et pratique de faire quoi que ce soit.
Au lieu d'essayer d'éviter l'inévitable, vous devriez vous concentrer sur la défense en profondeur .
Bien sûr, vous devez bien sûr protéger les mots de passe de manière adéquate . Cela signifie généralement de les conserver dans un fichier distinct de votre script et de configurer des autorisations de système de fichiers restrictives . C'est à peu près tout ce que vous pouvez faire sur ce front, du point de vue de la sécurité.
D'autres mesures peuvent très certainement ajouter de l' obscurité au processus. Le chiffrement des mots de passe obligera l'attaquant à rechercher la clé de déchiffrement. L'utilisation d'une sorte de stockage protégé par le système d'exploitation protège généralement contre les autres utilisateurs accédant à votre clé (il n'offre donc aucun avantage sur les autorisations du système de fichiers, autre que d'être complexe à attaquer - et à utiliser). Ces mesures retarderont une attaque, mais ne l'empêcheront certainement pas contre un attaquant déterminé.
Maintenant, considérons les mots de passe comme publics pendant un moment. Que pouvez-vous faire pour atténuer les dommages?
Une solution ancienne et testée consiste à restreindre ce que ces informations d'identification peuvent faire. Sur un système UNIX, une bonne façon de procéder consiste à configurer un utilisateur distinct pour votre script et à limiter les capacités de cet utilisateur , à la fois sur les serveurs d'accès et sur les serveurs auxquels vous avez accédé. Vous pouvez limiter les capacités des utilisateurs au niveau SSH, au niveau du shell ou éventuellement en utilisant un mécanisme de contrôle d'accès obligatoire comme SELinux .
Vous pouvez également envisager de déplacer la logique de script dans les serveurs . De cette façon, vous obtenez une interface plus petite qui est plus facile à contrôler, et surtout à ...
Moniteur . Surveillez toujours l'accès aux serveurs. De préférence, authentification du journal et commandes exécutées dans un journal d’ajout uniquement . N'oubliez pas de surveiller les modifications du fichier de script à l'aide auditd
, par exemple.
Bien sûr, beaucoup de ces mécanismes ne sont pas utiles si vous n'avez aucun contrôle sur les serveurs, comme votre question semble impliquer. Si tel est le cas, je vous conseille de prendre contact avec les personnes administrant les serveurs et de leur faire connaître votre script et les pièges de sécurité potentiels.