Використання CFS, криптографічного файлової системи., Linux, Операційні системи, статті

Валерій Качуром

Якщо ви хочете надійно сховати вашу особисту інформацію (наприклад, листи або номери телефонів), то можна скористатися найпростішим способом – помістити свої дані в приховану директорію під назвою ~ /. Private з правами доступу 0700, щоб тільки ви могли прочитати свої файли. Ви вже смієтеся? Тоді настав час перейти до більш надійним способам, заснованих на криптографії. Отже – розглянемо CFS, вільну криптографічний файлову систему від Матта Блейза (Mutt Blaze) для Unix / Linux.

За допомогою CFS ви можете надійно зберігати вашу інформацію в зашифрованому вигляді всередині звичайної директорії. Використовуючи ключ (або, якщо хочете, пароль), ви можете тимчасово розшифрувати ваші файли, і вони стають доступними протягом деякого часу – поки ви з ними працюєте.

CFS робить зашифровані файли доступними для вас за допомогою локального NFS-монтування; в документації CFS цей процес називається <Підключення> (). Зміни, що вносяться в тимчасово розшифровані файли, моментально вносяться і в їх зашифровані версії. Щоб завершити сеанс CFS, використовується процес <Відключення> (), Після якого всі розшифровані файли зникають – до наступного разу, коли ви будете з ними працювати.

У цій статті розглядається CFS версії 1.4.0beta2, дистрибутив якого разом з декількома корисними інструментами додається (див. розділ <Ресурси>).

Інші криптографічні системи.

Існують і інші відкриті криптографічні системи, серед яких можна виділити OpenSSL, OpenSSH і TCFS ( – Прозора криптографічний файлова система). Короткий порівняння:

CFS: працює в просторі звичайного користувача, і для роботи не потрібно встановлювати патчі на ядро. CFS використовує звичайний NFS loopback (локальний експорт NFS з локальним підключенням), що може створити деякі проблеми з безпекою. Будьте обережні з експортом директорій. CFS був розроблений на SunOS і BSDI, а потім портований на Linux і інші відповідні для його роботи операційні системи. Підтримуються декілька алгоритмів шифрування.

TCFS: для роботи потрібно специфічний модуль NFS для Linux або перезбирання ядра. Покращена сумісність з ядром і розширені атрибути файлової системи роблять TCFS більш захищеною, але менш мобільного.

OpenSSL: працює в просторі звичайного користувача, і для роботи не потрібно встановлювати патчі на ядро. OpenSSL Підтримується велика кількість методів шифрування, і навіть має підтримку апаратних ключів. Існують версії OpenSSL для Linux, Windows та інших середовищ. Але OpenSSL 3.4 дозволяє виробляти шифрування або розшифрування тільки одного потоку або файлу за один раз.

OpenSSH: Його можна використовувати разом з іншими інструментами. Головним чином OpenSSH призначений не для зберігання секретних даних, а для безпечного обміну даними.

Loop device mount: входить в комплект дистрибутива Red Hat. В даний момент DES – єдиний серйозний метод шифрування з підтримуваних. Loop device mount вимагає підготовку файлу фіксованого розміру або привілеїв root’а (або щоб користувачі мали права на доступ до файлів loop device). Докладніше – в man-сторінках mount (8) і losetup (8).

Установка CFS.

У розділі <Ресурси> є посилання на файл cfs-1.4.0.beta2j у форматі src.rpm, який, крім самої програми, включає: – Патч для підвищення безпеки Linux. – Два настановних скрипта для Red Hat Linux. – І два зручних скрипта – decrypt і dpw.py. Так само можна завантажити всі ці скрипти окремо. Завжди корисно пошукати в мережі новіші версії CFS і звернути увагу на нові патчі.

NFS – обов’язковий компонент для використання CFS. Будьте обережні з експортом ресурсів і не зробіть випадково всі ваші файли доступними для всього світу. А найкраще – налаштувати свій персональний firewall так, щоб заборонити зовнішній доступ до портів, використовуваним демонами NFS і RPC. Номери портів – 2049 і 111 (TCP і UDP) відповідно.

