Windows Linux安装系统的全磁盘加密。 加密多重启动


更新了自己的Runet V0.2中的全磁盘加密指南

牛仔策略:


[A]阻止Windows 7安装的系统的系统加密;
[B] GNU / Linux块系统加密(Debian)的已安装系统(包括/ boot)
[C] GRUB2设置,通过数字签名/身份验证/哈希保护引导程序;
[D]剥离-销毁未加密的数据;
[E]加密操作系统的通用备份;
[F]攻击<on [C6]>目标是引导加载程序GRUB2;
[G]有用的文档。

╭───电路#房间40#<BIOS中没有BIOS的MBR / 1HDD>:
├──╼已安装Windows 7-完整的系统加密,未隐藏;
├──╼已安装GNU / Linux (Debian和衍生发行版) -未隐藏完整的系统加密(/,包括/ boot; swap)
├──╼独立的引导程序:MBR中安装了VeraCrypt引导程序,扩展分区中安装了GRUB2引导程序;
├──╼无需进行OS安装/重新安装;
└──╼二手加密软件:VeraCrypt; 加密设置 GnuPG; 海马 哈希深 GRUB2-免费/免费。

上述方案部分解决了“远程启动到闪存驱动器”的问题,使您可以享受Windows / Linux加密的操作系统,并通过“加密通道”从一个操作系统与另一个操作系统交换数据。

PC引导顺序(选项之一):

  • 打开机器;
  • 加载VeraCrypt引导加载程序(输入正确的密码将继续加载Windows 7)
  • 按Esc键将加载GRUB2引导程序;
  • bootloader GRUB2 (发行版/ GNU / Linux / CLI的选择) ,将要求GRUB2超级用户<login / password>的身份验证;
  • 成功通过身份验证并选择了分发工具包后,您将需要输入密码来解锁“ /boot/initrd.img”;
  • 在GRUB2中输入无错密码后,需要“输入”密码(第三个密码,BIOS密码或GNU / Linux用户帐户密码-不考虑)以解锁和加载GNU / Linux操作系统,或者自动替换一个秘密密钥(两个密码+一个密钥,或者密码+密钥)
  • 外部侵入GRUB2配置将冻结GNU / Linux引导过程。

麻烦了吗 好的,让我们自动化这些过程。

在标记硬盘(MBR表)时,一台PC最多可以有4个主分区,或3个主分区和1个扩展分区,以及一个未分配的区域。 与主分区不同,扩展分区可以包含小节(逻辑驱动器=扩展分区) 。 换句话说,HDD上的“扩展分区”将LVM替换为当前任务:完全系统加密。 如果将磁盘分区为4个主分区,则需要使用lvm,或者将分区从main转换(通过格式化)到扩展,或者明智地使用所有四个分区,并保留所有内容,以得到所需的结果。 即使磁盘上有一个分区,Gparted也会帮助将HDD拆分为其他分区而不会丢失数据,但这样做的代价很小。

下表列出了将用语言表达整篇文章的硬盘布局。


1Tb截面表(第1号)。

类似的事情也应该伴随着你。
sda1-主分区№1NTFS (加密)
sda2-扩展标记部分;
sda6-逻辑驱动器(已安装GRUB2引导加载程序);
sda8-交换(加密交换文件/并非总是);
sda9-测试逻辑驱动器;
sda5-好奇的逻辑驱动器;
sda7-GNU / Linux操作系统(将操作系统移植到加密的逻辑驱动器上);
sda3-Windows 7的主要部分2 (加密)
sda4是3号主分区(它包含未加密的GNU / Linux,它用于备份/并非总是如此)

[A] Windows 7块系统加密


A1。 Veracrypt


官方网站或从sourceforge镜像下载VeraCrypt加密软件的安装版本(在发布v1.24-Update3时,VeraCrypt的便携式版本不适合系统加密) 。 检查下载软件的校验和

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

并将结果与​​VeraCrypt开发人员网站上发布的CS进行比较。

如果安装了HashTab软件,则更加简单:RMB (VeraCrypt Setup 1.24.exe) -文件总和的哈希属性

要验证程序的签名,系统必须安装gnuPG开发人员的软件和公共pgp密钥; gpg4win

A2。 安装/启动VeraCrypt Administrator软件


A3。 选择活动分区的系统加密选项
VeraCrypt-系统-加密系统分区/磁盘-普通-加密Windows系统分区-多重引导- (警告:“不建议没有经验的用户使用此方法”,这是真的,我们同意“是”) -引导磁盘(“是”,即使否则,无论如何“是”) -系统磁盘数量“ 2个或更多”-一个磁盘上的多个系统“是”-不是Windows引导程序“否” (但实际上是“是”!否则,VeraCrypt / GRUB2引导程序将不会共享MBR更准确地说,在MBR /引导磁道之间,它们仅存储了引导加载程序代码的最小部分, 它的主要部分位于文件系统中) -Multiboot-加密设置...

如果您偏离上述步骤( 阻止系统加密方案) ,则VeraCrypt将推出警告,并且不允许加密分区。

下一步,要进行有针对性的数据保护,请执行“测试”并选择一种加密算法。 如果您使用的是非现代CPU,则可能是最快的Twofish加密算法,请选择它。 如果CPU是现代的,请注意以下区别:AES-根据测试结果进行加密的速度将比其加密竞争对手快几倍。 AES是最流行的加密算法,现代CPU的硬件专门针对“秘密” 和“黑客 ”进行了优化。

VeraCrypt支持使用AES (Twofish) /和其他组合对驱动器进行加密的功能。 在十年前的旧内核英特尔CPU上(没有对AES-NI的硬件支持,没有通过A / T级联进行加密),性能下降基本上是无法察觉的。 (对于具有相同〜参数时代的AMD CPU,性能会略有下降) 。 操作系统是动态的,透明加密的资源消耗是不可见的。 相比之下,例如,由于在GNU / Linux中安装了测试不稳定的桌面环境Mate v1.20.1 (或者我不记得的v1.20.2) ,或者由于Windows7中遥测杂草例程的运行,性能明显下降。 通常,老练的用户在加密之前会对硬件性能进行测试。 例如,在对Aida64 / Sysbench / systemd-analyze的指责中,将它们与对系统加密后的相同测试结果进行了比较,从而反驳了“系统加密有害”的神话。 备份/还原加密数据时,计算机速度变慢,给用户带来不便,这是因为“系统数据备份”操作本身不是以毫秒为单位进行度量的,并且添加了相同的“动态解密/加密”操作。 最终,每个被允许搞乱密码学的用户在满足目标,他的偏执程度和易用性方面都设置了加密算法的平衡。

最好默认保留PIM参数,以便在每次加载OS时都不必输入确切的迭代值。 VeraCrypt使用大量迭代来创建真正的“慢散列”。 使用“蛮力/彩虹表”方法对这种“密码蜗牛”进行攻击,仅在使用简短的 “简单”密码短语和个人受害者的字符集列表时才有意义。 支付密码强度-启动操作系统时正确输入密码的延迟(在GNU / Linux中安装VeraCrypt卷要快得多)。
用于实施暴力攻击的免费软件(从VeraCrypt / LUKS磁盘头提取密码) Hashcat。 开膛手约翰不知道如何“破解Veracrypt”,并且在与LUKS合作时,他不了解Twofish密码学。 顺便说一下,在所有其他方面的非商业软件中,JtR比Hashcat更好。

由于加密算法的加密强度,不可阻挡的密码库及其对立体开发出具有不同攻击向量的软件。 例如,从RAM中提取元数据/密钥(冷启动攻击/直接内存访问),在窃取LUKS标头的同时拦截密码并发送网络数据包,这也许是我所不知道的。 有专门的免费和非免费软件可以实现这些目的。

完成加密活动分区的“唯一元数据”的配置/生成后,VeraCrypt将提供重新启动PC并测试其引导加载程序的性能的功能。 Windows重新启动/启动后,VeraCrypt将以待机模式加载,仅用于确认加密过程-是。

在系统加密的最后一步,VeraCrypt将以“ veracrypt急救磁盘.iso”的形式创建活动加密分区的标头的备份副本-必须完成- 在此软件中,此操作是必需的(不幸的是,在LUKS中, 此操作被 省略了,但强调了在文档中) 。 救援磁盘对每个人都有用,对一个人也有用。 如果没有磁盘头,移动操作系统,丢失(覆盖头/ MBR)头备份,将永久剥夺Windows操作系统对解密分区的访问。

A4。 创建VeraCrypt USB /驱动器救援
默认情况下,VeraCrypt提供将“〜2-3mB元数据”刻录到CD,但并非所有人都具有驱动器或DWD-ROM驱动器,而为某人创建可引导的VeraCrypt Rescue磁盘将是一个技术惊喜: / GUIdd-ROSA ImageWriter和其他类似软件将无法完成任务,因为除了将转移的元数据复制到可启动USB闪存驱动器之外,您还需要从USB驱动器的文件系统外部的映像进行复制/粘贴,总之,正确地将MBR /磁道复制到钥匙扣。 在GNU / Linux下,您可以使用“ dd”实用程序创建一个可引导的闪存驱动器,查看此图板。



