溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何使用Stratis的網(wǎng)絡(luò)綁定磁盤(pán)加密

發(fā)布時(shí)間:2021-10-23 14:21:26 來(lái)源:億速云 閱讀:203 作者:小新 欄目:系統(tǒng)運(yùn)維

小編給大家分享一下如何使用Stratis的網(wǎng)絡(luò)綁定磁盤(pán)加密,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

先決條件

NBDE 需要 Stratis 2.3 或更高版本。本文中的例子使用的是 Fedora Linux 34 的預(yù)發(fā)布版本。Fedora Linux 34 的最終版本將包含 Stratis 2.3。

網(wǎng)絡(luò)綁定磁盤(pán)加密(NBDE)概述

加密存儲(chǔ)的主要挑戰(zhàn)之一是有一個(gè)安全的方法在系統(tǒng)重啟后再次解鎖存儲(chǔ)。在大型環(huán)境中,手動(dòng)輸入加密口令并不能很好地?cái)U(kuò)展。NBDE 解決了這一問(wèn)題,允許以自動(dòng)方式解鎖加密存儲(chǔ)。

在更高層次上,NBDE 需要環(huán)境中的 Tang 服務(wù)器。客戶端系統(tǒng)(使用 Clevis Pin)只要能與 Tang 服務(wù)器建立網(wǎng)絡(luò)連接,就可以自動(dòng)解密存儲(chǔ)。如果網(wǎng)絡(luò)沒(méi)有連接到 Tang 服務(wù)器,則必須手動(dòng)解密存儲(chǔ)。

這背后的想法是,Tang 服務(wù)器只能在內(nèi)部網(wǎng)絡(luò)上使用,因此,如果加密設(shè)備丟失或被盜,它將不再能夠訪問(wèn)內(nèi)部網(wǎng)絡(luò)連接到 Tang 服務(wù)器,因此不會(huì)被自動(dòng)解密。

關(guān)于 Tang 和 Clevis 的更多信息,請(qǐng)參見(jiàn)手冊(cè)頁(yè)(man tang、man clevis)、Tang 的 GitHub 頁(yè)面 和 Clevis 的 GitHub 頁(yè)面。

設(shè)置 Tang 服務(wù)器

本例使用另一個(gè) Fedora Linux 系統(tǒng)作為 Tang 服務(wù)器,主機(jī)名為 tang-server。首先安裝 tang 包。

dnf install tang

然后用 systemctl 啟用并啟動(dòng) tangd.socket。

systemctl enable tangd.socket --now

Tang 使用的是 TCP 80 端口,所以你也需要在防火墻中打開(kāi)該端口。

firewall-cmd --add-port=80/tcp --permanentfirewall-cmd --add-port=80/tcp

最后,運(yùn)行 tang-show-keys 來(lái)顯示輸出簽名密鑰指紋。你以后會(huì)需要這個(gè)。

# tang-show-keysl3fZGUCmnvKQF_OA6VZF9jf8z2s

創(chuàng)建加密的 Stratis 池

上一篇關(guān)于 Stratis 加密的文章詳細(xì)介紹了如何設(shè)置加密的 Stratis 池,所以本文不會(huì)深入介紹。

第一步是捕獲一個(gè)將用于解密 Stratis 池的密鑰。即使使用 NBDE,也需要設(shè)置這個(gè),因?yàn)樵?NBDE 服務(wù)器無(wú)法到達(dá)的情況下,可以用它來(lái)手動(dòng)解鎖池。使用以下命令捕獲 pool1 密鑰。

# stratis key set --capture-key pool1keyEnter key data followed by the return key:

然后我將使用 /dev/vdb 設(shè)備創(chuàng)建一個(gè)加密的 Stratis 池(使用剛才創(chuàng)建的 pool1key),命名為 pool1

# stratis pool create --key-desc pool1key pool1 /dev/vdb。

接下來(lái),在這個(gè) Stratis 池中創(chuàng)建一個(gè)名為 filesystem1 的文件系統(tǒng),創(chuàng)建一個(gè)掛載點(diǎn),掛載文件系統(tǒng),并在其中創(chuàng)建一個(gè)測(cè)試文件:

# stratis filesystem create pool1 filesystem1# mkdir /filesystem1# mount /dev/stratis/pool1/filesystem1 /filesystem1# cd /filesystem1# echo "this is a test file" > testfile

