Шифрование данных на виртуальном сервере

Шифрование данных на виртуальном сервере

Немного здоровой паранойи еще никому не вредило. Помимо мессенджеров с оконечным шифрованием, шифрованием файлов на смартфонах «из коробки» и обязательным использованием SSL на сайтах, не лишним будет защитить данные на виртуальных серверах. Тем более, современные технологии сделали это простым и доступным любому пользователю. Крупные провайдеры, предоставляющие услуги хостинга VPS, предлагают шифровать данные пользователей используя стандартные средства операционных систем. Например, Microsoft, в своем облаке Azure, использует для серверов на Windows — BitLocker, а для виртуальных машин на Linux — DM-Crypt. Эти средства позволяют сохранить приватность ваших данных, даже если злоумышленник получит доступ к ЦОДу, где находятся сервер или вашему локальному компьютеру. Можно доверять свои данные хостерам предоставляющим VPS, можно не доверять, но никто не запретит вам использовать те же самые способы у любого VPS-провайдера, настроенные самостоятельно. В этой статье я расскажу вам как это сделать.

Шифрование данных в системе Windows с помощью BitLocker

Наиболее простой, но весьма надежный способ шифрования для Windows — встроенный в систему сервис BitLocker. Его настройка простая и быстрая, потому проще всего воспользоваться графическим интерфейсом. Разберем этот процесс на примере Windows Server 2016, расположенном у провайдера RuVDS. Я выберу расположение сервера в Москве, для уменьшения пинга:

Шифрование данных на виртуальном сервере

А для большей скорости работы BitLocker — диск SSD минимального размера.

Шифрование данных на виртуальном сервере

Подключаться будем через стандартный RDP, который следует немного настроить перед использованием. Для этого надо нажать внизу окна переключатель «Показать параметры», во вкладке «Локальные ресурсы» отметить галочкой «Буфер обмена» и в диалоге вызываемом кнопкой «Подробнее», выделить «Диски».

Шифрование данных на виртуальном сервере

Это позволит копировать файлы на ваш компьютер или вставлять их через обычный буфер обмена. RDP честно предупредит, что: «Это удаленное подключение может нанести вред…», по причине расшаривания локальных ресурсов. Примем к сведению и подключимся к серверу.После логина мы увидим привычный рабочий стол и панель администрирования. Подключим сервис BitLocker прямо из нее, выбрав опцию «Add roles and features». На первом экране ставим галочку «Skip…», чтобы не читать предупреждение каждый раз при изменении конфигурации, затем нажимаем «Next» и выбираем «Role-based or feature-based installation», потом выбираем наш локальный сервер и в разделе «Features», отмечаем «BitLocker Drive Encryption».

Шифрование данных на виртуальном сервере

Подтверждаем «Add Features», нажимаем «Next», отмечаем опцию «Restart the destination server automatically if required» и Нажимаем «Install».

Шифрование данных на виртуальном сервере

После установки сервиса система автоматически перезагрузится, а при следующем подключении выведется окно, что инсталляция прошла успешно.Поскольку у нас виртуальный сервер, то у него нет криптопроцессора «Trusted Platform Module», а значит нам потребуется настроить политики доступа, чтобы BitLocker запрашивал пароль при загрузке системы. Если этого не сделать, при попытке включить шифрование, система выдаст сообщение об ошибке:

Шифрование данных на виртуальном сервере

Заходим в поиск, вставляем туда имя программы: «gpedit.msc» и запускаем ее. Нам потребуется найти опцию по следующему пути: Local Computer Policy → Computer Configuration → Administrative Templates → Windows Components → BitLocker Drive Encryption → Operating System Drives

Шифрование данных на виртуальном сервере

Надо активировать политику выбрав «Enabled», отметить в опциях чекбокс «Allow BitLocker without a compatible TPM (requires a password or a startup key on a USB flash drive)» и нажать «OK». Осталось выбрать в Explorer диски, которые требуется зашифровать.

Шифрование данных на виртуальном сервере

Мастер настройки проанализирует систему и попросит продолжить («Next»). В следующем диалоговом окне он предупредит, что диск будет использоваться BitLocker и порекомендует сначала забекапить критичные данные. Хорошая идея, но предположим, что вы это уже сделали, нажимаем «Next». Система подготовит диск для шифрования, но в процессе выдаст предупреждение, что некуда перенести данные Windows Recovery и предложит включить и настроить эту систему после шифрования. Установка почти закончена и мастер потребует перезагрузить систему.

Шифрование данных на виртуальном сервере

После перезагрузки сервис будет установлен и система предложит зашифровать диск

Шифрование данных на виртуальном сервере

На следующем диалоговом окне мастер попросит вставить флешку в USB или ввести пароль. Поскольку сервер у нас виртуальный — выбираем второе. В следующем окне придумываем, вводим и подтверждаем пароль, система будет ругаться, если он будет слишком простым или коротким, придется проявить фантазию. Дальше нам предложат выбрать способ, которым будет сохранен ключ восстановления доступа для того случая, если мы забудем пароль для BitLocker.

Шифрование данных на виртуальном сервере

USB нам вставлять некуда, можно выбрать локальный диск вашего компьютера, доступ к которому был открыт в опциях RDP. Файл будет называться примерно так: «BitLocker Recovery Key BE32F397-9C84-4765-9840-50BF3893CAB6.TXT». А внутри будет короткая инструкция и ключ восстановления: ПосмотретьСохранив файл, переходим к выбору типа шифрования. Поскольку у нас защищается локальный жесткий диск, то выбираем первую опцию: «New encryption mode». Следующий экран требует подтверждения, что мы действительно хотим зашифровать диск, нажимаем «Continue», получаем сообщение, что процесс начнется после перезагрузки и предложение ребутнуть компьютер.Все — системный диск нашего сервера зашифрован.Пробуем к нему подключиться и… Ничего не получается!Все логично. BitLocker будет требовать ввести пароль при загрузке, а происходит это еще до того, как система будет готова к удаленной работе. Через RDP это сделать невозможно.Заходим на страницу RuVDS, где содержится информация о запущенных серверах и видим интересную картину:

Шифрование данных на виртуальном сервере

На скриншоте с виртуального монитора что-то очень похожее на приглашение системы. Так и есть, нам придется воспользоваться консолью доступа аварийного режима, для того, чтобы ввести пароль перед загрузкой системы:

Шифрование данных на виртуальном сервере

Вводим пароль и видим продолжение загрузки. Аварийную консоль можно закрывать и подключаться через RDP. К слову, такая операция нам потребуется при каждой перезагрузке виртуального сервера. Не очень удобно, но такова цена безопасности.Теперь, когда мы открываем меню диска, то видим в нем новые пункты: «Change BitLocker password» и «Manage BitLocker». Открыв второй пункт мы может посмотреть статус диска и управление его шифрованием. Поскольку я специально выбрал небольшой SSD для демонстрации, то шифрование заняло меньше пяти минут. Когда оно закончилось, то интерфейс стал выглядеть так:

Шифрование данных на виртуальном сервере

Установка Bitlocker и шифрование диска на виртуальном сервере — завершены. Теперь, если кто-то получит физический доступ вашему компьютеру, то он не сможет подключиться к серверу, даже если зайдет на сайт провайдера под вашим логином. А если придет в ЦОД и подключится изнутри к вашему VPS, то все равно не сможет получить данные — они будут зашифрованы.Главное — не хранить на виду файл, в котором содержится ключ для восстановления доступа!Кстати, как же пользоваться этим ключом, вдруг вы забыли пароль для BitLocker? Очень просто, надо перегрузить сервер и зайти в аварийную консоль, но теперь выбрать не вход в систему, а восстановление. Нажимаем ESC и получаем приглашение ввести ключ. Одна тонкость, вводить надо только цифры, а минусы-разделители будут вставляться автоматически. При неправильном вводе будет сообщение об ошибке и просьба снова ввести ключ. Если он введен правильно, что продолжится загрузка системы. Настройка BitLocker на удаленном сервере — завершена.

Шифрование данных в системе Linux с помощью dm-crypt