在Windows环境中创建应急磁盘的方法有所不同。 VeraCrypt开发人员并未在“救援磁盘”的官方文档中包含针对此问题的解决方案,但提出了另一种解决方案:他在其VeraCrypt论坛上发布了用于创建“ usb救援磁盘”的其他软件,以便免费使用。 更新:2020年,开发人员对“小事”感到可惜,并将USB应急磁盘解决方案正式纳入其文档中。
保存应急磁盘.iso之后,将开始对活动分区进行块系统加密。 在加密期间,操作系统不会停止,不需要重新启动PC。 加密操作完成后,活动分区将完全加密,您可以使用它。 如果启动PC时未出现VeraCrypt引导加载程序,并且标头恢复操作无济于事,请检查“引导”标志,应将其安装在存在Windows的分区上(与加密和其他操作系统无关,请参见表1)。
加密系统驱动器和ntfs逻辑驱动器(相同的密码)后,将所有加密的驱动器添加到“系统收藏夹”中。 接下来,在“设置”>“系统收藏夹”中,选中“ Windows启动时挂载系统收藏夹”框,当操作系统启动时,所有ntfs磁盘将自动挂载。
到此完成了Windows块系统加密的描述。

[B] LUKS。 GNU / Linux (〜Debian)安装的操作系统的加密。 算法和步骤


为了加密已安装的Debian /派生发行版,您需要将准备好的分区映射到虚拟块设备,将其传输到映射的GNU / Linux驱动器,然后安装/配置GRUB2。 如果您没有裸服务器,并且珍惜时间,则需要使用GUI,并且以下所述的大多数终端命令都应以“ Chuck-Norris模式”驱动。

B1。 从实时USB GNU / Linux下载PC

“对铁的性能进行加密测试”

 lscpu && ryptsetup benchmark 



如果您是拥有支持AES-NI硬件的功能强大的汽车的满意所有者,那么如果您满意的话,数字将看起来像终端的右侧,但左侧是古董铁。

B2。 分区磁盘。 在Ext4中安装/格式化fs逻辑驱动器HDD(Gparted)

B2.1。 创建一个加密的sda7分区头
在下文中,我将根据上面列出的我的节表来描述节的名称。 根据您的磁盘布局,您必须替换您的分区名称。

逻辑磁盘加密映射(/ dev / sda7> / dev / mapper / sda7_crypt)。
#轻松创建“ LUKS-AES-XTS分区”

 cryptsetup -v -y luksFormat /dev/sda7 

选项:

* luksFormat-LUKS标头的初始化;
* -y是密码短语(不是密钥/文件);
* -v -verbalization(在终端中输出信息);
* / dev / sda7-从扩展分区(到您计划传输/加密GNU / Linux的位置)的逻辑驱动器。

默认情况下,加密算法为<L UKS1: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 (--use-urandom)用来为逻辑驱动器头,辅助头密钥(XTS)生成唯一的加密/解密密钥; 存储在磁盘加密头中的唯一主密钥,辅助XTS密钥,所有这些元数据和加密例程,使用主密钥和辅助XTS密钥对分区上的任何数据(分区头除外)进行加密/解密,存储在所选硬分区上的〜3 mB中开车。
* -i LUKS的PBKDF迭代时间(以毫秒为单位) (处理密码短语时的时间延迟会影响OS负载和密钥的加密强度)。 要使用简单的密码(例如“ russian”)保持密码强度的平衡,您需要增加该值-(i)使用复杂的密码(例如“?8dobob /øfh”),您可以减小该值。
* --use-urandom随机数生成器,生成密钥和盐。

比较sda7> sda7_crypt部分(操作很快,因为创建了带有〜3 mb元数据的加密标头,仅此而已 ,您需要格式化并挂载sda7_crypt文件系统。

B2.3。 制图
 cryptsetup open /dev/sda7 sda7_crypt #       . 

选项:
*打开-映射“名称”部分;
* / dev / sda7-逻辑驱动器;
* sda7_crypt是一个名称映射,用于在操作系统启动时挂载加密分区或对其进行初始化。

B2.4。 在ext4中格式化sda7_crypt文件系统。 操作系统安装
(注意:Gparted将不再与加密分区一起使用)

 #    mkfs.ext4 -v -L DebSHIFR /dev/mapper/sda7_crypt 

选项:
* -v-语言化;
* -L -disk标签(在资源管理器中与其他磁盘一起显示)。

接下来,将虚拟加密的块设备/ dev / sda7_crypt挂载到系统中

 mount /dev/mapper/sda7_crypt /mnt 

使用/ mnt文件夹中的文件将自动在sda7中动态加密/解密数据。

在资源管理器(nautilus / caja GUI)中映射并挂载该分区更加方便,该分区将已经在磁盘选择列表中,仅输入用于打开/解密磁盘的密码即可。 匹配名称将被自动选择,而不是“ sda7_crypt”,而是类似/ dev / mapper / Luks-xx-xx的名称。

B2.5。 备份磁盘头(〜3MB元数据)
需要立即进行的最重要的操作之一是sda7_crypt标头的备份副本。 如果覆盖/破坏标头(例如,通过在sda7分区中安装GRUB2等) ,则加密的数据将永久丢失而无法恢复,因为将无法重新生成相同的密钥,因此将创建唯一的密钥。

 #   cryptsetup luksHeaderBackup --header-backup-file ~/_DebSHIFR /dev/sda7 

 #   cryptsetup luksHeaderRestore --header-backup-file <file> <device> 

选项:
* luksHeaderBackup --header-backup-file-backup命令;
* luksHeaderRestore --header-backup-file-restore命令;
*〜/ Backup_DebSHIFR-备份文件;
* / dev / sda7是要保留其加密磁盘头的备份副本的分区。
注意事项 不要尝试将LUKS节的标题从[sdaX]还原到[sdaY],大多数用户名将失败。
在此步骤中,完成<创建和编辑加密分区>。

B3 将GNU / Linux操作系统(sda4)迁移到加密分区(sda7)

注意事项 在将操作系统转移到加密分区之前,建议删除多余的缓存垃圾(可以使用BleachBit软件找到类似的垃圾),例如,在我的情况下,它是数十万个小文件/ var / cache / fontconfig / *和/home/user/.cache / fontconfig / *
如果清除了fontconfig文件,请执行$ fc-cache -fvr

创建/ mnt2文件夹(注意-我们仍在使用实时usb,sda7_crypt安装在/ mnt点),并将GNU / Linux安装在/ mnt2中,必须对其进行加密。

 mkdir /mnt2 mount /dev/sda4 /mnt2 

我们使用Rsync软件执行正确的OS迁移
 rsync -avlxhHX --progress /mnt2/ /mnt 

Rsync选项在第E1页中描述。

接下来, 您需要对逻辑驱动器分区进行碎片整理

 e4defrag -c /mnt/ # , e4defrag ,     ≈ 0,  ,       ! e4defrag /mnt/ #   GNU/Linux 

遵循规则:如果您有HDD,请不时对加密的GNU / LInux执行e4defrag。
此步骤的迁移和同步[GNU / Linux> GNU / Linux加密]已完成。

B4。 在sda7加密分区上配置GNU / Linux

成功传输OS / dev / sda4> / dev / sda7之后,您需要登录到加密分区上的GNU / Linux,并执行有关加密系统的进一步配置(无需重新启动PC) 。 也就是说,位于实时USB中,但是要执行的命令“相对于加密OS的根目录”。 模拟类似情况将是“ chroot”。 要快速接收当前正在使用哪个操作系统的信息(由于sda4和sda7中的数据已同步因此已加密或未加密) ,请取消同步 OS。 在根目录(sda4 / sda7_crypt)中创建空的令牌文件,例如/ mnt /加密的OS和/ mnt2 /解密的OS。 快速检查您所处的操作系统(包括将来的操作系统):
 ls /<Tab-Tab> 


B4.1。 “模拟加密OS的入口”
 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。 创建/配置加密交换
由于交换文件是在操作系统的每次启动时进行格式化的,因此像B2.2节中所示,现在就没有必要创建并映射交换到逻辑驱动器并键入命令。 对于交换,每次启动时,都会自动生成其临时加密密钥。 交换a键生命周期:卸载/断开交换分区(+ RAM清洁) ; 或重新启动操作系统。 配置交换,打开负责配置块加密设备的文件(类似于fstab文件,但负责加密)。

 nano /etc/crypttab 

规则
#“目标名称”“源设备”“密钥文件”“选项”
swap / dev / sda8 / dev / urandom交换,密码= twofish-xts-plain64,大小= 512,哈希= sha512

选件
* swap是/ dev / mapper / swap的映射加密名称。
* / dev / sda8-在交换下使用您的逻辑分区。
* / dev / urandom-用于交换的随机加密密钥生成器( 每次新的OS引导都会创建新密钥)。 / dev / urandom生成器的随机性比/ dev / random少,毕竟,在危险的偏执情况下使用/ dev / random。 引导操作系统时,/ dev / random会减慢加载速度达±分钟(请参阅systemd-analyze)
* swap,密码= twofish-xts-plain64,大小= 512,哈希= sha512:-该部分知道它是交换对象,并且其格式为“相应”; 加密算法。

 #   fstab nano /etc/fstab 

规则
#交换在安装过程中在/ dev / sda8上
/ dev / mapper / swap none 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 

如果您按照B2.1节中的说明映射了sda7> sda7_crypt节
#“目标名称”“源设备”“密钥文件”“选项”
sda7_crypt UUID = 81048598-5bb9-4a53-af92-f3f9e709e2f2 none luks

如果您按照B2.2那样映射了sda7> sda7_crypt部分
#“目标名称”“源设备”“密钥文件”“选项”
sda7_crypt UUID = 81048598-5bb9-4a53-af92-f3f9e709e2f2 none密码= twofish-xts-plain64,大小= 512,哈希= sha512

如果您按照B2.1或B2.2中的方式比较sda7> sda7_crypt部分,但又不想重新输入密码以解锁并启动OS,则可以用私钥/随机文件代替密码
#“目标名称”“源设备”“密钥文件”“选项”
sda7_crypt UUID = 81048598-5bb9-4a53-af92-f3f9e709e2f2 / etc / skey luks

内容描述
* none-报告操作系统启动时,需要一个秘密密码来解锁根。
* UUID-部分标识符。 要找出您的标识符,请在终端中键入(提醒您,在此之后,您一直在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配置时它将自动离开)。
*密码= twofish-xts-plain64,大小= 512,哈希= 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 

它看起来像这样:
(自己动手,自己看看。如果在2020年进行加密,则输出将在LUKS2中进行,如果更早,则输出将在LUKS1中进行。

 # Check " " file -s /dev/sda7 /dev/sda7: LUKS encrypted file, ver 1 [twofish, xts-plain64, sha512] UUID: -- #   LUKS /dev/sda7: data #   VeraCrypt 

 cryptsetup luksKillSlot /dev/sda7 7 # /  7  


/etc/fstab .

 # /etc/fstab nano /etc/fstab 

# «file system» «mount poin» «type» «options» «dump» «pass»
# / was on /dev/sda7 during installation
/dev/mapper/sda7_crypt / ext4 errors=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 

( ) "#" «resume». .

B4.5.2. /etc/initramfs-tools/conf.d/cryptsetup

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


# /etc/initramfs-tools/conf.d/cryptsetup
CRYPTSETUP=yes
export CRYPTSETUP


B4.5.3. /etc/default/grub ( grub.cfg /boot)

 nano /etc/default/grub 

«GRUB_ENABLE_CRYPTODISK=y»
'y', grub-mkconfig grub-install , (insmod- <cryptomount/set root>) .

GRUB_DEFAULT=0
GRUB_TIMEOUT=1
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT=«acpi_backlight=vendor»
GRUB_CMDLINE_LINUX=«quiet splash noautomount»
GRUB_ENABLE_CRYPTODISK=y


B4.5.4. /etc/cryptsetup-initramfs/conf-hook

 nano /etc/cryptsetup-initramfs/conf-hook 

, <CRYPTSETUP=y> <#>.
( , , initrd.img).

:
KEYFILE_PATTERN="/etc/skey"
UMASK=0077

«skey» initrd.img, ( «skey» ( + ) . .B4.4).

B4.6. /boot/initrd.img [version]
initrd.img cryptsetup,

 update-initramfs -u -k all 

initrd.img ( «, ») , cryptsetup, , , Nvidia — . , , . ( chroot ./boot/initrd.img). ! [update-initramfs -u -k all] , cryptsetup open /dev/sda7 sda7_crypt — , /etc/crypttab, reboot-a busybox)
.


[] GRUB2/


C1. ( 20)
 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» live 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 - <boot/grub> sda6.
* /dev/sda6 - sda ( <> /mnt /dev/sda6).

C4. [grub.cfg]
«update-grub2»,

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

/ grub.cfg, () («grub-mkconfig» live usb, Windows 10 — ). «», «grub.cfg» , , GRUB ( ), GRUB2 .
« » GRUB2 .

C5. Proof-test 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 

VeraCrypt.


* — Windows.
* «Esc» GRUB2, GNU/Linux – (sda7_crypt) /boot/initrd.img ( grub2 uuid « » — grub2, , , / ).


* , (. .B4.4/4.5) /boot/initrd.img, / , «skey», .

( « »).

* GNU/Linux .


* , /boot/initrd.img ( 4.6).

 update-initramfs -u -k all 

GRUB2 ( - live usb)

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

GNU/Linux:

  • GNU/Linuxinux , /boot/kernel and initrd;
  • initrd.img;
  • ( initrd; / ; Linux) .

« GRUB2» .

6. GRUB2. +
GNU/Linux , – BIOS. GRUB2 , / , – [. . F].
«» GRUB2 «/».
  • « » , – .
  • - , CLI, -GRUB2.


6.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 ###)
«set superusers=»root"
password_pbkdf2 root ".



# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###

### BEGIN /etc/grub.d/41_custom ###
if [ -f ${config_directory}/custom.cfg ]; then
source ${config_directory}/custom.cfg
elif [ -z "${config_directory}" -a -f $prefix/custom.cfg ]; then
source $prefix/custom.cfg;
fi
set superusers=«root»
password_pbkdf2 root grub.pbkdf2.sha512.10000.DE10E42B01BB6FEEE46250FC5F9C3756894A8476A7F7661A9FFE9D6CC4D0A168898B98C34EBA210F46FC10985CE28277D0563F74E108FCE3ACBD52B26F8BA04D.27625A4D30E4F1044962D3DD1C2E493EF511C01366909767C3AF9A005E81F4BFC33372B9C041BE9BA904D7C6BB141DE48722ED17D2DF9C560170821F033BCFD8
### END /etc/grub.d/41_custom ###
#

«grub-mkconfig -o /mnt/boot/grub/grub.cfg» grub.cfg, (/) GRUB-

 nano /etc/grub.d/41_custom 

cat << EOF
set superusers=«root»
password_pbkdf2 root grub.pbkdf2.sha512.10000.DE10E42B01BB6FEEE46250FC5F9C3756894A8476A7F7661A9FFE9D6CC4D0A168898B98C34EBA210F46FC10985CE28277D0563F74E108FCE3ACBD52B26F8BA04D.27625A4D30E4F1044962D3DD1C2E493EF511C01366909767C3AF9A005E81F4BFC33372B9C041BE9BA904D7C6BB141DE48722ED17D2DF9C560170821F033BCFD8
EOF


«grub-mkconfig -o /mnt/boot/grub/grub.cfg», , , grub.cfg.
GRUB2 .

6.2.
, pgp- ( ). : gnuPG; kleopatra/GPA; Seahorse. - . 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/ 

GRUB2 sda6, 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 .
* -k ~/perskey - «PGP-» ( , ).
* --root-directory - boot sda6
/dev/sda6 - sda .

/ grub.cfg

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

«grub.cfg» «trust /boot/grub/perskey» ( pgp-.) GRUB2 , «signature_test.mod», «set check_signatures=enforce».

( grub.cfg)
### BEGIN /etc/grub.d/41_custom ###
if [ -f ${config_directory}/custom.cfg ]; then
source ${config_directory}/custom.cfg
elif [ -z "${config_directory}" -a -f $prefix/custom.cfg ]; then
source $prefix/custom.cfg;
fi
trust /boot/grub/perskey
set superusers=«root»
password_pbkdf2 root grub.pbkdf2.sha512.10000.DE10E42B01BB6FEEE46250FC5F9C3756894A8476A7F7661A9FFE9D6CC4D0A168898B98C34EBA210F46FC10985CE28277D0563F74E108FCE3ACBD52B26F8BA04D.27625A4D30E4F1044962D3DD1C2E493EF511C01366909767C3AF9A005E81F4BFC33372B9C041BE9BA904D7C6BB141DE48722ED17D2DF9C560170821F033BCFD8
### END /etc/grub.d/41_custom ###
#


"/boot/grub/perskey" , hd0,6, «» , GRUB2 (. set rot=..).

GRUB2 ( /GRUB) «perskey».
, ( nautilus/caja): «seahorse» . su.
sudo "/mnt/boot" – – .



"/mnt/boot/grub/perskey" ( grub) . , / [*.sig].
"/boot" ( kernel, 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 

< > GRUB2 .

C6.3. Proof-test GRUB2,
GRUB2. - GNU/Linux CLI ( ) . / initrd


, GRUB2-.

- GRUB2/ grub.cfg, /, .mod, . GRUB2 .


, GRUB2 « ».

«» « », «0». ( « » «0» — ).

?

: / GRUB2 , , luks.mod.sig .

: CLI

 trust_list 

«perskey», «0», , .C6.2.
« GRUB2 » .


7 GRUB2
« /» — . - GRUB2, , .[F]. , / .

GRUB2


:

  • / (/ . GRUB2 , , / , , «- » ).
  • ( ).
  • (/ GRUB2 ).
  • .

.

  • (, ).
  • The Worst Evil Script ( /: GRUB , usb-/ , / , pass/_LUKS ).
  • ( GNU/Linux).

, .

GRUB2/

«» GRUB2, (). , ,

.


, GRUB, save log, pas/_LUKS .
The Worst Evil Script ( cryptsetup reencrypt), LUKS .
GRUB, .
"-$ _GRUB" , CLI.
"-$ sudo _GRUB" GRUB2/ ( /boot), .



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 , save .

, , « » [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 moved: 1 Audit failed» , .
- «New files found» > «Files moved»

2) > ~/warning.gif, 744.

3) fstab GRUB

 -$ sudo nano /etc/fstab 

LABEL=GRUB /media/username/GRUB ext4 defaults 0 0

4)

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

/var/log/podpis.txt {
daily
rotate 50
size 5M
dateext
compress
delaycompress
olddir /var/log/old
}

/var/log/vtorjenie.txt {
monthly
rotate 5
size 5M
dateext
olddir /var/log/old
}

5) cron

 -$ sudo crontab -e 

reboot '/podpis' #
0 */6 * * * '/podpis # 0-00; 6; 12; 18.

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] —


, « », .

与往常一样,从硬盘驱动器中删除数据后,有许多关于恢复数据的“神话和传说 ”。如果您相信网络控股,或者是Dr网络社区的成员,并且从未在删除/覆盖数据后尝试恢复数据(例如,使用R-studio恢复),那么建议的方法不太适合您,请使用更接近您的方法。

将GNU / Linux成功传输到加密分区后,必须删除旧副本,而不能恢复数据。通用清理方法:适用于Windows / Linux的免费GUI软件BleachBit的软件
快速格式化要销毁数据的分区(使用Gparted),我们启动BleachBit,选择“清除可用空间”-选择分区(您的sdaX与以前的GNU / Linux副本),清洁过程开始。BleachBit-一次性擦除光盘-这就是“我们需要的”,但是!仅在格式化磁盘并在BB v2.0软件中将其清理后,这才在理论上起作用。

注意BB擦除磁盘,保留元数据:销毁文件的名称在数据擦除期间保存(Ccleaner-不保留元数据)。

