哦出於安全和隱私的原因,Linux 使用 Linux 磁盤統一密鑰格式 (LUKS) 來加密分區和整個磁盤。通過在引導時輸入密碼來解鎖受 LUKS 保護的磁盤。必須在啟動時或使用 Linux 遠程控制台在計算機前打開加密磁盤。但是,如果您的系統位於地下室、遠程數據中心/辦公室或二樓辦公室,您將無法解鎖和啟動您的 Linux 機器。要解決此問題,請使用 Dropbear SSH 服務器用於 Debian 或 Ubuntu 或其他通過 SSH 使用 LUKS 加密的 Linux 發行版。讓我們來看看 如何在 Linux 上使用 Dropbear SSH 密鑰解鎖 LUKS 在啟動時。
為什麼要通過 Dropbear ssh 使用和解鎖 LUKS 加密的根磁盤和引導磁盤?
- 非常適合遠程 Linux 服務器或云服務器
- 即使您沒有遠程 KVM 控制台,您仍然可以啟動和訪問您的設備。
- 這意味著您可以在沒有鍵盤和屏幕的情況下啟動 Linux 服務器。
什麼是 Dropbear SSH 服務器?
Dropbear 是一個免費的開源 SSH 服務器創建 它專門針對資源要求低的嵌入式 Linux 和 Unix 系統。 實現安全外殼 (SSH) 協議的第 2 版。支持用於密鑰交換的 RSA 和橢圓曲線加密。 Dropbear 支持 OpenSSH ~/.ssh/authorized_keys 公鑰認證。 假設您有 Debian 或 Ubuntu Linux 並安裝了 LVM 和 LUKS。這是我的設置。還有軟件RAID-1。
- /boot/efi – 系統啟動分區是在主板運行 UEFI 而不是 BIOS 時創建的。
- /dev/md0 – Linux /boot/(RAID-1 /dev/md0 掛載在 /boot/)目錄僅包含引導過程中所需的文件。引導加載程序初始化一個名為 initrd 的 ramdisk。 使用 update-initramfs 將 Dropbear ssh 服務器掛接到引導過程。 運行 ls 命令以顯示 /boot/ 目錄。你應該看到這樣的文件:
ls -1 /boot/*$(uname -r)*
/boot/config-4.19.0-13-amd64
/boot/initrd.img-4.19.0-13-amd64
/boot/System.map-4.19.0-13-amd64
/boot/vmlinuz-4.19.0-13-amd64
vmlinuz 是我的 Linux 內核。 initrd 包含 Linux 驅動程序、RAID 支持、Dropbear ssh 服務器和其他用於引導 Linux 系統的東西。 - /dev/md1 – 我的 LUKS 加密系統 RAID-1 設備。 它有兩個 LVM 成員。 一個用於交換,一個用於根分區。這意味著除了 /boot/efi 和 /boot/ 分區之外的所有數據都被加密。 您還可以加密 /boot/。請注意,安全模型和威脅模型是不同的。因此,建議在啟動過程中使用額外的保護措施,例如 BIOS/UEFI 密碼、保護家庭/辦公室/數據中心訪問以及在需要時啟用 FDE。
在 Ubuntu/Debian 上遠程解鎖 LUKS 加密根的示例設置
運行 lsblk 命令以顯示當前磁盤、RAID、加密和 LVM 信息。# lsblk -o NAME,FSTYPE,SIZE,MOUNTPOINT
您還可以使用 cat 命令來識別加密分區。sudo cat /etc/crypttab
這是我看到的:
md1_crypt UUID=45b8c33e-a710-4062-b98f-a32a45c9d947 none luks,discard
這是我的 Linux 操作系統版本和生產中的 Linux 內核版本:lsb_release -a && uname -mrs
示例輸出:
No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 10 (buster) Release: 10 Codename: buster Linux 4.19.0-13-amd64 x86_64
足夠的。讓我們動手,看看如何通過 Dropbear SSH 遠程解密 LUKS 設備。
在 Linux 上使用 Dropbear SSH 密鑰解鎖 LUKS 的步驟
安裝 Dropbear ssh 以啟用對使用 LUKS 加密的 Debian 10.x 和 Ubuntu 20.04 LTS 服務器的遠程解鎖。
第 1 步 – 在 Debian 或 Ubuntu 上安裝 Dropbear
運行 apt 命令/apt-get 命令,如下所示:## First, apply Debian security patches ##
sudo apt update
sudo apt upgrade
sudo apt install dropbear-initramfs
筆記:您可能會看到類似於以下內容的警告:“dropbear: WARNING: Invalid authorized_keys file. Unable to remote unlock cryptroot via SSH!”請忽略。
第 2 步 – 配置 Dropbear 以解鎖 LUKS 加密系統
使用 su 或 sudo 命令成為 root 用戶。sudo -i
使用 CD 輸入 /etc/dropbear-initramfs cd 命令:cd /etc/dropbear-initramfs
編輯配置文件。# vim config
編輯/更新 DROPBEAR_OPTIONS 如下:DROPBEAR_OPTIONS="-I 180 -j -k -p 2222 -s"
選項是:
- -我 180 :如果 180 秒內沒有發送或接收流量,則斷開會話。
- -j : 禁用 ssh 本地端口轉發。
- -k :還禁用遠程端口轉發。
- -p 2222 : 在指定地址和 TCP 端口上監聽 Dropbear ssh 服務器。 如果只指定一個端口,如 2222,它會監聽所有地址。您最多可以指定 10 個(如果未指定,則默認為 22 個)。
- -s :禁用密碼登錄。在 Linux/Unix 系統上設置 SSH 密鑰進行身份驗證以減少攻擊面。
第 3 步 – 配置靜態 IP
如果您的地下室有本地 Linux 服務器,您可能能夠通過 DHCP 服務器確定將哪個 IP 分配給 Dropbox,這是默認行為。但是,數據中心或云中的遠程服務器需要公共 IP 地址,就像常規的 OpenSSH 會話一樣。以下是設置公共 IP 地址的方法: 編輯 /etc/initramfs-tools/initramfs.conf。# vim /etc/initramfs-tools/initramfs.conf
在啟動時將靜態 IP 信息添加到 Dropbear ssh。IP=192.168.2.19::192.168.2.254:255.255.255.0:debian
在哪裡:
- 知識產權= – 啟用靜態 IP 配置
- :: – 字段分隔符
- 192.168.2.19 – IPv4
- 192.168.2.254 – 網關
- 255.255.255.0 – 網絡掩碼
- 德維安 – CPU 名稱
完成 句法 以下是 IPv4 和 IPv6 的靜態 IP 設置:
ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>: <dns-server-0-ip>:<dns-server-1-ip>:<ntp0-ip>
第 4 步 – 更新或構建 initramfs 映像
每當您更改 /etc/initramfs-tools/initramfs.conf 或 /etc/dropbear-initramfs/config 時,使用 update-initramfs 腳本來維護本地計算機上的 initramfs 映像。sudo update-initramfs -u
sudo update-initramfs -u -v
-u 選項更新現有的 initramfs,而 -v 選項增加了在選定操作期間提供的信息量。
第 5 步 – 創建用於登錄的 SSH 密鑰
讓我們回到桌面客戶端,例如 macOS、*BSD 或基於 Linux 的發行版。打開終端並輸入以下命令以設置基於 SSH 公鑰的身份驗證。{client}$ ssh-keygen -t rsa -f ~/.ssh/intel_nuc_debian
將桌面客戶端公鑰 ~/.ssh/intel_nuc_debian.pub 複製到 /etc/dropbear-initramfs/authorized_keys,每行一個。{client}$ cat ~/.ssh/intel_nuc_debian.pub
如果您啟用了 root ssh 訪問,請嘗試:{client}$ cat ~/.ssh/intel_nuc_debian.pub | ssh [email protected] "cat >> /etc/dropbear-initramfs/authorized_keys"
對於普通用戶,請嘗試:{client}$ scp ~/.ssh/intel_nuc_debian.pub [email protected]:~/key.pub
{client}$ ssh [email protected]
{server}$ sudo -i
{server}# cat /home/vivek/key.pub >> /etc/dropbear-initramfs/authorized_keys
{server}# rm /home/vivek/key.pub
{server}# exit
{server}$ exit
更新您的 initrd:{server}$ sudo update-initramfs -u
第 6 步 – 在啟用 LUKS 遠程解鎖的情況下測試您的 Linux 服務器
到目前為止,一切都很好。 我為我的 initramfs 安裝了 Dropbear ssh。使用靜態 IP 配置 Dropbear initramfs。 安裝 ssh 密鑰後,重新啟動 Linux 服務器。{server}$ sudo reboot
使用 ssh 解鎖 LUKS 卷
使用 ping 命令檢查連接性。{client}$ ping 192.168.2.19
讓我們使用 ssh 命令登錄。{client}$ ssh -i ~/.ssh/intel_nuc_debian -p 2222 -o "HostKeyAlgorithms ssh-rsa" [email protected]
要解鎖它,請運行:# cryptroot-unlock
添加
這將在 Dropbear ssh 服務器的幫助下使用 ssh 遠程解鎖您的 LUKS 磁盤。我們建議設置 OpenSSH 配置文件以避免鍵入長 ssh 命令。
這個條目是 四 的 五 裡面 Linux Unified Key Setup (LUKS) 是一個磁盤加密教程 系列。閱讀本系列的其餘部分。
- 使用 LUKS 進行 Linux 硬盤加密
- 在 Linux 上備份和恢復 LUKS 標頭
- 在 Linux 上更改 LUKS 磁盤加密密碼
- 在 Linux 上使用 Dropbear SSH 密鑰遠程解鎖 LUKS
- 在 Linux 上使用 Keyfile 添加/啟用 LUKS 磁盤加密