Windows Linux 安裝系統的全碟加密。 加密多重啟動

Windows Linux 安裝系統的全碟加密。 加密多重啟動
更新了 RuNet V0.2 中的全碟加密指南。

牛仔策略:

[A] Windows 7系統對已安裝系統進行區塊加密;
[B] GNU/Linux 系統區塊加密 (Debian) 已安裝的系統 (包括/boot);
[C] GRUB2 設定、具有數位簽章/驗證/雜湊的引導程式保護;
[D] 剝離-銷毀未加密的資料;
[E] 加密作業系統通用備份;
[F] 攻擊 <在專案 [C6]> 目標 - GRUB2 引導程式;
[G]有用的文件。

╭────#40號房間#方案:
├──╼ Windows 7安裝-全系統加密,不隱藏;
├──╼已安裝GNU/Linux (Debian 和衍生發行版) — 系統全加密,不隱藏(/,包括/boot;交換);
├──╼ 獨立開機載入程式:VeraCrypt引導程式安裝在MBR中,GRUB2引導程式安裝在擴充分割區中;
├──╼無需安裝/重新安裝作業系統;
└──╼使用的加密軟體:VeraCrypt; 地穴設置; GnuPG; 海馬; 哈希深; GRUB2 是免費的/免費的。

上述方案部分解決了「遠端啟動快閃磁碟機」的問題,讓您可以享受加密的作業系統Windows/Linux,並透過「加密通道」從一個作業系統到另一個作業系統交換資料。

PC 啟動順序(選項之一):

  • 打開機器;
  • 載入 VeraCrypt 引導程式 (輸入正確的密碼將繼續啟動Windows 7);
  • 按“Esc”鍵將載入 GRUB2 引導程式;
  • GRUB2 引導程式 (選擇發行版/GNU/Linux/CLI),需要對 GRUB2 超級使用者 <登入/密碼> 進行身份驗證;
  • 成功驗證並選擇發行版後,您將需要輸入密碼來解鎖“/boot/initrd.img”;
  • 輸入無誤的密碼後,GRUB2 將「要求」輸入密碼 (第三,BIOS密碼或GNU/Linux用戶帳號密碼-不考慮) 解鎖並啟動 GNU/Linux 作業系統,或自動替換金鑰 (兩個密碼+密鑰,或密碼+密鑰);
  • 外部侵入 GRUB2 配置將凍結 GNU/Linux 引導過程。

麻煩嗎? 好吧,讓我們實現流程自動化。

將硬碟進行分割時 (MBR表) 一台 PC 最多可以有 4 個主分割區,或 3 個主分割區和 XNUMX 個擴充分割區,以及一個未分配的區域。 與主部分不同,擴展部分可以包含子部分 (邏輯磁碟機=擴充分割區)。 換句話說,HDD 上的「擴充分割區」取代了 LVM 來完成手邊的任務:完整的系統加密。 如果你的磁碟分成4個主分割區,則需要使用lvm,或改造 (附格式) 從主要部分到高級部分,或明智地使用所有四個部分並保留所有內容,以獲得所需的結果。 即使您的磁碟上只有一個分割區,Gparted 也會協助您對硬碟進行分割區 (對於附加部分) 不會遺失數據,但此類行為仍會受到少量懲罰。

下表列出了整篇文章將描述的硬碟佈局方案。

Windows Linux 安裝系統的全碟加密。 加密多重啟動
1TB 分割區表(編號 1)。

你也應該有類似的東西。
sda1 - 主分割區 1 NTFS (加密);
sda2 - 擴展節標記;
sda6——邏輯磁碟 (它安裝了 GRUB2 引導程式);
sda8 - 交換(加密交換文件/並不總是);
sda9——測試邏輯磁碟;
sda5 - 好奇的邏輯磁碟;
sda7 - GNU/Linux 作業系統(將作業系統轉移到加密邏輯磁碟);
sda3 - 主分割區 2,Windows 7 作業系統 (加密);
sda4 - 主部分 3 (它包含未加密的 GNU/Linux,用於備份/並不總是).

[A] Windows 7系統區塊加密

A1。 維拉密碼Windows Linux 安裝系統的全碟加密。 加密多重啟動

下載自 官網,或者從鏡子裡 SourceForge上 VeraCrypt加密軟體安裝版 (在文章 v1.24-Update3 發佈時,便攜版 VeraCrypt 不適合系統加密)。 檢查下載軟體的校驗和

$ Certutil -hashfile "C:VeraCrypt Setup 1.24.exe" SHA256

並將結果與 VeraCrypt 開發者網站上發布的 CS 進行比較。

如果安裝了HashTab軟體就更簡單了:RMB (VeraCrypt 安裝程式 1.24.exe)-properties - 檔案的哈希和。

要驗證程式簽名,系統上必須安裝軟體和開發人員的公共 pgp 金鑰 gnuPG; GP4Win.

A2。 使用管理員權限安裝/執行 VeraCrypt 軟體Windows Linux 安裝系統的全碟加密。 加密多重啟動

A3。 為活動分割區選擇系統加密參數VeraCrypt – 系統 – 加密系統分割區/磁碟 – 正常 – 加密 Windows 系統分割區 – 多重啟動 – (警告:“不建議沒有經驗的用戶使用此方法”,這是事實,我們同意“是”) – 啟動磁碟 (“是”,即使不是這樣,仍然是“是”) – 系統磁碟數量“2 個或更多” – 一個磁碟上多個系統“是” – 非 Windows 開機載入程式“否” (事實上,“是”,但是VeraCrypt/GRUB2 引導程式不會在它們之間共享MBR;更準確地說,只有引導程式程式碼的最小部分儲存在MBR/引導軌道中,它的主要部分是位於檔案系統內) – 多重啟動 – 加密設定...

如果您偏離上述步驟(區塊系統加密方案),那麼 VeraCrypt 將發出警告並且不允許您加密該分割區。

在目標資料保護的下一步中,進行“測試”並選擇加密演算法。 如果您的 CPU 過時,那麼最快的加密演算法很可能是 Twofish。 如果CPU很強大,你會注意到差異:根據測試結果,AES加密將比其加密競爭對手快幾倍。 AES 是一種流行的加密演算法;現代 CPU 的硬體專門針對「秘密」和「駭客攻擊」進行了最佳化。

VeraCrypt 支援以 AES 級聯加密磁碟的能力(雙魚)/和其他組合。 在十年前的舊核心 Intel CPU 上 (無需硬體支援 AES、A/T 級聯加密) 表現的下降基本上是難以察覺的。 (對於同時代的AMD CPU/~參數,效能略有下降)。 作業系統動態運行,透明加密的資源消耗不可見。 相較之下,例如由於安裝了不穩定的測試桌面環境Mate v1.20.1,性能出現明顯下降 (或v1.20.2我不太記得了) 在GNU/Linux中,或由於Windows7↑中遙測程式的操作。 通常,有經驗的用戶在加密之前會進行硬體效能測試。 例如,在Aida64/Sysbench/systemd-analyze中,將責任與加密系統後的相同測試結果進行比較,從而為自己駁斥了「系統加密有害」的神話。 在備份/恢復加密資料時,機器的速度變慢和不便很明顯,因為「系統資料備份」操作本身不是以毫秒為單位來衡量的,並且添加了相同的<即時解密/加密>。 最終,每個被允許修改密碼學的用戶都會平衡加密演算法與手頭任務的滿意度、他們的偏執程度和易用性。

最好將 PIM 參數保留為預設值,這樣在載入作業系統時就不必每次都輸入準確的迭代值。 VeraCrypt 使用大量迭代來創建真正的「慢哈希」。 使用暴力/彩虹表方法對這種「加密蝸牛」進行攻擊只有使用簡短的「簡單」密碼和受害者的個人字元集清單才有意義。 密碼強度的代價是載入作業系統時輸入正確密碼的延遲。 (在 GNU/Linux 中安裝 VeraCrypt 磁碟區的速度要快得多)。
用於實施暴力攻擊的免費軟體 (從 VeraCrypt/LUKS 磁碟頭中提取密碼) 哈希貓。 John the Ripper 不知道如何“破解 Veracrypt”,並且在與 LUKS 合作時也不了解 Twofish 密碼學。

由於加密演算法的加密強度,不可阻擋的密碼朋克正在開發具有不同攻擊向量的軟體。 例如,從 RAM 中提取元資料/金鑰 (冷啟動/直接記憶體存取攻擊), 有專門用於這些目的的免費和非自由軟體。

完成加密活動分割區的設定/產生「唯一元資料」後,VeraCrypt 將重新啟動 PC 並測試其引導程式的功能。 重新啟動/啟動 Windows 後,VeraCrypt 將以待機模式加載,剩下的就是確認加密過程 - Y。