將 Stratis 池綁定到 Tang 服務(wù)器上

此時(shí),我們已經(jīng)創(chuàng)建了加密的 Stratis 池,并在池中創(chuàng)建了一個(gè)文件系統(tǒng)。下一步是將你的 Stratis 池綁定到剛剛設(shè)置的 Tang 服務(wù)器上。使用 stratis pool bind nbde 命令進(jìn)行。

當(dāng)你進(jìn)行 Tang 綁定時(shí),需要向該命令傳遞幾個(gè)參數(shù):

  • 池名(在本例中,pool1

  • 鑰匙描述符名稱(本例中為 pool1key

  • Tang 服務(wù)器名稱(在本例中,http://tang-server

記得之前在 Tang 服務(wù)器上,運(yùn)行了 tang-show-keys,顯示 Tang 輸出的簽名密鑰指紋是 l3fZGUCmnvKQF_OA6VZF9jf8z2s。除了前面的參數(shù)外,還需要用參數(shù) -thumbprint l3fZGUCmnvKQF_OA6VZF9jf8z2s 傳遞這個(gè)指紋,或者用 -trust-url 參數(shù)跳過(guò)對(duì)指紋的驗(yàn)證。

使用 -thumbprint 參數(shù)更安全。例如:

# stratis pool bind nbde pool1 pool1key http://tang-server --thumbprint l3fZGUCmnvKQF_OA6VZF9jf8z2s

用 NBDE 解鎖 Stratis 池

接下來(lái)重啟主機(jī),并驗(yàn)證你可以用 NBDE 解鎖 Stratis 池,而不需要使用密鑰口令。重啟主機(jī)后,該池不再可用:

# stratis pool listName Total Physical Properties

要使用 NBDE 解鎖池,請(qǐng)運(yùn)行以下命令:

# stratis pool unlock clevis

注意,你不需要使用密鑰口令。這個(gè)命令可以在系統(tǒng)啟動(dòng)時(shí)自動(dòng)運(yùn)行。

此時(shí),Stratis 池已經(jīng)可以使用了:

# stratis pool listName Total Physical Propertiespool1 4.98 GiB / 583.65 MiB / 4.41 GiB ~Ca, Cr

你可以掛載文件系統(tǒng),訪問(wèn)之前創(chuàng)建的文件:

# mount /dev/stratis/pool1/filesystem1 /filesystem1/# cat /filesystem1/testfilethis is a test file

輪換 Tang 服務(wù)器密鑰

最好定期輪換 Tang 服務(wù)器密鑰,并更新 Stratis 客戶服務(wù)器以使用新的 Tang 密鑰。

要生成新的 Tang 密鑰,首先登錄到 Tang 服務(wù)器,查看 /var/db/tang 目錄的當(dāng)前狀態(tài)。然后,運(yùn)行 tang-show-keys 命令:

# ls -al /var/db/tangtotal 8drwx------. 1 tang tang 124 Mar 15 15:51 .drwxr-xr-x. 1 root root 16 Mar 15 15:48 ..-rw-r--r--. 1 tang tang 361 Mar 15 15:51 hbjJEDXy8G8wynMPqiq8F47nJwo.jwk-rw-r--r--. 1 tang tang 367 Mar 15 15:51 l3fZGUCmnvKQF_OA6VZF9jf8z2s.jwk# tang-show-keysl3fZGUCmnvKQF_OA6VZF9jf8z2s

要生成新的密鑰,運(yùn)行 tangd-keygen 并將其指向 /var/db/tang 目錄:

# /usr/libexec/tangd-keygen /var/db/tang

如果你再看看 /var/db/tang 目錄,你會(huì)看到兩個(gè)新文件:

# ls -al /var/db/tangtotal 16drwx------. 1 tang tang 248 Mar 22 10:41 .drwxr-xr-x. 1 root root 16 Mar 15 15:48 ..-rw-r--r--. 1 tang tang 361 Mar 15 15:51 hbjJEDXy8G8wynMPqiq8F47nJwo.jwk-rw-r--r--. 1 root root 354 Mar 22 10:41 iyG5HcF01zaPjaGY6L_3WaslJ_E.jwk-rw-r--r--. 1 root root 349 Mar 22 10:41 jHxerkqARY1Ww_H_8YjQVZ5OHao.jwk-rw-r--r--. 1 tang tang 367 Mar 15 15:51 l3fZGUCmnvKQF_OA6VZF9jf8z2s.jwk

如果你運(yùn)行 tang-show-keys,就會(huì)顯示出 Tang 所公布的密鑰:

# tang-show-keysl3fZGUCmnvKQF_OA6VZF9jf8z2siyG5HcF01zaPjaGY6L_3WaslJ_E

你可以通過(guò)將兩個(gè)原始文件改名為以句號(hào)開(kāi)頭的隱藏文件,來(lái)防止舊的密鑰(以 l3fZ 開(kāi)頭)被公布。通過(guò)這種方法,舊的密鑰將不再被公布,但是它仍然可以被任何沒(méi)有更新為使用新密鑰的現(xiàn)有客戶端使用。一旦所有的客戶端都更新使用了新密鑰,這些舊密鑰文件就可以刪除了。

# cd /var/db/tang# mv hbjJEDXy8G8wynMPqiq8F47nJwo.jwk   .hbjJEDXy8G8wynMPqiq8F47nJwo.jwk# mv l3fZGUCmnvKQF_OA6VZF9jf8z2s.jwk   .l3fZGUCmnvKQF_OA6VZF9jf8z2s.jwk

此時(shí),如果再運(yùn)行 tang-show-keys,Tang 只公布新鑰匙:

# tang-show-keysiyG5HcF01zaPjaGY6L_3WaslJ_E

下一步,切換到你的 Stratis 系統(tǒng)并更新它以使用新的 Tang 密鑰。當(dāng)文件系統(tǒng)在線時(shí), Stratis 支持這樣做。

首先,解除對(duì)池的綁定:

# stratis pool unbind pool1

接下來(lái),用創(chuàng)建加密池時(shí)使用的原始口令設(shè)置密鑰:

# stratis key set --capture-key pool1keyEnter key data followed by the return key:

最后,用更新后的密鑰指紋將 Stratis 池綁定到 Tang 服務(wù)器上:

# stratis pool bind nbde pool1 pool1key http://tang-server --thumbprint iyG5HcF01zaPjaGY6L_3WaslJ_E

Stratis 系統(tǒng)現(xiàn)在配置為使用更新的 Tang 密鑰。一旦使用舊的 Tang 密鑰的任何其他客戶系統(tǒng)被更新,在 Tang 服務(wù)器上的 /var/db/tang 目錄中被重命名為隱藏文件的兩個(gè)原始密鑰文件就可以被備份和刪除了。

如果 Tang 服務(wù)器不可用怎么辦?

接下來(lái),關(guān)閉 Tang 服務(wù)器,模擬它不可用,然后重啟 Stratis 系統(tǒng)。

重啟后,Stratis 池又不可用了:

# stratis pool listName Total Physical Properties

如果你試圖用 NBDE 解鎖,會(huì)因?yàn)?Tang 服務(wù)器不可用而失?。?/p>

# stratis pool unlock clevisExecution failed:An iterative command generated one or more errors: The operation 'unlock' on a resource of type pool failed. The following errors occurred:Partial action "unlock" failed for pool with UUID 4d62f840f2bb4ec9ab53a44b49da3f48: Cryptsetup error: Failed with error: Error: Command failed: cmd: "clevis" "luks" "unlock" "-d" "/dev/vdb" "-n" "stratis-1-private-42142fedcb4c47cea2e2b873c08fcf63-crypt", exit reason: 1 stdout: stderr: /dev/vdb could not be opened.

此時(shí),在 Tang 服務(wù)器無(wú)法到達(dá)的情況下,解鎖池的唯一選擇就是使用原密鑰口令:

# stratis key set --capture-key pool1keyEnter key data followed by the return key:

然后你可以使用鑰匙解鎖池:

# stratis pool unlock keyring

接下來(lái),驗(yàn)證池是否成功解鎖:

# stratis pool listName Total Physical Propertiespool1 4.98 GiB / 583.65 MiB / 4.41 GiB ~Ca, Cr

以上是“如何使用Stratis的網(wǎng)絡(luò)綁定磁盤(pán)加密”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI