এনক্রিপ্ট / বুট সহ উবুন্টু ফুল ডিস্ক এনক্রিপশন


15

আমি একটি পৃথক /bootপার্টিশন সহ একটি সম্পূর্ণ এনক্রিপ্টড ডিস্ক সেটআপ করার চেষ্টা করছি এবং আমার কিছু সমস্যা হচ্ছে।

আমি একটি উবুন্টু 15.04 লাইভ ডিভিডি সেশনে অনুসরণ করে আসছি write

  • 'এলোমেলো ডেটা' দিয়ে ডিস্কটি পূরণ করুন

    sudo dd if=/dev/urandom of=/dev/sda1 bs=4096   #ok
    
  • পার্টিশন তৈরি করুন (জিপিটার্ড ব্যবহার করে)

    1. পার্টিশন সারণী তৈরি করুন - জিপিপি 2।
      • / dev / sda1 এক্সট 2 1.5 জিবি # বুট
      • / dev / sda2 লিনাক্স-অদলবদল 4 গিগাবাইট # অদলবদল
      • / dev / sda3 ext4 15 জিবি # রুট
      • / dev / sda4 ext4 ফ্রিস্প্যাক # হোম
  • ভলিউম এনক্রিপ্ট করুন

    cryptsetup luksFormat --cipher twofish-xts-plain64 --key-size 512
                          --hash sha512 --iter-time 3000 /dev/sda1
    cryptsetup luksFormat --cipher twofish-xts-plain64 --key-size 512
                          --hash sha512 --iter-time 3000 /dev/sda2
    cryptsetup luksFormat --cipher twofish-xts-plain64 --key-size 512
                          --hash sha512 --iter-time 3000 /dev/sda3
    cryptsetup luksFormat --cipher twofish-xts-plain64 --key-size 512
                          --hash sha512 --iter-time 5000 /dev/sda4
    
  • ক্রিপ্টোভোলিউম খুলুন

    cryptsetup luksOpen /dev/sda1 boot
    cryptsetup luksOpen /dev/sda2 swap
    cryptsetup luksOpen /dev/sda3 root
    cryptsetup luksOpen /dev/sda4 home
    
  • বিন্যাস

    mkfs.ext2 /dev/mapper/boot
    mkswap /dev/mapper/swap
    mkfs.ext4 /dev/mapper/root
    mkfs.ext2 /dev/mapper/home
    
  • ইনস্টল করুন (সর্বব্যাপী ব্যবহার করে)

    • / dev / sda বুট লোডার
    • / dev / sda1 - ext2 হিসাবে ব্যবহার করুন - মাউন্ট পয়েন্ট / বুট
    • / dev / sda2 - ext2 - মাউন্ট পয়েন্ট / বুট হিসাবে ব্যবহার করুন
    • / dev / sda3 - ext2 হিসাবে ব্যবহার করুন - মাউন্ট পয়েন্ট / বুট
    • / dev / sda4 - ext2 হিসাবে ব্যবহার করুন - মাউন্ট পয়েন্ট / বুট

    শেষে ইনস্টলার সাবধান করে দেয় যে গ্রাব-ইনস্টল ব্যর্থ হয়েছে (কারণ বুটের ভলিউম এনক্রিপ্ট করা হয়েছে), তাই 'বুটলোডার ছাড়াই চালিয়ে যান' বাছাই করুন।

  • বুট ভলিউম পরিষ্কার করুন

    mkfs.ext2 /dev/mapper/boot
    
  • মাউন্ট ভলিউম

    mkdir /mnt/root
    mount /dev/mapper/root /mnt/root
    mount /dev/mapper/boot /mnt/root/boot
    
  • Fstab এবং crypttab আপডেট করুন

    sudo blkid
    
    [/dev/sr0: UUID="2015-10-21-16-17-40-00" LABEL="Ubuntu 15.10 amd64"
               TYPE="iso9660" PTUUID="429817b4" PTTYPE="dos"
    /dev/sda1: UUID="...#1" TYPE="crypto_LUKS" PARTUUID="..."
    /dev/sda2: UUID="...#2" TYPE="crypto_LUKS" PARTUUID="..."
    /dev/sda3: UUID="...#3" TYPE="crypto_LUKS" PARTUUID="..."
    /dev/sda4: UUID="...#4" TYPE="crypto_LUKS" PARTUUID="..."
    /dev/mapper/boot: UUID="..." TYPE="ext2"
    /dev/mapper/swap: UUID="..." TYPE="swap"
    /dev/mapper/root: UUID="..." TYPE="ext4"
    /dev/mapper/home: UUID="..." TYPE="ext4"]
    
  • fstab ফাইলের

    #<file system>   <mount point>   <type>   <options>           <dump>   <pass>
    UUID=#1          /boot           ext2     defaults            0        2
    UUID=#2          none            swap     sw                  0        0
    UUID=#3          /               ext4     errors=remount-ro   0        1
    UUID=#4          /home           ext4     defaults            0        2
    
  • crypttab -র

    boot   UUID=#1   luks,cipher=twofish-xts-plain64,size=512,
                     hash=whirlpool, time=3000
    swap   UUID=#2   luks,swap,cipher=twofish-xts-plain64,size=512,
                     hash=whirlpool,time=3000
    root   UUID=#3   luks,cipher=twofish-xts-plain64,size=512,
                     hash=whirlpool,time=3000
    home   UUID=#4    luks,cipher=twofish-xts-plain64,size=512,
                      hash=whirlpool,time=5000
    
  • Initramfs চিত্র আপডেট করুন

    cd /mnt
    sudo chroot root
    mount -t proc proc /proc
    mount -t sysfs sys /sys
    mount -t devpts devpts /dev/pts
    update-initramfs -u                      #ok
    
  • বুটলোডার কনফিগার করুন ( /etc/default/grub)

    GRUB_ENABLE_CRYPTODISK=y
    GRUB_PRELOAD_MODULES="luks cryptodisk"
    GRUB_CMDLINE_LINUX="cryptdevice=UUID#3:root root=/dev/mapper/root resume=/dev/mapper/swap 
                        crypto=whirlpool:twofish-xts-plain64:512:0:"
    
  • কনফিগার ফাইল তৈরি করুন

    $ grub-mkconfig -o /boot/grub/grub.cfg
    [/usr/sbin/grub-probe: error: failed to get canonical path of `/dev/mapper/root'.]
    
  • বাইরে চেষ্টা করুন

    $ exit
    $ grub-mkconfig -o /boot/grub/grub.cfg
    [/usr/sbin/grub-probe: error: failed to get canonical path of `/cow'.]
    

এর আগে আমি কোন ভুল করেছি? আমি কীভাবে গ্রাবটি সঠিকভাবে কনফিগার করতে এবং ইনস্টল করতে যেতে পারি?


আমার খারাপ লাগছে যে আপনাকে আপনার প্রশ্নটিকে "সঠিক" সাইটে সরিয়ে দেওয়ার পরেও কেউ সাহায্য করেনি। উবুন্টুতে আমি এই স্তরের কাজটি করিনি। তবে আমি grubআপনার শিরোনামের জন্য গুগলে সন্ধান করেছি । আমি মনে করি আপনি pavelkogan.com/2014/05/23/luks-full-disk-encryption এ এনক্রিপ্ট করার জন্য আপনার পদ্ধতিটি পেয়েছেন (যা এই বিষয়ে প্রথম গুগল অনুসন্ধান)। যদি না হয়, সম্ভবত এটি সাহায্য করবে। ভাল প্রশ্ন! এবং সৌভাগ্য!
শেল্টার

দু'টি জিনিস: 1. আপনি /bootসমস্ত কিছুর জন্য মাউন্ট পয়েন্ট হিসাবে উল্লেখ করেন। আমি আশা করছি এটি একটি টাইপো। ২. /devক্রুটিংয়ের সময় আপনি মাউন্ট করেননি, তবে আপনি মাউন্ট ডিপ্প্টস করেছেন। ওও
মুরু

আরেকটি ভুল হ'ল আপনি ক্রিপ্টটাব এবং fstab এ একই ইউআইডি ব্যবহার করছেন বলে মনে হচ্ছে। fstab- এ আসলে / dev / mapper / ড্রাইভের ইউআইডি ব্যবহার করা উচিত।
আলেকসান্দ্র ডাবিনস্কি

1
চেকআউট এই উবুন্টু সম্প্রদায় সদস্য গাইড। আমি এটি ব্যবহার করেছি এবং এটি আমার পক্ষে খুব ভাল কাজ করে।
কাপাড

উত্তর:


13

আপনি কিছু ভুল করেছেন, তবে মূল সমস্যাটি সর্বব্যাপী এবং গ্রাব। মূলত, আপনি যখন /একটি এনক্রিপ্ট করা পার্টিশন হিসাবে সেট হয়ে থাকেন এবং এর জন্য পৃথক পার্টিশন তৈরি করবেন না /boot, তখন গ্রুব একটি ত্রুটি বার্তা দেয়:

আমি জানি /bootএনক্রিপ্ট করা আছে। আপনি সেট করতে হবে GRUB_ENABLE_CRYPTODISK=yযে /etc/default/grub। আমি এটি আপনার জন্য করব না, তাই আমি ব্যর্থ হতে চলেছি এবং আপনার ইনস্টলেশন বন্ধ হয়ে যাবে।

প্রক্রিয়া একটি ওভারভিউ

  • আমরা ইএফআই মোড ব্যবহার করি।
  • আমরা স্ট্যান্ডার্ড ইনস্টলার ব্যবহার করে /bootএকটি এনক্রিপ্ট করা পার্টিশন এবং একটি এনক্রিপ্ট করা বিটিআরএফ /ইনস্টল করি।
  • ইনস্টলারটি সমাপ্ত হওয়ার পরে, আমরা chrootকয়েকটি গুরুত্বপূর্ণ কনফিগারেশন পরিবর্তন করব এবং EFI সিস্টেম পার্টিশনে গ্রাবটি পুনরায় ইনস্টল করব এবং আরআরআরডিডি পুনরায় তৈরি করব।

বিস্তারিত পদক্ষেপ

  • উবুন্টু 16.04 ইনস্টল ডিস্ক থেকে বুট করুন (জুবুন্টু দিয়ে পরীক্ষিত)।
  • ইন্টারনেটের সাথে সংযোগ sudo apt update && sudo apt upgradeস্থাপন করুন এবং ইনস্টলার উপাদানগুলি আপডেট করতে চালান
  • ব্যবহারের fdisk, gpartedবা অন্য সরঞ্জাম 3 পার্টিশন তৈরি করতে:
    • একটি জিপিটি পার্টিশন টেবিল
    • একটি 200MB পার্টিশন যা আমরা EFI সিস্টেম পার্টিশনের জন্য ব্যবহার করব
    • একটি মাল্টি-গিগাবাইট পার্টিশন যা আমরা শেষ পর্যন্ত আমাদের এনক্রিপ্ট করা স্ব্যাপ পার্টিশন হিসাবে ব্যবহার করব তবে এটি আমাদের অস্থায়ী এনক্রিপ্ট করা হিসাবে কাজ করবে /boot
    • একটি এনক্রিপ্ট করা পার্টিশন যা বাকী স্থান ব্যবহার করে
  • এনক্রিপ্ট করা পার্টিশন প্রস্তুত করুন

    sudo cryptsetup luksFormat /dev/sda3
    sudo cryptsetup luksOpen --allow-discards /dev/sda3 sda3_crypt
    sudo mkfs.btrfs /dev/mapper/sda3_crypt
    
  • উবুন্টু ইনস্টল করুন

    • ইনস্টলেশন ধরণের বিষয়ে জিজ্ঞাসা করা হলে "অন্য কিছু" চয়ন করুন।
    • /dev/sda1হিসাবে কনফিগার করুনEFI System Partition
    • /dev/sda2মাউন্ট পয়েন্ট সহ ext2, ফর্ম্যাট হিসাবে কনফিগার করুন/boot
    • /dev/mapper/sda3_cryptমাউন্ট পয়েন্ট সহ বিটিআরএফএস হিসাবে কনফিগার করুন/
    • ইনস্টলেশন চালিয়ে যান।
    • এটি শেষ হওয়ার পরে, লাইভ সিস্টেমে থাকার জন্য চয়ন করুন (কোনও রিবুট নেই)।
  • এর বিষয়বস্তু অনুলিপি করুন /bootএবং একটিchroot

    sudo mount -o subvol=@ /dev/mapper/sda3_crypt /target
    sudo mount /dev/sda2 /mnt
    # (Watch those trailing slashes! rsync is very sensitive to them.)
    sudo rsync -aXAH /mnt/ /target/boot/
    sudo mount /dev/sda1 /target/boot/efi
    sudo mount --bind /dev /target/dev
    sudo mount --bind /proc /target/proc
    sudo mount --bind /sys /target/sys
    sudo chroot /target
    
  • ( chrootআপনার নতুন সিস্টেমের অভ্যন্তরে সবকিছু এখন ঘটছে ))

  • লাইন যুক্ত করুন /etc/default/grub

    GRUB_ENABLE_CRYPTODISK=y
    
  • লাইন যুক্ত করুন /etc/crypttab। (নোট ) sudo blkidএর ইউইউডি খুঁজতে আপনাকে প্রথমে দৌড়াতে /dev/sda3হবে /dev/mapper/sda3_crypt

    sda3_crypt UUID=<UUID of /dev/sda3> none luks,discard
    
  • এর /etc/fstabজন্য লাইনটি সম্পাদনা করুন এবং মুছুন /boot। অন্যান্য এন্ট্রিগুলি সঠিক।

  • EFI সিস্টেম পার্টিশনে গ্রাব ইনস্টল করুন, একটি নতুন grub.cfg উত্পন্ন করুন এবং initrd প্রস্তুত করুন।

    sudo grub-install --target=x86_64-efi --efi-directory /boot/efi --bootloader=ubuntu --boot-directory=/boot/efi/EFI/ubuntu --recheck
    sudo grub-mkconfig -o /boot/efi/EFI/ubuntu/grub/grub.cfg
    sudo update-initramfs -c -k all
    
  • ঐচ্ছিক ডাবল চেক: দুবার-যাচাই করতে /boot/efi/EFI/ubuntu/grub/grub.cfgলাইন অন্তর্ভুক্ত যে রয়েছে insmod luks, cryptomount -u <UUID>সঠিক বুট এন্ট্রি ইত্যাদি এবং ডাবল চেক করুন যে আপনার initrd- র ধারণ করে cryptsetupবাইনারি। যদি এই জিনিসগুলি অনুপস্থিত থাকে তবে গ্রুব-মেককনফিগ এবং / অথবা আপডেট-আরআরডি এটি নির্ধারণ করতে পারেনি যে আপনি fstab এ যে ভলিউমগুলি মাউন্ট করেছেন বা ক্রিপ্টটাবের এনক্রিপ্ট করা ভলিউমের সাথে সম্পর্কিত। (অনেকগুলি যাদু স্বতঃরূপকরণ রয়েছে যা তারা করে।) আপনি যদি এই গাইড থেকে অন্যদিকে সরিয়ে থাকেন, উদাহরণস্বরূপ, জেডএফএস ব্যবহার করে বা sda3_crypt বিভাজন করার চেষ্টা করে এমনটি ঘটতে পারে।

  • (যদি বিটিআরএফএসের পরিবর্তে জেডএফএস ব্যবহার করা হয়) গ্রাব-এমকনফিগ এবং আপডেট-আরআরডি জেডএফএসকে স্বীকৃতি দেয় না। ওয়ার্কআরাউন্ডে (ক্রুটের সময়, গ্রুব-মেককনফিগ / আপডেট-ইআরআর্ডের পূর্বে) ১৩৯ লাইনে /usr/sbin/grub-mkconfigযোগ || trueকরার সম্পাদনা (যা শুরু হয় GRUB_DEVICE=), যুক্ত GRUB_DEVICE="/dev/mapper/sda3_crypt"করা /etc/default/grub, /usr/share/initramfs-tools/conf-hooks.d/forcecryptsetupবিষয়বস্তু সহ ফাইল তৈরি করা export CRYPTSETUP=yএবং /etc/initramfs-tools/conf.d/cryptrootবিষয়বস্তু সহ ফাইল অন্তর্ভুক্ত থাকে target=sda3_crypt,source=UUID=<UUID of sda3>,key=none,discard। এগুলি সবই আপনি যে পদক্ষেপগুলি গ্রহণ করবেন তা যদি আপনি জেডএফএস পার্টিশনটি এনক্রিপ্ট না করে থাকেন তবে (যেমন লাইভ সিস্টেমে এবং ক্রুট উভয় সময়ে zfs ইউজারস্পেসের ব্যবহারগুলি ইনস্টল করার সময় /এবং fstab এ মাউন্ট করা লাইনটি মুছে ফেলার মত ) গ্রহণ করা হবে।

  • ক্রুট থেকে প্রস্থান করুন এবং আপনার নতুন সিস্টেমে পুনরায় বুট করুন

    exit
    sudo umount /target/boot/efi
    sudo umount /target/dev
    sudo umount /target/proc
    sudo umount /target/sys
    sudo umount /target
    sudo reboot
    
  • আপনার পাসওয়ার্ড চেয়ে জিজ্ঞাসা করা উচিত should তারপরে আপনি বুট মেনু পাবেন। উবুন্টু নির্বাচনের পরে আপনাকে আবার আপনার পাসওয়ার্ড জিজ্ঞাসা করা হবে। তারপরে আপনি আপনার সিস্টেমে থাকবেন। উবুন্টু কীভাবে বিটিআরএফএস ব্যবহার করে সে সম্পর্কে আরও পড়ুন ।

  • টোডো : এনক্রিপ্ট হওয়া স্বাপ তৈরি করুন (ইঙ্গিত: এটিতে ক্রিপ্টটাব, fstab, এবং পুনরায় চলমান জড়িত update-initrd)।

  • টোডো : আপনার পাসওয়ার্ডটি সংরক্ষণ করুন যাতে আপনার এটি একবার গ্রাবের মধ্যে প্রবেশ করতে হবে। এই বিস্তারিত হয় এখানে

আপগ্রেড

  • প্রতিবার নতুন কার্নেল ইনস্টল করার সময় আপনার কাস্টম grub-mkconfigকমান্ডটি চালানো উচিত ।
  • যতবার আপনি গ্রাব আপডেট করেন, আপনার কাস্টম grub-installকমান্ডটি চালানো উচিত ।

অন্যান্য নোট

  • অদলবদল (এবং সম্ভবত অন্যরা) তৈরি করতে এটি একটি একক এনক্রিপ্ট করা ভলিউম তৈরি করতে এবং এটি ভাগ করার জন্য প্ররোচিত, তবে এটি কার্যকর হয় না। Grub-mkconfig এবং আপডেট-initrd উভয়ই দুর্ব্যবহার করবে। তবে আমি এলভিএম চেষ্টা করি নি।
  • এটি বিটিআরএসএফের উপরে একটি সোয়াফিল ব্যবহার করতে প্ররোচিত হতে পারে , তবে পারফরম্যান্সের কারণে এটি সম্ভবত একটি খারাপ ধারণা।

আমি ইতিমধ্যে যা জানি আপনার স্পষ্ট করে (আপনার মন্তব্য অনুযায়ী): fstabএবং প্রশ্নের মধ্যে crypttabআসলে সঠিক নয় । কাঁচা ডিভাইসের crypttabদিকে নির্দেশ করা উচিত ; খোলা ক্রিপ্ট ডিভাইসগুলিতে নির্দেশ করা উচিত । uuid/dev/sdxYfstab/dev/mapper/label
হেন্ডি