数据恢复的神话并不是一个神话。
Bleachbit V2.0-2 unstable OS Debian ( : sfill; wipe-Nautilus - ) : « » HDD/ (ntfs/ext4) . , . () / / «» . , , , « » 3+ .
GNU/Linux Bleachbit 2.0-2 , . : Windows CCleaner « ntfs» , .

, «» , Bleachbit , , « / ».
« » Windows CCleaner/BB «». GNU/Linux ( ) ( + ( , )) , .

Bleachbit v3.0 , , .
Bleachbit v2.0 GNU/Linux Windows7.

在此步骤中,“磁盘清理”完成。

[E]加密操作系统的通用备份


每个用户都有自己的数据备份方法,但是“系统OS”的加密数据需要稍微不同的方法来完成任务。诸如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卷)和Automount加密驱动器的通用备份
:

  1. (/) VeraCrypt ;
  2. / Rsync VeraCrypt;
  3. VeraCrypt www.


VeraCrypt :
  1. ( Windows , GNU/Linux) ;
  2. , « » ( ) – .


Windows, GNU/Linux > VeraCrypt , .

Twofish 70 ( , ) HDD ~ ( , ). VeraCrypt Windows/Linux , « », .

2017 VeraCrypt « GNU/Linux». en > ru :

,
, .…