Для Linux есть множество разных решений по шифрованию разделов, мы воспользуемсяdm-crypt, простой и надежной системой, которую использует Microsoft в своем облаке Azure. dm-crypt — стандартная система шифрования дисков на уровне ядра Linux, основанная на: device mapper, подсистеме создающей и обеспечивающей прозрачную работу с виртуальными устройствами; и crypto API — подсистеме шифрования, которая используется для работы VPN по протоколу IPsec и ряде других функций. У dm-crypt есть два способа работы с криптоконтейнером, plain — при котором данные не содержат видимого формата и выглядят как случайный набор байт, и LUKS — который предоставляет больше возможностей, например автоматическое определение криптоконтейнеров системой, но при этом файл будет содержать метаданные, по которым можно определить сам факт шифрования. Мы будем пользоваться вторым способом, через протокол LUKS.Сервер выбирается аналогично первому разделу, за исключением операционной системы. Пропустим шаги по предварительной настройке, их можно найти в руководстве RuVDSи перейдем к установке системы шифрования. Обновим список пакетов и установим cryptsetup — интерфейс командной строки dm-crypt (для упрощения, все команды будут вводиться из под пользователя root):apt update apt install cryptsetup Для хранения зашифрованных данных надо сначала создать специальный файл, который потом будет выступать в качестве устройства. Он обязательно должен быть неразрывным и для этого есть несколько способов, разной степени безопасности.Один из них — с помощью команды fallocate.Создадим файл размером 512 мегабайт, с именем test-crypt в домашней директории пользователя root:fallocate -l 512M /root/test-crypt Это способ самый простой и быстрый, но наименее безопасный, потому что команда просто выделяет место на диске, не перезаписывая данные, которые там содержались.Более безопасно можно создать файл с помощью утилиты dd (dataset definition), она позволяет не только создать файл, но и записать в него информацию, которая затрет предыдущее содержимое из выделенной области. Например нулями из виртуального устройства /dev/zero:dd if=/dev/zero of=/root/test-crypt bs=1M count=512 Наиболее параноидальный способ, это заполнить файл из /dev/urandom. Но он и наиболее медленный:dd if=/dev/urandom of=/root/test-crypt bs=1M count=512 После создания файла, надо преобразовать его в раздел LUKS:cryptsetup -y luksFormat /root/test-crypt ОтветьтеYESна запрос программы, а затем задайте пароль. В отличии от BitLocker здесь не будет никаких способов восстановления, секретных ключей и прочих удобств, если забыл пароль — данные будут безвозвратно потеряны! Очень ответственно подойдите к этому вопросу. Потому обязательно надо использовать опцию-y, которая запрашивает подтверждение пароля. Проверим, что у нас получилось, с помощью утилитыfile:file /root/test-crypt Вывод должен показать что-то вроде:test-crypt: LUKS encrypted file, ver 2 [, , sha256] UUID: 820a6557-ee7b-4f67-9f53-eb11586cc5dc Это значит, что криптоконтейнер создан и готов к использованию, осталось его развернуть в устройство crypt-volume: cryptsetup luksOpen /root/test-crypt crypt-volume Создать там файловую систему:mkfs.ext4 -j /dev/mapper/crypt-volume И выбрать точку монтирования: mkdir /mnt/crypt-files Зашифрованное устройство готово к использованию, осталось только смонтировать его и пользоваться как обычным диском, все операции по шифрованию и дешифрованию происходят «на лету», прозрачно для пользователя и системы.mount /dev/mapper/crypt-volume /mnt/crypt-files Проверим наше устройство. Скопируем в него какие-нибудь данные, например содержимое директории /etc/ssh и посмотрим, что скажет утилита dhcp -r /etc/ssh/ /mnt/crypt-files/ df -h Filesystem Size Used Avail Use% Mounted on udev 928M 0 928M 0% /dev tmpfs 191M 648K 191M 1% /run /dev/sda1 20G 2.7G 16G 15% / tmpfs 955M 0 955M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 955M 0 955M 0% /sys/fs/cgroup tmpfs 191M 0 191M 0% /run/user/1000 /dev/mapper/crypt-volume 465M 1.3M 429M 2% /mnt/crypt-files Как мы видим, устройство смонтировано, имеет определенный нами объем и заполнено примерно на 1% файлами из директории ssh.Для того, чтобы закончить работу с криптоконтейнером, надо его отмонтировать, а затем отключить:cd / umount /mnt/crypt-files cryptsetup luksClose crypt-volume Работа с устройством закончена и у нас есть самый обычный файл, зашифрованный с помощью нашего пароля, данные которые недоступны постороннему, даже если он получит физический доступ к серверу. Чтобы снова воспользоваться криптоконтейнером, надо будет его опять инициализировать и смонтировать:cryptsetup luksOpen /root/test-crypt crypt-volume mount /dev/mapper/crypt-volume /mnt/crypt-files На этом обзор систем шифрования данных, которые можно применять на виртуальных серверах — закончен.Всем хорошего коннекта!

11
Начать дискуссию