Encryption

物理移除驅動器後仍可訪問 LUKS 分區

  • January 23, 2020

我有一個使用 LUKS 進行全盤加密的 USB 快閃記憶體驅動器。我插入驅動器並使用以下方法安裝它:

cryptsetup luksOpen /dev/sdb flash
mount /dev/mapper/flash /mnt/flash

如果我物理移除我的快閃記憶體驅動器,我仍然可以在 /mnt/flash 訪問它的內容。為什麼是這樣?我認為這是一種安全風險,因為我希望我的快閃記憶體驅動器內容在驅動器被物理移除後立即變得無法訪問。

我能做些什麼來實現這一點?當我在其他電腦上使用它時,它必須是我可以對驅動器執行的操作,並且我不想為了確保驅動器安全而全部更改它們。

如果您從 USB 本身執行程序/腳本,您應該能夠弄清楚它所在的 LUKS 映射/名稱和設備(或者如果您知道,只需告訴腳本設備或映射名稱)並觀察設備何時刪除時“消失”。然後解除安裝它。

很確定/dev/sdXn拔掉USBdmesg會導致設備/sys

這是一個概念驗證 bash 腳本,看起來應該可以工作,但是我在 USB 上沒有任何 LUKS 分區可供測試,所以我不確定是否umount可能需要類似--lazyor的選項--force

map=$( df --output=source $PWD |tail -n1 )

device=$( sudo cryptsetup status "$map" | grep -o "device:.*"|cut -d' ' -f 3 )

while [ -b "$device" ]
do
   sleep 30
done

echo "Device $device is missing, unmounting"
sudo umount -v "$map"

如果它是從已安裝的 LUKS 容器內執行的,$PWD應該找到它映射的 LUKS 名稱,然後是設備,如果設備不再是塊特殊文件,則解除安裝映射的設備。

PS 如果設備是 rw (可寫)安裝的,文件系統可能會因突然拔出而損壞。FAT 似乎特別容易受到攻擊,而日誌文件系統應該更健壯。如果它已安裝 ro (只讀),至少您可以避免該問題, mount 接受-o ro和 cryptsetup 接受--readonly(兩者可能都不是必需的)

你似乎跳過了這個過程中的一些步驟。你應該:

  • 插入驅動器
  • cryptsetup luksOpen /dev/sdb flash
  • mount /dev/mapper/flash /mnt/flash
  • 正常使用驅動器
  • umount /mnt/flash
  • cryptsetup close flash
  • 卸下驅動器

的倒數mountumount。嘗試umount使用未插入的驅動器可能會掛起,具體取決於系統嘗試執行的操作。該cryptsetup close步驟進一步刪除驅動器的映射並從核心記憶體中擦除加密密鑰。

如果您在不呼叫umount. 在您呼叫之前,您的加密密鑰在記憶體中仍然可用cryptsetup close。考慮到這一點,不應跳過這些步驟。

引用自:https://unix.stackexchange.com/questions/386322