GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment configurer le chiffrement de lecteur BMC à l'aide d'EMP

Présentation

Le chiffrement de disque BMC à l'aide de phoenixNAP EMP (Encryption Management Platform) fournit la sécurité des données nécessaire pour votre disque Bare Metal Cloud. La plate-forme EMP sert de serveur de gestion de clés, garantissant que les informations de chiffrement ne sont pas stockées sur le disque.

Le déverrouillage du lecteur se produit à chaque redémarrage. En cas de compromission, vous révoquez les autorisations via la plate-forme EMP et le lecteur reste en sécurité.

Ce didacticiel en trois parties explique comment configurer le chiffrement de lecteur BMC avec un script Python automatisé à l'aide d'EMP.

Partie 1 :Pré-configuration

La pré-configuration comprend toutes les étapes nécessaires pour créer un compte EMP et générer des certificats client.

1. Obtenir un compte EMP

Si vous avez déjà un compte EMP, ignorez cette étape. Sinon, créez un compte EMP :

1. Allez sur https://emp.phoenixnap.com/.

2. Cliquez sur S'INSCRIRE pour créer un compte.

3. Saisissez vos informations d'inscription et choisissez un mot de passe fort d'au moins 14 caractères.

Cliquez sur S'INSCRIRE pour continuer.

4. Choisissez le nom de compte souhaité et cliquez sur Soumettre la demande pour créer un nouveau compte.

5. Attendez le consentement de l'administrateur par e-mail. Lorsque le compte reçoit l'approbation, connectez-vous et passez à l'étape suivante.

2. Créer un groupe

Une fois le compte approuvé, créez un groupe et ajoutez une application EMP.

1. Accédez aux Groupes onglet à gauche.

2. Cliquez sur l'icône plus pour ajouter un nouveau groupe :

4. Définissez un titre de groupe et Enregistrer .

5. Le tableau de bord affiche la page de groupe nouvellement créée. Cliquez sur Nouvelle application bouton pour ajouter une nouvelle application.

6. Nom l'application, faites défiler vers le bas et cliquez sur Enregistrer .

7. Un message de confirmation pour la création de l'application apparaît. Copiez et enregistrez l'applicationUUID pour la prochaine étape.

3. Générer une clé privée et un certificat

Effectuez toutes les étapes suivantes sur la machine serveur Bare Metal Cloud . Connectez-vous en SSH au serveur BMC avec :

ssh -i <path to id_rsa> [email protected]<public IP>

Le <path to id_rsa> est le chemin d'accès à votre fichier d'identité. Normalement, le chemin du fichier est /.ssh/id_rsa .

Utilisez la commande openssl pour générer la paire de clé privée et de certificat via le terminal.

1. Pour générer la clé privée, exécutez :

openssl genrsa -out <key name>.key

2. Utilisez la clé privée pour générer le certificat :

openssl req -new -x509 -key <key name>.key -out <certificate name>.cert -days <number of days>

Remplissez les informations demandées. Pour le nom commun , mettez l'UUID de l'application EMP.

4. Télécharger le certificat

Téléchargez le certificat généré dans l'application EMP.

1. Accédez aux applications sur la gauche et localisez l'application.

2. Changez la méthode d'authentification en basée sur certificat :

3. Téléchargez le certificat généré et mettez à jour les modifications :

4. Enfin, modifiez l'interface de l'application et remplacez-la par KMIP en cliquant sur le texte à côté du nom de l'application :

Partie 2 :Chiffrement du disque

Les étapes suivantes se déroulent sur la machine serveur .

1. Installer PyKMIP

Installez le PyKMIP bibliothèque à l'aide du gestionnaire de paquets pip.

1. Mettez à jour et mettez à niveau le système :

sudo apt update && sudo apt upgrade

2. Installez pip pour Python 3 avec la commande suivante :

sudo apt install python3-pip

3. Mettre à jour le pip :

pip3 install --upgrade pip

4. Installez le module PyKMIP en exécutant :

sudo -H pip3 install pykmip

La bibliothèque permet de créer, d'activer et de récupérer la clé de chiffrement de l'appareil.

2. Créer et récupérer la clé

Le script Python permet de générer et d'activer un objet de sécurité connecté à l'application EMP. La clé chiffre le lecteur.

1. Créez un pykmip.conf fichier avec les informations suivantes :

[client]
host=emp.phoenixnap.com
port=5696
ssl_version=PROTOCOL_TLSv1_2
certfile=<path to the generated certificate>/<certificate name>
keyfile=<path to the generated key>/<key name>
ca_certs=<path to the signed certificate>/<certificate name>
do_handshake_on_connect=True
suppress_ragged_eofs=True

Le fichier de configuration est lié à trois objets de sécurité :

  • fichier clé. La clé privée générée.
  • fichier de certificat. Le certificat créé à l'aide de la clé privée.
  • ca_certs. Un certificat signé par l'autorité de certification.

Le script utilise le pykmip.conf fichier de configuration pour établir une connexion sécurisée et vérifiée avec l'application EMP.

2. Créez un script Python personnalisé à l'aide d'un éditeur Python et donnez un nom au script. Ajoutez le code suivant :

# Import libraries
from kmip.pie import client
from kmip import enums
# Establish connection
c = client.ProxyKmipClient(config_file="<path to conf file>")
# Create key
with c:
    key_id = c.create(
        enums.CryptographicAlgorithm.AES,
        256,
        name='Test Key',
        cryptographic_usage_mask=[
            enums.CryptographicUsageMask.ENCRYPT,
            enums.CryptographicUsageMask.DECRYPT
        ]
    )
# Activate key
    c.activate(key_id)
# Get key
    key = c.get(key_id)
    print(key)

Le script établit une connexion basée sur le contenu de pykmip.conf dossier. Assurez-vous de modifier le chemin d'accès à l'emplacement de votre fichier de configuration .

Lorsque le client crée une connexion, le script génère une clé appelée Test Key . Les paramètres décrivent l'objet clé, ainsi que l'utilisation prévue.

3. Exécutez le script pour générer l'objet clé :

python3 <script name>.py

La sortie du script affiche la clé. Le code a généré avec succès l'objet de sécurité dans l'application EMP.

4. Ouvrez l'objet de sécurité en accédant aux Objets de sécurité onglet à gauche. Ouvrez l'objet clé et copiez l'UUID :

5. À l'aide de l'UUID de la clé, créez un script Python nommé key.py pour récupérer la clé. Insérez le code suivant, en ajoutant l'UUID de l'objet de sécurité à la ligne 4 :

from kmip.pie import client
c = client.ProxyKmipClient(config_file="<path to pykmip.conf file>")
with c:
    key = c.get('<uuid of security object>')
    print(key)

3. Chiffrer l'appareil à l'aide de LUKS et de CryptSetup

Cette partie crée un conteneur de fichiers et le chiffre à l'aide du chiffrement LUKS avec la clé extraite de la plate-forme EMP.

1. Créez un conteneur de fichiers chiffré à l'aide de la commande dd :

dd of=secretfs bs=1G count=0 seek=2

2. Remplacez l'autorisation du conteneur par 600 en utilisant la commande chmod :

sudo chmod 600 secretfs

3. Attachez le conteneur de fichiers à un périphérique en boucle avec le losetup commande :

sudo losetup /dev/loop101 secretfs

4. Utilisation de key.py script, formatez le périphérique de boucle à l'aide de cryptsetup et luksFormat :

python3 key.py | sudo cryptsetup -y luksFormat /dev/loop101

Cette commande crypte l'appareil à l'aide du cryptage LUKS avec la clé stockée dans EMP.

5. Ouvrez le conteneur de fichiers chiffrés sur le périphérique de boucle à l'aide de la clé :

python3 key.py | sudo cryptsetup luksOpen /dev/loop101 secretfs

L'appareil s'ouvre maintenant à l'aide de la clé stockée dans EMP.

4. Créer un système de fichiers sur l'appareil

Créez le système de fichiers sur le conteneur de l'appareil chiffré, mappez le système de fichiers chiffré et montez l'appareil.

1. Formatez le disque en utilisant le mkfs commande :

sudo mkfs.ext4 /dev/mapper/secretfs

2. Créez un point de montage pour le système de fichiers :

sudo mkdir /mnt/encrypted

3. Montez le disque :

sudo mount /dev/mapper/secretfs /mnt/encrypted

4. Vérifiez que l'appareil est monté :

df | grep secretfs

5. Redémarrez :

sudo reboot

Partie 3 :Créer un script au démarrage

Après le redémarrage, le disque se démonte automatiquement. Les étapes ci-dessous expliquent comment monter manuellement l'appareil après un redémarrage. Les mêmes étapes déverrouillent et montent le disque dans le script de démarrage automatisé.

1. Déverrouillage et montage manuels

Les commandes suivantes ouvrent et montent le disque :

1. Attachez le périphérique de boucle à un conteneur de fichiers :

sudo losetup /dev/loop101 secretfs

2. Ouvrez l'appareil à l'aide de la clé :

python3 key.py | sudo cryptsetup luksOpen /dev/loop101 secretfs

3. Montez l'appareil :

sudo mount /dev/mapper/secretfs /mnt/encrypted

4. Vérifiez que l'appareil monté à l'aide du df commande :

df | grep secretfs

2. Déverrouillage et montage automatisés

La dernière étape consiste à automatiser les commandes précédentes pour qu'elles s'exécutent au démarrage. La clé est extraite automatiquement de la plate-forme EMP, ce qui permet de déverrouiller et de monter le disque à chaque redémarrage. Cette étape garantit également que la clé n'est stockée nulle part sur la machine.

1. Créez un service dans /etc/init.d dossier. Nommez le fichier sans aucune extension. Par exemple, si vous utilisez l'éditeur vim et nommez le service automount , exécutez :

sudo vim /etc/init.d/automount

2. Ajoutez les lignes de code suivantes :

#!/usr/bin/env python3
### BEGIN INIT INFO
# Provides:        <service name>
# Required-Start: $ALL
# Should-Start: 
# Required-Stop:
# Should-Stop:
# Default-Start:  2 3 5
# Default-Stop:
# Description:    Automated LUKS Unlock
### END INIT INFO
from kmip.pie import client
import subprocess
import os
from requests import get, ConnectionError, Timeout

# Change directory to the location of secretfs
os.chdir('<path to secretfs>')

# First part: Establish a client connection and fetch key
try:
    request = get("https://emp.phoenixnap.com", timeout=60)
except(ConnectionError, Timeout):
    print("Connection error, retrying...")
c = client.ProxyKmipClient(config_file="./pykmip.conf")
with c:
    SECRET = str(c.get('<uuid security object>'))
    print("Success! Unlocking and mounting the device.")

# Second part: Automating the commands to attach, unlock and mount the device
LUKS_DEVICE = "/dev/loop101"
LUKS_DEVICE_MAP = "secretfs"
LUKS_DEVICE_MOUNT_POINT = "/mnt/encrypted"
MAPPER = '/dev/mapper/' + LUKS_DEVICE_MAP
subprocess.run(['sudo', 'losetup', LUKS_DEVICE, LUKS_DEVICE_MAP])
ps = subprocess.Popen(('echo', SECRET), stdout=subprocess.PIPE)
subprocess.check_output(('sudo', 'cryptsetup', 'luksOpen', LUKS_DEVICE, LUKS_DEVICE_MAP), stdin=ps.stdout)
subprocess.run(['sudo', 'mount' ,MAPPER ,LUKS_DEVICE_MOUNT_POINT])

Le script comporte deux parties :

  • La première partie sont les mêmes lignes de code que dans le key.py script, qui récupère la clé de la plate-forme EMP à l'aide de l'UUID de l'objet de sécurité.
  • La deuxième partie du script suit les étapes du déverrouillage et du montage manuels, de l'ouverture et du montage du lecteur chiffré.

3. Modifiez l'autorisation en 755 en utilisant chmod pour rendre le service exécutable :

sudo chmod 755 <service name>

4. Mettez à jour les informations de service sur le système :

sudo update-rc.d <service name> defaults

La configuration du service automatisé de déverrouillage et de montage de l'appareil se termine par cette étape.

5. Redémarrez le système :

sudo reboot

6. Utilisation du df commande, vérifiez que l'appareil est monté automatiquement après le redémarrage :

df | grep secretfs

En cas de compromission, supprimez l'objet de sécurité de votre compte EMP. Le prochain redémarrage de l'appareil ne peut pas récupérer la clé, et le disque reste verrouillé et sécurisé.


Ubuntu
  1. Comment configurer un RAID matériel à l'aide de MegaCLI

  2. Comment configurer un deuxième disque sur des serveurs BMC à deux disques

  3. Comment configurer un équilibreur de charge sur un serveur BMC s0.d1.small

  4. Comment configurer des clés SSH

  5. Comment définir une adresse proxy à l'échelle du système à l'aide d'un script shell ?

Comment créer une clé USB Ubuntu Live à l'aide de la ligne de commande

Comment configurer l'authentification SSH sans mot de passe sous Linux

Comment configurer une connexion SSH sans mot de passe à l'aide de ssh-keygen ?

Comment utiliser le chiffrement des e-mails dans Ubuntu

Comment tuer le serveur X à l'aide d'une combinaison de touches ? ?

Comment configurer le cryptage des e-mails dans cPanel ?