當前位置:成語大全網 - 書法字典 - Linux加密如何創建壹個加密的文件系統

Linux加密如何創建壹個加密的文件系統

集劃分

您的硬盤(hda)應該至少包含三個分區:

Hda1:這個小的未加密分區應該需要壹個密碼才能加載加密的根文件系統。

Hda2:這個分區應該包含您的加密根文件系統;確保它足夠大

Hda3:這個分區是妳當前的GNU/Linux系統。

此時不使用hda1和hda2。Hda3是您當前安裝的linux發行版;/usr和/boot不能單獨安裝。

您的分區分布可能如下所示:

# fdisk -l /dev/hda

磁盤/開發/硬盤驅動器:255個磁頭,63個扇區,2432個柱面

單位= 16065 * 512字節的柱面

設備啟動開始結束塊Id系統

/dev/hda 1 1 1 8001 83 Linux

/dev/hda 2 2 263 2104515 83 Linux

/dev/hda 3 264 525 2104515 83 Linux

/dev/hda 4 526 2047 12225465 83 Linux

安裝Linux-2.4.27

有兩種主要的方案可用於向內核添加回送加密支持:cryptoloop和loop-AES。本文基於loop-AES方案,因為它實現Rijndael的匯編語言非常快,而且非常優化。如果您有IA-32 (x86) CPU,它將為您提供最大的性能。此外,cryptoloop還存在壹些安全問題。

首先,下載並解壓縮loop-AES軟件包:

wget/loop-AES/loop-AES-v 2.2b . tar . bz2

tar -xvjf loop-AES-v2.2b.tar.bz2

然後下載內核源代碼並修補內核源代碼:

wget http://FTP . kernel . org/pub/Linux/kernel/v 2.4/Linux-2 . 4 . 27 . tar . bz2

tar -xvjf linux-2.4.27.tar.bz2

cd linux-2.4.27

rm include/linux/loop.h驅動程序/block/loop.c

補丁程序-Np1 -i../loop-AES-v 2.2b/kernel-2 . 4 . 27 . diff

設置鍵盤映射:

dump keys | load keys-m-& gt;drivers/char/defkeymap.c

接下來,配置您的內核;確保您選擇了以下選項:

制作菜單配置

阻止設備->;

& lt* & gt環回設備支持

[*] AES加密環路設備支持(新)

& lt* & gtRAM磁盤支持

(4096)默認RAM磁盤大小(新)

[*]初始RAM磁盤(initrd)支持

文件系統-& gt;

& lt* & gtExt3日誌文件系統支持

& lt* & gt第二次擴展fs支持

(重要說明:不要啟用/dev文件系統支持)

編譯並安裝內核:

制作dep bzImage

制作模塊模塊_安裝

CP arch/i386/boot/bzImage/boot/vmlinuz

如果您的啟動程序是grub,請更新/boot/grub/menu.lst或/boot/grub/grub.conf文件:

cat & gt/boot/grub/menu . lst & lt;& lt文件結束

默認為0

超時10

顏色綠色/黑色淺綠色/黑色

標題Linux

根(hd0,2)

內核/boot/vmlinuz ro root=/dev/hda3

文件結束

如果啟動器是lilo,則更新/etc/lilo.conf並運行lilo:

cat & gt/etc/lilo . conf & lt;& lt文件結束

lba32

boot=/dev/hda

提示

超時=100

image=/boot/vmlinuz

標簽=Linux

只讀

root=/dev/hda3

文件結束

氣墊

現在重啟妳的系統。

安裝Linux 2.6.8.1。

如前所述進行上壹部分,使用的補丁是loop-AES的kernel-2.6.8.1.diff,需要註意的是,妳需要安裝module-init-tools軟件包,這樣妳的系統才能支持該模塊。

安裝util-linux-2.12b。

這個losetup程序包含在util-linux-2.12b軟件包中。必須對其進行修補和重新編譯,以使其支持加密。下載、解壓縮並修補util-linux:

wget http://FTP . kernel . org/pub/Linux/utils/util-Linux/util-Linux-2.12b . tar . bz2

tar-xvjf util-Linux-2.12b . tar . bz2

cd util-linux-2.12b

補丁程序-Np1 -i../loop-AES-v 2.2b/util-Linux-2.12c . diff

使用少於20個字符的密碼,鍵入:

CFLAGS = "-O2-d loop _ PASSWORD _ MIN _ LENGTH = 8 ";出口標誌

安全可能是妳最關心的問題之壹。為此,請不要讓您的密碼少於20個字符。數據保密不是免費的,必須使用長密碼的形式‘付費’。

以root用戶身份編譯並安裝losetup程序:

。/configure & amp;& amp創建庫裝載

mv-f/sbin/losetup/sbin/losetup ~

RM-f/usr/share/man/man 8/losetup . 8 *

cd支架

gzip losetup.8

cp丟失設置/sbin

CP losetup.8.gz/usr/share/man/man 8/

創建加密的根文件系統

用隨機數據填充目標分區:

shred -n 1 -v /dev/hda2

安裝加密的環回設備:

losetup-e AES 256-S XXXXXX/dev/loop 0/dev/HD a2

為了防止更快的字典攻擊,建議添加-S xxxxxx選項。“xxxxxx”是您隨機選擇的種子(例如,您可能會選擇“gPk4lA”)。同樣,為了防止啟動時出現鍵盤映射問題,不要使用非ASCII字符(方言等。)在密碼中。Diceware網站提供了壹種創建強而易記的密碼的簡單方法。

現在開始創建ext3文件系統:

mke2fs -j /dev/loop0

檢查您輸入的密碼是否正確:

losetup -d /dev/loop0

losetup-e AES 256-S XXXXXX/dev/loop 0/dev/HD a2

mkdir /mnt/efs

掛載/開發/loop0 /mnt/efs

您可以比較加密和未加密的數據:

xxd /dev/hda2 |更少

xxd /dev/loop0 | less

是時候安裝妳的加密linux系統了。如果妳使用的是GNU/Linux發行版(如Debian、Slackware、Gentoo、Mandrake、Red Hat/Fedora、SuSE等。),運行以下命令:

cp -avx / /mnt/efs

如果您使用從零開始的Linux手冊,請按照lfs手冊中的描述進行配置,但是要做以下更改:

第6章-安裝util-linux:

補丁循環-AES解壓後的源代碼。

第8章-使LFS系統可引導:

指向我們的下壹章(創建引導設備)。

-

創建引導設備

創建ramdisk

開始時,使用chroot命令進入您的加密分區,並為引導設備創建壹個掛載點:

chroot /mnt/efs

mkdir /loader

然後創建初始ramdisk (initrd),稍後會用到它:

激光唱片

DD if =/dev/zero of = initrd bs = 1k count = 4096

mke2fs -F initrd

mkdir內存磁盤

mount -o循環initrd內存磁盤

如果使用grsecurity,可能會收到“權限被拒絕”的錯誤消息;如果是這樣,您必須在chroot命令之前運行mount命令。

創建文件系統的目錄組織,並復制所需的文件:

mkdir ramdisk/{bin,dev,lib,mnt,sbin}

cp /bin/{bash,mount} ramdisk/bin/

ln -s bash ramdisk/bin/sh

mknod -m 600內存磁盤/開發/控制臺c 5 1

mknod -m 600內存磁盤/開發/hda2 b 3 2

mknod -m 600內存磁盤/開發/循環0 b 7 0

cp /lib/{ld-linux.so.2,libc.so.6,libdl.so.2} ramdisk/lib/

cp /lib/{libncurses.so.5,libtermcap.so.2} ramdisk/lib/

cp /sbin/{losetup,pivot_root} ramdisk/sbin/

如果看到“/lib/libncurses.so.5:沒有這樣的文件或目錄”、“/lib/libtermcap.so.2:沒有這樣的文件或目錄”這樣的信息,這是正常的。Bash只需要這兩個庫中的壹個。您可以測試哪壹個是您真正需要的:

ldd /bin/bash

編譯睡眠程序,這樣可以防止密碼提示被內核信息淹沒(比如註冊usb設備的時候)。

cat & gtsleep.c & lt& lt" EOF "

# include & ltunistd.h & gt

# include & ltstdlib.h & gt

int main( int argc,char *argv[])

