妄想またはもう一度暗号化の夢

torrents.ruの最近の出来事と著作権侵害対策機関の州グループの活性化に照らして、多くの人が予期しない「ゲスト」が来た場合に自分自身やサーバーを保護する方法を考えたと思います。 そのため、私にとってのタスクは、ローカルメディアサーバーを攻撃から保護することでした。数日かけてグーグルで調べたり、マニュアルやハウツーを読んだりして、これを実装することができました。 暗号化に関する記事はたくさんありますが、それらは主に特定のセクションのみを暗号化するように設計されているか、古くなっている/多くのエラーを含んでいます。

目標:

  1. すべてのネジは安全に暗号化する必要があります
  2. 新しい(または磨耗した)ねじであるかのように、ねじが完全に破損しないようにする必要があります。
  3. OSは暗号化されたパーティション上にある必要があります
  4. 新しいネジを追加することにより、ディスク容量を増やすことができるはずです
  5. 暗号化されたデータのキーを入力せずにシステムを起動します




理論



まず、これがどのように機能するかの理論を簡単に説明します。ブートローダーとパスキーはフラッシュドライブの小さな(<50Mb)セクションに保存され、オンにすると、ブートローダーは暗号化されたネジへのアクセスのロックを解除し、カーネルをロードし、仮想パーティション(LVM)を接続し、通常のブートを行いますシステム。

オペレーティングシステムとしてUbubtu Server 9.10が選択されましたが、このタスクはUNIXライクなシステムに実装できます。 すぐに予約すると、インストーラーでインストール段階でシステムを暗号化する可能性がありますが、上記のリストのポイント1と2を実装することは不可能であるため、手動で対処します。

必要なもの:
  1. Ubuntu Server 9.10イメージ
  2. LiveCDの配布。 暗号化されたパーティションをそのまま使用できるため、通常のUbuntuデスクトップCDを使用しました。
  3. システムの起動に使用されるフラッシュドライブ
  4. * nixシステムの基本的な知識
  5. ストレートアーム




ステップ1.フラッシュドライブとハードドライブの準備



A)フラッシュドライブをパーティションに分割し、キーを作成する
USBフラッシュドライブを、ネジが暗号化されるコンピューターに接続し、LiveCDから起動します。 私たちのタスクは、フラッシュドライブに2つのパーティションを作成することです。最初のパーティションはほぼすべてのスペースを占有し、FAT16、FAT32、NTFS(任意)でフォーマットされます。 このような故障は偶然ではありません-最初のセクションのおかげで、フラッシュドライブはどのOSでも完全に機能します。 また、Windowsでは、2番目のセクションは使用できません。これは、フラッシュドライブが間違った手に落ちた場合にプラスになります。 パーティションを作成するために、GPartedグラフィックユーティリティ(LiveCDにあります)を使用しましたが、fdiskに悩まされる人はいません。 パーティションを作成したら、それらをシステムにマウントします。

sudo su
mkdir /mnt/flash /mnt/boot
mount /dev/sdb1 /mnt/flash
mount /dev/sdb2 /mnt/boot
      
      





- ( ):

dd if=/dev/random of=/mnt/boot/mykey bs=1 count=256
cp /mnt/boot/mykey /mnt/flash/
      
      





)
. , HEX-, , . 2 , , .

. 2MB. Core Quad Q6600 6Mb/, 80 4 .

sudo dd if=/dev/urandom of=/dev/sda bs=2M
      
      





. BAD-. «» .

sudo /sbin/badblocks -c 10240 -s -w -t random -v /dev/sda
      
      







, , . LUKS.

sudo cryptsetup -h=sha256 -c=aes-cbc-essiv:sha256 -s=256 luksFormat /dev/sda /mnt/boot/mykey
      
      





, YES( ). :

sudo cryptsetup -d=/mnt/boot/mykey luksOpen /dev/sda drivespace
      
      





/dev/mapper/drivespace. .

) (LVM)
, ( ) LVM. . LiveCD , .

sudo su
apt-get install lvm2
pvcreate /dev/mapper/drivespace
vgcreate vg /dev/mapper/drivespace
lvcreate -L1G -nswap vg
lvcreate -L3G -nroot vg
lvcreate -l 100%FREE -ndata vg
      
      





3 /dev/mapper/vg-swap /dev/mapper/vg-root /dev/mapper/vg-data. .