Linux.
, .
, .

, VeraCrypt HDD .
, , ( «» ).

VeraCrypt 1.24-Update3 GNU/Linux, (/dev/sdaX).

/ — VeraCrypt-.

VeraCrypt (/ntfs) , .

// VeraCrypt GUI > GNU/Linux live usb ( /media/veracrypt2, Windows /media/veracrypt1). Windows GUI rsync (grsync) , .



. , .

GNU/Linux, GUI rsync « Windows».

! Veracrypt « GNU/Linux» ext4 . ntfs, / .

. rsync:
* -g - ;
* -P --progress — ;
* -H - , ;
* - - ( rlptgoD) ;
* -v -.

« Windows VeraCrypt» cryptsetup, alias (su)

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

«veramount pictures » , - , Windows.

/ VeraCrypt cryptsetup

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

/ / VeraCrypt cryptsetup

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


alias- ( ) Windows ntfs GNU/Linux /
 # /   ntfs- mkdir /media/Winda7 && mkdir /media/ 

 #      VeraCrypt,  " "    printf 'bob' | base64 Ym9i #  cli   "bob" 

~/VeraOpen.sh
 echo 'Ym9i' | base64 -d | cryptsetup open --veracrypt --tcrypt-system --type tcrypt /dev/sda3 Windows_crypt && mount /dev/mapper/Windows_crypt /media/Winda7 #   base64 (bob)             Windows. echo '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, .
, :
 systemd-analyze && systemd-analyze blame 


, .E1 ( / OS GNU/Linux)
1) ext4 > 4gb ( ) Linux Veracrypt [].
2) Reboot live usb.
3) ~$ cryptsetup open /dev/sda7 Lunux # .
4) ~$ mount /dev/mapper/Linux /mnt # /mnt.
5) ~$ mkdir mnt2 # .
6) ~$ cryptsetup open --veracrypt --type tcrypt ~/ && mount /dev/mapper/ /mnt2 # Veracrypt «» /mnt2.
7) ~$ rsync -avlxhHX --delete --progress /mnt/ /mnt2 # / Veracrypt . "--delete" ( ), .. .

