GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Cómo configurar BMC Drive Encryption usando EMP

Introducción

El cifrado de unidades BMC con phoenixNAP EMP (plataforma de gestión de cifrado) proporciona la seguridad de datos necesaria para su unidad Bare Metal Cloud. La plataforma EMP sirve como un servidor de administración de claves, lo que garantiza que la información de cifrado no se almacene en la unidad.

El desbloqueo de la unidad ocurre con cada reinicio. En caso de compromiso, revoca los permisos a través de la plataforma EMP y la unidad permanece segura.

Este tutorial de tres partes explica cómo configurar el cifrado de unidades BMC con un script de Python automatizado mediante EMP.

Parte 1:Configuración previa

La configuración previa incluye todos los pasos necesarios para registrarse en una cuenta EMP y generar certificados de cliente.

1. Obtener cuenta EMP

Si ya tiene una cuenta EMP, omita este paso. De lo contrario, cree una cuenta EMP:

1. Vaya a https://emp.phoenixnap.com/.

2. Haga clic en REGISTRARSE para registrar una cuenta.

3. Ingrese su información de registro y elija una contraseña segura de al menos 14 caracteres.

Haz clic en REGISTRARSE para proceder.

4. Elija el nombre de cuenta deseado y haga clic en Enviar solicitud para crear una nueva cuenta.

5. Espere el consentimiento del administrador a través del correo electrónico. Cuando la cuenta reciba la aprobación, inicie sesión y continúe con el siguiente paso.

2. Crear grupo

Una vez aprobada la cuenta, cree un grupo y agregue una aplicación EMP.

1. Navegue a Grupos pestaña de la izquierda.

2. Haga clic en el icono de signo más para agregar un nuevo grupo:

4. Establecer un título de grupo y Guardar .

5. El tablero muestra la página de grupo recién creada. Haz clic en Nueva aplicación botón para agregar una nueva aplicación.

6. Nombre la aplicación, desplácese hasta la parte inferior y haga clic en Guardar .

7. Aparece un mensaje de confirmación para la creación de la aplicación. Copie y guarde la aplicación UUID para el siguiente paso.

3. Generar clave privada y certificado

Realice todos los pasos siguientes en la máquina del servidor Bare Metal Cloud . SSH en el servidor BMC con:

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

El <path to id_rsa> es la ruta a su archivo de identidad. Normalmente, la ruta del archivo es /.ssh/id_rsa .

Use el comando openssl para generar el par de clave privada y certificado a través de la terminal.

1. Para generar la clave privada, ejecute:

openssl genrsa -out <key name>.key

2. Utilice la clave privada para generar el certificado:

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

Complete la información solicitada. Para el nombre común , pon el UUID de la aplicación EMP.

4. Cargar certificado

Cargue el certificado generado en la aplicación EMP.

1. Navegue a las Aplicaciones pestaña a la izquierda y busque la aplicación.

2. Cambie el método de autenticación a Basado en certificado :

3. Cargue el certificado generado y actualice los cambios:

4. Por último, edite la interfaz de la aplicación y cámbiela a KMIP haciendo clic en el texto junto al nombre de la aplicación:

Parte 2:Cifrado de disco

Los siguientes pasos tienen lugar en la máquina servidor .

1. Instalar PyKMIP

Instala el PyKMIP biblioteca usando el administrador de paquetes pip.

1. Actualice y actualice el sistema:

sudo apt update && sudo apt upgrade

2. Instale pip para Python 3 con el siguiente comando:

sudo apt install python3-pip

3. Actualizar pip:

pip3 install --upgrade pip

4. Instale el módulo PyKMIP ejecutando:

sudo -H pip3 install pykmip

La biblioteca ayuda a crear, activar y obtener la clave para cifrar el dispositivo.

2. Crear y recuperar clave

El script de Python ayuda a generar y activar un objeto de seguridad conectado a la aplicación EMP. La clave encripta la unidad.

1. Cree un pykmip.conf archivo con la siguiente información:

[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

El archivo de configuración se vincula a tres objetos de seguridad:

  • archivo de claves. La clave privada generada.
  • archivo de certificado. El certificado creado con la clave privada.
  • certificados_ca. Un certificado firmado por la autoridad de certificación.

El script usa el pykmip.conf archivo de configuración para establecer una conexión segura y verificada con la aplicación EMP.

2. Cree una secuencia de comandos de Python personalizada usando un editor de Python y asigne un nombre al script. Agrega el siguiente código:

# 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)

El script establece una conexión basada en el contenido de pykmip.conf expediente. Asegúrese de cambiar la ruta a la ubicación de su archivo de configuración .

Cuando el cliente crea una conexión, el script genera una clave llamada Clave de prueba . Los parámetros describen el objeto clave, así como el uso previsto.

3. Ejecute el script para generar el objeto clave:

python3 <script name>.py

La salida del script muestra la clave. El código generó el objeto de seguridad en la aplicación EMP con éxito.

4. Abra el objeto de seguridad navegando a Objetos de seguridad pestaña de la izquierda. Abra el objeto clave y copie el UUID :

5. Con el UUID de la clave, cree una secuencia de comandos de Python llamada key.py para buscar la llave. Inserte el siguiente código, agregando el UUID del objeto de seguridad en la línea 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. Cifre el dispositivo usando LUKS y CryptSetup

Esta parte crea un contenedor de archivos y lo cifra mediante el cifrado LUKS con la clave obtenida de la plataforma EMP.

1. Cree un contenedor de archivos cifrados con el comando dd:

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

2. Cambie el permiso del contenedor a 600 usando el comando chmod:

sudo chmod 600 secretfs

3. Adjunte el contenedor de archivos a un dispositivo de bucle con el losetup comando:

sudo losetup /dev/loop101 secretfs

4. Uso de key.py script, formatee el dispositivo de bucle usando cryptsetup y luksFormat :

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

Este comando cifra el dispositivo mediante el cifrado LUKS con la clave almacenada en EMP.

5. Abra el contenedor de archivos cifrados en el dispositivo de bucle con la clave:

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

El dispositivo ahora se abre usando la clave almacenada en EMP.

4. Crear sistema de archivos en el dispositivo

Cree el sistema de archivos en el contenedor del dispositivo cifrado, asigne el sistema de archivos cifrados y monte el dispositivo.

1. Formatea el disco usando mkfs comando:

sudo mkfs.ext4 /dev/mapper/secretfs

2. Cree un punto de montaje para el sistema de archivos:

sudo mkdir /mnt/encrypted

3. Monte el disco:

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

4. Compruebe que el dispositivo montado:

df | grep secretfs

5. Reiniciar:

sudo reboot

Parte 3:Crear secuencia de comandos en el arranque

Después de reiniciar, el disco se desmonta automáticamente. Los pasos a continuación explican cómo montar manualmente el dispositivo después de un reinicio. Los mismos pasos desbloquean y montan el disco en el script de arranque automatizado.

1. Desbloqueo y montaje manual

Los siguientes comandos abren y montan el disco:

1. Conecte el dispositivo de bucle a un contenedor de archivos:

sudo losetup /dev/loop101 secretfs

2. Abra el dispositivo con la tecla:

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

3. Monte el dispositivo:

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

4. Verifique que el dispositivo se montó usando el df comando:

df | grep secretfs

2. Desbloqueo y montaje automatizados

El último paso es automatizar los comandos anteriores para que se ejecuten en el arranque. La clave se toma de la plataforma EMP automáticamente, lo que ayuda a desbloquear y montar el disco en cada reinicio. Este paso también garantiza que la clave no se almacene en ningún lugar de la máquina.

1. Cree un servicio en /etc/init.d carpeta. Asigne un nombre al archivo sin ninguna extensión. Por ejemplo, si usa el editor vim y nombra el servicio automount , ejecuta:

sudo vim /etc/init.d/automount

2. Agregue las siguientes líneas de código:

#!/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])

El guión tiene dos partes:

  • La primera parte son las mismas líneas de código que en key.py script, que toma la clave de la plataforma EMP usando el UUID del objeto de seguridad.
  • La segunda parte de la secuencia de comandos sigue los pasos desde el desbloqueo manual y el montaje, la apertura y el montaje de la unidad cifrada.

3. Cambia el permiso a 755 usando chmod para hacer que el servicio sea ejecutable:

sudo chmod 755 <service name>

4. Actualice la información del servicio en el sistema:

sudo update-rc.d <service name> defaults

La configuración del servicio automatizado para desbloquear y montar el dispositivo concluye con este paso.

5. Reinicie el sistema:

sudo reboot

6. Usando el df comando, verifique que el dispositivo se monte automáticamente después de reiniciar:

df | grep secretfs

En caso de compromiso, elimine el objeto de seguridad de su cuenta EMP. El próximo reinicio del dispositivo no puede obtener la clave y el disco permanece bloqueado y seguro.


Ubuntu
  1. Cómo configurar RAID de hardware usando MegaCLI

  2. Cómo configurar la segunda unidad en servidores BMC de doble unidad

  3. Cómo configurar un equilibrador de carga en un servidor BMC s0.d1.small

  4. Cómo configurar claves SSH

  5. ¿Cómo configurar la dirección de proxy en todo el sistema mediante el script de Shell?

Cómo crear una unidad USB Ubuntu Live usando la línea de comandos

Cómo configurar la autenticación SSH sin contraseña en Linux

¿Cómo configurar el inicio de sesión SSH sin contraseña usando ssh-keygen?

Cómo usar el cifrado de correo electrónico en Ubuntu

¿Cómo matar el servidor X usando una combinación de teclas?

¿Cómo configurar el cifrado de correo electrónico en cPanel?