رمزنگاری دیسک از دادههای در حال سکون محافظت میکند. روی یک VPS، میزبان hypervisor را کنترل میکند، بنابراین نمیتواند جلوی ارائهدهنده مصمم را از خواندن حافظه بگیرد. کاری که خوب انجام میدهد محافظت در برابر پشتیبانهای گمشده، دیسکهای بازیافتشده و حافظه دزدیدهشده یا توقیفشده است. پیش از صرف وقت روی آن بدانید در برابر کدامیک از اینها دفاع میکنید.
تصمیم بگیرید در برابر چه چیزی محافظت میکنید
- دیسکهای بازنشسته یا کپیشده: رمزنگاری بسیار کمک میکند.
- اسنپشاتهای نشتکرده: اگر کلید همراه اسنپشات ذخیره نشده باشد، رمزنگاری کمک میکند.
- مهاجم زنده روی سیستم در حال اجرا: رمزنگاری کمکی نمیکند، چون ولوم باز شده است.
- یک hypervisor مخرب: رمزنگاری روی VPS کمکی نمیکند. یک سرور اختصاصی با کنترل کامل سختافزار گزینه قویتری است.
گزینه 1: یک ولوم داده رمزنگاریشده
این امنترین جای شروع است. یک دیسک دوم متصل کنید یا یک فایل loop بسازید و دادههای حساس را آنجا نگه دارید. مثال از یک دستگاه خالی به نام /dev/vdb استفاده میکند. نام دستگاه را دوباره بررسی کنید، چون فرمت کردن محتوای آن را نابود میکند.
sudo apt install -y cryptsetup
sudo cryptsetup luksFormat /dev/vdb
sudo cryptsetup open /dev/vdb secure
sudo mkfs.ext4 /dev/mapper/secure
sudo mkdir -p /srv/secure
sudo mount /dev/mapper/secure /srv/secure
برای بستن دوباره: sudo umount /srv/secure && sudo cryptsetup close secure.
گزینه 2: یک کانتینر مبتنی بر فایل
وقتی دیسک اضافه ندارید، از یک فایل بهعنوان کانتینر استفاده کنید.
sudo fallocate -l 20G /root/vault.img
sudo cryptsetup luksFormat /root/vault.img
sudo cryptsetup open /root/vault.img vault
sudo mkfs.ext4 /dev/mapper/vault
sudo mount /dev/mapper/vault /srv/vault
گزینه 3: دیسک root با بازگشایی از راه دور
رمزنگاری دیسک root به راهی برای وارد کردن عبارت عبور هنگام بوت، پیش از بالا آمدن شبکه نیاز دارد. پاسخ معمول یک سرور کوچک SSH (dropbear) درون initramfs است. این به آن بستگی دارد که ارائهدهنده اجازه دهد یک image سفارشی نصب کنید یا با پارتیشنبندی خودتان دوباره نصب کنید، پس ابتدا آن را بررسی کنید. بسیاری از پنلهای VPS این را اجازه نمیدهند و یک اشتباه میتواند سرور را غیرقابل بوت کند، پس یک گزینه rescue آماده نگه دارید.
بهطور خلاصه: با root رمزنگاریشده نصب کنید، dropbear-initramfs را اضافه کنید، کلید عمومی SSH خود را در /etc/dropbear/initramfs/authorized_keys بگذارید، initramfs را دوباره بسازید، سپس ریبوت کنید و با cryptroot-unlock از طریق SSH قفل را باز کنید.
کلید را درست مدیریت کنید
- از یک عبارت عبور بلند استفاده کنید و آن را در یک مدیر گذرواژه نگه دارید، نه روی سرور.
- از هدر LUKS پشتیبان بگیرید:
sudo cryptsetup luksHeaderBackup /dev/vdb --header-backup-file header.img. آن را آفلاین نگه دارید. - با فایل کلید ذخیرهشده روی همان دیسک قفل را خودکار باز نکنید. این هدف را از بین میبرد.
- به یاد داشته باشید که بازگشایی هنگام بوت یعنی برای یک ریبوت باید حضور داشته باشید.
رمزنگاری را با پشتیبانهای رمزنگاریشده مطمئن و مبانی مقاومسازی 15 دقیقهای ترکیب کنید.