Тому незважаючи на наявність опції в майстра установки, все одно доводиться робити установку вручну.
Але для початку трохи теорії.
Для чого потрібно шифрування даних на диску
Це єдиний надійний спосіб захисту інформації, в умовах, коли можливий фізичний доступ сторонніх людей до комп'ютера. Пароль на запуск будь-якої операційної системи - Windows, Linux або Mac OS, може врятувати тільки від дітей. Будь-який фахівець обійде парольний захист за пару хвилин - приблизно стільки часу потрібно для того, щоб увіткнути в комп'ютер флешку і завантажити свою операційну систему з неї.
А ось зашифровані дані розкрити вже набагато важче. Або взагалі неможливо без цифрового ключа або ключової фрази. Звичайно існують різні алгоритми шифрування і всередині цих алгоритмів існують різні параметри - все це впливає на стійкість до злому. При використанні нестійких алгоритмів або вразливих параметрів можна отримати доступ до зашифрованих фалам і папок. Але в загальному випадку можна вважати що шифрування це надійний захист даних.
Найбільш поширений спосіб захисту даних це шифрування файлів. На диску створюється шифрована папка, в неї записуються файли. Теоретично це надійно, якщо використовується алгоритм AES і ключі великої довжини. Але залишається неочевидна вразливість даних при такому способі шифрування. Справа в тому, що операційна система залишається незахищеною. А це дає зловмиснику можливість встановити в систему спеціальну програму, (кейлогерам, руткит) яка буде запускатися при старті ОС і відстежувати дії користувача і таким чином рано чи пізно зловмисник отримає пароль або ключовий файл для доступу до зашифрованих папок і файлів. Або зможе отримати самі ці дані після того, як користувач відкриє зашифрований файл.
Значить, дійсно стійка захист даних на диску це шифрування не окремих файлів і папок, а й всієї операційної системи. Для надійного захисту необхідно шифрування всього диска. "На поверхні" не повинно залишатися нічого. У цій статті буде дана інструкція як створити зашифровані системний розділ і диск в ОС Linux Ubuntu 14.04.
Шифрована файлова система в Linux підтримується на рівні ядра операційної системи. Тобто не потрібно шукати якісь наворочені криптографічні програми і більш того, використання шифрованих розділів Linux відбувається прозоро - користувачеві нічого не потрібно знати про шифрування і нічого не потрібно робити для шифрування своїх файлів і папок.
Для того, щоб створити надійну шифровану систему під Linux потрібно розуміти які частини цієї системи потрібно захищати. Їх чотири:
- Системна область - позначається як root або /.
- Завантажувальна область - позначається як / boot. Може розташовуватися на окремому розділі або на розділі root у вигляді папки.
- Область призначених для користувача даних - позначається як / home. Може розташовуватися на окремому розділі або на розділі root у вигляді папки.
- Область віртуальної пам'яті - позначається як swap. Найчастіше розміщується на окремому розділі, але може розташовуватися на розділі root у вигляді файлу.
Захищати потрібно всі ці області.
У статті буде розглянута спрощена конфігурація - / boot на окремому розділі і диску, а swap, root і / home суміщені на одному розділі одного диска. Але для більш складних випадків розподілу розділів технологія захисту буде така ж.
З шифруванням областей root, swap і home ніяких труднощів немає, а ось із захистом / boot є проблема. Справа в тому, що з цієї області системний завантажувач запускає initrd і ядро Linux. Якщо цю область зашифрувати, тоді завантажувач не зможе запустити ядро і відповідно запуск ОС буде неможливий. Тобто зашифрувати / boot не можна, але і залишати відкритою теж не можна, адже в цьому випадку буде можлива підміна ядра, на інше, що містить шкідливий код, який перехопить пароль для розшифровки диска ..
Вихід в тому, щоб розмістити розділ / boot на знімному носії, на флешці. Флешка буде свого роду електронним ключем до системи. Без неї запуск ОС з зашифрованого диска буде неможливий. Тобто захист розділу / boot здійснюється на фізичному рівні - витяганням його з комп'ютера.
Таким чином загальна схема захисту така:
- Розділи root, swap і / home розміщуються на повністю зашифрованому жорсткому диску.
- Розділ / boot розміщується на знімному носії.
Установка шифрованого Убунту буде виконуватися з використанням Ubuntu Live. Чому саме Live? Адже дистрибутив Alternate дозволяє зробити те ж саме без танців з бубном, там опції шифрування є в установнику. Особисто мені не подобається те, що Alternate це виключно інсталяційний дистрибутив, більше його ніяк не можна використовувати - ні для діагностики, ні для роботи. До того, ж установник Alternate працює в консолі, а це якось архаїчно в 21 столітті. Так, що Live.
крок перший
Необхідно завантажитися з диска або флешки Ubuntu Desktop 14.04 Live. Відповідно повинен до комп'ютера бути підключений жорсткий диск на який буде виконана установка. А також потрібно приготувати чисту флешку ємністю від 100 Мб і вище.
Крок другий, підготовка жорсткого диска і флешки
На жорсткому диску потрібно створити один порожній, розмічений в файлову систему cleared. Формат диска може MS-DOS або GPT - це неважливо. Цей розділ буде виконувати роль криптоконтейнера.
На флешці також потрібно створити один розділ, але з файлової системою Ext2.
Крок третій, шифрування системного диска
Шифрування всього розділу на жорсткому диску виконується командою:
sudo cryptsetup --cipher aes-xts-plain --key-size 512 --verify-passphrase luksFormat / dev / sda1
Ця команда видасть запит і на його підтвердження потрібно ввести слово YES, саме так, великими літерами. Цей запит зроблено для того, щоб переконатися в тому, що у вас на клавіатурі включений саме англійська мова! Після цього потрібно буде двічі ввести ключову фразу. Ця фраза повинна бути довгою і не повинна містити часто повторюваних символів. В ідеалі це має бути довільний набір букв і цифр. Цю фразу краще придумати заздалегідь, ще до початку роботи зі створення системи.
При введенні ключової фрази, в терміналі не показуються ніякі знаки, тому друкувати потрібно уважно. Але фраза буде запрошена двічі, так що якщо ви помилитеся програма про це повідомить.
Після успішного створення криптоконтейнера, для подальшої роботи потрібно підключити цей шифрований диск:
sudo cryptsetup open / dev / sda1 crypted
Ця команда видасть запит на ключову фразу, яка була введена в попередній команді.
Крок четвертий, створення шифрованих розділів
Наступний етап це створення шифрованих розділів всередині криптоконтейнера LUKS. Для створення цих розділів використовується механізм LVM.
sudo pvcreate / dev / mapper / crypted
sudo vgcreate ubuntu / dev / mapper / crypted
sudo lvcreate -L 2600M -n swap ubuntu
sudo lvcreate -l 100% FREE -n root ubuntu
sudo mkswap / dev / mapper / ubuntu-swap
sudo mkfs.ext4 / dev / mapper / ubuntu-root
Розмір swap розділу повинен бути приблизно на 20-30% більше ніж розмір оперативної пам'яті. Розділ root не менше 5-7 Гігабайт.
В результаті у вас термінал повинен виглядати приблизно так:
Крок п'ятий, установка Ubuntu на шифрований диск
Після створення зашифрованих розділів потрібно запустити інсталятор, ярлик якого є на робочому столі. Установка звичайна, важливо лише до запуску установника отмонтировать флешку куди буде записаний / boot, і правильно вказати розділи для установки.
Далі потрібно вибрати ручну розмітку диска:
І далі ось таким чином підключити розділи і вказати диск для встановлення завантажувача (boot loader) GRUB:
Якщо ви не ставили позначку "Фоматіровать" для розділу root, тоді буде виданий запит:
Його можна ігнорувати натиснувши кнопку "Далі".
Після цього потрібно проходійті майстер установки до кінця дочекатися закінчення установки. По завершенні установки, встановлення про перезавантажити комп'ютер.
Перезавантажувати не можна! Потрібно залишитися в Live Ubuntu, щоб завершити настройку завантаження.
Втім це некритично. Навіть якщо ви помилково зробите перезавантаження можна буде знову завантажитися в Ubuntu Live.
Крок шостий, підключення криптоконтейнера
Примітка. Цей крок пропускається якщо ви зробили перезавантаження після завершення установки!
Спочатку потрібно виконати наступні команди:
sudo swapoff -a
sudo dmsetup remove_all
Ці дві команди размонтіруйте шифрований контейнер. Це потрібно для того, щоб далі підключити криптоконтейнера з настройками за замовчуванням. Це можна зробити двома способами:
Спосіб перший, через графічний інтерфейс
Натисніть на кнопці диска в панелі швидкого запуску:
Далі буде запит ключової фрази:
Спосіб другий, через термінал:
Потрібно виконати команду:
echo "luks - $ (ls -la / dev / disk / by-uuid | grep $ (basename / dev / sda1) | cut -d '' -f 11)"
Її висновок буде виглядати так: luks-b224aaf0-774a-4548-a256-b11c5a657902
Примітка. Якщо висновок команди не містить такий рядок, значить пробуйте інший параметр -f. 10, 12 і дивіться на результат. Від версії до версії формат команди ls -la змінюється. І висновок UUID диска може бути не на 11 позиції. Наприклад в версії 14.04.3 він на 10 позиції! Можна просто виконати команду ls -la / dev / disk / by-uuid і подивитися всі диски і все UUID. А потім вручну скласти рядок luks-UUID.
Потрібно скопіювати цей рядок і вставити в наступну команду:
sudo cryptsetup open / dev / sda1 luks-b224aaf0-774a-4548-a256-b11c5a657902
Для чого все це? Справа в тому, що на відміну від попередніх версій, Ubuntu 14.04 Не бере ім'я підключається криптоконтейнера з файлу / etc / crypttab. Вона автоматично формує його з префікса luks- і UUID разздела де розміщений криптоконтейнера. Тобто не можна в / etc / crypttab написати якесь ім'я типу crypted як в попередніх версіях. Потрібно щоб це ім'я відповідало імені за умовчанням. Насправді в налаштуваннях dm-crypt можна вказати використання призначеного для користувача імені криптоконтейнера. Але краще робити так щоб все працювало "з коробки".
Для перевірки можна виконати команду:
sudo cryptsetup status / dev / mapper / luks-b224aaf0-774a-4548-a256-b11c5a657902
Щоб переконається що все впорядке.
Крок сьомий, чи потрібно завантажувати з шифрованого диска.
Потрібно виконати ось ці команди:
- sudo mount / dev / mapper / ubuntu-root / mnt
- sudo mount / dev / sdb1 / mnt / boot
- sudo mount -o bind / dev / mnt / dev
- sudo mount -t proc proc / mnt / proc
- sudo mount -t sysfs sys / mnt / sys
Перевірте, щоб правильний диск був примонтовано в / mnt / boot! Це повинна бути флешка з розділом boot.
Далі такі команди:
- sudo chroot / mnt / bin / bash
- echo "luks - $ (ls -la / dev / disk / by-uuid | grep $ (basename / dev / sda1) | cut -d '' -f 11) UUID = $ (ls -la / dev / disk / by -uuid | grep $ (basename / dev / sda1) | cut -d '' -f 11) none luks, discard "> / etc / crypttab
- update-initramfs -u
- update-grub
- exit
Примітка. Після другої команди краще виконати перевірочну cat / etc / crypttab щоб подивитися рядок яка записана в crypttab. Вона повинні бути приблизно такою "luks-0eac1061-1dca-4a66-8497-7f3dda2b843a UUID = 0eac1061-1dca-4a66-8497-7f3dda2b843a none luks, discard":
Тепер можна користуватися встановленої зашифрованою Ubuntu. Звичайно в BIOS необхідно вказати завантаження з тієї флешки, де встановлений розділ / boot!
Примітка 1
Важливо розуміти, що навіть при такому тотальному шифруванні зберігаються уразливості.
- По-перше потрібно зберігати в таємниці ключову фразу. Якщо ви її запишіть на стікер і приклеїте на монітор це не добре. Якщо зловмисник отримає ключову фразу, він зможе відкрити ваш зашифрований диск використовуючи будь-якої Live дистрибутив Linux.
- По-друге потрібно на фізичному рівні захищати завантажувальну флешку. Не залишайте її без нагляду. Вимкнули комп'ютер - витягніть флешку і помістіть її в надійне місце. Якщо ваша завантажувальна флешка буде у вільному доступі, зловмисник може встановити на неї свій код для перехоплення пароля.
- По-третє можна залишати без нагляду включений комп'ютер. Коли комп'ютер включений, доступний і зашифрований диск і завантажувальна флешка.
Також необхідно розуміти, що шифрування це захист на той час коли ваш комп'ютер вимкнений, а вас поруч немає. Але коли ви працюєте на комп'ютері зберігається можливість потрапляння на ваш комп'ютер шкідливих програм з Інтернет. Такі програми можуть "вкрасти" вашу інформацію в той час як ви користуєтеся комп'ютером та Інтернет.
Тому важливо приймати і інші заходи захисту. Чи не "шарахатися" де попало в Інтернет. Чи не встановлювати неперевірені програми. Використовувати брандмауер. А при більш серйозних вимогах до безпеки потрібно використовувати інші засоби, наприклад tcb, SELinux. iptables.
Примітка 2
Зробіть копію завантажувальної флешки, найпростіше командою dd. Запишіть цей образ на іншу флешку або на лазерний диск. Копія на іншу флешку зручніше оскільки при необхідності ви відразу її зможете використовувати. Але в будь-якому випадку цю копію, на чому б вона не була, потрібно буде зберігати в захищеному місці. А після поновлення ядра або завантажувача необхідно буде оновлювати копію флешки.
Поділіться цим сайтом з друзями!
Навіть невелика сума може допомогти написання нових статей :)
Або поділіться посиланням на цю статтю зі своїми друзями.