id: Гость   вход   регистрация
текущее время 17:43 29/03/2024
Автор темы: Гость, тема открыта 18/07/2005 22:00 Печать
https://www.pgpru.com/Форум/UnixLike/ЧемШифроватьСвопВLinuxe
создать
просмотр
ссылки

Чем шифровать своп в Linuxe?


Тут у вас шел разговор о защите файла подкачки Windows. А чем защищать своп-раздел Линукса? Может кто знает?


 
Комментарии
— unknown (19/07/2005 20:02)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664
Тут у вас шел разговор о защите файла подкачки Windows. А чем защищать своп-раздел Линукса? Может кто знает?

Если у вас современный дистрибутив, то все уже есть в нем самом.
Нужно только пересобрать ядро, чтобы включить поддержку crypto-API и устройства cryptoloop.
Можете загружать их модулями, можете использовать монолитом (так надежнее и памяти они много
не занимают).
Проверьте, что утилита losetup из пакета mount также должна поддерживать шифрование.

(уже несколько лет наверное все поддерживается).

НО: учтите, что некоторые новые шифры из cryptoAPI – Anubis, Khazad – losetup возможно поддерживать не будет. Это будет заметно по сообщениям об ошибках при шифровании. А стандартные: AES, RC5, RC6, Blowfish, Twofish, Serpent, Mars, CAST и т.д. наверное все есть. Одно время там даже был GOST, но его убрали.

Затем создайте разделы для свопа и /tmp (его тоже будем шифровать) и заполните
их случайными числами. dd if=/dev/urandom bs=1k of=/dev/hda666.
Это может занять много времени, но один раз можно потерпеть. Можете придумать более сложную команду с таймером обратного отсчета.

Далее нужно написать скрипт (или найти в сети готовый), который будет
цеплять своп раздел на loop-device с одноразовым ключем, взятым из /dev/urandom

вот строка из моего скрипта:



Обратите внимание, что p0 – это дескриптор ввода из пайпа для losetup.

и поместить симлинк на этот скрипт в загрузку /etc/rc2.d – например если вы грузитесь на второй консольный уровень, с которого затем будете запускать иксы.

Очень важно, чтобы скрипт, запускался ПОСЛЕ запуска /etc/init.d/urandom иначе ключ шифрования будет предсказуемым (сильно детерминированным)! Также надо закомментировать строки в скриптах (например mountall), которые могут повторно примонтировать своп, как
незашифрованный. Чтобы в стандартных скриптах загрузки ничего не отключать, я в своем скрипте сделал
контрольное отмонтирование свопа и повторное примонтирование уже в зашифрованном виде, через loop-device.

Также полезно шифровать одноразовым ключем каталог /tmp – для этого он должен быть на отдельном разделе также как и своп. В /tmp попадает много временных данных из текстовых редакторов, при просмотре архивов, работе некоторых браузеров (Lynx). Методика шифрования таже самая.




Когда у меня было время, я в скрипте сделал и случайный выбор шифра из списка, взаимодействие с /etc/fstab и проверку на изменение таблицы разделов на диске по md5 (чтобы ничего не испортить).


После того, как вы правильно написали свой скрипт шифрования, проверили его как-нибудь "вхолостую"
(у меня кстати ни один из готовых, скачанных из сети скриптов не заработал, поэтому написал свой, сверяясь с советами из конференций linux-crypto и sci-crypt). Нужно проверить, что оба loop-девайса смонтированы как-надо. Кроме-того, обязательно сделайте проверку такого типа:



и сравните с

В одном случае вы увидете свой своп файл зашифрованным – случайные символы.
Во втором будут символы характерные для своп файла.
Повторите также эту проверку и для файловой системы /tmp раздела.


В последних версиях ядра Линукс 2.6 наметился переход от losetup к dmcrypt, там немного другой синтаксис комманд, кажется уже есть готовые утилиты swapon, которые могут шифровать своп через cryptoAPI.

Альтернативное решение – пакет loop-aes – набор патчей к утилитам и модулей к ядру, независимый от crypto-API.
Там шифрование своп файла есть в готовом виде (а также взаимодействие с gpg и еще много чего интересного).


Самый экстремальный вариант – полное шифрование винчестера вместе со всей операционной системой.
Загружать такой компьютер придется со специального компакт-диска, брелка-флэшки, дискетки или любого другого носителя.

Возможности безграничны. Было бы время и желание во всем этом разбираться.
— Гость (30/07/2005 22:23)   <#>
БОЛЬШОЕ СПАСИБО!!!
— unknown (23/09/2005 23:21)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664
Для пользователей dm-crypt и loop-aes все действительно проще, все задается прямо в таблице монтирования.
То что я привел, это устаревающий вариант для cryptoloop.
— paranoid ant (14/12/2005 18:11)   <#>
Если в дистрибутиве используются util-linux 2.13 c патчем http://people.redhat.com/kzak/util-linux-cryptsetup/ то достаточно в /etc/fstab написать

если в вашем дистрибутиве util-linux другой версии, проблема решается созданием init скрипт примерно такого содержания

— jay (23/07/2009 19:22)   <#>
Скажите, пожалуйста, есть ли смысл шифровать /tmp и /var/tmp, если они монтируются как тмпфс в оперативку? Своп отсутствует вообще.
спасибо.
— SATtva (23/07/2009 19:38)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118
Смысла нет.
— Вий (11/07/2010 21:07, исправлен 11/07/2010 21:08)   профиль/связь   <#>
комментариев: 510   документов: 110   редакций: 75

Файловая система создана таким образом, что каталог tmp находится в корне файловой системы, в одном разделе с системными папками. Для работы с некоторыми сайтами, условно скажем критичными, при работе с которыми необходимо иметь повышенную безопасность, используется отдельная учетная запись, файлы которой зашифрованы средствами файловой системы. Хотелось бы сделать так, что бы при работе с ними временные файлы сохранялись куда-то отдельно и зашифровывались бы при выходе из учетной записи. Как это можно осуществить?

— Гость (11/07/2010 21:57)   <#>
Создать криптоФС на файле, затем поставить симлинк /tmp -> file
Может есть способы с ecryptFS или её аналогами, которые шифруют содержимое каталога на лету.
Ваша оценка документа [показать результаты]
-3-2-1 0+1+2+3