Как создать криптоконтейнер linux
Linux Unified Key Setup: как защитить флэшки и внешние диски от взлома
Посмотрим, как с помощью системы на базе спецификации Linux Unified Key Setup (LUKS) и утилиты Cryptsetup можно зашифровать флэш-накопители, внешние жёсткие диски и прочие переносные устройства, хранящие дорогую вашему сердцу информацию.
Чаще всего, пользователи рассуждают достаточно просто: накопители в безопасности, пока их никто не украл. Некоторые идут в размышлениях дальше: если для входа в систему нужно знать пароль — злоумышленнику будет сложно получить доступ к данным на украденном диске. Успокаиваясь на этой мысли, они забывают задать себе важный вопрос: к чему именно мешает получить доступ их пароль на самом деле?
Во многих случаях они всего лишь служат для разблокировки пользовательского сеанса. И тогда злоумышленник может забрать данные с диска, не зная пользовательский пароль: он просто обойдётся без разглядывания заставки на вашем рабочем столе.
Особенно хорошо это понимают специалисты, которые сталкивались с последствиями такой недальновидности и сделали соответствующие выводы. Доступ к необходимой информации можно получить, подключив к машине свой внешний загрузочный диск, и после некоторых успешных манипуляций читать диск пользователя, как открытую книгу.
Если время сильно ограничено, злодеи действительно могут украсть накопитель и взять работу на дом. Особенно легко это им удаётся, если он внешний и подключён через USB. В этой статье речь пойдёт о простом инструменте, позволяющем защитить от несанкционированного доступа данные на внешних накопителях. Даже если они уже попали в руки к злоумышленникам. Речь пойдёт о шифровании дисков в операционных системах семейства Linux.
Linux Unified Key Setup (LUKS) — это система шифрования дисков, которая хранит данные в зашифрованном физическом разделе. Зашифровать их помогает модуль ядра dm-crypt, позволяющий создавать виртуальное блочное устройство, с которым взаимодействует пользователь.
Если пользователь хочет записать данные на виртуальное устройство, они на лету шифруются и записываются на диск. Если же он хочет читать с виртуального устройства, данные, хранящиеся на физическом диске, дешифруются и передаются в открытом виде через виртуальный диск пользователю. Данные остаются под защитой и в том случае, когда диск подключают к другому компьютеру.
Шифрование на этапе инсталляции
Проще всего выполнить полное шифрование диска, выбрав соответствующую опцию в процессе установки операционной системы. Большинство современных Linux-дистрибутивов позволяют это сделать. Здесь не буду расписывать в деталях, так как статья посвящена шифрованию внешних накопителей (далее я подробно буду рассматривать именно его).
Изображение: Seth Kenlon, CC BY-SA 4.0
После установки у вас будет зашифрованный диск. Перед загрузкой системы потребуется ввести парольную фразу. Если захотите извлечь диск или получить к нему доступ из другой операционной системы, нужно выполнить дешифрацию с помощью той же системы LUKS.
Шифрование внешних накопителей
Внешние накопители созданы для того, чтобы их подключали к разным устройствам, быстро обмениваясь информацией, таскали с собой по работе и иногда… теряли. Я находил случайно оставленные диски в USB-портах компьютеров в вестибюле отелей, в принтерах бизнес-центров, диски, потерянные в учебных аудиториях и даже в прачечной. Вряд ли их владельцы хотели бы, чтобы кто-то нашёл эти накопители и добрался до рабочих документов или личных архивов.
LUKS вместе с утилитой Cryptsetup позволяет шифровать внешние накопители почти так же просто, как и при инсталляции ОС.
Как это сделать с помощью LUKS
ВАЖНО: внешний накопитель должен быть либо пустым, либо содержать ненужные вам данные. Так что, если оба этих условия не выполнены, нулевым шагом должен стать бэкап.
1. Подключите и найдите свой внешний диск
Я для примера взял небольшую флэшку. Представим, что путь к ней выглядит как /dev/sdX. Утилита lsblk покажет мне вот такую информацию о блочных устройствах:
Всё правильно, моя флэшка обнаружена. Да, это именно она. Я точно знаю, что её размер 1.8Gb. В списке всего один диск (disk) с таким размером (ему соответствует один раздел part).
Я уделяю такое внимание этой, казалось бы, мелочи, так как дисков может быть много. И в случае ошибки на следующем шаге вы сотрёте с другого диска данные, которые вам всё ещё нужны.
2. Очистите диск
На этом шаге я обнуляю таблицу разделов диска:
Это, конечно, необязательно, но я люблю это состояние чистого листа.
3. Отформатируйте диск под LUKS
Используем для этого утилиту Cryptsetup. Её подкоманда luksFormat запускает первый этап создания зашифрованного раздела LUKS (позже мы создадим там файловую систему).
После этого появится предупреждение об удалении всех данных (которые могли всё ещё оставаться на диске). Кроме того, вас попросят придумать и ввести парольную фразу для диска.
4. Откройте LUKS-том
Процесс создания зашифрованного раздела завершён. Теперь для продолжения работы с диском нужно вводить парольную фразу. Открыть произвольный LUKS-том (то есть, подключить виртуальное блочное устройство) можно с помощью подкоманды open.
Я придумал фразу (а точнее, просто пароль в одно слово) «vaultdrive». У вас будет какой-то свой вариант. Чтобы посмотреть список открытых томов, нужно вывести содержимое каталога /dev/mapper:
Чтобы закрыть LUKS-том vaultdrive нужно написать:
После этого он исчезнет из каталога /dev/mapper.
5. Создайте файловую систему
Создайте файловую систему, чтобы иметь возможность хранить свои данные на диске. Я выбрал XFS, но это далеко не единственный вариант: можно использовать, например, ext4 или JFS. И многие другие.
Финал: монтирование LUKS-тома
Можно делать это через терминал. Например, мы хотим использовать для нашей цели директорию /mnt/hd
А рабочий стол KDE, например, позволяет указать диск для монтирования в специальном разделе с настройками. Но и там я тоже должен вводить пароль или парольную фразу, прежде чем произойдёт монтирование.
Изображение: Seth Kenlon, CC BY-SA 4.0
А какие инструменты для шифрования внешних дисков на Linux используете вы? Какие инструменты используете для аналогичных задач на macOS и Windows?
Недорогие VDS для любых задач. Используем новейшее железо, лучший дата-центр в Москве уровня надёжности TIER IV, бесплатно предоставляем защиту от DDoS-атак на любом тарифном плане, который можно создать самостоятельно в течение минуты.
Зарегистрируйтесь по ссылке выше или кликнув на баннер и получите 10% скидку на первый месяц аренды сервера любой конфигурации!
Шифруемся по полной
Однажды появилась идея спрятать данные подальше от глаз людских, поковырял я различные системы шифрования и нашел в них огромный минус, они афишируют свое наличие (нужно установить) и делают факт наличие криптоконтейнера явным (пустой раздел или файл с криптоконтейнером)
Т.е. в обоих случаях возможен «терморектальный криптоанализ TM » по факту наличия шифрованой инфы на компьютере.
Суть всех телодвижений состоит в том чтобы создать криптоконтейнер на используемом диске в неиспользуемой области используя только встроенные команды стандартного Ububntu LiveCD.
Тестировал его только в песочнице (на отдельном разделе размером 200Мб создавал криптоконтейнер 50Мб со смещением 50Мб) мд5 суммы файлов на физическом разделе (20Мб) и внутри криптоконтейнера (10 Мб) сошлись с оригиналами.
Все делаем под рутом (sudo su).
устройство, место(Смещение), размер заменяем на свои. Размер и смещение от начала диска везде указанно в Мегабайтах байтах.
Создаем
/mnt1
dd if=/dev/urandom of=
Монтируем
modprobe cryptoloop
modprobe aes
/mnt1/file
// вводим пароль
mount /dev/loop2
Размонтируем
umount /dev/loop2
dd if=/dev/loop2 of=устройство bs=1M seek=место count=размер
umount /dev/loop1
Примечание
Если кто знает более простое решение прошу в коментарии. И еще раз предупреждаю, этот метод опасен для ваших данных, используйте его только в крайних случаях. Так же в скрипте могут быть ошибки и неточности, так что не советую использовать его на очень важных данных.
P.S.: Как продолжение данного метода в небольшой контейнер созданный данным способом можно положить полноценную программу для шифрования, например тот же Truecrypt. Или же придумать что-то свое использующее похожий принцип, но уже более удобное и более безопасное.
UPD: Раннее был молод и глуп, все делается намного легче, нежели было представленно изначально, собственно поправил статью.
Шифрование дисков в Linux
Многие предприятия и даже простые пользователи используют шифрование дисков в linux чтобы защитить конфиденциальную информацию, такую как: сведения о клиенте, файлы, контактную информацию и многое другое. В операционной системе Linux поддерживается несколько криптографических методов для защиты разделов, отдельных каталогов или полностью всего жесткого диска. Все данные, в любом из этих способов автоматически зашифровываются и расшифровываются на лету.
Методы шифрования данных в Linux
Шифрование на уровне файловой системы:
Блочное шифрование на уровне устройства:
В этой инструкции мы рассмотрим шифрование жесткого диска на Linux с помощью алгоритма Linux Unified Key Setup-on-disk-format (LUKS).
Как работает LUKS?
Алгоритм LUKS определяют какие действия и в каком порядке будут выполняться во время работы с шифрованными носителями. Для работы с LUKS и модулем dm-crypt используется утилита Cryptsetup. Ее мы и рассмотрим далее.
Утилита Cryptsetup
Утилита Cryptsetup позволят облегчить шифрование раздела Linux с помощью модуля dm-crypt. Давайте сначала ее установим.
В Debian или Ubuntu, для этого используйте такую команду:
suduo apt install cryptsetup
В дистрибутивах, основанных на Red Hat это будет выглядеть так:
sudo yum install cryptsetup-luks
Синтаксис запуска команды такой:
$ cryptsetup опции операция параметры_операции
Рассмотрим основные операции, которые можно сделать с помощью этой утилиты:
Параметры операции зависят от самой операции, обычно это либо физическое устройство, с которым нужно произвести действие, либо виртуальное или и то и другое. Еще не все понятно, но на практике, я думаю, вы со всем разберетесь.
Шифрование диска Linux
Теория пройдена, все инструменты готовы. Теперь рассмотрим шифрование раздела Linux. Перейдем к настройке жесткого диска. Обратите внимание, что это удалит все данные из диска или раздела, который вы собираетесь зашифровать. Так что если там есть важные данные, лучше скопируйте их в более надежное место.
1. Создание раздела
В этом примере мы будем шифровать раздел /dev/sda6, но вместо него вы можете использовать целый жесткий диск или просто один файл, заполненный нулями. Создаем шифрованный раздел:
Эта команда выполнит инициализацию раздела, установит ключ инициализации и пароль. Сначала надо подтвердить создание виртуального шифрованного диска набрав YES, затем нужно указать пароль. Указывайте такой пароль, чтобы его потом не забыть.
Выполните такую команду чтобы открыть только что созданный раздел с помощью модуля dm-crypt в /dev/mapper, для этого понадобится ввести пароль, с которым выполнялось шифрование luks linux:
sudo cryptsetup luksOpen /dev/sdb1 backup2
Теперь вы можете увидеть новое виртуальное устройство /dev/mapper/backup2 созданное с помощью команды luksFormat:
Чтобы посмотреть состояние устройства выполните:
А с помощью следующей команды вы можете сделать резервную копию заголовков LUKS на всякий случай:
cryptsetup luksDump /dev/sdb1
Ну, можно сказать, раздел готов. И что самое интересное, теперь вы можете им пользоваться так же, как и любым другим обычным разделом в каталоге /dev. Его можно форматировать с помощью стандартных утилит, записывать на него данные, изменять или проверять файловую систему и т д. Нельзя только изменить размер. То есть все полностью прозрачно, как и сказано в начале статьи.
2. Форматирование раздела
Давайте для начала отформатируем диск. Для надежности, чтобы стереть все данные, которые были в этом месте раньше, перезапишем наш шифрованный раздел linux нулями. Это уменьшит вероятность взлома шифрования, через увеличение количества случайной информации. Для этого выполните:
dd if=/dev/zero of=/dev/mapper/backup2
Работа утилиты может занять несколько часов, чтобы иметь возможность наблюдать за процессом, используйте pv:
Когда процесс завершится мы можем отформатировать устройство в любую файловую систему. Например, отформатируем в ext4:
sudo mkfs.ext4 /dev/mapper/backup2
3. Монтирование раздела
Теперь можно примонтировать только, что созданную файловую систему:
sudo mount /dev/mapper/backup2 /backup2
4. Отключение раздела
Все работает, но как отключить устройство и защитить данные. Для этого выполните:
sudo umount /backup2
sudo cryptsetup luksClose backup2
5. Повторное монтирование
Чтобы снова получить возможность работать с зашифрованным разделом с помощью LUKS linux необходимо опять его открыть:
sudo cryptsetup luksOpen /dev/sdb1 backup2
Теперь можем монтировать:
sudo mount /dev/mapper/backup2 /backup2
6. Проверить файловую систему luks
Поскольку после открытия раздела с помощью luks linux, этот раздел воспринимается системой, как и все другие, вы можете просто использовать утилиту fsck:
sudo umount /backup2
sudo mount /dev/mapper/backup2 /backu2
7. Изменить парольную фразу luks
Шифрование дисков Linux выполняется с определенной парольной фразой, но вы можете ее изменить. Даже больше, вы можете создать до восьми разных парольных фраз. Для изменения выполнив следующие команды. Сначала сделаем резервную копию заголовков LUKS:
sudo cryptsetup luksDump /dev/sdb1
Затем создадим новый ключ:
sudo cryptsetup luksAddKey /dev/sdb1
sudo cryptsetup luksRemoveKey /dev/sdb1
Сейчас вам придется ввести еще старый пароль.
Выводы
Вот и все теперь вы знаете как зашифровать раздел в Linux, а также понимаете как все это работает. Кроме того, шифрование дисков в Linux по алгоритму LUKS открывает широкие возможности для полного шифрования устанавливаемой системы.
Плюсы:
Минусы:
Создание и использование в «облаке» криптоконтейнера LUKS (dm-crypt)
Содержание
LUKS (Linux Unified Key Setup) — спецификация шифрования диска (или блочного устройства), изначально предложенная для Linux, но сейчас поддерживаемая и в ряде других операционных систем.
Особенности
—- Данные сохраняются по блокам, как в обычном файле/файловой системе. То есть :
—- В отличие от EncFS
—- В отличие от Truecript
Создание контейнера
и проверяем (должен быть вывод «kernel/drivers/md/dm-crypt.ko»)
Размечаем контейнер, как luks-систему с ключом
Будет предупреждение WARNING! Данные на /home/user/.private/container.crt будут перезаписаны без возможности восстановления. Are you sure? (Type uppercase yes), надо набрать YES.
смотрим, появился ли в устройствах, и информация о нем
Форматируем содержимое контейнера, в данном примере в ext4, с установкой метки и отключением «резерва рута»
монтируем и выдаем права пользователю (себе)
и проверяем «занятые» ключами слоты (их должно быть два, если мы задали ключ и пароль, Key Slot 0: ENABLED и Key Slot 1: ENABLED)
Использование контейнера
Для открытия с запросом ввода пароля потребуется вызов окна терминала.
Даем права на выполнение
В завершение, создадим ссылку для помещения в dropbox каталога .private под именем dropboxcript
Увеличение размера (контейнера)
Посмотреть, сколько места использовано (занято файлами) в нашем контейнере, можно так:
Шифрование с помощью Truecrypt
Содержание
Краткое описание
Для шифрования данных можно использовать разные методы. В этой статье будет описан процесс шифрования данных с помощью Truecrypt, который служит для кодирования жестких дисков, разделов жестких дисков, файлов, USB-устройств.
Необходимые файлы
Предисловие
Создание зашифрованных разделов/файлов
Этим самым мы сделали ФС ext3 внутри нашего шифрованного контейнера.
Вот и всё, теперь без знания файла-ключа и пароля никто не сможет прочесть спрятанную информацию.
Проверка работы
Нам покажут примонтированные Truecrypt’ом контейнеры, если такие (примонтированные) имеются.
Эта команда выведет что-то вроде:
Возможные проблемы и их решение
К сожалению, Truecrypt поддерживает в своих контейнерах в полной мере только файловую систему fat. Поэтому иногда не монтируются контейнеры с ФС ext3, например.
При запуске в Ubuntu программы TrueCrypt выдаёт ошибку: TrueCrypt is already running причиной может быть некий файл блокировки располагающийся в домашнем каталоге. Проверяем
Удаляем файл блокировки:
где USERNAME — ваше имя пользователя.
Для этого:
1. Открываем терминал, в нем выполняем:
2. В открывшийся редактор, через буфер обмена, копируем следующий текст:
3. Сохраняем и закрываем редактор: CTRL+X Y
4. Выдаем нашему скрипту права на исполнение:
Все. Теперь открывая том из TrueCrypt вы откроете каталог, куда смонтирован том через Thunar.
Возможно, разработчики это уже исправили.