(p/s/ ! GNU/Linux / , , Intel > AMD ( Intel > AMD) , , . ~/etc/skey — , «cryptsetup luksAddKey» chroot — , ~/etc/crypttab "/etc/skey" «none», rebot- .

IT Windows/Linux, .
/ .

[F]攻击GRUB2引导程序


详细资料
/ ( .C6.) , . - , ( ) GRUB2 , ( , -- grub.cfg).

.

* live usb. () . GRUB2 grub.cfg ( ) ( , GRUB2, . <0>)
* , "/mnt/boot/grub/grub.cfg".
* ( «perskey» core.img)

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

* «grub.cfg» > "/mnt/boot/grub/grub.cfg", , , «keylogger.mod» , «grub.cfg» > «insmod keylogger». , , , GRUB2 ( ) GRUB2, «grub-mkimage (-).» «-» «grub.cfg». : «modern.cfg», , , ~400 (+) "/boot/grub/i386-pc". , "/boot/grub/grub.cfg", «hashsum» .
/ GRUB2 , ( ) "/boot/grub/grub.cfg" «modern.cfg»
set superusers=«root»
password_pbkdf2 root grub.pbkdf2.sha512.10000.DE10E42B01BB6FEEE46250FC5F9C3756894A8476A7F7661A9FFE9D6CC4D0A168898B98C34EBA210F46FC10985CE28277D0563F74E108FCE3ACBD52B26F8BA04D.27625A4D30E4F1044962D3DD1C2E493EF511C01366909767C3AF9A005E81F4BFC33372B9C041BE9BA904D7C6BB141DE48722ED17D2DF9C560170821F033BCFD8

- GRUB2.

( ) , , ( ) . - BIOS ( GRUB2 > GRUB2, !) . - , , ( ) «grub.cfg» . , , , «grub.cfg» ( ) , GRUB2.

, / sdaY, GRUB2 ( grub-install ) «grub.cfg» ( )
menuentry 'GRUBx2' --class parrot --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-382111a2-f993-403c-aa2e-292b5eac4780' {
load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_msdos
insmod cryptodisk
insmod luks
insmod gcry_twofish
insmod gcry_twofish
insmod gcry_sha512
insmod ext2
cryptomount -u 15c47d1c4bd34e5289df77bcf60ee838
set root='cryptouuid/15c47d1c4bd34e5289df77bcf60ee838'
normal /boot/grub/grub.cfg
}


* insmod - ;
* GRUBx2 - GRUB2;
* cryptomount -u 15c47d1c4bd34e5289df77bcf60ee838 -. fdisk -l (sda9);
* set root - ;
* normal /boot/grub/grub.cfg - .

, «grub.cfg» — / «sdaY» «GRUBx2» GRUB.

CLI, ( «set root»), , , "/shifr_grub", "/noshifr_grub". CLI

 cat /Tab-Tab 

, , . , , "~/i386", .

, ( ) , , CLI

 list_trusted 

«perskey», , ( «set check_signatures=enforce») .
, . «grub.cfg» , , , GRUB2.
: .18.2
«Note that even with GRUB password protection, GRUB itself cannot prevent someone with physical access to the machine from altering that machine's firmware (eg, Coreboot or BIOS) configuration to cause the machine to boot from a different (attacker-controlled) device. GRUB is at best only one link in a secure boot chain».

GRUB2 — , , MS-DOS, . , GRUB2 — «» , GNU/Linux .

, , GRUB2, (, , – /.mod) .



结论:


1)Windows的块系统加密更易于实现,使用GNU / Linux块系统加密,用一个密码进行保护比使用多个密码进行保护更为方便,公平地说:后者是自动化的。

2)这篇文章是作为一本相关的详细的简单指南,介绍了在一台机器上进行全盘加密VeraCrypt / LUKS的情况,到目前为止,这是最好的runet(IMHO)。因此,手册> 60k字符中没有涉及一些有趣的章节:关于消失 / 保留阴影中的密码;在各种GNU / Linux书中很少/没有写关于密码学的内容;关于《俄罗斯联邦宪法》第51条;有关许可 /禁止在俄罗斯联邦加密,说明您需要对“ root / boot”进行加密。最终,该手册已经足够了,但是很详细(甚至描述了简单的步骤),当您进行“真正的加密”时,这将为您节省大量时间。

3)在Windows 7 64上进行全盘加密;GNU / Linux鹦鹉4x; GNU / Debian 9.0 / 9.5。

4)落实成功攻击一个 GRUB2引导装载程序。

5)创建了教程来帮助所有偏执狂的独联体国家,这些国家的立法允许加密。首先,对于那些希望在不拆除已配置系统的情况下进行全盘加密的用户。

6)修订并更新了与2020年相关的手册。

[G]有用的文件


  1. TrueCrypt用户指南 (RU 2012年2月)
  2. VeraCrypt文档
  3. / usr / share / doc / cryptsetup(运行)[本地资源] (有关使用cryptsetup配置GNU / Linux加密的官方详细文档)
  4. 官方cryptsetup常见问题解答 (有关使用cryptsetup配置GNU / Linux加密的简要文档)
  5. LUKS设备加密 (archlinux-文档)
  6. cryptsetup语法的详细说明 (arch手册页)
  7. crypttab的详细描述 (arch手册页)
  8. GRUB2的官方文档

标签:VeraCrypt,全盘加密,分区加密,全盘加密Linux,全系统加密LUKS1 / LUKS2。

复活节彩蛋

© , .
ne555 2018-2020

Source: https://habr.com/ru/post/zh-CN482696/


All Articles