これは、Raspberry Pi デバイスでの Kali の使用に関する 3 部構成のブログ投稿シリーズの第 1 部です。この最初の投稿では、Raspberry Pi でのフル ディスク暗号化 (FDE) の有効化について説明します。パート 2 では、Raspberry Pi へのリモート接続について説明します。最後に、パート 3 では、これらの投稿の作成中に遭遇したデバッグの問題について説明します。
ここ数年、世界で起こっているすべてのことにより、リモートで作業する人が増えています。これは私たちも例外ではありません。今日は、暗号化されているため、発見された場合の識別が困難な「ドロップ ボックス」マシンを再検討します。 .
目標は、スタンドアロンの「置き去り」ヘッドレスを作成することです 私たちのデータは安全ですので、発見された場合、私たちが何をしていたのかを簡単に把握できないデバイス 常に。これを実現するために、フル ディスク暗号化 (FDE) を使用し、リモートでロック解除できるようにします。 (何らかの理由でデバイスが再起動された場合)。 LUKS Nuke を使用するオプションもあります これは Raspberry Pi 4 Model B+ で行いますが、Raspberry Pi 3 Model B でもテスト済みです。 同様のデバイスのほとんどのメーカー/モデルを使用できるはずですが、独自のシステムを保護するために、少し創造的な適応/調整が必要になる場合があります.
これは、以前にこの部分について説明したため、更新されたプロセスです。今回は、いくつかのコミュニティへの貢献とともに、追加の開発が含まれています。自動化されたスクリプトについて、Richard Nelson (@unixabg) に感謝したいと思います。ボンネットの下で何が起こっているかを理解することを常にお勧めしているため、手動の方法を行った後にこれに触れます.
概要
達成しようとしていることの低レベルの技術的な詳細に飛び込む前に、達成したい目標を簡単に見て、それを分類してみましょう:
- Kali Linux を Raspberry Pi 4 (以降、「RPi」と呼びます) にインストールします
- 暗号化されたブート用にシステムを準備して、リモート ディスク ロック解除の準備を整える
- (initramfs と Dropbear を使用して) リモートでロック解除できるように SSH キーを設定します
- 既存のデータをバックアップする
- 暗号化されたパーティションを構成する
- データを復元する
- ハックする
これは多くのように聞こえるかもしれませんが、かなりの数の手順があってもかなり簡単です。完了すると、次のような RPi が作成されます。
- ブート
- DHCP から IP を取得
- キーを使用して SSH 経由で接続するのを待ちます
- LUKS ロック解除または LUKS Nuke パスフレーズの提供を許可してください
その後、やりたいことがすべて終わったら、あとはそれを回収するだけです …暇なときに!
RPi への Kali Linux のインストール
この手順に従っている場合は、ファイルのイメージング先を確認し、/dev/sdX
を置き換えてください。 .やみくもにコピー/ペーストしないでください!
既存の Kali インストールにドロップ ボックス マシンを作成します。他の Debian ベースのディストリビューションを使用するのは非常に簡単で、他の OS (Windows ユーザーを除く!) にとっては非常に簡単です。
まず、最新の安定した Kali RPi イメージをダウンロードします。これを書いている時点では、それが Kali 2022.2 です。また、4 GB を超える RAM があり、HAT (上部に取り付けられたハードウェア) を使用していないため、64 ビット イメージを選択しました。ファイル名を調整した後、32 ビットの場合の手順は同じです:
$ wget https://kali.download/arm-images/kali-2022.2/kali-linux-2022.2-raspberry-pi-arm64.img.xz
$ xzcat kali-linux-2022.2-raspberry-pi-arm64.img.xz | sudo dd of=/dev/sdX bs=512k status=progress
システムの準備
chroot の準備
次に、chroot の準備をします。 microSD カードをマウントする場所を作成してからマウントしましょう:
$ sudo mkdir -vp /mnt/chroot/
$ sudo mount /dev/sdX2 /mnt/chroot/
$ sudo mount /dev/sdX1 /mnt/chroot/boot/
$ sudo mount -t proc none /mnt/chroot/proc
$ sudo mount -t sysfs none /mnt/chroot/sys
$ sudo mount -o bind /dev /mnt/chroot/dev
$ sudo mount -o bind /dev/pts /mnt/chroot/dev/pts
$ sudo apt install -y qemu-user-static
$ sudo cp /usr/bin/qemu-aarch64-static /mnt/chroot/usr/bin/
最後の 2 つのコマンドは、後で initramfs の準備に役立ちます。
必要なパッケージのインストール
システムがセットアップされたので、chroot を使用して暗号化用の RPi イメージをセットアップできます。まず chroot に入り、必要なパッケージをいくつかインストールしましょう:
$ sudo env LANG=C chroot /mnt/chroot/
┌──(root㉿kali)-[/]
└─# apt update
┌──(root㉿kali)-[/]
└─# apt install -y busybox cryptsetup dropbear-initramfs lvm2
始める前に最新のカーネルを使用していることを確認したいので、それらがインストールされていることも確認しましょう:
┌──(root㉿kali)-[/]
└─# apt install -y kalipi-kernel kalipi-bootloader kalipi-re4son-firmware
起動オプション
次に /boot/cmdline.txt
を編集します ルートパスを変更します。 /boot/cmdline.txt
RPi デバイス上のファイルは、カーネル コマンド ライン オプションを渡すために使用されます。ルート パスを /dev/mapper/crypt
に変更します。 、そして cryptdevice=PARTUUID=$partuuid:crypt
を追加します その直後です。
その理由は、ルート ファイルシステムをマウントして使用するために、カーネルがルート ファイルシステムの場所を知る必要があるためです。この投稿の後半で rootfs を暗号化するため、起動時に暗号化されていないデバイスも認識できません。 、暗号化のため!ここでは名前を「crypt」に変更していますが、好きな名前を付けることができます。
最終結果は次のようになります:
┌──(root㉿kali)-[/]
└─# vim /boot/cmdline.txt
┌──(root㉿kali)-[/]
└─# cat /boot/cmdline.txt
dwc_otg.fiq_fix_enable=2 console=serial0,115200 kgdboc=serial0,115200 console=tty1 root=/dev/mapper/crypt cryptdevice=PARTUUID=ed889dad-02:crypt rootfstype=ext4 fsck.repair=yes rootwait net.ifnames=0
パーティション レイアウト
/etc/fstab
を更新する必要があります ファイルです。これは、利用可能なすべてのディスク、ディスク パーティション、およびそれらを処理するときに使用するオプションを含む、システム上の構成ファイルです。
現在、ルートファイルシステムの UUID が入力されており、これから作成する暗号化されたファイルシステムを指す必要があります。この例では、以前のルート デバイスの UUID をコメントアウトし、/dev/mapper/crypt
を指しています。 これは、暗号化されたファイルシステムを作成すると、次のようにマウントされます:
┌──(root㉿kali)-[/]
└─# vim /etc/fstab
┌──(root㉿kali)-[/]
└─# cat /etc/fstab
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
/dev/mapper/crypt / ext4 errors=remount-ro 0 0
#UUID=747bfa7c-edd2-471f-8fff-0ecafc2d3791 / ext4 errors=remount-ro 0 1
LABEL=BOOT /boot vfat defaults 0 2
暗号化されたパーティションを構成する
暗号化されたパーティションを使用する場合、 /etc/crypttab
が存在しない場合は編集または作成する必要があります このファイルは、暗号化されたデバイスのロックを解除するために必要なオプションを知るために cryptsetup によって使用されます。
このファイルは存在しないため、/etc/crypttab
を作成します。 ファイルに必要なオプションを入力します:
┌──(root㉿kali)-[/]
└─# echo -e 'crypt\tPARTUUID=ed889dad-02\tnone\tluks' > /etc/crypttab
ここで、ファイル システムのトリックを少し実行します。暗号化されたパーティションを検出するため、cryptsetup を initramfs に含めることができる偽の LUKS ファイルシステムを作成します。 LUKS パーティションをフォーマットすると、パスワードの入力を求められます。通常は強力なパスワードを使用しますが、これは cryptsetup を initramfs に含めるためのハックとしてのみ使用しているためです。このプロンプトで作成したパスワードは、これらの手順を超えて必要または使用されるため、短く/すばやく入力できるように設定できます。これは cryptsetup luksFormat
で発生します cryptsetup luksFormat
で設定したパスワードの入力を求められます。 cryptsetup luksOpen
を実行すると ステップ。
パスワードを入力するときに、何も入力されていません
┌──(root㉿kali)-[/]
└─# dd if=/dev/zero of=/tmp/fakeroot.img bs=1M count=20
┌──(root㉿kali)-[/]
└─# exit
$ sudo cryptsetup luksFormat /mnt/chroot/tmp/fakeroot.img
$ sudo cryptsetup luksOpen /mnt/chroot/tmp/fakeroot.img crypt
$ sudo mkfs.ext4 /dev/mapper/crypt
SSH キーの構成
その後、Dropbear の authorized_keys
に追加する新しい ssh キーをコピーまたは生成する必要があります ファイル。
コピーする既存のキーが既にある場合:
$ sudo cp ~/.ssh/id_rsa.pub /mnt/chroot/
または、新しいキーを生成するには:
$ ssh-keygen -t rsa -b 4096
[...]
Enter file in which to save the key (/home/kali/.ssh/id_rsa): /home/kali/.ssh/id_rsa_dropbear
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/kali/.ssh/id_rsa_dropbear
Your public key has been saved in /home/kali/.ssh/id_rsa_dropbear.pub
[...]
$ sudo cp ~/.ssh/id_rsa_dropbear.pub /mnt/chroot/
パスフレーズを入力するときに入力が表示されません
暗号化の設定
chroot に戻ると、いくつかの新しいファイルを作成する必要があります。
最初は zz-cryptsetup
です cryptsetup
に必要なファイルを追加するフック initramfs
に .動作させるには、mkinitramfs
になるように実行可能としてマークする必要があります。 フックを実行します:
$ sudo env LANG=C chroot /mnt/chroot/
┌──(root㉿kali)-[/]
└─# vim /etc/initramfs-tools/hooks/zz-cryptsetup
┌──(root㉿kali)-[/]
└─# cat /etc/initramfs-tools/hooks/zz-cryptsetup
#!/bin/sh
set -e
PREREQ=""
prereqs()
{
echo "${PREREQ}"
}
case "${1}" in
prereqs)
prereqs
exit 0
;;
esac
. /usr/share/initramfs-tools/hook-functions
mkdir -p ${DESTDIR}/cryptroot || true
cat /etc/crypttab >> ${DESTDIR}/cryptroot/crypttab
cat /etc/fstab >> ${DESTDIR}/cryptroot/fstab
cat /etc/crypttab >> ${DESTDIR}/etc/crypttab
cat /etc/fstab >> ${DESTDIR}/etc/fstab
copy_file config /etc/initramfs-tools/unlock.sh /etc/unlock.sh
┌──(root㉿kali)-[/]
└─# chmod +x /etc/initramfs-tools/hooks/zz-cryptsetup
今後何らかの理由で無効にしたい場合は、単に実行可能ビットを削除してください。
initramfs-tools
のモジュール ファイルを編集します。 dm-crypt
を含めるようにします モジュールにアクセスし、ファイルを cat して正しいことを確認します:
┌──(root㉿kali)-[/]
└─# grep -q dm_crypt /etc/initramfs-tools/modules || echo dm_crypt >> /etc/initramfs-tools/modules
┌──(root㉿kali)-[/]
└─# cat /etc/initramfs-tools/modules
# List of modules that you want to include in your initramfs.
# They will be loaded at boot time in the order below.
#
# Syntax: module_name [args ...]
#
# You must run update-initramfs(8) to effect this change.
#
# Examples:
#
# raid1
# sd_mod
dm_crypt
リモート SSH ロック解除の構成
unlock.sh
を作成します 次の内容のスクリプトを作成し、実行可能としてマークして、スクリプトが initramfs
で実行されるようにします。 :
┌──(root㉿kali)-[/]
└─# vim /etc/initramfs-tools/unlock.sh
┌──(root㉿kali)-[/]
└─# cat /etc/initramfs-tools/unlock.sh
#!/bin/sh
export PATH='/sbin:/bin:/usr/sbin:/usr/bin'
while true; do
test -e /dev/mapper/crypt && break || cryptsetup luksOpen /dev/disk/by-uuid/$REPLACE_LATER crypt
done
/scripts/local-top/cryptroot
for i in $(ps aux | grep 'cryptroot' | grep -v 'grep' | awk '{print $1}'); do kill -9 $i; done
for i in $(ps aux | grep 'askpass' | grep -v 'grep' | awk '{print $1}'); do kill -9 $i; done
for i in $(ps aux | grep 'ask-for-password' | grep -v 'grep' | awk '{print $1}'); do kill -9 $i; done
for i in $(ps aux | grep '\\-sh' | grep -v 'grep' | awk '{print $1}'); do kill -9 $i; done
exit 0
┌──(root㉿kali)-[/]
└─# chmod +x /etc/initramfs-tools/unlock.sh
次に、/etc/dropbear/initramfs/authorized_keys
の先頭に次を追加する必要があります。 、これは、キーが一致する場合に SSH で接続するときにこのコマンドを実行するように指示します:
┌──(root㉿kali)-[/]
└─# vim /etc/dropbear/initramfs/authorized_keys
┌──(root㉿kali)-[/]
└─# cat /etc/dropbear/initramfs/authorized_keys
command="/etc/unlock.sh; exit"
その後、コピーした SSH キーを追加して、カードから削除できます。
┌──(root㉿kali)-[/]
└─# cat id_rsa.pub >> /etc/dropbear/initramfs/authorized_keys && rm -v id_rsa.pub
完了したら、/etc/dropbear/initramfs/authorized_keys
次のようになります:
┌──(root㉿kali)-[/]
└─# cat /etc/dropbear/initramfs/authorized_keys
command="/etc/unlock.sh; exit" ssh-rsa <key> [email protected]
authorized_keys
のすべて ファイルは 1 行で、コマンドの末尾 "
の間にスペースが必要です および ssh キー (例:[...]exit" ssh-rsa[...]
)
/usr/share/initramfs-tools/scripts/init-premount/dropbear
を編集する必要があります スリープ タイマーを追加すると、ネットワークを 前に 開始できます ドロップベアがそうです。 dropbear-initramfs
への更新がある場合に注意することが重要です。 パッケージ、この編集を再度追加する必要があります:
┌──(root㉿kali)-[/]
└─# vim /usr/share/initramfs-tools/scripts/init-premount/dropbear
┌──(root㉿kali)-[/]
└─# cat /usr/share/initramfs-tools/scripts/init-premount/dropbear
[ "$BOOT" != nfs ] || configure_networking
sleep 5
run_dropbear &
echo $! >/run/dropbear.pid
次に、cryptsetup を有効にします:
┌──(root㉿kali)-[/]
└─# echo CRYPTSETUP=y >> /etc/cryptsetup-initramfs/conf-hook
┌──(root㉿kali)-[/]
└─# tail /etc/cryptsetup-initramfs/conf-hook
#
# Whether to include the askpass binary to the initramfs image. askpass
# is required for interactive passphrase prompts, and ASKPASS=y (the
# default) is implied when the hook detects that same device needs to be
# unlocked interactively (i.e., not via keyfile nor keyscript) at
# initramfs stage. Setting ASKPASS=n also skips `cryptroot-unlock`
# inclusion as it requires the askpass executable.
#ASKPASS=y
CRYPTSETUP=y
カーネル
次のステップは、フォローしている人々にとって重要です。何を選択するかは、使用している RPi デバイスによって異なります。以下は、必要に応じていずれかを選択する必要がある 5 つのカーネル名/エディション/フレーバーです (注意してください!) :
Re4son+
32 ビット ARMEL armv6 デバイス用です - つまり、RPi1、RPi0、または RPi0wRe4son-v7+
32 ビット ARMHF armv7 デバイス用です - すなわち RPi2 v1.2、RPi3 または RPi02wRe4son-v8+
64 ビット ARM64 armv8 デバイス用です - つまり、RPi2 v1.2、RPi3、または RPi02wRe4son-v7l+
32 ビット ARMHF armv7 デバイス用です。つまり、RPi4 または RPi400 デバイスですRe4son-v8l+
64 ビット ARM64 armv8 デバイス用です。つまり、RPi4 または RPi400 デバイスです
l
名前は lpae の略です - Large Physical Address Extension
念のため、RPi4、64 ビット イメージを使用しています。したがって、Re4son-v8l+
が必要になります。 .デバイスに合わせて調整してください。使用するカーネル名がわかったので、カーネルのバージョンを確認する必要があります。これはデバイスごとに変化し、Kali が更新されると変化します。執筆時点では 5.15.44
です。 私たちのRPiのために:
カーネルのバージョンは変更される可能性がありますが、名前は変更されないことに注意してください:
┌──(root㉿kali)-[/]
└─# ls -l /lib/modules/ | awk -F" " '{print $9}'
5.15.44-Re4son+
5.15.44-Re4son-v7+
5.15.44-Re4son-v7l+
5.15.44-Re4son-v8+
5.15.44-Re4son-v8l+
┌──(root㉿kali)-[/]
└─# echo "initramfs initramfs.gz followkernel" >> /boot/config.txt
カーネルのバージョン (5.15.44
) に注意してください ) は変更される可能性がありますが、カーネル名 (Re4son-v8l+
) ) しません。
initramfs
を作成する必要があります。 .ここで、カーネル バージョンの出番です:
┌──(root㉿kali)-[/]
└─# mkinitramfs -o /boot/initramfs.gz 5.15.44-Re4son-v8l+
initramfs
を作成したことを確認します。 正しく。結果がない場合は、何か問題があります:
┌──(root㉿kali)-[/]
└─# lsinitramfs /boot/initramfs.gz | grep cryptsetup
usr/lib/aarch64-linux-gnu/libcryptsetup.so.12
usr/lib/aarch64-linux-gnu/libcryptsetup.so.12.7.0
usr/lib/cryptsetup
usr/lib/cryptsetup-nuke-password
usr/lib/cryptsetup-nuke-password/crypt
usr/lib/cryptsetup/askpass
usr/lib/cryptsetup/askpass.cryptsetup
usr/lib/cryptsetup/functions
usr/sbin/cryptsetup
┌──(root㉿kali)-[/]
└─# lsinitramfs /boot/initramfs.gz | grep authorized
root-Q2iWOODUwk/.ssh/authorized_keys
┌──(root㉿kali)-[/]
└─# lsinitramfs /boot/initramfs.gz | grep unlock.sh
etc/unlock.sh
サービスを無効にする
バックアップする前に、rpi-resizerootfs
であることを確認する必要があります。 無効になっています。これは通常、すべての ARM デバイスで実行されるサービスであり、ルート ファイルシステム パーティションのサイズを変更して、パーティションのサイズをストレージ デバイスのフル サイズに拡大します。この手順は手動で行っているため、ルート ファイルシステムを削除して再作成しないように、無効にする必要があります。
┌──(root㉿kali)-[/]
└─# systemctl disable rpi-resizerootfs
既存のデータをバックアップ
すべての変更が書き込まれたことを確認したら、ディスクを暗号化します。
┌──(root㉿kali)-[/]
└─# sync
┌──(root㉿kali)-[/]
└─# exit
$ sudo umount /mnt/chroot/{boot,sys,proc,dev/pts,dev}
$ sudo mkdir -vp /mnt/{backup,encrypted}
$ sudo rsync -avh /mnt/chroot/* /mnt/backup/
$ sudo cryptsetup luksClose crypt
$ sudo umount /mnt/chroot
$ echo -e "d\n2\nw" | sudo fdisk /dev/sdX
$ echo -e "n\np\n2\n\n\nw" | sudo fdisk /dev/sdX
暗号化されたパーティションを構成する
使用しているデバイスに応じて、2 つのコマンドのいずれかを使用する必要があります。 4GB 以上の RPi4 を使用している場合は、次のコマンドを使用します:
$ sudo cryptsetup -v -y --cipher aes-cbc-essiv:sha256 --key-size 256 luksFormat /dev/sdX2
それ以外の場合は、古いバージョンの LUKS を使用する以下を使用する必要があります:
$ sudo cryptsetup -v -y --pbkdf pbkdf2 --cipher aes-cbc-essiv:sha256 --key-size 256 luksFormat /dev/sdX2
データを復元
その後、暗号化されたパーティションにデータを復元することができます:
$ sudo cryptsetup -v luksOpen /dev/sdX2 crypt
$ sudo mkfs.ext4 /dev/mapper/crypt
$ sudo mount /dev/mapper/crypt /mnt/encrypted/
$ sudo rsync -avh /mnt/backup/* /mnt/encrypted/
$ sync
私たちがしなければならない最後のステップは、/etc/fstab
を修正することです 新しい LUKS UUID のファイル、または /dev/mapper/crypt
のままにしておくことができます ロック解除スクリプトの UUID を置き換え、initramfs ファイルを作り直します。暗号化されたファイルシステムを使用するための情報がないため、実行しないと適切に起動しないため、この手順は重要です。 YOUR からの情報を入力することを忘れないでください UUID はシステムごとに異なるため、システム:
$ sudo mount /dev/sdX1 /mnt/encrypted/boot/
$ sudo mount -t proc none /mnt/encrypted/proc
$ sudo mount -t sysfs none /mnt/encrypted/sys
$ sudo mount -o bind /dev /mnt/encrypted/dev
$ sudo mount -o bind /dev/pts /mnt/encrypted/dev/pts
$ sudo env LANG=C chroot /mnt/encrypted
┌──(root㉿kali)-[/]
└─# blkid /dev/sdX2
/dev/sdX2: UUID="173e2de4-0501-4d8e-9039-a4923bfa5ee7" TYPE="crypto_LUKS" PARTUUID="e1750e08-02"
┌──(root㉿kali)-[/]
└─# cat /etc/fstab
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
UUID=173e2de4-0501-4d8e-9039-a4923bfa5ee7 / ext4 errors=remount-ro 0 1
LABEL=BOOT /boot vfat defaults 0 2
┌──(root㉿kali)-[/]
└─# vim /etc/initramfs-tools/unlock.sh
┌──(root㉿kali)-[/]
└─# cat /etc/initramfs-tools/unlock.sh
#!/bin/sh
export PATH='/sbin:/bin:/usr/sbin:/usr/bin'
while true; do
test -e /dev/mapper/crypt && break || cryptsetup luksOpen /dev/disk/by-uuid/173e2de4-0501-4d8e-9039-a4923bfa5ee7 crypt
done
/scripts/local-top/cryptroot
for i in $(ps aux | grep 'cryptroot' | grep -v 'grep' | awk '{print $1}'); do kill -9 $i; done
for i in $(ps aux | grep 'askpass' | grep -v 'grep' | awk '{print $1}'); do kill -9 $i; done
for i in $(ps aux | grep 'ask-for-password' | grep -v 'grep' | awk '{print $1}'); do kill -9 $i; done
for i in $(ps aux | grep '\\-sh' | grep -v 'grep' | awk '{print $1}'); do kill -9 $i; done
exit 0
┌──(root㉿kali)-[/]
└─# vim /etc/crypttab
┌──(root㉿kali)-[/]
└─# cat /etc/crypttab
crypt PARTUUID=e1750e08-02 none luks
┌──(root㉿kali)-[/]
└─# mkinitramfs -o /boot/initramfs.gz 5.15.44-Re4son-v8l+
ここで cryptsetup: ERROR: Couldn't resolve device PARTUUID=ed889dad-02
のような cryptsetup エラーが発生した場合 これは、/etc/crypttab
を編集していないことを意味します fsck.luks が存在しないという警告は、そのようなものはないため、無視できます。
これで、すべてをアンマウントして閉じることができます:
┌──(root㉿kali)-[/]
└─# exit
$ sudo umount /mnt/encrypted/{boot,sys,proc,dev/pts,dev}
$ sudo umount /mnt/encrypted
$ sudo cryptsetup luksClose crypt
先ほど、LUKS Nuke 機能について説明しました。これを使用する場合は、新しく暗号化された RPi rootfs で起動しているときに、次のコマンドを実行して Nuke パスワードを追加し、プロンプトに従います。
[email protected]:~$ sudo dpkg-reconfigure cryptsetup-nuke-password
Dropbox デバイスとしての Raspberry Pi へのリモート接続について説明するパート 2 もお楽しみに!
自動化!
では、これを自動化してみましょう。 Richard Nelson (@unixabg) のおかげで、手動の方法よりもはるかに短い時間で、はるかに簡単にこれをすべてセットアップしたい人なら誰でもできます!
まず最初に、unixabg の cryptmypi スクリプトをダウンロードしましょう:
$ git clone https://github.com/unixabg/cryptmypi.git
$ cd cryptmypi/
ただし、ビルド スクリプトを実行する前に、やらなければならないことがいくつかあります。一緒に見ていきましょう:
$ cp cryptmypi.conf config/.
$ cat ~/.ssh/id_rsa.pub >> config/authorized_keys
cryptmypi.conf
を編集する必要があります ステージ 2 でいくつかの設定を変更します。これらの設定は個人的なものですが、例を挙げてみましょう:
$ vim config/cryptmypi.conf
$ cat config/cryptmypi.conf
##################
## cryptmypi settings
##################
# export prefix for hooks
export _VER="2.2-beta"
# base and build
export _BASEDIR=$(pwd)
export _BUILDDIR=${_BASEDIR}/cryptmypi-build
##################
## Stage-1
##################
_IMAGEURL=https://kali.download/arm-images/kali-2022.2/kali-linux-2022.2-raspberry-pi-arm64.img.xz
# compose package actions
export _PKGSPURGE=""
export _PKGSINSTALL=""
# iodine settings
_IODINE_PASSWORD="your iodine password goes here"
_IODINE_DOMAIN="your iodine domain goes here"
# final package actions
export _FINALPKGPURGE=""
export _FINALPKGINSTALL="telnet dsniff bettercap"
##################
## Stage-2
##################
# block device
_BLKDEV="/dev/sdb"
# luks encryption cipher
_LUKSCIPHER="aes-cbc-essiv:sha256"
# luks encryption password
_LUKSPASSWD="toor"
# root password
export _ROOTPASSWD="toor"
ここで変更したのは、ブロック デバイス、LUKS 暗号化パスワード、およびルート パスワードです。別の画像ファイルを使用する場合は、画像の URL を変更できます。必要に応じて、ここで変更してください。
あとは、両方のステージのスクリプトを実行し、指示に従うだけです。最終的には、Dropbear SSH アクセスを備えた完全に暗号化されたファイル システムが完成します!