ECryptfs и криптиране на домашната директория на Linux
Мнозина са обърнали внимание на предложението на Ubuntu по време на инсталацията за криптиране на домашната директория на потребителя. Доскоро винаги съм го игнорирал по причини „адски знае какво са измислили там, нежелание да се разбере“, но след като любопитството надделя и имаше свободно време да научи тази тайна. Каня всички, които се интересуват от среза.

Най-добрият начин да научите нещо е да го направите сами. Като морско свинче беше решено да вземем Debian 6.0.3, който беше под ръка и не криптираше домашните директории на потребителите. Целият процес беше извършен върху него. Ако имате нещо много отдалечено като вашата операционна система, няма гаранции, че процесът на настройка ще бъде същият - не.
Как работи
За да организират защитата на вашите лични данни в Ubuntu, разработчиците предпочетоха eCryptfs - файлова система, която работи „отгоре“ на всяка друга често срещана файлова система и прозрачно криптира/декриптира съдържанието на файловете. ECryptfs съхранява криптографски метаданни в заглавките на всеки файл, така че можете да прехвърляте всеки файл между различни системи без никакви проблеми. Цялото това щастие е внедрено на ниво ядро на Linux, осигуряващо добро ниво на производителност в сравнение с криптирането FUSE (например EncFS).
Всичко, от което се нуждаете, за да работи eCryptfs, е предоставено по подразбиране във всички съвременни дистрибуции на Linux. Ако сте компилирали ядрото на Linux сами, уверете се, че необходимият модул присъства във вашата сборка:
Освен това, за да работим с eCryptfs, се нуждаем от инструменти за потребителско пространство, които лесно се инсталират в Debain/Ubuntu от пакета:
Монтирайте eCryptfs
За да разберем по-добре и да видим на практика как работи eCryptfs, нека монтираме някаква директория и да видим какво се случва в действителност. Първо, нека създадем празна директория, която ще криптираме:
Сега нека монтираме създадената директория с помощта на eCryptfs:
Имайте предвид, че директорията източник и дестинация за командата монтиране посочена е същата директория. Това е донякъде "нетрадиционно" за операция по монтиране, но е напълно приемливо и удобно. Ако това ви обърква, можете да използвате различни точки с по-значими имена, като:
След въвеждане на командата трябва да въведете паролата за ключа за шифроване:
Въведете паролата си, като я запомните загубата му ще означава невъзможност за получаване на данни! След въвеждане на паролата ще бъдете подканени да изберете алгоритъм за криптиране, като AES е избран по подразбиране:
След това трябва да изберете размера на ключа:
Като зададете следната опция, разрешавате или отказвате достъп до файлове, които не са криптирани с eCrypfs:
Дали да шифровате имена на файлове или не:
След това ще видите обобщение на избраните опции (те могат да се използват в опциите за монтиране в бъдеще):
Ако за първи път монтирате и/или подписът на това монтиране не е запазен в кеша, тогава ще бъдете учтиво предупредени, че може да сте въвели паролата неправилно:
Ако всичко е наред, можете да потвърдите монтирането:
За да избегнете появата на горното предупреждение в бъдеще, можете да добавите подписа на eCryptfs за монтиране към файла:
Ако всичко е минало добре, ще получите съответно съобщение:
Сега нека копираме нещо в монтираната директория:
Нека видим неговото съдържание и размер:
Сега нека демонтираме eCryptfs и да видим как се е променил нашият файл:
Поглеждайки във файла, ще видите само двоични данни.
pam_ecryptfs
Друго доста интересно и полезно нещо, което идва с eCryptfs, е модулът PAM pam_ecryptfs. Този модул се извиква по време на потребителско влизане и работи по следния начин. Ако файлът бъде намерен в домашната директория
/.ecryptfs/wrapped-passphrase, а също и файла
/.ecryptfs/auto-mount след това модулът pam_ecryptfs дешифрира съдържанието на файла
/.ecryptfs/wrapped-passphrase, използвайки паролата на потребителя. Освен това, дешифрираното съдържание се използва като парола при монтиране на директорията
/ Частна. По този начин потребителят не трябва допълнително да монтира директория с лични криптирани данни, всичко се случва автоматично. За да работи модул, той трябва да бъде деклариран по подходящ начин в /etc/pam.d/common-auth:
и в /etc/pam.d/common-session:
Шифрована частна директория
За да накарат потребителите да се чувстват сухи и удобни, когато създават самостоятелни директории, разработчиците са включили специален скрипт на обвивката в дистрибуцията на eCryptfs ecryptfs-setup-private, който върши цялата работа по подготовката на личното криптирано хранилище:
/ Частна; криптира паролата за монтиране и я съхранява в
/.ecryptfs/wrapped-passphrase;
Скриптът работи много просто и при стартиране в режим "по подразбиране" не изисква никакви допълнителни параметри:
При следващата заявка въведете паролата си, която използвате при удостоверяване в системата:
След това ще бъдете подканени да въведете парола, която ще се използва при монтажа. Ако не попълните това поле, паролата ще се генерира автоматично:
Друго напомняне за забравилите:
създаване на файлове, директории и тестване:
И накрая, съобщение, че сега е достатъчно да преминете към системата, за да започнете да се наслаждавате на предимствата на цивилизацията:
Всичко е наред, време е да тествате ефективността на новото ни хранилище:
Сега, когато излезете от модула pam_ecryptfs, автоматично ще се демонтира точка
/ Частна, като по този начин оставяте данните си в криптирана директория
/.Частно. Ако не искате директорията
/ Частна монтирани и/или демонтирани автоматично, изтрийте файла съответно
Също така имайте предвид, че скриптът ecryptfs-setup-private приема редица опции, с които можете да контролирате поведението му:
Пълно криптиране на домашната директория
Идеята за съхраняване на критични данни в отделна директория изобщо не е лоша, но има очевиден недостатък. А именно: трябва постоянно да избирате какво да шифровате и какво не. Е, или съхранявайте всичко в Частната директория, което, меко казано, не е много удобно. Вместо да отделяте отделна директория, не би ли било по-добре изобщо да шифровате цялата си домашна директория? Това е, което Ubuntu ви предлага по време на инсталацията и за това използва eCryptfs.!
Ако по време на инсталацията сте избрали опцията, показана на екранната снимка в началото на статията, значи вече сте щастлив потребител, защитен от врага. Ако случаят не е такъв, но наистина искате да скриете данните си от любопитни очи, ако нещо се случи и вече сте разбрали, че eCryptfs е точно това, от което се нуждаете за това, тогава няма проблем!
Основният проблем с пълното криптиране на домашната директория е, че трябва да преместите директорията с криптираните данни извън точката на монтиране. Разработчиците на Ubuntu решиха проблема много просто:
/.ecryptfs/Private.mnt и сочи към домашната директория на потребителя, т.е. в този случай към / начало/ashep. Гениално и просто!
За да ви спестят неприятностите при преместване на файлове и ръчно конфигуриране на всички пътища и символни връзки, разработчиците предлагат скрипт на обвивката ecryptfs-migrate-home, който ще свърши цялата мръсна работа вместо вас. Също така разработчиците предупреждават, че този скрипт може да направи вашите данни недостъпни, ако изведнъж нещо се обърка., така че не забравяйте да направите резервно копие, преди да стартирате скрипта! Също така, преди да започнете, уверете се, че помощните програми са инсталирани в системата rsync и също, а също и това в секцията където / У дома, има достатъчно свободно място.
Скриптът трябва да се изпълнява като root, като подава като параметър данните за вход на потребителя, който се „мигрира“. Потребителят не трябва да е в системата и не трябва да се стартират процеси от негово име.
Ако всичко върви добре, тогава, както изисква сценарият, мигриралият потребител трябва да влезе в системата преди рестартиране. Също така имайте предвид, че скриптът оставя копие на нешифрованите данни в отделна директория (в този пример това /home/ashep.81yFQbNJ), които трябва да бъдат изтрити, след като потребителят определи, че всичко е минало добре.
Сега, когато мигриралият потребител е влязъл, домашната му директория ще бъде монтирана, както следва:
/.Частно е символична връзка към директория извън домашната папка: