دو روش رایج برای رمزنگاری پارتیشنها geli و gdbe هستند. در این قسمت نحوه رمزنگاری پارتیشنها با استفاده از geli را فرا خواهیم گرفت.
برای استفاده از geli، باید آن را در هسته فعال کنید. اگر از یک هسته سفارشی استفاده میکنید، مطمئن شوید که خطوط زیر در فایل پیکربندی هسته قرار دارد:
options GEOM_ELI device crypto
لطفا مقاله کامپایل هسته را برای اطلاعات بیشتر ببینید.
اما میتوانید به جای کامپایل کردن هسته جدید از ماژولها استفاده کنید. این خط را به فایل /boot/loader.conf اضافه کنید:
geom_eli_load="YES"
geli از یک کلید تحت عنوان Master key برای رمزنگاری پارتیشنها استفاده میکند. این کلید در داخل پارتیشن ذخیره میشود. برای محافظت از این کلید، باید آن را با استفاده از یک کلید دیگر رمزنگاری کرد که به آن کلید ثانویه میگویند. علاوه بر این کلید ثانویه، Master Key توسط یک passphrase هم محافظت میشود.
ابتدا این کلید ثانویه را تولید میکنیم:
# dd if=/dev/random of=/root/da2.key bs=64 count=1
دستور بالا یک فایل به اندازه ۶۴ بایت با اطلاعات تصادفی تولید خواهد کرد. ما از همین فایل به عنوان کلید ثانوی استفاده میکنیم. با استفاده از این کلید ثانویه می توانیم Master key را رمزنگاری کنیم. ابتدا باید پارتیشن مورد نظر را برای رمزنگاری آماده کنیم:
# geli init -s 4096 -K /root/da2.key /dev/da2 Enter new passphrase: Reenter new passphrase:
با اجرای دستور بالا، Master key با استفاده از کلید ثانویه که قبلاً ایجاد کردیم رمزنگاری شده و سپس در داخل پارتیشن ذخیره میشود. گزینه -s اندازه سکتورها را مشخص میکند که برای بدست آوردن کارآیی بیشتر از سکتورهای ۴ کیلوبایتی استفاده کردیم.
کلید ثانویه را در جای امنی نگه دارید. چون همیشه در هنگام mount کردن پارتیشن به آن احتیاج خواهیم داشت. در مرحله بعد باید پارتیشن را attach کنیم:
geli attach -k /root/da2.key /dev/da2 Enter passphrase:
با اجرای دستور بالا، پارتیشن مورد نظر علاوه بر /dev/da2 در مسیر /dev/da2.eli هم در دسترس خواهد بود. از این به بعد باید تمامی عملیات را بر روی /dev/da2.eli انجام دهیم.
# ls /dev/da2* /dev/da2 /dev/da2.eli
حالا باید این پارتیشن را قالببندی کنیم:
# dd if=/dev/random of=/dev/da2.eli bs=1m # newfs /dev/da2.eli # mount /dev/da2.eli /private
با اجرای دستور df میتوانید ببینید که این پارتیشن رمزنگاری شده بر روی سیستم سوار شده است:
# df -H Filesystem Size Used Avail Capacity Mounted on /dev/ad0s1a 248M 89M 139M 38% / /devfs 1.0K 1.0K 0B 100% /dev /dev/ad0s1f 7.7G 2.3G 4.9G 32% /usr /dev/ad0s1d 989M 1.5M 909M 0% /tmp /dev/ad0s1e 3.9G 1.3G 2.3G 35% /var /dev/da2.eli 150G 4.1K 138G 0% /private
حالا میتوانید مانند یک فایلسیستم معمولی از آن استفاده کنید و اطلاعات مورد نظر خود را در آن کپی کنید. بعد از اینکه کارتان با پارتیشن مورد نظر تمام شد، باید آن را unmount کرده و از دسترس خارج کنیم:
# umount /private # geli detach da2.eli
میتوانید این پارتیشن رمزنگاری شده را به صورت خودکار و در هنگام بوت شدن سیستم mount کنید. کافی است این خطوط را به فایل /etc/rc.conf اضافه کنید:
geli_devices="da2" geli_da2_flags="-p -k /root/da2.key"
اگر در مرحله geli init از گزینه -P استفاده کرده باشید، geli passphrase را از شما سؤال نخواهد کرد.