{

if( argc == 2)

sleep(atoi(argv[1]);

return(0);

}

文件結束

gcc -s sleep.c -o內存磁盤/bin/sleep

rm睡眠

創建壹個初始化腳本(不要忘記替換妳之前註冊的種子“xxxxxx”):

cat & gtramdisk/sbin/init & lt;& lt" EOF "

#!/bin/sh

/bin/sleep 3

/sbin/losetup-e AES 256-S XXXXXX/dev/loop 0/dev/HD a2

/bin/mount-r-n-t ext3/dev/loop 0/mnt

而[ $?-ne 0 ]

/sbin/losetup -d /dev/loop0

/sbin/losetup-e AES 256-S XXXXXX/dev/loop 0/dev/HD a2

/bin/mount-r-n-t ext3/dev/loop 0/mnt

完成的

cd /mnt

/sbin/pivot_root。裝貨設備

exec /usr/sbin/chroot。/sbin/init

文件結束

chmod 755內存磁盤/sbin/init

卸載環回設備並壓縮initrd:

umount -d內存磁盤

rmdir內存磁盤

gzip initrd

mv initrd.gz/boot/

從光盤啟動

我強烈建議您從只讀介質啟動系統,如引導光盤。

下載並解壓縮syslinux:

wget http://FTP . kernel . org/pub/Linux/utils/boot/sys Linux/sys Linux-2.10 . tar . bz2

tar-xvjf syslinux-2.10 . tar . bz2

配置isolinux:

mkdir bootcd

cp /boot/{vmlinuz,initrd . gz } sys Linux-2.10/isolinux . bin bootcd

echo " DEFAULT/vmlinuz initrd = initrd . gz ro root =/dev/ram 0 " \

& gtbootcd/isolinux.cfg

將iso映像刻錄到可引導光盤:

mkisofs-o bootcd . iso-b isolinux . bin-c boot . cat \

-no-emul-boot-boot-load-size 4-boot-info-table \

-J -hide-rr-moved -R bootcd/

cdrecord -dev 0,0,0速度4v bootcd . iso

rm -rf bootcd{,。iso}

從硬盤啟動

當您丟失引導光盤時,引導分區可以派上用場。請記住hda1是可寫分區,所以不太靠譜。只在緊急情況下使用!

創建並掛載ext2文件系統:

DD if =/dev/zero of =/dev/hda 1 bs = 8192

mke2fs /dev/hda1

mount /dev/hda1 /loader

復制內核和初始內存磁盤:

cp /boot/{vmlinuz,initrd.gz} /loader

如果您使用grub:

mkdir /loader/boot

cp -av /boot/grub /loader/boot/

cat & gt/loader/boot/grub/menu . lst & lt;& lt文件結束

默認為0

超時10

顏色綠色/黑色淺綠色/黑色

標題Linux

根(hd0,0)

kernel /vmlinuz ro root=/dev/ram0

initrd /initrd.gz

文件結束

grub-install-root-directory =/loader/dev/hda

卸載/加載程序

如果您使用lilo:

mkdir/loader/{引導、開發等}

cp /boot/boot.b /loader/boot/

mknod-m 600/裝載機/開發/hda b 3 0

mknod-m 600/loader/dev/hda 1 b 3 1

mknod-m 600/loader/dev/ram 0 b 1 0

cat & gt/loader/etc/lilo . conf & lt;& lt文件結束

lba32

boot=/dev/hda

提示

超時=100

image=/vmlinuz

標簽=Linux

initrd=/initrd.gz

只讀

root=/dev/ram0

文件結束

lilo-r/裝載機

卸載/加載程序

在最後壹步中,仍然保持chroot的狀態,修改/etc/fstab以添加以下選項:

/dev/loop0 / ext3默認值為0 1

刪除/etc/mtab並退出chroot。最後,運行“umount -d /mnt/efs”命令並重新啟動系統。如果出現壹些錯誤,您仍然可以在LILO提示符下使用“Linux root=/dev/hda3”來啟動您的未加密分區。

如果壹切順利,您可以對硬盤進行重新分區,並繼續加密您的hda3或hda4分區。在下面的腳本中,我們假設hda3將掛載交換設備,hda4將掛載/home目錄;您應該首先初始化這兩個分區:

shred -n 1 -v /dev/hda3

shred -n 1 -v /dev/hda4

losetup-e AES 256-S XXXXXX/dev/loop 1/dev/hda 3

losetup-e AES 256-S XXXXXX/dev/loop 2/dev/HD a4

mkswap /dev/loop1

mke2fs -j /dev/loop2

然後在系統的啟動目錄中創建壹個腳本,並更新/etc/fstab:

cat & gt/etc/init . d/loop & lt;& lt" EOF "

#!/bin/sh

if[" `/usr/bin/MD 5 sum/dev/hda 1 ` "!= \

" 5671 CEB db 3 bed 87 C3 B3 c 345 f 0101d 016/dev/hda 1 "]

然後

echo -n”警告!hda1完整性驗證失敗-請按enter鍵。

閱讀

船方不負擔裝貨費用

echo "1st上面選擇的密碼" | \

/sbin/losetup-p 0-e AES 256-S XXXXXX/dev/loop 1/dev/hda 3

回顯“上面選擇的第二個密碼”| \

/sbin/losetup-p 0-e AES 256-S XXXXXX/dev/loop 2/dev/HD a4

/sbin/swapon /dev/loop1

對於“序列0 63”中的I

echo-n-e " \ 33[10;10]\33[11;10]" & gt;/dev/tty$i

完成的

文件結束

chmod 700 /etc/init.d/loop

ln -s../init.d/loop /etc/rcS.d/S00loop

vi /etc/fstab

...

/dev/loop2 /home ext3默認值0 2