У всіх наведених прикладах запрошення <#> означає роботу під root’ом, а <$> – Роботу під звичайним користувачем.

Встановіть пакет з исходниками, як звичайно:

# rpm -iv cfs-1.4.0.beta2j-6.2a.src.rpm

Потім зберіть і встановіть CFS:

# cd /usr/src/redhat/SPECS
# rpm -bb cfs.spec
# cd ../RPMS/i386
# rpm -ivv cfs-1.4.0.beta2j.i386.rpm

Якщо у вас є труднощі c установкою саме цього конкретного пакета – пошукайте і встановіть більш відповідну для вашого дистрибутива версію. Після установки необхідно провести невелику налаштування CFS. Використовуйте скрипт cfs-setup, що поставляється разом з цією статтею, або прочитайте документ Метта Блейза <Установка і використання CFS> (Див. розділ <Ресурси>).

Починаємо роботу з CFS.

Наведені інструкції підходять для Red Hat Linux 6.2, 7.1, 7.2, і 7.3. Щоб вони працювали в вашому дистрибутиві, можуть знадобитися деякі зміни.

Переконайтеся, що NFS запущена:

# ps auxww | grep rpc.mountd

Якщо rpc.mountd не присутній в списку процесів, запустіть NFS:

# /etc/rc.d/init.d/nfs start

Потім запустіть демона CFS:

# /etc/rc.d/init.d/cfsd start

Тепер створіть під своїм користувачем директорію з приватною інформацією (наприклад, ) І підключіть її. Два способи:

Найпростіший – запустіть скрипт :

$ decrypt -init
Key: (Наберіть тут ваш ключ, щоб створювати особисту директорію, і запам’ятайте його)
Again: (Наберіть ваш ключ ще раз)
Key: (І в третій раз наберіть ваш ключ, щоб зробити підключення)

Інший спосіб створення особистої директорії – використання стандартних команд CFS (cmkdir і cattach):

$ mkdir ~/cdata
$ cd ~/cdata
$ cmkdir notes
Key: (Наберіть тут ваш ключ, щоб створювати особисту директорію, і запам’ятайте його)
Again: (Наберіть ваш ключ ще раз)
$ cattach notes $LOGNAME-notes
Key: (Наберіть ваш ключ, щоб зробити підключення)

(У прикладі, наведеному вище, вбудована змінна середовища $ LOGNAME містить ваше ім’я входу. Це використовується для того, щоб уникнути конфлікту між різними користувачами – ви можете використовувати більш просту назву.)

В обох випадках може знадобитися 1-2 хвилини для того, щоб демон CFS Створений директорію для тимчасово розшифрованих файлів з ім’ям $ LOGNAME-notes.

Тепер створіть тестовий файл в тимчасовій директорії:

$ pushd /mnt/crypt/$LOGNAME-notes
$ echo > test.txt
$ popd

Завершіть ваш сеанс CFS і подивіться, що з’явилося в директоріях:

$ cdetach $LOGNAME-notes
$ ls /mnt/crypt
$ ls -R ~/cdata

Лістинг ~ / cdata повинен показувати зашифроване ім’я вашого файлу test.txt – наприклад, 03fa2aa5242d5a741866a6605de1ae3b.

Підключіть вашу директорію знову, щоб переконатися, що ваш тестовий файл – все ще там. Знову ж таки, є два способи:

Легкий спосіб – використання decrypt:

$ decrypt
Key: (Наберіть ваш ключ)

Нормальний спосіб – використання cattach:

$ cd ~/cdata
$ cattach notes $LOGNAME-notes
Key: (Наберіть ваш ключ)

Тепер перевірте, що ваш тестовий файл все ще там:

$ cat /mnt/crypt/$LOGNAME-notes/test.txt

