はじめに
phoenixNAP EMP(暗号化管理プラットフォーム)を使用したBMCドライブの暗号化は、ベアメタルクラウドドライブに必要なデータセキュリティを提供します。 EMPプラットフォームはキー管理サーバーとして機能し、暗号化情報がドライブに保存されないようにします。
ドライブのロック解除は、再起動するたびに発生します。侵害された場合は、EMPプラットフォームを介してアクセス許可を取り消すと、ドライブは安全に保たれます。
この3部構成のチュートリアルでは、EMPを使用して自動化されたPythonスクリプトを使用してBMCドライブの暗号化を設定する方法について説明します。
パート1:事前設定
事前設定には、EMPアカウントの登録とクライアント証明書の生成に必要なすべての手順が含まれています。
1。 EMPアカウントを取得する
すでにEMPアカウントをお持ちの場合は、この手順をスキップしてください。それ以外の場合は、EMPアカウントを作成します:
1.https://emp.phoenixnap.com/にアクセスします。
2.サインアップをクリックします アカウントを登録します。
3.登録情報を入力し、少なくともの強力なパスワードを選択します 14文字。
サインアップをクリックします 続行します。
4.目的のアカウント名を選択し、[リクエストの送信]をクリックします 新しいアカウントを作成します。
5.電子メールによる管理者の同意を待ちます。アカウントが承認されたら、ログインして次の手順に進みます。
2。グループを作成
アカウントが承認されたら、グループを作成し、EMPアプリケーションを追加します。
1.グループに移動します 左側のタブ。
2.プラスアイコンをクリックします 新しいグループを追加するには:
4.グループタイトルを設定し、保存 。
5.ダッシュボードに新しく作成されたグループページが表示されます。 新しいアプリをクリックします ボタンをクリックして、新しいアプリケーションを追加します。
6.名前 アプリの一番下までスクロールして、[保存]をクリックします 。
7.アプリ作成の確認メッセージが表示されます。アプリをコピーして保存しますUUID 次のステップのために。
3。秘密鍵と証明書を生成する
ベアメタルクラウドサーバーマシンで次のすべての手順を実行します 。次のコマンドを使用してBMCサーバーにSSHで接続します:
ssh -i <path to id_rsa> [email protected]<public IP>
<path to id_rsa>
IDファイルへのパスです。通常、ファイルパスは/。ssh/ id_rsa 。
opensslコマンドを使用して、端末を介して秘密鍵と証明書のペアを生成します。
1.秘密鍵を生成するには、次のコマンドを実行します。
openssl genrsa -out <key name>.key
2.秘密鍵を使用して証明書を生成します:
openssl req -new -x509 -key <key name>.key -out <certificate name>.cert -days <number of days>
要求された情報を記入します。 一般名の場合 、 UUIDを配置します EMPアプリケーションの。
4。証明書のアップロード
生成された証明書をEMPアプリにアップロードします。
1.アプリに移動します 左側のタブをクリックして、アプリケーションを見つけます。
2.認証方法を証明書ベースに変更します :
3.生成された証明書をアップロードし、変更を更新します。
4.最後に、アプリのインターフェースを編集して KMIPに変更します アプリ名の横にあるテキストをクリックして:
パート2:ディスク暗号化
次の手順は、サーバーマシンで実行されます。 。
1。 PyKMIPをインストールする
PyKMIPをインストールします pipパッケージマネージャーを使用したライブラリ。
1.システムを更新およびアップグレードします:
sudo apt update && sudo apt upgrade
2.次のコマンドを使用してPython3のpipをインストールします。
sudo apt install python3-pip
3. pipをアップグレードします:
pip3 install --upgrade pip
4.次のコマンドを実行してPyKMIPモジュールをインストールします:
sudo -H pip3 install pykmip
ライブラリは、デバイスを暗号化するためのキーの作成、アクティブ化、およびフェッチに役立ちます。
2。キーの作成と取得
Pythonスクリプトは、EMPアプリに接続されたセキュリティオブジェクトを生成してアクティブ化するのに役立ちます。キーはドライブを暗号化します。
1. pykmip.confを作成します 次の情報を含むファイル:
[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
構成ファイルは、次の3つのセキュリティオブジェクトにリンクしています。
- キーファイル。 生成された秘密鍵。
- certfile。 秘密鍵を使用して作成された証明書。
- ca_certs。 認証局によって署名された証明書。
スクリプトはpykmip.confを使用します EMPアプリケーションとの安全で検証済みの接続を確立するための構成ファイル。
2.カスタムPythonスクリプトを作成します Pythonエディターを使用して、スクリプトに名前を付けます。次のコードを追加します:
# 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)
スクリプトは、 pykmip.confの内容に基づいて接続を確立します ファイル。 構成ファイルの場所へのパスを必ず変更してください 。
クライアントが接続を作成すると、スクリプトはテストキーと呼ばれるキーを生成します 。パラメータは、主要なオブジェクトと使用目的を説明します。
3.スクリプトを実行して、キーオブジェクトを生成します。
python3 <script name>.py
スクリプトの出力にキーが表示されます。このコードは、EMPアプリケーションでセキュリティオブジェクトを正常に生成しました。
4.セキュリティオブジェクトに移動してセキュリティオブジェクトを開きます 左側のタブ。キーオブジェクトを開き、 UUIDをコピーします :
5.キーのUUIDを使用して、 key.pyという名前のPythonスクリプトを作成します キーを取得します。次のコードを挿入し、セキュリティオブジェクトのUUIDを追加します 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。 LUKSとCryptSetupを使用してデバイスを暗号化する
この部分では、ファイルコンテナを作成し、EMPプラットフォームから取得したキーを使用してLUKS暗号化を使用して暗号化します。
1. ddコマンドを使用して暗号化されたファイルコンテナを作成します:
dd of=secretfs bs=1G count=0 seek=2
2.コンテナの権限を600に変更します chmodコマンドの使用:
sudo chmod 600 secretfs
3. losetup
を使用して、ファイルコンテナをループデバイスに接続します コマンド:
sudo losetup /dev/loop101 secretfs
4. key.pyを使用する スクリプト、 cryptsetup
を使用してループデバイスをフォーマットします およびluksFormat
:
python3 key.py | sudo cryptsetup -y luksFormat /dev/loop101
このコマンドは、EMPに保存されているキーを使用してLUKS暗号化を使用してデバイスを暗号化します。
5.キーを使用してループデバイスで暗号化されたファイルコンテナを開きます:
python3 key.py | sudo cryptsetup luksOpen /dev/loop101 secretfs
これで、EMPに保存されているキーを使用してデバイスが開きます。
4。デバイス上にファイルシステムを作成する
暗号化されたデバイスコンテナ上にファイルシステムを構築し、暗号化されたファイルシステムをマッピングして、デバイスをマウントします。
1. mkfs
を使用してディスクをフォーマットします コマンド:
sudo mkfs.ext4 /dev/mapper/secretfs
2.ファイルシステムのマウントポイントを作成します。
sudo mkdir /mnt/encrypted
3.ディスクをマウントします:
sudo mount /dev/mapper/secretfs /mnt/encrypted
4.デバイスがマウントされていることを確認します:
df | grep secretfs
5.再起動:
sudo reboot
パート3:起動時スクリプトの作成
再起動後、ディスクは自動的にアンマウントされます。以下の手順では、再起動後にデバイスを手動でマウントする方法について説明します。同じ手順で、自動化された起動スクリプトでディスクのロックを解除してマウントします。
1。手動でロックを解除してマウント
次のコマンドでディスクを開いてマウントします。
1.ループデバイスをファイルコンテナに接続します:
sudo losetup /dev/loop101 secretfs
2.キーを使用してデバイスを開きます:
python3 key.py | sudo cryptsetup luksOpen /dev/loop101 secretfs
3.デバイスをマウントします:
sudo mount /dev/mapper/secretfs /mnt/encrypted
4. df
を使用してデバイスがマウントされていることを確認します コマンド:
df | grep secretfs
2。自動ロック解除とマウント
最後のステップは、起動時に実行する前のコマンドを自動化することです。キーはEMPプラットフォームから自動的に取得され、再起動するたびにディスクのロックを解除してマウントするのに役立ちます。この手順により、キーがマシンのどこにも保存されないようにすることもできます。
1. /etc/init.dにサービスを作成します フォルダ。拡張子なしでファイルに名前を付けます。たとえば、vimエディターを使用して、サービスに automountという名前を付けた場合 、実行:
sudo vim /etc/init.d/automount
2.次のコード行を追加します。
#!/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])
スクリプトには2つの部分があります:
- 最初の部分は、 key.pyと同じコード行です。 スクリプト。UUIDを使用してEMPプラットフォームからキーを取得します。 セキュリティオブジェクトの。
- スクリプトの2番目の部分は、手動でロックを解除してマウントし、暗号化されたドライブを開いてマウントする手順に従います。
3.権限を755に変更します chmod
を使用する サービスを実行可能にするには:
sudo chmod 755 <service name>
4.システムのサービス情報を更新します:
sudo update-rc.d <service name> defaults
デバイスのロックを解除してマウントするための自動サービスのセットアップは、この手順で終了します。
5.システムを再起動します:
sudo reboot
6. df
を使用する コマンドを実行し、再起動後にデバイスが自動的にマウントされることを確認します:
df | grep secretfs
侵害された場合は、EMPアカウントからセキュリティオブジェクトを削除してください。デバイスを次に再起動してもキーを取得できず、ディスクはロックされて安全なままになります。