Úvod
Šifrování disku BMC pomocí phoenixNAP EMP (Encryption Management Platform) poskytuje nezbytné zabezpečení dat pro váš disk Bare Metal Cloud. Platforma EMP slouží jako server pro správu klíčů a zajišťuje, že informace o šifrování nebudou uloženy na disku.
K odemknutí disku dojde při každém restartu. V případě kompromisu odeberete oprávnění prostřednictvím platformy EMP a disk zůstane v bezpečí.
Tento třídílný tutoriál vysvětluje, jak nastavit šifrování jednotky BMC pomocí automatického skriptu Python pomocí EMP.
Část 1:Přednastavení
Přednastavení zahrnuje všechny kroky potřebné k registraci účtu EMP a generování klientských certifikátů.
1. Získejte EMP účet
Pokud již máte účet EMP, tento krok přeskočte. V opačném případě vytvořte účet EMP:
1. Přejděte na https://emp.phoenixnap.com/.
2. Klikněte na ZAREGISTROVAT SE k registraci účtu.
3. Zadejte své registrační údaje a zvolte silné heslo nejméně 14 znaků.
Klikněte na ZAREGISTROVAT SE pokračovat.
4. Zvolte požadovaný název účtu a klikněte na Odeslat požadavek vytvořit nový účet.
5. Vyčkejte na souhlas správce prostřednictvím emailu. Jakmile účet obdrží schválení, přihlaste se a přejděte k dalšímu kroku.
2. Vytvořit skupinu
Po schválení účtu vytvořte skupinu a přidejte aplikaci EMP.
1. Přejděte do části Skupiny karta vlevo.
2. Klikněte na ikonu plus pro přidání nové skupiny:
4. Nastavte název skupiny a Uložit .
5. Na řídicím panelu se zobrazí nově vytvořená stránka skupiny. Klikněte na Nová aplikace tlačítko pro přidání nové aplikace.
6. Jméno aplikaci, přejděte dolů a klikněte na Uložit .
7. Zobrazí se potvrzovací zpráva pro vytvoření aplikace. Zkopírujte a uložte aplikaciUUID pro další krok.
3. Vygenerovat soukromý klíč a certifikát
Proveďte všechny následující kroky na serveru Bare Metal Cloud . SSH na server BMC pomocí:
ssh -i <path to id_rsa> [email protected]<public IP>
<path to id_rsa>
je cesta k souboru vaší identity. Normálně je cesta k souboru /.ssh/id_rsa .
Pomocí příkazu openssl vygenerujte pár soukromých klíčů a certifikátů prostřednictvím terminálu.
1. Chcete-li vygenerovat soukromý klíč, spusťte:
openssl genrsa -out <key name>.key
2. K vygenerování certifikátu použijte soukromý klíč:
openssl req -new -x509 -key <key name>.key -out <certificate name>.cert -days <number of days>
Vyplňte požadované informace. Pro Obecné jméno , zadejte UUID aplikace EMP.
4. Nahrát certifikát
Nahrajte vygenerovaný certifikát do aplikace EMP.
1. Přejděte na Aplikace kartu nalevo a vyhledejte aplikaci.
2. Změňte metodu ověřování na Založeno na certifikátu :
3. Nahrajte vygenerovaný certifikát a aktualizujte změny:
4. Nakonec upravte rozhraní aplikace a změňte jej na KMIP kliknutím na text vedle názvu aplikace:
Část 2:Šifrování disku
Následující kroky probíhají na serverovém počítači .
1. Nainstalujte PyKMIP
Nainstalujte PyKMIP knihovny pomocí správce balíčků pip.
1. Aktualizujte a upgradujte systém:
sudo apt update && sudo apt upgrade
2. Nainstalujte pip pro Python 3 pomocí následujícího příkazu:
sudo apt install python3-pip
3. Upgrade pip:
pip3 install --upgrade pip
4. Nainstalujte modul PyKMIP spuštěním:
sudo -H pip3 install pykmip
Knihovna pomáhá vytvořit, aktivovat a získat klíč pro šifrování zařízení.
2. Vytvořit a načíst klíč
Skript Python pomáhá generovat a aktivovat objekt zabezpečení připojený k aplikaci EMP. Klíč zašifruje disk.
1. Vytvořte pykmip.conf soubor s následujícími informacemi:
[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
Konfigurační soubor odkazuje na tři objekty zabezpečení:
- soubor klíče. Vygenerovaný soukromý klíč.
- soubor certifikátu. Certifikát vytvořený pomocí soukromého klíče.
- ca_certs. Certifikát podepsaný certifikační autoritou.
Skript používá pykmip.conf konfigurační soubor pro navázání zabezpečeného a ověřeného spojení s aplikací EMP.
2. Vytvořte vlastní skript Python pomocí editoru Python a pojmenujte skript. Přidejte následující kód:
# 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)
Skript naváže spojení na základě obsahu pykmip.conf soubor. Ujistěte se, že jste změnili cestu k umístění vašeho konfiguračního souboru .
Když klient vytvoří připojení, skript vygeneruje klíč s názvem Testovací klíč . Parametry popisují klíčový objekt a také zamýšlené použití.
3. Spuštěním skriptu vygenerujte objekt klíče:
python3 <script name>.py
Výstup skriptu zobrazuje klíč. Kód úspěšně vygeneroval objekt zabezpečení v aplikaci EMP.
4. Otevřete objekt zabezpečení přechodem na Objekty zabezpečení záložka vlevo. Otevřete objekt klíče a zkopírujte UUID :
5. Pomocí UUID klíče vytvořte skript Pythonu s názvem key.py k vyzvednutí klíče. Vložte následující kód a přidejte UUID objektu zabezpečení na řádku 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. Šifrujte zařízení pomocí LUKS a CryptSetup
Tato část vytvoří kontejner souborů a zašifruje jej pomocí šifrování LUKS pomocí klíče načteného z platformy EMP.
1. Vytvořte kontejner šifrovaných souborů pomocí příkazu dd:
dd of=secretfs bs=1G count=0 seek=2
2. Změňte oprávnění kontejneru na 600 pomocí příkazu chmod:
sudo chmod 600 secretfs
3. Připojte kontejner souboru k zařízení smyčky pomocí losetup
příkaz:
sudo losetup /dev/loop101 secretfs
4. Pomocí key.py skript, naformátujte zařízení smyčky pomocí cryptsetup
a luksFormat
:
python3 key.py | sudo cryptsetup -y luksFormat /dev/loop101
Tento příkaz zašifruje zařízení pomocí šifrování LUKS s klíčem uloženým v EMP.
5. Otevřete kontejner šifrovaných souborů na zařízení smyčky pomocí klíče:
python3 key.py | sudo cryptsetup luksOpen /dev/loop101 secretfs
Zařízení se nyní otevře pomocí klíče uloženého v EMP.
4. Vytvořit systém souborů na zařízení
Sestavte systém souborů na kontejneru šifrovaného zařízení, namapujte systém šifrovaných souborů a připojte zařízení.
1. Naformátujte disk pomocí mkfs
příkaz:
sudo mkfs.ext4 /dev/mapper/secretfs
2. Vytvořte bod připojení pro systém souborů:
sudo mkdir /mnt/encrypted
3. Připojte disk:
sudo mount /dev/mapper/secretfs /mnt/encrypted
4. Zkontrolujte, zda je zařízení připojeno:
df | grep secretfs
5. Restartujte:
sudo reboot
Část 3:Vytvořte skript při spuštění
Po restartu se disk automaticky odpojí. Níže uvedené kroky vysvětlují, jak ručně připojit zařízení po restartu. Stejné kroky odemkněte a připojte disk v automatickém skriptu při spuštění.
1. Ruční odemknutí a připojení
Následující příkazy otevřou a připojí disk:
1. Připojte zařízení smyčky ke kontejneru souborů:
sudo losetup /dev/loop101 secretfs
2. Otevřete zařízení pomocí tlačítka:
python3 key.py | sudo cryptsetup luksOpen /dev/loop101 secretfs
3. Namontujte zařízení:
sudo mount /dev/mapper/secretfs /mnt/encrypted
4. Zkontrolujte, zda je zařízení připojeno pomocí df
příkaz:
df | grep secretfs
2. Automatické odemykání a připojení
Posledním krokem je automatizace předchozích příkazů pro spuštění při spuštění. Klíč se z platformy EMP stáhne automaticky, což pomáhá odemknout a připojit disk při každém restartu. Tento krok také zajistí, že klíč nebude uložen nikde na stroji.
1. Vytvořte službu v /etc/init.d složka. Pojmenujte soubor bez jakýchkoli přípon. Pokud například použijete editor vim a službu pojmenujete automount , spustit:
sudo vim /etc/init.d/automount
2. Přidejte následující řádky kódu:
#!/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])
Skript má dvě části:
- První část jsou stejné řádky kódu jako v key.py skript, který získá klíč z platformy EMP pomocí UUID objektu zabezpečení.
- Druhá část skriptu se řídí kroky od ručního odemknutí a připojení, otevření a připojení šifrovaného disku.
3. Změňte oprávnění na 755 pomocí chmod
aby byla služba spustitelná:
sudo chmod 755 <service name>
4. Aktualizujte servisní informace v systému:
sudo update-rc.d <service name> defaults
Nastavení automatické služby pro odemykání a montáž zařízení tímto krokem končí.
5. Restartujte systém:
sudo reboot
6. Pomocí df
zkontrolujte, zda se zařízení po restartu automaticky připojí:
df | grep secretfs
V případě kompromitace odstraňte objekt zabezpečení z vašeho EMP účtu. Při příštím restartování zařízení nelze klíč získat a disk zůstane uzamčený a zabezpečený.