نحوه استفاده از LUKS برای رمز کردن هارد دیسک
نحوه ی رمزگذاری پارتیشنهای lvm با استفاده از LUKS
خواه یا ناخواه در حال حاضر کامپیوترها جزء جدا ناپذیری از زندگی ما شدهاند. هارد کامپیوترها اغلب حاوی اطلاعات شخصی و محرمانه هستند. سوال اینجاست که شرط مخفی کردن یک فایل یا پوشه و یا انتقال آن به زیرمسیرهای بیپایان تا چه حد میتواند ضامن امنیت آن باشد؟ به قطع یقین میتوان گفت که این حالت هیچ ضمانتی برای امنیت اطلاع به همراه ندارد. اگر شخص آشنا به کامپیوتر به سیستم ما دسترسی داشته باشد، میتواند ظرف چند دقیقه دستهبندی مرتبی از اطلاعات آن را در اختیار ما قرار دهد.
سوال؟ آیا راه حلی وجود دارد که بتواند با وجود دسترسی فرد به سیستم از اطلاعات ما در برابر او محافظت کند. جواب این سوال بر خلاف سوال قبلی به قطع یقین بله میباشد. ما می توانیم از LUKS که یک روش رمزنگاری در گنو/لینوکس است استفاده و اطلاعات قسمتهای مختلف هارد خود را به صورت رمزشده در بیاوریم.
تذکر
این مطلب یک مقاله آموزشی برای رمز کردن اطلاعات فضای تستی میباشد. فرض بر این است که پارتیشن sdb حاوی هیج اطلاعان ارزشمندی نمیباشد. این بدیهی است که در صورت استفاده از مقادیر اشتباه ممکن است اطلاعات پارتیشن مورد نظر به طور کلی حذف شود. لطفا در صورت استفاده از دستورات زیر در محیط عملیاتی دقت لازم را داشته باشید.
اغلب پارتیشنهای سیستم با ترکیبی از حروف sdXX قابل شناسایی هستند. X اول مربوط به دیسک سخت یا حافظهی فلش و X دوم مربوط به شمارهی پارتیشن میباشد. با استفاده از دستور fdisk -l میتوانیم مقدار فوق را برای هر کدام از پارتیشنهای سیستم به دست آوریم.
luks
Linux Unified Key Setup یا luks یک روش کارآمد است که برای رمز کردن ابزارهای ذخیرهسازی مانند usb و هارد دیسکها استفاده میشود. این نرم افزار توسط Clemens Fruhwirth و در سال ۲۰۰۴ ارایه شده است.
اکثر نرم افزارهای رمزنگاری دیسک، فرمتهای کاملا متفاوت و ناسازگار و بدون مستندات دارند. در حالی که LUKS از یک استاندارد مستقل در ابزارهای مختلف استفاده میکند. این موضوع باعت شده است تا سازگاری و قابلیت همکاری بین برنامهها آسانتر شود.
روش کار LUKS
روش کار LUKS با این ترتیب است که ابتدا کل فضای هاردیسک را رمزگذاری میکند. بعد از مرحله است میتوانیم از کل فضای دیسک استفاده کنیم و هر تعداد پارتیشن با هر فرمتی ایجاد نمایم. در این پروسه تنها پارتیشنی که نباید رمزگذاری شود، پارتیشن boot است. بنابراین میتوانیم برای پارتیشن boot از یک دیسک جدید که ایمنترین راه است استفاده کنیم یا از گزینه از LVM استفاده کنیم.
استفاده از command line به جای رابط گرافیکی
در اکثر توزیعهای لینوکس، رمزگذاری دیسک به صورت گرافیکی ارایه شده است. ولی به دو دلیل باید برای رمز کردن دیسک از CLI استفاده کنیم. اولی به خاطر داشتن کنترل بیشتر و دومی بدلیل عدم وجود گزینههایی کافی در نسخه گرافیکی برای تنظیم دقیق رمزگذاری میباشد. به عنوان مثال هیچ یک از راهکارهای گرافیکی بدون ایجاد جدول پارتیشن کل دیسک خام را رمزگذاری نمیکنند.
نصب LUKS
Iranshell@Crypt:~$ sudo apt install cryptsetup
بعد از نصب LUCKS ابتدا باید دیسک را با استفاده از داده های تصادفی پر کنیم. این روند میتواند بسیار زمانبر باشد. بنابراین برای جلوگیری از طولانی شدن فرآیند از یک حقه و هدر رمزگذاری استفاده میکنیم.
ایجاد پارتیشن LUKS
Iranshell@Crypt:~$ cryptsetup luksFormat --hasj==sha512 --key-size=512 --chipher=aes-xts-plain64 --verify-passphrase /dev/sdb
بدیهی است که در اینجا میتوانیم از تنظیمات مختلفی برای دستور luksFormat استفاده کنیم. بعد از اجرای دستور بالا، رمز عبور برای رمزگذاری را وارد میکنیم. از این دستور فقط به عنوان تولید کننده داده تصادفی استفاده میکنیم. بناربراین مهم نیست که رمز وارد شده از امنیت بالایی برخوردار باشد.
باز کردن هارد رمز شده
Iranshell@Crypt:~$ cryptsetup luksopen /dev/sdb sdb_crypt
پر کردن هارد با داده صفر
Iranshell@Crypt:~$ dd if=/dev/zero of=/dev/mapper/sdb_crypt bs=1M
در اینجای کار فضای دیسک به غیر از سرآیند luks به صورت اساسی با داده های تصادفی پر شده است. با استفاده از دستور “hexdump /dev/sda | less” میتوانیم مقدار آن را چک کنیم.
پاک کردن هارد دیسک رمز شده
برای رمز کردن مجدد هارد بایستی اطلاعاتی که مراحل بالا آنجام دادهایم را با استفاده از دو مرحله زیر پاک کنیم.
پاک کردن mapping مربوط به هارد
Iranshell@Crypt:~$ crypto loksclose sdb_crypt
باز نویسی هدر
Iranshell@Crypt:~$ dd if=/dev/urandom of=/dev/sdb bs=512 count=20480
اکنون دیسک پر از دادههای تصادفی شده است. برای رمز کردن مجدد هارد فقط کافیست مراحل 1 و 2 را تکرار کنیم. اما این بار از یک عبارت کاملا امن استفاده میکنیم.
ایجاد LVM
Iranshell@Crypt:~$ pvcreate /dev/mapper/sdb_crypt
ایجاد Valume Group
Iranshell@Crypt:~$ vgcreate vg00 /dev/ampper/sdb_crypt
انتخاب نام برای vg اختیاری است و میتوانیم از هر اسمی استفاده کنیم.
ایجاد پارتیشنهای منطقی (Logical Valumes)
برای نصب سیستم عاملهای لینوکس معمولا به پارتیشنهای زیر نیاز است. این موضوع برای swap و / اجباری ولی برای بقیه پارتیشنها اختیاری است.
Iranshell@Crypt:~$ lvcreate -n lv00_swap -L 4G vg00
Iranshell@Crypt:~$ lvcreate -n lv01_root -L 30G vg00
Iranshell@Crypt:~$ lvcreate -n lv02_home -L 10G vg00
Iranshell@Crypt:~$ lvcreate -n lv03_data -l +100%FREE vg00
اکنون نوبت پارتیشن بوت می باشد. در اینجا میتوانیم این پارتیشن را بر روی یک دیسک جداگانه یا در بهترین حالت بر روی یک usb ایجاد کنیم. فقط در هنگام نصب بایستی حواسمان باشد که grub را روی mbr آن نصب کنیم. با استفاده از راهکار بالا علاوه براین که دیگر هیچ پارتیشن رمز نشدهای بر روی دیسک خود نخواهیم داشت. هیچ شانس هم برای راه اندازی سیستم بدون دستگاه خارجی نداریم. این امر باعث ایجاد یک لایه امنیتی اضافی برای سیستم میشود.
دیدگاهتان را بنویسید