sudo su
mkswap /dev/mapper/vg-swap
mkfs.ext4 /dev/mapper/vg-root
mkfs.xfs /dev/mapper/vg-data
      
      





! . UUID

ls -l /dev/disk/by-uuid >/mnt/flash/uuid.txt
      
      





2.



)
, (. ). . , . — /boot ( ) Grub .

) ,
LVM . ( ):

sudo apt-get -y install cryptsetup lvm2
      
      



GRUB. Ubuntu GRUB2, /boot/grub/grub.cfg. menuentry «Ubuntu, Linux 2.6.31-14-server»

linux   /vmlinuz-2.6.31-14-server root=UUID=9a651089-88fa-46d6-b547-38d3e10d4e67 ro   quiet splash
      
      







linux   /vmlinuz-2.6.31-14-server root=/dev/mapper/vg-root ro   quiet splash
      
      





/etc/fstab

proc            /proc           proc    defaults        0       0
UUID=eb7f5e37-b957-43dd-8af6-3c8983670df5       /boot           ext2    defaults        0       2
/dev/mapper/vg-root       /               ext4    errors=remount-ro 0       1
/dev/mapper/vg-data      /home           xfs     defaults        0       1
/dev/mapper/vg-swap       none            swap    sw              0       0
      
      





/boot UUID ( ), /.

/etc/crypttab

drivespace   UUID=090d14c1-e3c8-48e7-b123-6d9b8b2e502b       /boot/mykey      luks,cipher=aes-cbc-essiv:sha256
      
      





UUID ( )

) initrd
initrd LVM. /etc/initramfs-tools/modules :

dm_mod
dm_crypt
sha256
aes_generic
      
      





/etc/initramfs-tools/hooks/cryptokeys :

PREREQ=""

prereqs()
{
        echo "$PREREQ"
}

case $1 in
prereqs)
        prereqs
        exit 0
        ;;
esac

if [ ! -x /sbin/cryptsetup ]; then
        exit 0
fi

. /usr/share/initramfs-tools/hook-functions
mkdir ${DESTDIR}/etc/console
cp /boot/mykey ${DESTDIR}/etc/console
copy_exec /sbin/cryptsetup /sbin

      
      





- initrd, . /etc/initramfs-tools/scripts/local-top/cryptokeys :

PREREQ="udev"

prereqs()
{
        echo "$PREREQ"
}

case $1 in
# get pre-requisites
prereqs)
        prereqs
        exit 0
        ;;
esac
modprobe -b dm_crypt
modprobe -b aes_generic
modprobe -b sha256

while ! /sbin/cryptsetup -d=/etc/console/mykey luksOpen /dev/disk/by-uuid/090d14c1-e3c8-48e7-b123-6d9b8b2e502b drivespace; do
       echo "Try again..."
done
      
      





initrd, UUID=090d14c1-e3c8-48e7-b123-6d9b8b2e502b. ( ). UUID .

:


sudo chmod +x /etc/initramfs-tools/hooks/cryptokeys
sudo chmod +x /etc/initramfs-tools/scripts/local-top/cryptokeys
sudo update-initramfs -u -k all
      
      





)
:

mkdir /mnt/root && mount /dev/sda1 /mnt/root && cd /mnt/root
tar cfjv /mnt/flash/systembackup.tar.bz2 .  #     
      
      





.

3.



: , LiveCD, , LVM, ( vgscan vgmknodes ), .

sudo su
mkdir /mnt/flash 
mount /dev/sdb1 /mnt/flash
cryptsetup -d=/mnt/flash/mykey luksOpen /dev/disk/by-uuid/090d14c1-e3c8-48e7-b123-6d9b8b2e502b drivespace
apt-get install lvm2
#vgscan && vgchange -a y && vgmknodes vg  #      
mkdir /mnt/root
mount /dev/mapper/vg-root /mnt/root
mkdir /mnt/root/home
mount /dev/mapper/vg-home /mnt/root/home
cp /mnt/flash/systembackup.tar.bz2 /mnt/root && cd /mnt/root  #   ,   
tar xfvj systembackup.tar.bz2

      
      





, . , Key slot 0 unlocked, , .



,



( ); , — reset / ; - , , ( — ).



, .



, . ( LUKS/cryptsetup). RAID1,5,6 .



, . ( ) , ( ), .



LUKS

LVM

EncryptedFilesystemHowto5 — , .

UPD . ITpower



All Articles