Чем шифровать своп в Linuxe?
Тут у вас шел разговор о защите файла подкачки Windows. А чем защищать своп-раздел Линукса? Может кто знает?
![]() |
![]() |
![]() |
![]() |
|
![]() |
![]() |
||||||||||||||||||||
|
||||||||||||||||||||||||||
Нормы пользования. Некоторые права на материалы сайта защищены по условиям лицензии CreativeCommons. Движок
openSpace 0.8.25a и дизайн сайта © 2006-2007 Vlad "SATtva" Miller.
|
||||||||||||||||||||||||||
комментариев: 9796 документов: 488 редакций: 5664
Если у вас современный дистрибутив, то все уже есть в нем самом.
Нужно только пересобрать ядро, чтобы включить поддержку 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 и еще много чего интересного).
Самый экстремальный вариант – полное шифрование винчестера вместе со всей операционной системой.
Загружать такой компьютер придется со специального компакт-диска, брелка-флэшки, дискетки или любого другого носителя.
Возможности безграничны. Было бы время и желание во всем этом разбираться.
комментариев: 9796 документов: 488 редакций: 5664
То что я привел, это устаревающий вариант для cryptoloop.
если в вашем дистрибутиве util-linux другой версии, проблема решается созданием init скрипт примерно такого содержания
спасибо.
комментариев: 11558 документов: 1036 редакций: 4118
комментариев: 510 документов: 110 редакций: 75
Файловая система создана таким образом, что каталог tmp находится в корне файловой системы, в одном разделе с системными папками. Для работы с некоторыми сайтами, условно скажем критичными, при работе с которыми необходимо иметь повышенную безопасность, используется отдельная учетная запись, файлы которой зашифрованы средствами файловой системы. Хотелось бы сделать так, что бы при работе с ними временные файлы сохранялись куда-то отдельно и зашифровывались бы при выходе из учетной записи. Как это можно осуществить?
Может есть способы с ecryptFS или её аналогами, которые шифруют содержимое каталога на лету.