Переходимо до пошуку документації для CFS, яка включає в себе man-сторінки для команд cmkdir, cattach, cdetach, cpasswd і ще деяких. Основи CFS добре описані в статтях <Установка і використання CFS> і <Криптографічний файлова система для Unix>. Ви можете прочитати їх за допомогою команди . Одна з найбільш цікавих можливостей, описаних у цих документах – це прискорення роботи CFS за допомогою зміни параметрів і команди mount.

Розглянемо скрипти decrypt і dwp.py. спрощує управління вашими особистими директоріями в CFS. Всю інформацію з цього скрипту можна отримати за допомогою команди .

Dpw.py забезпечує графічний інтерфейс, і для роботи цього скрипта потрібно стандартний модуль Python під назвою Tkinter.

Переваги та недоліки CFS:

Сильні сторони CFS включають в себе різні способи зменшення та запобігання помилок:

– Після зміни тимчасово розшифрованих файлів CFS не вимагає виконання окремої процедури шифрування, і таким чином можна уникнути проблеми шифрування з неправильним ключем.

– CFS підтримує тайм-аут після певного періоду неактивності, тому тимчасово розшифрований файл не може випадково опинитися вільно доступним протягом довгого періоду часу. Не забудьте використовувати опцію тайм-ауту (-I) з командою cattach.

Уразливі місця CFS та деяких інших криптографічних систем:

– Ваш секретний ключ може бути отриманий за допомогою різних клавіатурних шпигунів, коли ви набираєте його для шифрування або розшифровки.

– Більше привілейовані користувачі (зловмисники чи ні) можуть отримати доступ до тимчасово розшифрованим файлів.

– Ваші тимчасово розшифровані файли можуть бути різними способами перехоплені при їх передачі через мережу. OpenSSH може допомогти в якійсь мірі, але краще всього обмежити ваше використання CFS і OpenSSL тільки вашим особистим комп’ютером, а так само зберігати зашифровані і тимчасові дані тільки в локальній файловій системі.

– Зберігайте різні файли в різних приватних директоріях.

У документах Матта Блейза по CFS можна знайти більш детальний пояснення різних питань безпеки CFS.

Висновок.

Не потрібно вводити себе в оману і вважати, що CFS врятує нас від різних шпигунів або від проблем з мережевою безпекою. Але все одно, використання CFS – важливий момент у захисті інформації.

Мобільний комп’ютер з встановленим Linux – ймовірно, ідеальне місце для застосування CFS, якщо застосовані інші практичні заходи обережності (налаштований firewall і відключені необов’язкові мережеві сервіси). Навіть якщо ваш лаптоп вкрадуть, закодовані за допомогою CFS секретні файли залишаться невидимими. Не забувайте робити резервні копії.

Саме бажане поліпшення для майбутніх версій CFS – це підтримка апаратних ключів, нехай навіть запозичена з OpenSSL. Використання апаратних ключів вирішує проблему з розкриттям пароля за допомогою клавіатурних шпигунів при його введенні. Так само бажано було б перенести CFS на платформу Windows, щоб можна було працювати з ним на Мультізагрузочний комп’ютерах.

Ресурси.

ftp://ftp.ssc.com/pub/lj/listings/Web/6381.tar.gz
Всі файли, згадані в цій статті, включаючи вихідні коди cfs-1.4.0.beta2j і файли decrypt, dpw.py, cfs-setup і README.

ftp://speakeasy.rpmfind.net/linux/rhcontrib/SRPMS/cfs-1.4.0.beta2-6.2.src.rpm
Исходники cfs-1.4.0.beta2j.

Метт Блейз, <Установка і використання CFS>, 1997 і <Криптографічний файлова система для Unix>, 1993. Ви можете прочитати ці статті за допомогою команди . Або пошукайте notes.ms серед вихідних файлів C – наприклад, в / usr / src / redhat / BUILD / cfs * /.

Mauriello, Ermelindo. , 1997. Доступно на сайті Linux Journal: www.linuxjournal.com/article.php?sid=2174.

www.openssl.org: Сайт OpenSSL

www.openssh.com: Сайт OpenSSH

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*