এই উত্তরটি দেওয়ার জন্য আপনাকে ধন্যবাদ, এটি আমাকে এটি সেট আপ করতে সহায়তা করেছে।
x13

পার্টিশনের তথ্য ফাঁস হওয়ায় আমি আসলে এই সত্যিকারের কোনও এফডিই বিবেচনা করি না। সত্য এফডিইতে সমস্ত সেক্টর এনক্রিপ্ট করা ডেটা থাকে (শুরুতে LUKS শিরোনাম বাদে, যদিও এটি প্রযুক্তিগতভাবে কোনও পৃথক হেডার ব্যবহার করে প্রয়োজন হয় না)। আমি LUKS এর মধ্যে এলভিএম ব্যবহার করে এফডিই করি, সুতরাং এটি অবশ্যই কার্যকরভাবে কাজ করে এবং পরে যদি আপনাকে পার্টিশন / ভলিউম আকার পরিবর্তন করতে হয় তবে এটি আরও ভাল হতে পারে। 12.04 এ এটি করার বিষয়ে একটি পুরাতন ব্লগ পোস্ট এখানে রয়েছে তবে পরবর্তী সংস্করণগুলিতে কাজ করা উচিত।
সংবেদনহীন

এছাড়াও, বিটিআরএফএসে একটি স্ব্যাপফিল ব্যবহার করা অবশ্যই একটি খারাপ ধারণা ...
ক্র্যাস

আপনার grub-installনির্দেশে আপনার একটি --bootloader=ubuntuপ্যারামিটার রয়েছে। উবুন্টু বা জিএনইউর ম্যানুয়ালগুলিতে আমি এই যুক্তিটি খুঁজে পাচ্ছি না । আপনি এটি পরিষ্কার করতে পারেন যে এটি কী করে বা এটি কোথায় নথিবদ্ধ হয়েছে?
স্যামুয়েল হারমার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.