Aller au contenu principal

how-encrypted-pass-bash

Comment utiliser un mot de passe crypté dans un script Bash

Nous allons apprendre comment utiliser le mot de passe crypté dans un script bash.

Introduction

Nous écrivons souvent des scripts pour l'automatisation. Cela nous permet d'effectuer des tâches répétitives en peu de temps et avec une grande précision. Cependant, la situation devient difficile lorsque nous voulons accéder à des informations sensibles à partir du script, par exemple des noms d'utilisateur et/ou des mots de passe. Dans ce cas, nous pouvons crypter le mot de passe et y accéder à partir du script.

Dans cet article, nous verrons comment crypter et décrypter le mot de passe à l'aide de la commande openssl. Nous verrons également comment cette approche nous permet d'utiliser des informations sensibles de manière sécurisée.

Cryptage du mot de passe

openssl est un utilitaire de ligne de commande qui fournit une variété de fonctions de cryptographie de la bibliothèque cryptographique d'OpenSSL à partir du shell. Nous pouvons l'utiliser à diverses fins telles que :

  • Pour créer et gérer des clés privées
  • Pour effectuer des opérations cryptographiques à clé publique
  • Pour créer des certificats X.509
  • Pour effectuer des tests client et serveur SSL/TLS

Cependant, nous l'utiliserons (OpenSSL) pour le cryptage et le décryptage des mots de passe.

Supposons que notre mot de passe soit BmwS3cr3t. Maintenant, chiffrons-le à l’aide de la commande ci-dessous :

echo 'BmwS3cr3t' | openssl enc -aes-256-cbc -md sha512 -a -pbkdf2 -iter 100000 -salt -pass pass:'An0terS3cr3t'

Dans cet exemple, nous avons utilisé de nombreux paramètres avec la commande. Voyons à quoi sert chaque paramètre :

  • enc -aes-256-cbc: Il représente le type de codage. Nous utilisons la norme de chiffrement avancée à 256 blocs avec le chaînage de blocs de chiffrement (CBC).
  • md sha512: Il représente le type de résumé du message. Nous utilisons l'algorithme cryptographique SHA512.
  • a: Il représente le codage et le décodage en format base64. Il effectue l'opération de codage après le chiffrement et le décodage avant le déchiffrement.
  • pbkdf2 : il représente la fonction de dérivation de clé basée sur le mot de passe 2 (PBKDF2) qui rend les attaques par force brute beaucoup plus difficiles
  • iter : Il représente le nombre de calculs qui seront utilisés par le PBKDF2. Dans ce cas, il s'agit de 1000.
  • sel : Il représente des données aléatoires qui rendent la sortie chiffrée différente à chaque fois, même avec le même texte brut.
  • pass : il représente le mot de passe qui sera utilisé pour crypter les données. Dans notre cas, il s'agit de BAn0terS3cr3t. À partir de maintenant, nous l'appellerons mot de passe de cryptage.
U2FsdGVkX1+27rcikhXGKjPsw5JuuKYS/A1O4Th7opM=

Décryptage du mot de passe

De la même manière, nous pouvons décrypter le mot de passe à l'aide de la commande openssl. Par exemple, la commande ci-dessous décrypte le mot de passe :

echo U2FsdGVkX1+27rcikhXGKjPsw5JuuKYS/A1O4Th7opM= | openssl enc -aes-256-cbc -md sha512 -a -pbkdf2 -iter 100000 -salt -pass pass:'An0terS3cr3t' -d

Dans cet exemple, nous avons utilisé exactement les mêmes paramètres avec en plus l'option -d. Ici, l'option -d indique l'opération de décryptage.

Utilisation d'un mot de passe crypté dans un script.

Dans cette section, nous allons écrire un script shell qui utilise le mot de passe crypté.

  1. Tout d’abord, créez un fichier zip avec le mot de passe B0pS3cr3t :
zip -e secrets.zip *.txt

Dans cet exemple, nous avons utilisé l'option -e avec la commande qui accepte le mot de passe de la ligne de commande.

  1. Ensuite, cryptez le mot de passe du fichier zip et stockez-le dans le fichier texte à l'aide de la commande ci-dessous :
echo 'B0pS3cr3t' | openssl enc -aes-256-cbc -md sha512 -a -pbkdf2 -iter 100000 -salt -pass pass:'An0terS3cr3t' > .password
  1. Maintenant, mettez à jour l'autorisation du fichier afin que seul le propriétaire de ce fichier ou l'utilisateur root puisse y accéder :
chmod 600 .password
  1. Enfin, décryptez le mot de passe à l’aide de la commande openssl comme indiqué ci-dessous :
cat .password | openssl enc -aes-256-cbc -md sha512 -a -pbkdf2 -iter 100000 -salt -pass pass:'An0terS3cr3t' -d

Nous avons maintenant un fichier zip et un mot de passe crypté. Écrivons donc le script bash pour extraire le fichier zip

sudo nano extract-zip.sh
#! /bin/bash
ZIP_FILE="secrets.zip"
ZIP_PASSWORD=`cat .password | openssl enc -aes-256-cbc -md sha512 -a -pbkdf2 -iter 100000 -salt -pass pass:'An0terS3cr3t' -d`
echo "Step-1: Directory contents before extracting zip:"
ls -1
echo -e "\n"

# Extract zip file
echo "Step-2: Extracting the zip: "
unzip -P ${ZIP_PASSWORD} ${ZIP_FILE}
echo -e "\n"
echo "Step-3: Directory contents after extracting zip: "
ls -1

Ensuite, définissez l’autorisation exécutable sur le script à l’aide de la commande chmod,

sudo chmod +x extract-zip.sh

Enfin, exécutez le script et observez le résultat:

./extract-zip.sh

Ici, nous pouvons voir que le script est capable d’effectuer l’opération de décompression avec succès.