在系統加密的最後一步,VeraCrypt 將以「veracryptrescuedisk.iso」的形式建立活動加密分割區標頭的備份副本 - 這是必須完成的 - 在該軟體中,這樣的操作是必要的 (在 LUKS 中,作為一項要求 - 不幸的是,這被省略了,但在文件中強調了)。 救援盤對每個人都會派上用場,而且對某些人來說不只一次。 損失 (標頭/MBR 重寫) 標頭的備份副本將永久拒絕 Windows 作業系統對解密分割區的存取。

A4。 創建 VeraCrypt 救援 USB/磁碟預設情況下,VeraCrypt 提供將「~2-3MB 元資料」燒錄到CD 的功能,但並非所有人都有磁碟或DWD-ROM 驅動器,建立可啟動隨身碟「VeraCrypt 救援磁碟」對某些人來說將是一個技術驚喜: Rufus /GUIdd-ROSA ImageWriter 和其他類似軟體將無法應對該任務,因為除了將偏移元資料複製到可啟動閃存驅動器之外,您還需要將圖像複製/貼上到USB 驅動器的文件系統之外,簡而言之,正確地將 MBR/道路複製到鑰匙圈。 您可以使用「dd」公用程式從 GNU/Linux 作業系統建立可啟動隨身碟,查看此標誌。

Windows Linux 安裝系統的全碟加密。 加密多重啟動

在 Windows 環境中建立應急磁碟是不同的。 VeraCrypt的開發者並沒有在官方中包含這個問題的解決方案 文件 透過“救援盤”,但提出了不同的解決方案:他在他的 VeraCrypt 論壇上發布了用於創建“USB 救援盤”的附加軟體,供免費訪問。 Windows 版該軟體的存檔管理員是「建立 USB veracrypt 救援碟」。 儲存rescue disk.iso後,活動分割區的區塊系統加密過程將開始。 加密期間,作業系統的運作不會停止;無需重新啟動 PC。 加密操作完成後,活動分割區將完全加密並可使用。 如果啟動 PC 時未出現 VeraCrypt 啟動載入程序,且標頭復原作業也無濟於事,請檢查「啟動」標誌,它必須設定為 Windows 所在的分割區 (無論加密和其他作業系統為何,請參閱表 1)。
這就完成了使用 Windows 作業系統進行區塊系統加密的描述。

[B]盧克斯。 GNU/Linux 加密 (~Debian) 安裝的作業系統。 演算法和步驟

為了加密已安裝的 Debian/衍生發行版,您需要將準備好的分割區對應到虛擬區塊設備,將其傳輸到已對應的 GNU/Linux 磁碟,然後安裝/配置 GRUB2。 如果您沒有裸機伺服器,並且您珍惜時間,那麼您需要使用 GUI,並且下面描述的大多數終端命令都應該在「Chuck-Norris 模式」下運行。

B1。 從即時 USB GNU/Linux 啟動 PC

“對硬體效能進行加密測試”

lscpu && сryptsetup benchmark

Windows Linux 安裝系統的全碟加密。 加密多重啟動

如果您是一輛支援 AES 硬體的強大汽車的快樂擁有者,那麼數字將看起來像終端的右側;如果您是快樂的擁有者,但使用古董硬件,那麼數字將看起來像左側。

B2. 磁碟分割區。 將 fs 邏輯磁碟 HDD 掛載/格式化為 Ext4 (Gparted)

B2.1。 建立加密的 sda7 分割區頭我將根據上面發布的分區表在這裡和進一步描述分區的名稱。 根據您的磁碟佈局,您必須替換分割區名稱。

邏輯磁碟機加密映射 (/dev/sda7 > /dev/mapper/sda7_crypt)。
#輕鬆建立“LUKS-AES-XTS分割區”

cryptsetup -v -y luksFormat /dev/sda7

選項:

* luksFormat - LUKS 頭的初始化;
* -y -passphrase(不是金鑰/文件);
* -v -verbalization(在終端機中顯示資訊);
* /dev/sda7 - 擴充分割區中的邏輯磁碟 (計劃傳輸/加密 GNU/Linux).

預設加密演算法<LUKS1:aes-xts-plain64,金鑰:256 位,LUKS 標頭雜湊:sha256,RNG:/dev/urandom> (取決於 cryptsetup 版本)。

#Проверка default-алгоритма шифрования
cryptsetup  --help #самая последняя строка в выводе терминала.

如果 CPU 上沒有 AES 硬體支持,最好的選擇是建立擴展的「LUKS-Twofish-XTS-partition」。

B2.2。 “LUKS-Twofish-XTS-分區”的高級創建

cryptsetup luksFormat /dev/sda7 -v -y -c twofish-xts-plain64 -s 512 -h sha512 -i 1500 --use-urandom

選項:
* luksFormat - LUKS 頭的初始化;
* /dev/sda7 是你未來的加密邏輯磁碟;
* -v 言語表達;
* -y 密碼;
* -c 選擇資料加密演算法;
* -s 加密金鑰大小;
* -h 雜湊演算法/加密函數,使用 RNG (--使用urandom) 為邏輯磁碟頭產生唯一的加密/解密金鑰,即輔助頭金鑰(XTS); 儲存在加密磁碟頭中的唯一主金鑰、輔助 XTS 金鑰、所有這些元資料以及使用主金鑰和輔助 XTS 金鑰加密/解密分割區上任何資料的加密例程 (章節標題除外) 儲存在所選硬碟分割區上的 ~3MB 中。
* -i 以毫秒為單位的迭代,而不是“數量” (處理密碼時的時間延遲會影響作業系統的載入和金鑰的加密強度)。 為了保持加密強度的平衡,對於像“Russian”這樣的簡單密碼,您需要增加 -(i) 值;對於像“?8dƱob/øfh”這樣的複雜密碼,可以減小該值。
* —use-urandom 隨機數產生器,產生金鑰和鹽。

映射 sda7 > sda7_crypt 部分後 (操作速度很快,因為加密標頭是使用約 3 MB 的元資料建立的,僅此而已),需要格式化並掛載sda7_crypt檔案系統。

B2.3。 比較

cryptsetup open /dev/sda7 sda7_crypt
#выполнение данной команды запрашивает ввод секретной парольной фразы.

選項:
* open - 匹配「with name」部分;
* /dev/sda7 - 邏輯磁碟;
* sda7_crypt - 用於掛載加密分區或在作業系統啟動時初始化它的名稱映射。

B2.4。 將 sda7_crypt 檔案系統格式化為 ext4。 在作業系統中掛載磁碟(注意:您將無法在 Gparted 中使用加密分割區)

#форматирование блочного шифрованного устройства
mkfs.ext4 -v -L DebSHIFR /dev/mapper/sda7_crypt 

選項:
* -v - 語言化;
* -L - 磁碟機標籤(顯示在資源管理器中的其他磁碟機中)。

接下來,您應該將虛擬加密區塊裝置 /dev/sda7_crypt 掛載到系統

mount /dev/mapper/sda7_crypt /mnt

使用 /mnt 資料夾中的檔案將自動加密/解密 sda7 中的資料。

在資源管理器中映射和掛載分區更方便 (鸚鵡螺/caja GUI),該分割區將已經在磁碟選擇清單中,剩下的就是輸入密碼來開啟/解密磁碟。 將自動選擇匹配的名稱,而不是“sda7_crypt”,而是類似 /dev/mapper/Luks-xx-xx...

B2.5。 光碟標頭備份(~3MB 元資料)其中一個 重要的 需要立即完成的操作 - “sda7_crypt”標頭的備份副本。 如果您覆蓋/損壞標頭 (例如在sda2分割區安裝GRUB7等),加密的資料將完全遺失,並且沒有任何恢復的可能性,因為不可能重新產生相同的金鑰;金鑰是唯一建立的。

#Бэкап заголовка раздела
cryptsetup luksHeaderBackup --header-backup-file ~/Бэкап_DebSHIFR /dev/sda7 

#Восстановление заголовка раздела
cryptsetup luksHeaderRestore --header-backup-file <file> <device>

選項:
* luksHeaderBackup —標頭備份檔-備份指令;
* luksHeaderRestore —標頭備份檔-復原指令;
* ~/Backup_DebSHIFR - 備份檔案;
* /dev/sda7 - 若要儲存加密磁碟頭備份副本的分割區。
到此<建立並編輯加密分割區>就完成了。

B3。 移植 GNU/Linux 作業系統 (sda4) 到加密分割區 (sda7)

建立資料夾/mnt2 (注意 - 我們仍在使用實時 USB,sda7_crypt 安裝在 /mnt),並將我們的GNU/Linux掛載到/mnt2,需要加密。

mkdir /mnt2
mount /dev/sda4 /mnt2

我們使用 Rsync 軟體進行正確的作業系統傳輸

