Comment utiliser des mots de passe cryptés dans les scripts Shell sous Linux
Les scripts shell peuvent vous faire gagner du temps et des efforts, mais si vous ne protégez pas vos mots de passe, ils peuvent être un handicap. Voici comment rester en sécurité.
Les scripts bash sont une partie importante du travail d'un administrateur système. Ils vous permettent d'automatiser les tâches banales et critiques.
L'une des meilleures choses avec les scripts est qu'ils peuvent s'exécuter indépendamment sans intervention humaine, mais il peut parfois être difficile d'automatiser les tâches qui nécessitent des mots de passe utilisateur. Voyons comment vous pouvez automatiser en toute sécurité les scripts qui nécessitent des mots de passe sans compromettre la sécurité.
Créer un script simple
Supposons que vous souhaitiez créer un script simple qui sauvegarde votre dossier de départ Linux vers un emplacement distant afin que vous puissiez facilement restaurer vos données en cas de perte de données.
Commencez par créer un fichier de script Bash dans votre dossier personnel, en utilisant la commande touch ou toute autre méthode, et nommez-le backup_home.sh. N'hésitez pas à utiliser n'importe quel nom et répertoire de votre choix.
Le script utilise la commande rsync, un puissant outil de copie de fichiers, afin de sauvegarder tous les fichiers de votre répertoire personnel local sur un serveur distant.
Copiez le contenu du script suivant et collez-le dans votre fichier Bash. N'oubliez pas de remplacer l'utilisateur john par le nom correct de votre utilisateur local. Fournissez également le nom d'utilisateur et l'adresse IP corrects du serveur distant.
#!/bin/bash
#Copy data to a remote server
rsync -avl --mkpath /home/john user_name@remote_server/home/BackupSi vous n'avez pas de serveur distant avec lequel tester, vous pouvez simplement installer VirtualBox et configurer une machine virtuelle sur votre machine locale. Utilisez l'invité VM comme serveur distant.
Enregistrez le fichier. Pour exécuter le script, vous devez lui accorder l'autorisation d'exécution à l'aide de la commande sudo chmod 755. Tous les utilisateurs peuvent exécuter le script mais seuls les utilisateurs sudo peuvent modifier le fichier.
Enfin, exécutez le script Bash depuis le terminal à l'aide de la commande :
./backup_home.shChaque fois que vous exécutez ce script, vous serez invité à entrer le mot de passe du serveur distant. Ce n'est pas idéal si vous souhaitez exécuter le script sans intervention humaine, comme lors de l'utilisation de Cron.
Automatisation de la connexion par mot de passe
Installez sshpass, un fournisseur de mot de passe non interactif, sur votre PC local ou sur le PC à partir duquel vous exécuterez le script.
Sur les distributions basées sur Debian
Si vous êtes sur une distribution basée sur Debian comme Ubuntu, Pop!_OS et Lubuntu :
sudo apt update && sudo apt install sshpassSur RHEL et Fedora
dnf install sshpassAprès avoir installé sshpass, modifiez le script pour qu'il ressemble à ceci.
#!/bin/bash
#Copy data to a remote server
sshpass -p "yourpassword" rsync -avl --mkpath /home/john user_name@remote_server/home/Backup
Ici, vous fournissez le mot de passe en texte clair. Évidemment, ce n'est pas le moyen idéal, car ce n'est pas sûr et ce n'est pas une bonne pratique. Si jamais le script tombe entre de mauvaises mains, vous avez de gros problèmes.
Pour rendre cela plus sûr, nous utiliserons GnuPG, un outil de cryptage sécurisé et open source.
Chiffrement de votre mot de passe
GnuPG est installé par défaut sur la plupart des systèmes Linux, mais s'il n'est pas installé sur votre système, voici comment installer GnuPG.
Créez un fichier caché nommé secrets à l'aide de la commande touch .secrets. Étant donné que nous avons masqué le fichier par défaut comme mesure de sécurité supplémentaire, voici comment vous pouvez afficher les fichiers cachés sous Linux.
Dans le fichier des secrets, entrez le mot de passe de votre PC distant et enregistrez-le.
Ensuite, cryptez le fichier à l'aide de la commande gpg.
sudo gpg -c .secretsVous serez invité à entrer une phrase de passe sécurisée et forte pour ouvrir le fichier crypté.
GnuPG créera un nouveau fichier avec l'extension .gpg ajoutée à l'ancien nom de fichier. Votre nouveau nom de fichier devrait maintenant être secrets.gpg, en supposant que vous avez utilisé le nom de fichier secrets.
Si vous affichez le contenu de secrets.gpg à l'aide de la commande cat, un texte charabia vous sera présenté pour montrer que votre mot de passe est crypté.
Pour afficher le contenu du fichier en texte brut, vous devrez le décrypter à l'aide de la commande suivante (vous serez invité à saisir le mot de passe que vous avez défini lors du cryptage) :
gpg -dq secrets.gpgUtilisation d'un mot de passe crypté dans votre script
Pour utiliser le mot de passe chiffré dans le script, mettez à jour le script comme suit :
#!/bin/bash
#Copy data to a remote server
gpg -dq secrets.gpg | sshpass rsync -avl --mkpath /home/john user_name@remote_server/home/BackupExécutez à nouveau les scripts de sauvegarde et cette fois, vous ne serez pas invité à entrer un mot de passe.
Automatisez les tâches avec des scripts bash
GnuGP est fréquemment utilisé pour sécuriser des fichiers et des données sensibles sur votre PC et est également un excellent outil pour sécuriser les mots de passe dans les scripts Bash automatisés sous Linux.
Vous pouvez faire beaucoup de choses avec les scripts Bash. Bash est un outil puissant qui peut vous aider à automatiser beaucoup de choses sur Linux et apprendre à écrire des scripts Bash est un investissement rentable.
