GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come configurare la crittografia dell'unità BMC tramite EMP

Introduzione

La crittografia dell'unità BMC tramite phoenixNAP EMP (Encryption Management Platform) fornisce la sicurezza dei dati necessaria per l'unità Bare Metal Cloud. La piattaforma EMP funge da server di gestione delle chiavi, assicurando che le informazioni di crittografia non siano archiviate sull'unità.

Lo sblocco dell'unità avviene ad ogni riavvio. In caso di compromissione, revochi le autorizzazioni tramite la piattaforma EMP e l'unità rimane al sicuro.

Questo tutorial in tre parti spiega come configurare la crittografia dell'unità BMC con uno script Python automatizzato utilizzando EMP.

Parte 1:Preimpostazione

La preconfigurazione include tutti i passaggi necessari per registrare un account EMP e generare certificati client.

1. Ottieni un account EMP

Se hai già un account EMP, salta questo passaggio. Altrimenti, crea un account EMP:

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

2. Fai clic su REGISTRATI per registrare un account.

3. Inserisci le informazioni di registrazione e scegli una password complessa di almeno 14 caratteri.

Fai clic su REGISTRATI per procedere.

4. Scegli il nome dell'account desiderato e fai clic su Invia richiesta per creare un nuovo account.

5. Attendere il consenso dell'amministratore tramite e-mail. Quando l'account riceve l'approvazione, accedi e procedi al passaggio successivo.

2. Crea gruppo

Dopo che l'account è stato approvato, crea un gruppo e aggiungi un'applicazione EMP.

1. Vai ai Gruppi scheda a sinistra.

2. Fare clic sull'icona più per aggiungere un nuovo gruppo:

4. Imposta un titolo di gruppo e Salva .

5. Il dashboard mostra la pagina del gruppo appena creata. Fai clic su Nuova app pulsante per aggiungere una nuova applicazione.

6. Nome nell'app, scorri fino in fondo e fai clic su Salva .

7. Viene visualizzato un messaggio di conferma per la creazione dell'app. Copia e salva l'app UUID per il passaggio successivo.

3. Genera chiave privata e certificato

Esegui tutti i passaggi seguenti sulla macchina server Bare Metal Cloud . SSH nel server BMC con:

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

Il <path to id_rsa> è il percorso del tuo file di identità. Normalmente, il percorso del file è /.ssh/id_rsa .

Usa il comando openssl per generare la chiave privata e la coppia di certificati tramite il terminale.

1. Per generare la chiave privata, eseguire:

openssl genrsa -out <key name>.key

2. Usa la chiave privata per generare il certificato:

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

Compila le informazioni richieste. Per il Nome comune , inserisci l'UUID dell'applicazione EMP.

4. Carica certificato

Carica il certificato generato nell'app EMP.

1. Vai alle App scheda a sinistra e individuare l'applicazione.

2. Modificare il metodo di autenticazione in Basato su certificato :

3. Carica il certificato generato e aggiorna le modifiche:

4. Infine, modifica l'interfaccia dell'app e cambiala in KMIP facendo clic sul testo accanto al nome dell'app:

Parte 2:Crittografia del disco

I seguenti passaggi vengono eseguiti sulla macchina server .

1. Installa PyKMIP

Installa PyKMIP libreria utilizzando il gestore di pacchetti pip.

1. Aggiorna e aggiorna il sistema:

sudo apt update && sudo apt upgrade

2. Installa pip per Python 3 con il seguente comando:

sudo apt install python3-pip

3. Aggiorna pip:

pip3 install --upgrade pip

4. Installa il modulo PyKMIP eseguendo:

sudo -H pip3 install pykmip

La libreria aiuta a creare, attivare e recuperare la chiave per crittografare il dispositivo.

2. Crea e recupera la chiave

Lo script Python aiuta a generare e attivare un oggetto di sicurezza connesso all'app EMP. La chiave crittografa l'unità.

1. Crea un pykmip.conf file con le seguenti informazioni:

[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

Il file di configurazione si collega a tre oggetti di sicurezza:

  • file di chiavi. La chiave privata generata.
  • certfile. Il certificato creato utilizzando la chiave privata.
  • ca_certs. Un certificato firmato dall'autorità di certificazione.

Lo script utilizza pykmip.conf file di configurazione per stabilire una connessione sicura e verificata con l'applicazione EMP.

2. Crea uno script Python personalizzato utilizzando un editor Python e assegna un nome allo script. Aggiungi il seguente codice:

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

Lo script stabilisce una connessione basata sul contenuto di pykmip.conf file. Assicurati di modificare il percorso della posizione del file di configurazione .

Quando il client crea una connessione, lo script genera una chiave denominata Test Key . I parametri descrivono l'oggetto chiave e l'uso previsto.

3. Eseguire lo script per generare l'oggetto chiave:

python3 <script name>.py

L'output dello script mostra la chiave. Il codice ha generato correttamente l'oggetto di sicurezza nell'applicazione EMP.

4. Apri l'oggetto di sicurezza accedendo a Oggetti di sicurezza scheda a sinistra. Apri l'oggetto chiave e copia l'UUID :

5. Utilizzando l'UUID della chiave, crea uno script Python denominato key.py per prendere la chiave. Inserisci il codice seguente, aggiungendo l'UUID dell'oggetto di sicurezza nella riga 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. Crittografa il dispositivo utilizzando LUKS e CryptSetup

Questa parte crea un contenitore di file e lo crittografa utilizzando la crittografia LUKS con la chiave recuperata dalla piattaforma EMP.

1. Crea un contenitore di file crittografato utilizzando il comando dd:

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

2. Modifica l'autorizzazione del contenitore su 600 usando il comando chmod:

sudo chmod 600 secretfs

3. Allega il contenitore di file a un dispositivo loop con il losetup comando:

sudo losetup /dev/loop101 secretfs

4. Utilizzando il key.py script, formattare il dispositivo loop utilizzando cryptsetup e luksFormat :

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

Questo comando crittografa il dispositivo utilizzando la crittografia LUKS con la chiave memorizzata in EMP.

5. Aprire il contenitore del file crittografato sul dispositivo loop utilizzando la chiave:

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

Il dispositivo ora si apre utilizzando la chiave memorizzata in EMP.

4. Crea file system sul dispositivo

Crea il file system sul contenitore del dispositivo crittografato, mappa il file system crittografato e monta il dispositivo.

1. Formatta il disco utilizzando il mkfs comando:

sudo mkfs.ext4 /dev/mapper/secretfs

2. Crea un punto di montaggio per il file system:

sudo mkdir /mnt/encrypted

3. Montare il disco:

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

4. Verifica che il dispositivo sia montato:

df | grep secretfs

5. Riavvia:

sudo reboot

Parte 3:crea uno script all'avvio

Dopo il riavvio, il disco si smonta automaticamente. I passaggi seguenti spiegano come montare manualmente il dispositivo dopo un riavvio. Gli stessi passaggi sbloccano e montano il disco nello script di avvio automatico.

1. Sblocco e montaggio manuali

I seguenti comandi aprono e montano il disco:

1. Collega il dispositivo loop a un contenitore di file:

sudo losetup /dev/loop101 secretfs

2. Aprire il dispositivo utilizzando la chiave:

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

3. Monta il dispositivo:

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

4. Verifica che il dispositivo sia montato utilizzando il df comando:

df | grep secretfs

2. Sblocco e montaggio automatizzati

L'ultimo passaggio consiste nell'automatizzare i comandi precedenti per l'esecuzione all'avvio. La chiave viene prelevata automaticamente dalla piattaforma EMP, che aiuta a sbloccare e montare il disco ad ogni riavvio. Questo passaggio garantisce inoltre che la chiave non sia memorizzata in nessun punto della macchina.

1. Crea un servizio in /etc/init.d cartella. Assegna un nome al file senza alcuna estensione. Ad esempio, se utilizzi l'editor vim e denomini il servizio automount , esegui:

sudo vim /etc/init.d/automount

2. Aggiungi le seguenti righe di codice:

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

Lo script è composto da due parti:

  • La prima parte sono le stesse righe di codice di key.py script, che acquisisce la chiave dalla piattaforma EMP utilizzando l'UUID dell'oggetto di sicurezza.
  • La seconda parte dello script segue i passaggi dallo sblocco manuale e montaggio, apertura e montaggio dell'unità crittografata.

3. Modifica l'autorizzazione in 755 utilizzando chmod per rendere eseguibile il servizio:

sudo chmod 755 <service name>

4. Aggiorna le informazioni sul servizio sul sistema:

sudo update-rc.d <service name> defaults

Con questo passaggio si conclude la configurazione del servizio automatizzato per lo sblocco e il montaggio del dispositivo.

5. Riavvia il sistema:

sudo reboot

6. Utilizzando il df comando, controlla per vedere il dispositivo montato automaticamente dopo il riavvio:

df | grep secretfs

In caso di compromissione, rimuovi l'oggetto di sicurezza dal tuo account EMP. Al successivo riavvio del dispositivo non è possibile recuperare la chiave e il disco rimane bloccato e protetto.


Ubuntu
  1. Come configurare l'hardware RAID utilizzando MegaCLI

  2. Come configurare la seconda unità su server BMC a doppia unità

  3. Come configurare un bilanciamento del carico su un server BMC s0.d1.small

  4. Come impostare le chiavi SSH

  5. Come impostare l'indirizzo proxy a livello di sistema utilizzando lo script della shell?

Come creare un'unità USB Ubuntu Live utilizzando la riga di comando

Come configurare l'autenticazione SSH senza password su Linux

Come configurare l'accesso SSH senza password utilizzando ssh-keygen?

Come utilizzare la crittografia e-mail in Ubuntu

Come uccidere il server X usando una combinazione di tasti?

Come impostare la crittografia e-mail in cPanel?