rsync -avlxhHX --progress /mnt2/ /mnt

Rsync 選項在 E1 段中描述。

此外, 必要 對邏輯磁碟分割進行碎片整理

e4defrag -c /mnt/ #после проверки, e4defrag выдаст, что степень дефрагментации раздела~"0", это заблуждение, которое может вам стоить существенной потери производительности!
e4defrag /mnt/ #проводим дефрагментацию шифрованной GNU/Linux

制定一條規則:如果您有硬碟,請不時對加密的 GNU/LInux 執行 e4defrag。
傳輸和同步【GNU/Linux > GNU/Linux-加密】到此步驟完成。

在 4。 在加密的 sda7 分割區上設定 GNU/Linux

成功轉移作業系統 /dev/sda4 > /dev/sda7 後,需要登入加密分割區上的 GNU/Linux 並進行進一步配置 (無需重新啟動電腦) 相對於加密系統。 也就是說,位於即時 USB 中,但執行「相對於加密作業系統的根目錄」的命令。 「chroot」將模擬類似的情況。 快速接收有關您目前使用的作業系統的信息 (加密與否,因為sda4和sda7中的資料是同步的),取消作業系統同步。 在根目錄下創建 (sda4/sda7_crypt) 空標記文件,例如 /mnt/encryptedOS 和 /mnt2/decryptedOS。 快速檢查您使用的作業系統 (包括未來):

ls /<Tab-Tab>

B4.1。 “模擬登入加密作業系統”

mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
chroot /mnt

B4.2。 驗證工作是針對加密系統進行的

ls /mnt<Tab-Tab> 
#и видим файл "/шифрованнаяОС"

history
#в выводе терминала должна появиться история команд su рабочей ОС.

B4.3。 建立/配置加密交換,編輯 crypttab/fstab由於每次作業系統啟動時都會格式化交換文件,因此現在建立交換並將其映射到邏輯磁碟並鍵入 B2.2 段中的命令是沒有意義的。 對於Swap來說,它自己的臨時加密金鑰將在每次啟動時自動產生。 交換鍵的生命週期:卸載/卸載交換分區 (+清理記憶體); 或重新啟動作業系統。 設定swap,開啟負責區塊加密設備配置的文件 (類似於 fstab 文件,但負責加密)。

nano /etc/crypttab 

我們編輯

#“目標名稱”“來源裝置”“金鑰檔案”“選項”
交換 /dev/sda8 /dev/urandom 交換,密碼=twofish-xts-plain64,大小=512,雜湊=sha512

選項
* swap - 加密 /dev/mapper/swap 時的對應名稱。
* /dev/sda8 - 使用邏輯分割區進行交換。
* /dev/urandom - 用於交換的隨機加密金鑰產生器(每次新作業系統啟動時,都會建立新密鑰)。 /dev/urandom 產生器的隨機性不如 /dev/random,畢竟 /dev/random 是在危險的偏執環境中工作時使用的。 載入作業系統時,/dev/random 會使載入速度減慢幾分鐘 (參見 systemd-分析).
* swap,cipher=twofish-xts-plain64,size=512,hash=sha512: -分割區知道它是交換分割區並「對應地」格式化; 加密算法。

#Открываем и правим fstab
nano /etc/fstab

我們編輯

# 安裝期間交換位於 /dev/sda8
/dev/mapper/swap 無 交換 sw 0 0

/dev/mapper/swap 是在 crypttab 中設定的名稱。

替代加密交換
如果您因為某些原因不想為交換檔案放棄整個分割區,那麼您可以採用另一種更好的方法:使用作業系統在加密分割區上的檔案中建立交換檔案。

fallocate -l 3G /swap #создание файла размером 3Гб (почти мгновенная операция)
chmod 600 /swap #настройка прав
mkswap /swap #из файла создаём файл подкачки
swapon /swap #включаем наш swap
free -m #проверяем, что файл подкачки активирован и работает
printf "/swap none swap sw 0 0" >> /etc/fstab #при необходимости после перезагрузки swap будет постоянный

交換分區設定完成。

B4.4。 設定加密的 GNU/Linux(編輯 crypttab/fstab 檔案)如上所述,/etc/crypttab 檔案描述了系統引導期間配置的加密區塊裝置。

#правим /etc/crypttab 
nano /etc/crypttab 

如果您符合 sda7>sda7_crypt 部分,如段落 B2.1 所示

#“目標名稱”“來源裝置”“金鑰檔案”“選項”
sda7_crypt UUID=81048598-5bb9-4a53-af92-f3f9e709e2f2 none luks

如果您符合 sda7>sda7_crypt 部分,如段落 B2.2 所示

#“目標名稱”“來源裝置”“金鑰檔案”“選項”
sda7_crypt UUID=81048598-5bb9-4a53-af92-f3f9e709e2f2 none cipher=twofish-xts-plain64,size=512,hash=sha512

如果您配對了 B7 或 B7 段中的 sda2.1>sda2.2_crypt 部分,但不想重新輸入密碼來解鎖和啟動作業系統,那麼您可以替換金鑰/隨機檔案來代替密碼

#“目標名稱”“來源裝置”“金鑰檔案”“選項”
sda7_crypt UUID=81048598-5bb9-4a53-af92-f3f9e709e2f2 /etc/skey luks

描述
* 無 - 報告載入作業系統時需要輸入秘密密碼才能解鎖根。
* UUID - 分區識別碼。 若要尋找您的 ID,請在終端機中輸入 (提醒一下,從現在開始,您將在 chroot 環境中的終端機中工作,而不是在另一個即時 USB 終端機中工作)。

fdisk -l #проверка всех разделов
blkid #должно быть что-то подобное 

/dev/sda7: UUID=«81048598-5bb9-4a53-af92-f3f9e709e2f2» TYPE=«crypto_LUKS» PARTUUID=«0332d73c-07»
/dev/mapper/sda7_crypt: LABEL=«DebSHIFR» UUID=«382111a2-f993-403c-aa2e-292b5eac4780» TYPE=«ext4»

當從安裝了 sda7_crypt 的即時 USB 終端請求 blkid 時,此行可見)。
您從 sdaX 取得 UUID (不是 sdaX_crypt!,UUID sdaX_crypt - 在產生 grub.cfg 配置時將自動保留)。
* cipher=twofish-xts-plain64,size=512,hash=sha512 -luks 進階模式加密。
* /etc/skey - 金鑰文件,自動插入以解鎖作業系統啟動 (而不是輸入第三個密碼)。 您可以指定最大 8MB 的任何文件,但讀取的資料將小於 1MB。

#Создание "генерация" случайного файла <секретного ключа> размером 691б.
head -c 691 /dev/urandom > /etc/skey

#Добавление секретного ключа (691б) в 7-й слот заголовка luks
cryptsetup luksAddKey --key-slot 7 /dev/sda7 /etc/skey

#Проверка слотов "пароли/ключи luks-раздела"
cryptsetup luksDump /dev/sda7 

它看起來像這樣:

(自己做,自己看)。

cryptsetup luksKillSlot /dev/sda7 7 #удаление ключа/пароля из 7 слота

/etc/fstab 包含各種檔案系統的描述資訊。

#Правим /etc/fstab
nano /etc/fstab

#“檔案系統”“掛載點”“類型”“選項”“轉儲”“通過”
# 安裝期間 / 位於 /dev/sda7
/dev/mapper/sda7_crypt / ext4 錯誤=remount-ro 0 1

選項
* /dev/mapper/sda7_crypt - sda7>sda7_crypt 對應的名稱,在 /etc/crypttab 檔案中指定。
crypttab/fstab 設定完成。

B4.5。 編輯設定檔。 關鍵時刻B4.5.1。 編輯配置 /etc/initramfs-tools/conf.d/resume

#Если у вас ранее был активирован swap раздел, отключите его. 
nano /etc/initramfs-tools/conf.d/resume

並註解掉 (如果存在) “#”行“繼續”。 該文件必須完全為空。

B4.5.2。 編輯配置 /etc/initramfs-tools/conf.d/cryptsetup

nano /etc/initramfs-tools/conf.d/cryptsetup

應該匹配

# /etc/initramfs-tools/conf.d/cryptsetup
CRYPTSETUP=是
匯出 CRYPTSETUP

B4.5.3。 編輯 /etc/default/grub 配置 (此配置負責在使用加密的 /boot 時產生 grub.cfg 的能力)

nano /etc/default/grub

新增行“GRUB_ENABLE_CRYPTODISK=y”
值“y”,grub-mkconfig 和 grub-install 將檢查加密磁碟機並產生在引導時存取它們所需的附加命令 (insmods ).
一定有相似之處

GRUB_DEFAULT = 0
GRUB_TIMEOUT = 1
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || 迴聲Debian`
GRUB_CMDLINE_LINUX_DEFAULT="acpi_backlight=供應商"
GRUB_CMDLINE_LINUX="安靜啟動 noautomount"
GRUB_ENABLE_CRYPTODISK=y

B4.5.4。 編輯配置 /etc/cryptsetup-initramfs/conf-hook

nano /etc/cryptsetup-initramfs/conf-hook

檢查該行註解掉<#>。
在未來 (即使現在,這個參數也沒有任何意義,但有時它會幹擾更新 initrd.img 映像)。

B4.5.5。 編輯配置 /etc/cryptsetup-initramfs/conf-hook

nano /etc/cryptsetup-initramfs/conf-hook

添加

KEYFILE_PATTERN=”/etc/skey”
烏瑪斯克=0077

這會將金鑰「skey」打包到 initrd.img 中,作業系統啟動時需要該金鑰來解鎖 root (如果您不想再次輸入密碼,則可以用“skey”鑰匙代替汽車鑰匙)。

B4.6。 更新/boot/initrd.img [版本]若要將金鑰打包到 initrd.img 並套用 cryptsetup 修復,請更新映像

update-initramfs -u -k all

更新 initrd.img 時 (正如他們所說“這是可能的,但不確定”) 將會出現與 cryptsetup 相關的警告,或例如有關 Nvidia 模組遺失的通知 - 這是正常的。 更新文件後,檢查是否確實更新了,查看時間 (相對於 chroot 環境./boot/initrd.img)。 警告! 在 [update-initramfs -u -k all] 之前,請務必檢查 cryptsetup 是否已開啟 /dev/sda7 sda7_crypt - 這是/etc/crypttab中出現的名稱,否則重新啟動後會出現busybox錯誤)
到這一步,設定檔就設定完成了。

[C] 安裝與設定 GRUB2/保護

C1。 如有必要,格式化引導程式專用分割區(一個分割區至少需要20MB)

mkfs.ext4 -v -L GRUB2 /dev/sda6

C2。 將 /dev/sda6 掛載到 /mnt所以我們在chroot下工作,那麼根目錄下就不會存在/mnt2目錄了,/mnt資料夾會是空的。
掛載 GRUB2 分割區

mount /dev/sda6 /mnt

如果您安裝了舊版的 GRUB2,則位於 /mnt/boot/grub/i-386-pc 目錄中 (其他平台也是可能的,例如,不是“i386-pc”) 沒有加密模組 (簡而言之,該資料夾應包含模組,包括這些.mod:cryptodisk; luks; gcry_twofish; gcry_sha512;signature_test.mod), 在這種情況下,GRUB2需要動搖。

apt-get update
apt-get install grub2 

重要的! 從儲存庫更新 GRUB2 軟體包時,當詢問「關於選擇」安裝引導程式的位置時,必須拒絕安裝 (原因 - 嘗試安裝 GRUB2 - 在“MBR”或實時 USB 上)。 否則您將損壞 VeraCrypt 標頭/載入器。 更新 GRUB2 軟體包並取消安裝後,開機載入程式必須手動安裝在邏輯磁碟上,而不是安裝在 MBR 中。 如果您的儲存庫有過時版本的 GRUB2,請嘗試 更新 這是官方網站上的,沒查過 (與最新的 GRUB 2.02 ~BetaX 引導程式一起使用)。

C3。 將 GRUB2 安裝到擴充分割區 [sda6]您必須有已安裝的分割區 [項目 C.2]

grub-install --force --root-directory=/mnt /dev/sda6

選項
* —force - 安裝引導程序,繞過幾乎始終存在並阻止安裝的所有警告 (必需的標誌)。
* --root-directory - 安裝目錄到 sda6 的根目錄。
* /dev/sda6 - 你的 sdaХ 分割區 (不要錯過 /mnt /dev/sda6 之間的 <space>)。

C4。 建立設定檔[grub.cfg]忘記“update-grub2”命令,並使用完整設定檔產生命令

grub-mkconfig -o /mnt/boot/grub/grub.cfg

完成 grub.cfg 檔案的產生/更新後,輸出終端應包含在磁碟上找到的作業系統的行 (如果您有一個帶有 Windows 10 的多重開機隨身碟和一堆即時發行版,「grub-mkconfig」可能會從即時 USB 中找到並取得作業系統 - 這是正常的)。 如果終端是「空」且沒有產生「grub.cfg」文件,那麼這與系統中存在GRUB錯誤時的情況相同 (很可能是來自儲存庫測試分支的載入器), 從可信任來源重新安裝 GRUB2。
“簡單設定”安裝和GRUB2設定完成。

C5。 加密 GNU/Linux 作業系統的驗證測試我們正確完成了加密任務。 小心地留下加密的 GNU/Linux (退出 chroot 環境)。

umount -a #размонтирование всех смонтированных разделов шифрованной GNU/Linux
Ctrl+d #выход из среды chroot
umount /mnt/dev
umount /mnt/proc
umount /mnt/sys
umount -a #размонтирование всех смонтированных разделов на live usb
reboot

重新啟動 PC 後,應載入 VeraCrypt 引導程式。
Windows Linux 安裝系統的全碟加密。 加密多重啟動

*輸入活動分割區的密碼將開始載入 Windows。
*如果您選擇加密的GNU/Linux,則按「Esc」鍵會將控制權轉移到GRUB2 - 需要密碼(sda7_crypt) 來解鎖/boot/initrd.img(如果grub2 寫入uuid「找不到」 - 這是「找不到」一個grub2 引導程式有問題,應該重新安裝,例如,從測試分支/穩定版等)。
Windows Linux 安裝系統的全碟加密。 加密多重啟動

*根據您配置系統的方式(請參閱第 B4.4/4.5 段),輸入正確的密碼解鎖 /boot/initrd.img 映像後,您將需要密碼來載入作業系統核心/根目錄或金鑰key 將自動替換為“skey”,無需重新輸入密碼。
Windows Linux 安裝系統的全碟加密。 加密多重啟動
(螢幕「自動替換密鑰」)。

*然後將遵循熟悉的載入 GNU/Linux 和使用者帳戶驗證的過程。
Windows Linux 安裝系統的全碟加密。 加密多重啟動

*使用者授權並登入作業系統後,需要再次更新/boot/initrd.img (見 B4.6)。

update-initramfs -u -k all

如果 GRUB2 選單中有多餘的行 (來自帶有 live USB 的 OS-m 拾音器) 擺脫他們

mount /dev/sda6 /mnt
grub-mkconfig -o /mnt/boot/grub/grub.cfg

GNU/Linux 系統加密的快速總結:

  • GNU/Linuxinux完全加密,包括/boot/kernel和initrd;
  • 密鑰封裝在initrd.img中;
  • 目前的授權方案 (輸入解鎖initrd的密碼;啟動作業系統的密碼/金鑰;授權Linux帳號的密碼).

《簡單的GRUB2配置》區塊分割區的系統加密就完成了。

C6。 進階 GRUB2 配置。 具有數位簽章+身份驗證保護的引導程式保護GNU/Linux 是完全加密的,但開機載入程式不能加密-這種情況是由 BIOS 決定的。 因此,GRUB2 的鍊式加密引導是不可能的,但簡單的鍊式引導是可能/可用的,但從安全性角度來看,這是沒有必要的 [參見P.F]。
針對「存在漏洞」的GRUB2,開發人員實作了「簽名/身份驗證」的引導程式保護演算法。

  • 當引導程式受到「其自己的數位簽章」保護時,檔案的外部修改或嘗試在此引導程式中載入其他模組將導致引導過程被阻止。
  • 透過驗證保護開機載入程式時,為了選擇載入發行版或在 CLI 中輸入其他指令,您需要輸入超級使用者 GRUB2 的登入名稱和密碼。

C6.1。 引導程式身份驗證保護檢查您是否在加密作業系統的終端機中工作

ls /<Tab-Tab> #обнаружить файл-маркер

建立超級使用者密碼以在 GRUB2 中進行授權

grub-mkpasswd-pbkdf2 #введите/повторите пароль суперпользователя. 

獲取密碼哈希。 像這樣的東西

grub.pbkdf2.sha512.10000.DE10E42B01BB6FEEE46250FC5F9C3756894A8476A7F7661A9FFE9D6CC4D0A168898B98C34EBA210F46FC10985CE28277D0563F74E108FCE3ACBD52B26F8BA04D.27625A4D30E4F1044962D3DD1C2E493EF511C01366909767C3AF9A005E81F4BFC33372B9C041BE9BA904D7C6BB141DE48722ED17D2DF9C560170821F033BCFD8

掛載 GRUB 分割區

mount /dev/sda6 /mnt 

編輯配置

nano -$ /mnt/boot/grub/grub.cfg 

檢查檔案搜索,確保“grub.cfg”中沒有任何標誌(“-unrestricted”“-user”,
添加在最後 (在 ### END /etc/grub.d/41_custom ### 行之前)
“設定超級用戶=”root“
password_pbkdf2 根哈希值。”

應該是這樣的

# 該文件提供了一種添加自訂選單項目的簡單方法。 只需鍵入
# 您想要在此評論後新增的選單項目。 注意不要改變
#上面的'exec tail'行。
### 結束 /etc/grub.d/40_custom ###

### 開始 /etc/grub.d/41_custom ###
如果 [ -f ${config_directory}/custom.cfg ]; 然後
來源 ${config_directory}/custom.cfg
elif [ -z "${config_directory}" -a -f $prefix/custom.cfg ]; 然後
源 $prefix/custom.cfg;
fi
設定超級用戶=“root”
password_pbkdf2 root grub.pbkdf2.sha512.10000.DE10E42B01BB6FEEE46250FC5F9C3756894A8476A7F7661A9FFE9D6CC4D0A168898B98C34EBA210F46FC10985CE28277D0563F74E108FCE3ACBD52B26F8BA04D.27625A4D30E4F1044962D3DD1C2E493EF511C01366909767C3AF9A005E81F4BFC33372B9C041BE9BA904D7C6BB141DE48722ED17D2DF9C560170821F033BCFD8
### 結束 /etc/grub.d/41_custom ###
#

如果您經常使用命令「grub-mkconfig -o /mnt/boot/grub/grub.cfg」且不想每次都更改grub.cfg,請輸入以上行 (登入密碼) 在最底部的 GRUB 使用者腳本中

nano /etc/grub.d/41_custom 

貓<<EOF
設定超級用戶=“root”
password_pbkdf2 root grub.pbkdf2.sha512.10000.DE10E42B01BB6FEEE46250FC5F9C3756894A8476A7F7661A9FFE9D6CC4D0A168898B98C34EBA210F46FC10985CE28277D0563F74E108FCE3ACBD52B26F8BA04D.27625A4D30E4F1044962D3DD1C2E493EF511C01366909767C3AF9A005E81F4BFC33372B9C041BE9BA904D7C6BB141DE48722ED17D2DF9C560170821F033BCFD8
EOF

當產生設定「grub-mkconfig -o /mnt/boot/grub/grub.cfg」時,負責驗證的行會自動加入 grub.cfg 中。
此步驟完成 GRUB2 驗證設定。

C6.2。 帶數位簽章的引導程式保護假設您已經擁有個人 pgp 加密金鑰 (或建立這樣的密鑰)。 系統必須安裝加密軟體:gnuPG; 克莉奧佩特拉/GPA; 海馬。 加密軟體將使您在所有此類問題上的生活變得更加輕鬆。 Seahorse - 穩定版軟體套件 3.14.0 (更高版本,例如 V3.20,有缺陷並且有重大錯誤)。

PGP 金鑰僅需要在 su 環境中產生/啟動/新增!

產生個人加密金鑰

gpg - -gen-key

匯出您的金鑰

gpg --export -o ~/perskey

如果尚未掛載,則在作業系統中掛載邏輯磁碟

mount /dev/sda6 /mnt #sda6 – раздел GRUB2

清理 GRUB2 分割區

rm -rf /mnt/

在 sda2 中安裝 GRUB6,將您的私鑰放入主 GRUB 映像「core.img」中

grub-install --force --modules="gcry_sha256 gcry_sha512 signature_test gcry_dsa gcry_rsa" -k ~/perskey --root-directory=/mnt /dev/sda6

選項
* --force - 安裝引導程序,繞過所有始終存在的警告 (必需的標誌)。
* —modules="gcry_sha256 gcry_sha512 signature_test gcry_dsa gcry_rsa" - 指示 GRUB2 在 PC 啟動時預先載入必要的模組。
* -k ~/perskey -「PGP 金鑰」的路徑 (將密鑰打包到鏡像後即可刪除)。
* --root-directory -設定啟動目錄為sda6的根目錄
/dev/sda6 - 您的 sdaX 分割區。

產生/更新 grub.cfg

grub-mkconfig  -o /mnt/boot/grub/grub.cfg

將「trust /boot/grub/perskey」行新增至「grub.cfg」檔案的末尾 (強制使用 pgp 金鑰。) 由於我們安裝了 GRUB2 和一組模組,包括簽名模組“signature_test.mod”,因此無需在組態中新增“set check_signatures=enforce”等指令。

它應該看起來像這樣 (grub.cfg 檔案中的結束行)

### 開始 /etc/grub.d/41_custom ###
如果 [ -f ${config_directory}/custom.cfg ]; 然後
來源 ${config_directory}/custom.cfg
elif [ -z "${config_directory}" -a -f $prefix/custom.cfg ]; 然後
源 $prefix/custom.cfg;
fi
信任 /boot/grub/perskey
設定超級用戶=“root”
password_pbkdf2 root grub.pbkdf2.sha512.10000.DE10E42B01BB6FEEE46250FC5F9C3756894A8476A7F7661A9FFE9D6CC4D0A168898B98C34EBA210F46FC10985CE28277D0563F74E108FCE3ACBD52B26F8BA04D.27625A4D30E4F1044962D3DD1C2E493EF511C01366909767C3AF9A005E81F4BFC33372B9C041BE9BA904D7C6BB141DE48722ED17D2DF9C560170821F033BCFD8
### 結束 /etc/grub.d/41_custom ###
#

「/boot/grub/perskey」的路徑不需要指向特定的磁碟分割區,例如 hd0,6;對於引導程式本身,「root」是安裝 GRUB2 的分割區的預設路徑 (請參閱設定 rot=..)。

簽署 GRUB2 (所有 /GRUB 目錄中的所有檔案) 用你的鑰匙「perkey」。
關於如何簽署的簡單解決方案 (適用於 nautilus/caja 探險家): 從儲存庫安裝資源管理器的“seahorse”擴充功能。 您的金鑰必須新增到 su 環境中。
使用 sudo“/mnt/boot”-RMB-符號開啟資源管理器。 在螢幕上看起來像這樣

Windows Linux 安裝系統的全碟加密。 加密多重啟動

金鑰本身是“/mnt/boot/grub/perskey” (複製到grub目錄下) 還必須有您自己的簽名。 檢查 [*.sig] 檔案簽章是否出現在目錄/子目錄中。
使用上述方法,簽署“/boot” (我們的內核,initrd)。 如果您的時間很有價值,那麼這種方法就無需編寫 bash 腳本來簽署「大量文件」。

刪除所有引導程式簽名 (如果出了問題)

rm -f $(find /mnt/boot/grub -type f -name '*.sig')

為了不在更新系統後對引導程式進行簽名,我們凍結了所有與 GRUB2 相關的更新套件。

apt-mark hold grub-common grub-pc grub-pc-bin grub2 grub2-common

到這一步驟<利用數位簽章保護bootloader>GRUB2的進階設定就完成了。

C6.3。 GRUB2 開機載入程式的驗證測試,受數位簽章和驗證保護GRUB2。 選擇任何 GNU/Linux 發行版或進入 CLI 時 (命令列) 需要超級用戶授權。 輸入正確的使用者名稱/密碼後,您將需要 initrd 密碼

Windows Linux 安裝系統的全碟加密。 加密多重啟動
GRUB2 超級使用者成功驗證的螢幕截圖。

如果您竄改任何 GRUB2 檔案/更改 grub.cfg,或刪除該檔案/簽名,或載入惡意 module.mod,將會出現對應的警告。 GRUB2 將暫停載入。

Windows Linux 安裝系統的全碟加密。 加密多重啟動
螢幕截圖,試圖「從外部」幹擾 GRUB2。

在「正常」啟動「無入侵」期間,系統退出代碼狀態為「0」。 因此,保護是否有效尚不得而知 (也就是說,「有或沒有引導程式簽章保護」在正常載入期間狀態都是相同的「0」 - 這很糟糕)。

如何檢查數位簽章保護情況?

一種不方便的檢查方法:偽造/刪除 GRUB2 使用的模組,例如刪除簽名 luks.mod.sig 並得到錯誤。

正確方法:進入bootloader CLI並輸入指令

trust_list

作為回應,您應該收到一個“perkey”指紋;如果狀態為“0”,則簽章保護不起作用,請仔細檢查 C6.2 段。
至此,進階設定「用數位簽章和身分驗證保護GRUB2」就完成了。

C7 使用雜湊保護 GRUB2 開機載入程式的替代方法上面介紹的「CPU Boot Loader 保護/身份驗證」方法是經典的。 由於 GRUB2 的缺陷,在偏執的情況下它很容易受到真正的攻擊,我將在下面的 [F] 段中給出。 此外,更新作業系統/核心後,必須重新簽署引導程式。

使用哈希保護 GRUB2 引導程式

與經典相比的優勢:

  • 更高水準的可靠性 (散列/驗證僅在加密的本地資源中進行。GRUB2 下的整個分配分區都受到控制以進行任何更改,其他所有內容均已加密;在具有CPU 加載程序保護/身份驗證的經典方案中,僅控製文件,但不控制自由空間,其中可以添加“某種東西”“某種險惡的東西”)。
  • 加密日誌記錄 (該方案中新增了人類可讀的個人加密日誌)。
  • 速度 (分配給 GRUB2 的整個分區的保護/驗證幾乎立即發生)。
  • 所有加密過程的自動化。

相對於經典的缺點。

  • 偽造簽名 (理論上,可以找到給定的哈希函數碰撞)。
  • 難度增加 (與經典相比,需要更多的 GNU/Linux 作業系統技能)。

GRUB2/分區哈希思想如何運作

GRUB2 分割區已「簽署」;當作業系統啟動時,將檢查開機載入程式分割區的不變性,然後登入安全性(加密)環境。 如果引導程式或其分割區受到損害,除了入侵日誌之外,還會啟動以下內容:

事物。Windows Linux 安裝系統的全碟加密。 加密多重啟動

類似的檢查每天進行四次,不會載入系統資源。
使用“-$ check_GRUB”命令,可以隨時進行即時檢查,無需記錄日誌,但會將資訊輸出到 CLI。
使用命令“-$ sudo簽名_GRUB”,GRUB2引導程式/分區立即重新簽名並更新日誌記錄 (作業系統/啟動更新後必備),生活還要繼續。

引導程式及其部分的哈希方法的實現

0) 讓我們先將 GRUB 引導程式/分割區掛載到 /media/username 中來對其進行簽名

-$ hashdeep -c md5 -r /media/username/GRUB > /podpis.txt

1) 我們在加密作業系統 ~/podpis 的根目錄中建立一個沒有副檔名的腳本,對其套用必要的 744 安全權限和萬無一失的保護。

填充其內容

#!/bin/bash

#Проверка всего раздела выделенного под загрузчик GRUB2 на неизменность.
#Ведется лог "о вторжении/успешной проверке каталога", короче говоря ведется полный лог с тройной вербализацией. Внимание! обратить взор на пути: хранить ЦП GRUB2 только на зашифрованном разделе OS GNU/Linux. 
echo -e "******************************************************************n" >> '/var/log/podpis.txt' && date >> '/var/log/podpis.txt' && hashdeep -vvv -a -k '/podpis.txt' -r '/media/username/GRUB' >> '/var/log/podpis.txt'

a=`tail '/var/log/podpis.txt' | grep failed` #не использовать "cat"!! 
b="hashdeep: Audit failed"

#Условие: в случае любых каких-либо изменений в разделе выделенном под GRUB2 к полному логу пишется второй отдельный краткий лог "только о вторжении" и выводится на монитор мигание gif-ки "warning".
if [[ "$a" = "$b" ]] 
then
echo -e "****n" >> '/var/log/vtorjenie.txt' && echo "vtorjenie" >> '/var/log/vtorjenie.txt' && date >> '/var/log/vtorjenie.txt' & sudo -u username DISPLAY=:0 eom '/warning.gif' 
fi

我們運行腳​​本 su,GRUB分割區及其引導程式的雜湊值將被檢查,並保存日誌。

例如,讓我們建立或複製一個「惡意檔案」[virus.mod] 到 GRUB2 分割區並執行臨時掃描/測試:

-$ hashdeep -vvv -a -k '/podpis.txt' -r '/media/username/GRUB

CLI 必須看到對我們的「城堡」的入侵#修剪 CLI 中的登錄

Ср янв  2 11::41 MSK 2020
/media/username/GRUB/boot/grub/virus.mod: Moved from /media/username/GRUB/1nononoshifr
/media/username/GRUB/boot/grub/i386-pc/mda_text.mod: Ok
/media/username/GRUB/boot/grub/grub.cfg: Ok
hashdeep: Audit failed
   Input files examined: 0
  Known files expecting: 0
          Files matched: 325
Files partially matched: 0
            Files moved: 1
        New files found: 0
  Known files not found: 0

#可以看到,出現“Files moving: 1 and Audit failed”,表示檢查失敗。
由於正在測試的分區的性質,而不是“找到新文件”>“移動的文件”

2) 將gif放在這裡> ~/warning.gif,將權限設定為744。

3) 設定 fstab 在啟動時自動掛載 GRUB 分割區

-$ sudo nano /etc/fstab

LABEL=GRUB /media/使用者名稱/GRUB ext4 預設 0 0

4) 旋轉日誌

-$ sudo nano /etc/logrotate.d/podpis 

/var/log/podpis.txt {
每天
旋轉50
大小為5M
日期文本
壓縮
delaycompress
olddir /var/log/舊
}

/var/log/vtorjenie.txt {
每月一次
旋轉5
大小為5M
日期文本
olddir /var/log/舊
}

5) 將作業新增至 cron

-$ sudo crontab -e

重啟 '/訂閱'
0 */6 * * * '/podpis

6) 建立永久別名

-$ sudo su
-$ echo "alias подпись_GRUB='hashdeep -c md5 -r /media/username/GRUB > /podpis.txt'" >> /root/.bashrc && bash
-$ echo "alias проверка_GRUB='hashdeep -vvv -a -k '/podpis.txt' -r /media/username/GRUB'" >> .bashrc && bash

作業系統更新後 -$ apt-get upgrade 重新簽署我們的 GRUB 分割區
-$ подпись_GRUB
至此,GRUB分區的雜湊保護就完成了。

[D] 擦除 - 破壞未加密的數據

南卡羅來納州發言人特雷·高迪 (Trey Gowdy) 表示,徹底刪除你的個人文件,「連上帝都無法讀取它們」。

像往常一樣,有各種各樣的“神話和 傳說”,關於從硬碟刪除資料後恢復資料。 如果您相信網路巫術,或者是Dr網路社群的成員並且從未嘗試過刪除/覆蓋後的資料恢復 (例如,使用 R-studio 進行恢復),那麼所提出的方法不太可能適合您,請使用最接近您的方法。

成功將 GNU/Linux 轉移到加密分割區後,必須刪除舊副本,且無法復原資料。 一般清潔方法:適用於Windows/Linux的免費GUI軟體 BleachBit.
Быстро 設定該部分的格式,需要銷毀的數據 (來自 Gparted) 啟動BleachBit,選擇「清理可用空間」-選擇分割區 (您的 sdaX 帶有先前的 GNU/Linux 副本),剝離過程將開始。 BleachBit - 一次性擦除磁碟 - 這就是“我們需要的”,但是! 理論上,只有在您使用 BB v2.0 軟體格式化磁碟並清理磁碟時,此方法才有效。

Vnimanie! BB 擦除磁碟,留下元資料;當資料被刪除時,檔案名稱被保留 (Ccleaner - 不留下元資料)。

關於資料恢復可能性的神話並不完全是神話。Bleachbit V2.0-2 前不穩定作業系統 Debian 軟體包 (以及任何其他類似的軟體:sfill;wipe-Nautilus - 在這個骯髒的行業中也被注意到) 實際上有一個嚴重的錯誤:「自由空間清理」功能 它工作不正確 在 HDD/快閃磁碟機上 (ntfs/ext4)。 此類軟體在清除可用空間時,不會像許多用戶認為的那樣覆蓋整個磁碟。 還有一些 (許多) 已刪除的數據 作業系統/軟體將此數據視為未刪除/用戶數據,並且在清理「OSP」時會跳過這些檔案。 問題是,經過這麼長時間,清理磁碟 「刪除的檔案」可以恢復 即使擦拭光碟 3 次以上。
Bleachbit 上的 GNU/Linux 2.0-2 永久刪除檔案和目錄的功能可靠,但不會清除可用空間。 相較之下:在Windows上CCleaner中的「OSP for ntfs」功能運作正常,上帝真的無法讀取已刪除的資料。

所以,要徹底去除 “妥協” 舊的未加密數據, Bleachbit 需要直接存取此數據,然後使用「永久刪除檔案/目錄」功能。
若要在 Windows 中刪除“使用標準作業系統工具刪除的檔案”,請使用具有“OSP”功能的 CCleaner/BB。 在 GNU/Linux 中解決這個問題 (刪除已刪除的檔案) 你需要自己練習 (刪除資料+獨立嘗試恢復它,你不應該依賴軟體版本(如果不是書籤,那就是錯誤)),只有這樣你才能了解這個問題的機理,並徹底擺脫被刪除的資料。

我還沒有測試過Bleachbit v3.0,問題可能已經解決了。
Bleachbit v2.0 可以正常運作。

到這一步,磁碟擦除就完成了。

[E] 加密作業系統通用備份

每個使用者都有自己的備份資料的方法,但加密的系統作業系統資料需要稍微不同的方法來完成任務。 統一軟體(例如 Clonezilla 和類似軟體)無法直接處理加密資料。

加密區塊裝置備份問題的說明:

  1. 通用性-適用於Windows/Linux的相同備份演算法/軟體;
  2. 能夠在任何即時 USB GNU/Linux 的控制台中工作,無需下載額外的軟體 (但還是推薦GUI);
  3. 備份副本的安全性 - 儲存的「影像」必須加密/受密碼保護;
  4. 加密資料的大小必須與實際複製資料的大小相對應;
  5. 從備份副本中方便地提取必要的文件 (不需要先解密整個部分)。

例如,透過“dd”實用程式備份/恢復

dd if=/dev/sda7 of=/путь/sda7.img bs=7M conv=sync,noerror
dd if=/путь/sda7.img of=/dev/sda7 bs=7M conv=sync,noerror

它幾乎對應於任務的所有要點,但根據第 4 點,它經不起批評,因為它複製了整個磁碟分割區,包括可用空間 - 這並不有趣。

例如,透過存檔器 [tar" | GNU/Linux 備份] gpg] 很方便,但是對於 Windows 備份,您需要尋找其他解決方案 - 這並不有趣。

E1。 通用 Windows/Linux 備份。 連結rsync(Grsync)+VeraCrypt卷建立備份副本的演算法:

  1. 建立加密容器 (卷/文件) VeraCrypt 作業系統;
  2. 使用 Rsync 軟體將作業系統傳輸/同步到 VeraCrypt 加密容器中;
  3. 如有必要,將 VeraCrypt 磁碟區上傳到 www.

創建加密的 VeraCrypt 容器有其自身的特點:
建立動態磁碟區 (DT的創建只能在Windows中使用,也可以在GNU/Linux中使用);
創建一個常規卷,但有一個“偏執性格”的要求 (據開發商稱) – 容器格式化。

在 Windows 中幾乎可以立即建立動態磁碟區,但是當從 GNU/Linux > VeraCrypt DT 複製資料時,備份作業的整體效能會顯著下降。

創建了常規 70 GB Twofish 卷 (我們只是說,平均 PC 功率) 到硬碟〜半小時內 (一次性覆蓋之前的容器資料是出於安全需求)。 VeraCrypt Windows/Linux 中刪除了建立磁碟區時快速格式化磁碟區的功能,因此只能透過「一次重寫」或建立低效能動態磁碟區來建立容器。

建立常規 VeraCrypt 卷 (非動態/ntfs),應該不會有什麼問題。

在 VeraCrypt GUI > GNU/Linux live usb 中設定/建立/開啟容器 (該磁碟區將自動安裝到 /media/veracrypt2,Windows 作業系統磁碟區將安裝到 /media/veracrypt1)。 使用 GUI rsync 建立 Windows 作業系統的加密備份 (同步)透過選取複選框。

Windows Linux 安裝系統的全碟加密。 加密多重啟動

等待該過程完成。 備份完成後,我們將得到一個加密檔案。

同樣,透過取消選取 rsync GUI 中的「Windows 相容性」複選框來建立 GNU/Linux 作業系統的備份副本。

Vnimanie! 在檔案系統中為「GNU/Linux 備份」建立 Veracrypt 容器 ext4。 如果您備份到 ntfs 容器,那麼當您還原此類副本時,您將失去所有資料的所有權限/群組。

您可以在終端機中進行所有操作。 rsync 的基本選項:
* -g -保存群組;
* -P —進度 —處理文件所花費的時間的狀態;
* -H - 按原樣複製硬連結;
* -a -存檔模式 (多個 rlptgoD 標誌);
* -v - 語言化。

如果您想透過 cryptsetup 軟體中的控制台掛載“Windows VeraCrypt 磁碟區”,您可以建立別名 (su)

echo "alias veramount='cryptsetup open --veracrypt --tcrypt-system --type tcrypt /dev/sdaX Windows_crypt && mount /dev/mapper/ Windows_crypt /media/veracrypt1'" >> .bashrc && bash

現在「vermount pictures」指令將提示您輸入密碼,加密的Windows系統磁碟區將會安裝在作業系統中。

在 cryptsetup 指令中映射/掛載 VeraCrypt 系統卷

cryptsetup open --veracrypt --tcrypt-system --type tcrypt /dev/sdaX Windows_crypt
mount /dev/mapper/Windows_crypt /mnt

在 cryptsetup 指令中映射/掛載 VeraCrypt 分區/容器

cryptsetup open --veracrypt --type tcrypt /dev/sdaY test_crypt
mount /dev/mapper/test_crypt /mnt

我們將新增(啟動腳本)帶有 Windows 作業系統的系統磁碟區和邏輯加密的 ntfs 磁碟到 GNU/Linux 啟動,而不是別名

建立腳本並將其保存在 ~/VeraOpen.sh 中

printf 'Ym9i' | base64 -d | cryptsetup open --veracrypt --tcrypt-system --type tcrypt /dev/sda3 Windows_crypt && mount /dev/mapper/Windows_crypt /media/Winda7 #декодируем пароль из base64 (bob) и отправляем его на запрос ввода пароля при монтировании системного диска ОС Windows.
printf 'Ym9i' | base64 -d | cryptsetup open --veracrypt --type tcrypt /dev/sda1 ntfscrypt && mount /dev/mapper/ntfscrypt /media/КонтейнерНтфс #аналогично, но монтируем логический диск ntfs.

我們分配「正確」的權利:

sudo chmod 100 /VeraOpen.sh

在 /etc/rc.local 和 ~/etc/init.d/rc.local 中建立兩個相同的檔案(同名!)
填寫文件

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will «exit 0» on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

sh -c "sleep 1 && '/VeraOpen.sh'" #после загрузки ОС, ждём ~ 1с и только потом монтируем диски.
exit 0

我們分配「正確」的權利:

sudo chmod 100 /etc/rc.local && sudo chmod 100 /etc/init.d/rc.local 

就是這樣,現在載入 GNU/Linux 時我們不需要輸入密碼來掛載加密的 ntfs 磁碟,磁碟就會自動掛載。

簡單說明上面 E1 段中逐步描述的內容(但現在針對作業系統 GNU/Linux)
1) 在 Veracrypt [Cryptbox] 中的 fs ext4 > 4gb(用於檔案)Linux 中建立一個磁碟區。
2) 重新啟動至 live USB。
3) ~$ cryptsetup open /dev/sda7 Lunux #映射加密分割區。
4) ~$ mount /dev/mapper/Linux /mnt #將加密分割區掛載到/mnt。
5) ~$ mkdir mnt2 #為將來的備份建立一個目錄。
6) ~$ cryptsetup open —veracrypt —type tcrypt ~/CryptoBox CryptoBox && mount /dev/mapper/CryptoBox /mnt2 #對應一個名為「CryptoBox」的 Veracrypt 磁碟區並將 CryptoBox 掛載到 /mnt2。
7) ~$ rsync -avlxhHX —progress /mnt /mnt2/ #將加密分割區備份到加密 Veracrypt 磁碟區。

(p/s/ Vnimanie! 如果您要將加密的 GNU/Linux 從一種架構/機器傳輸到另一種架構/機器,例如 Intel > AMD(即將備份從一個加密分割區部署到另一個加密的 Intel > AMD 分割區), 別忘了 傳輸加密的作業系統後,也許可以編輯秘密替代金鑰而不是密碼。 先前的金鑰~/etc/skey - 將不再適合另一個加密分區,並且不建議從chroot 下建立新金鑰「cryptsetup luksAddKey」 - 可能會出現故障,只需在~/etc/crypttab 中指定而不是“/etc/skey”暫時“none”“,重新啟動並登入作業系統後,再次重新建立您的秘密通配符金鑰)。

身為IT老手,請記住單獨備份加密的Windows/Linux作業系統分割區的標頭,否則加密會對您不利。
至此,加密作業系統的備份就完成了。

[F] 對 GRUB2 引導程式的攻擊

詳情如果您使用數位簽章和/或身分驗證保護您的引導程式 (參見 C6 點。),那麼這將無法防止物理訪問。 加密資料仍然無法訪問,但保護將被繞過 (重置數位簽章保護) GRUB2 允許網路惡棍將其程式碼注入引導程式而不引起懷疑 (除非使用者手動監視引導程式狀態,或為 grub.cfg 提供自己強大的任意腳本程式碼)。

攻擊算法。 入侵者

* 從即時 USB 啟動 PC。 任何改變 (違規者) 文件將通知 PC 的真正擁有者有關引導程式的入侵。 但簡單地重新安裝 GRUB2 並保留 grub.cfg (以及隨後的編輯能力) 將允許攻擊者編輯任何文件 (在這種情況下,載入GRUB2時,不會通知真實使用者。狀態與<0>相同)
* 掛載未加密的分割區,儲存「/mnt/boot/grub/grub.cfg」。
* 重新安裝引導程式 (從 core.img 圖像中刪除“perskey”)

grub-install --force --root-directory=/mnt /dev/sda6

* 返回“grub.cfg”>“/mnt/boot/grub/grub.cfg”,必要時對其進行編輯,例如,將模組“keylogger.mod”添加到“grub.cfg”中包含載入器模組的資料夾中> 行「insmod 鍵盤記錄器」。 或者,例如,如果敵人很狡猾,那麼重新安裝 GRUB2 後 (所有簽名均保留) 它使用“grub-mkimage with option (-c)”建立主 GRUB2 映像。 “-c”選項將允許您在載入主“grub.cfg”之前載入配置。 配置可以只包含一行:重定向到任何“modern.cfg”,例如混合約 400 個文件 (模組+簽名) 在資料夾“/boot/grub/i386-pc”中。 在這種情況下,攻擊者可以插入任意程式碼並載入模組,而不會影響“/boot/grub/grub.cfg”,即使使用者將“hashsum”套用到該檔案並暫時將其顯示在螢幕上。
攻擊者不需要破解 GRUB2 超級使用者登入/密碼;他只需要複製這些行 (負責認證) “/boot/grub/grub.cfg”到您的“modern.cfg”

設定超級用戶=“root”
password_pbkdf2 root grub.pbkdf2.sha512.10000.DE10E42B01BB6FEEE46250FC5F9C3756894A8476A7F7661A9FFE9D6CC4D0A168898B98C34EBA210F46FC10985CE28277D0563F74E108FCE3ACBD52B26F8BA04D.27625A4D30E4F1044962D3DD1C2E493EF511C01366909767C3AF9A005E81F4BFC33372B9C041BE9BA904D7C6BB141DE48722ED17D2DF9C560170821F033BCFD8

且 PC 擁有者仍將被驗證為 GRUB2 超級使用者。

鏈條裝載 (引導程式載入另一個引導程式)正如我上面所寫,沒有意義 (它是為了不同的目的)。 由於 BIOS 無法載入加密的開機載入程式 (連結重新啟動 GRUB2 > 加密的 GRUB2,錯誤!)。 不過,如果你還是採用鍊式載入的思路,就可以確定載入的是加密的。 (未現代化) 加密分割區中的「grub.cfg」。 這也是一種錯誤的安全感,因為加密的“grub.cfg”中指示的所有內容 (模組載入)總計從未加密的 GRUB2 載入的模組。

如果您想檢查這一點,請指派/加密另一個分割區 sdaY,將 GRUB2 複製到其中 (無法在加密分割區上進行 grub 安裝操作) 和「grub.cfg」中 (未加密的配置) 像這樣改變線路

menuentry 'GRUBx2' --class parrot --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-382111a2-f993-403c-aa2e-292b5eac4780' {
載入影片
insmod gzio
如果 [ x$grub_platform = xxen ]; 然後insmod xzio; 因斯莫德·佐皮奧; 菲
insmod 部分_msdos
insmod 加密盤
照明系統勒克斯
安裝 gcry_twofish
安裝 gcry_twofish
安裝 gcry_sha512
插入mod ext2
cryptomount -u 15c47d1c4bd34e5289df77bcf60ee838
set root=’cryptouuid/15c47d1c4bd34e5289df77bcf60ee838′
正常 /boot/grub/grub.cfg
}

截止日期
* insmod - 載入使用加密磁碟所需的模組;
* GRUBx2 - GRUB2 啟動選單中顯示的行名稱;
* cryptomount -u 15c47d1c4bd34e5289df77bcf60ee838 -參見。 fdisk -l (sda9);
* 設定root——安裝root;
* 正常 /boot/grub/grub.cfg - 加密分割區上的可執行設定檔。

當在 GRUB 選單中選擇行“GRUBx2”時,確信載入的是加密的“grub.cfg”是對輸入密碼/解鎖“sdaY”的肯定回應。

在 CLI 中工作時,以免混淆 (並檢查“set root”環境變數是否有效), 建立空令牌文件,例如在加密部分“/shifr_grub”中,在未加密部分“/noshifr_grub”中。 檢查 CLI

cat /Tab-Tab

如上所述,如果惡意模組最終出現在您的電腦上,這將無助於防止下載惡意模組。 例如,鍵盤記錄器能夠將擊鍵儲存到檔案中,並將其與「~/i386」中的其他檔案混合,直到被具有 PC 實體存取權限的攻擊者下載。

驗證數位簽章保護是否有效的最簡單方法 (未重置),且沒有人入侵bootloader,在CLI中輸入指令

list_trusted

作為回應,我們會收到一份「perkey」的副本,或者如果我們受到攻擊,我們什麼也不會收到 (您還需要檢查“set check_signatures=enforce”).
此步驟的一個顯著缺點是手動輸入命令。 如果將此命令新增至「grub.cfg」並使用數位簽章保護配置,則螢幕上關鍵快照的初步輸出時間太短,載入GRUB2後您可能沒有時間看到輸出。
沒有人特別聲明:開發商在他的 文件 第18.2條正式聲明

「請注意,即使有GRUB 密碼保護,GRUB 本身也無法阻止對電腦有實體存取權限的人更改該電腦的韌體(例如Coreboot 或BIOS)配置,從而導致電腦從不同的(攻擊者控制的)設備啟動。 GRUB 充其量只是安全啟動鏈中的一個環節。”

GRUB2 的功能太多,給人一種虛假的安全感,其發展在功能上已經超過了 MS-DOS,但它只是一個引導程式。 有趣的是,GRUB2 - “明天”可以成為作業系統,以及可啟動的 GNU/Linux 虛擬機器。

一個關於我如何重置 GRUB2 數位簽名保護並向真實用戶宣告我的入侵的短視頻 (我嚇到你了,但是你可以編寫無害的任意程式碼/.mod,而不是影片中顯示的內容).

結論:

1) Windows 的區塊系統加密更容易實現,並且使用一個密碼進行保護比使用 GNU/Linux 區塊系統加密使用多個密碼進行保護更方便,公平地說:後者是自動化的。

2)我寫的文章相關且詳細 簡單的 一台家用機器上的全碟加密 VeraCrypt/LUKS 指南,這是迄今為止 RuNet 中最好的(恕我直言)。 該指南的長度超過 50k 個字符,因此它沒有涵蓋一些有趣的章節:消失/隱藏在陰影中的密碼學家; 關於這樣一個事實:在各種 GNU/Linux 書籍中,他們很少/根本不寫密碼學; 關於俄羅斯聯邦憲法第51條; 氧 授權/禁止 俄羅斯聯邦的加密,關於為什麼需要加密“root/boot”。 該指南內容相當廣泛,但也很詳細。 (甚至描述簡單的步驟)反過來,當您進行「真正的加密」時,這將為您節省大量時間。

3)在Windows 7 64上進行全碟加密; GNU/Linux 鸚鵡 4x; GNU/Debian 9.0/9.5。

4)成功實施攻擊 他的 GRUB2 引導程式。

5) 創建教程是為了幫助 CIS 中所有偏執的人,在立法層面允許使用加密。 主要針對那些想要在不拆除已配置系統的情況下推出全磁碟加密的人。

6) 重新設計並更新了我的手冊,與 2020 年相關。

[G] 有用的文檔

  1. TrueCrypt 使用者指南 (2012 年 XNUMX 月俄羅斯)
  2. VeraCrypt 文檔
  3. /usr/share/doc/cryptsetup(-run) [本地資源] (關於使用 cryptsetup 設定 GNU/Linux 加密的官方詳細文件)
  4. 官方常見問題 cryptsetup (有關使用 cryptsetup 設定 GNU/Linux 加密的簡要文件)
  5. LUKS 裝置加密 (archlinux 文件)
  6. cryptsetup語法詳細說明 (拱形手冊頁)
  7. crypttab詳細說明 (拱形手冊頁)
  8. GRUB2 官方文檔.

標籤:全碟加密、分割加密、Linux全碟加密、LUKS1全系統加密。

只有註冊用戶才能參與調查。 登入, 請。

你在加密嗎?

  • 企業排放佔全球 17,1%我盡我所能加密一切。 我很偏執14

  • 企業排放佔全球 34,2%我只加密重要資料。28

  • 企業排放佔全球 14,6%有時我加密,有時我忘記。12

  • 企業排放佔全球 34,2%不,我不加密,既不方便又昂貴。28

82 位用戶投票。 22 名用戶棄權。

來源: www.habr.com

添加評論