Шифрование: как защитить данные от доступа со стороны третьих лиц

April 12, 2017

В последнее время участились случаи взлома серверов и несанкционированного доступа злоумышленников к конфиденциальной информации организаций, а также хищения персональных данных пользователей. Если происходит кража корпоративных данных, то мы имеем дело со значительными материальными и репутационными издержками для компаний. При этом использование ОС Linux не является панацеей и не убережет Вас от хищения Вашей информации или несанкционированного доступа к ней.

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

Методы шифрования в Linux

Шифрование на уровне файловой системы

Этот способ шифрования предполагает наличие какой-то системы-прослойки, которая расположена поверх основной файловой системы и которая защищает файлы пользователя без вмешательства в  нижележащие разделы. Рассмотрим, какие же утилиты шифрования этого типа нам предлагает ОС Ubuntu:

  • eCryptfs – это многоуровневая система шифрования Linux. В Ubuntu именно данный способ используется для шифрования домашней папки пользователя. Файл, зашифрованный этим способом, будет расшифрован  в том случае, если у Вас есть ключ.
  • EncFS – этот метод позволяет установить зашифрованную файловую систему. Используется библиотека FUSE и модуль ядра Linux. Эта система опять же создается поверх существующей файловой системы, как и в первом случае, она не является шифрованным блочным устройством. 

Блочное шифрование на уровне устройства  

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

  • Loop-AES – это скоростная и прозрачная файловая система, также с помощью этого метода можно зашифровать и раздел подкачки в Linux. Advanced Encryption Standard (AES) - симметричный алгоритм блочного шифрования.
  • TrueCrypt – это свободное программное обеспечение с открытым исходным кодом для шифрования диска, программа функционирует, как под ОС Windows, так и под Linux. Но, как нам известно, разработчики прекратили поддерживать TrueCrypt, поэтому шифрование с помощью данной программы сейчас применяется нечасто.
  • dm-crypt/LUKS – поддерживает шифрование целых дисков, съемных носителей, разделов, томов RAID, логических томов и файлов. dm-crypt – позволяет создавать криптоконтейнер с помощью device-mapper и CryptoAPI ядра. LUKS (Linux Unified Key Setup) - протокол шифрования блочного устройства. Используя пакет dm-crypt, в папке /dev/mapper мы можем создать виртуальное блочное устройство с прозрачным шифрованием, как для файловой системы, так и для пользователя. Причем вся информация расположена на зашифрованном физическом разделе. Когда мы записываем данные на виртуальное устройство, они моментально шифруются и происходит их запись на диск, при чтении с виртуального устройства выполняется обратная операция.

Мы кратко ознакомили Вас с принципами шифрования в операционных системах семейства Linux, теперь время перейти от теории к практике. Покажем на примере установки и настройки сервера Ubuntu 16.04, каким образом можно зашифровать данные в данной операционной системе.

Шифрование домашнего каталога пользователя при установке системы

Если Вы собираетесь устанавливать Ubuntu сервер впервые и задумались о шифровании домашней папки пользователя, то проще всего сделать это сразу при установке системы. Мы поэтапно покажем на примерах, как произвести установку и настройку быстро и правильно. Все примеры и скриншоты в данной статье будут приведены на примере нашего хостинга. Если же вы пользуетесь услугами других хостинговых компаний, то интерфейс Вашей панели может отличаться, однако, алгоритм работы будет таким же.

Для начала зайдем в панель управления нашим виртуальным сервером и проделаем небольшие подготовительные работы:

1.png (33 KB)

На вкладке Settings изменим порядок загрузки Boot Order на "(1) CDROM (2) Hard Disk", чтобы сервер в первую очередь пытался загрузиться с подключенного ISO-образа:

2.png (7 KB)Выбираем нужный нам образ на вкладке CDRom (в нашем случае - Ubuntu 16.04 amd64), нажимаем Mount.

3.png (4 KB)

Заходим во вкладку Network, нажимаем на ссылку с IP-адресом вашего сервера, нам откроется окно с параметрами нашей сети, эта информация крайне важна для дальнейшей установки:

4.png (7 KB)

Затем нажимаем на кнопку Reboot и ждем, когда виртуальный сервер перезагрузится.

Теперь необходимо подключиться к серверу по VNC и приступить к установке дистрибутива Ubuntu Server 16.04. Нажмите на кнопку VNC на главном экране панели управления, затем HTML5 VNC Client SSL. В новом окне браузера откроется VNC-консоль. Вы должны увидеть начальный экран установочного диска Ubuntu:

o2B5F.png (10 KB)

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

7.png (8 KB)

Далее, после указания имени пользователя и пароля для нового пользователя системы, программа установки предложит Вам зашифровать домашний каталог. Система будет монтировать его каждый раз при входе в систему и размонтировать при выходе, это будет совершенно незаметно для пользователя, но в тоже время данные будут зашифрованы. При таком варианте установки, swap-раздел также будет зашифрован автоматически. Обязательно соглашаемся, выбираем ответ Yes:

11.png (8 KB)

Далее продолжаем инсталляцию в штатном режиме, производим разметку дисков и завершаем установку.

После окончания установки важно не забыть вернуть в исходное положение настройки в панели управления сервером:

  • на вкладке Settings опять поменяем порядок загрузки Boot Order, вернув значение "(1) Hard Disk (2) CDROM";
  • на вкладке CDRom выполним команду Unmount;
  • перезагрузим сервер.

При первом подключении к серверу система потребует ввести логин и пароль, которые мы задали при установке. 

Вот и все, Ваша домашняя папка зашифрована, чтобы посмотреть ключ восстановления данных, выполните в терминале следующую команду:

$ ecryptfs-unwrap-passphrase

Этот ключ необходимо сохранить в надежном месте, он нужен для восстановления данных вручную, если "что-то пойдет не так".

Шифрование домашнего каталога после установки Ubuntu

Рассмотрим случай, когда операционная система уже установлена, но возникла необходимость зашифровать свой домашний каталог. Неужели в этом случае, нужно переустанавливать систему заново? К счатью, в этом нет необходимости. В Ubuntu есть возможность зашифровать домашний каталог пользователя методом eCryptfs на уже установленной системе, всего лишь при помощи нескольких команд в консоли. Для начала обновим индекс репозиториев нашей системы:

$ sudo apt-get update

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

Теперь установим утилиты для шифрования:

$ sudo apt-get install ecryptfs-utils cryptsetup

Под своей учетной записью Вы не сможете зашифровать свою же домашнюю директорию, поэтому необходимо создать нового пользователя с возможностью выполнения команд sudo. Вводим в консоли команду, чтобы создать новую учетную запись пользователя “exampleuser”:

$ sudo adduser exampleuser

Указываем информацию о новом пользователе и задаем ему пароль. Чтобы новый пользователь мог воспользоваться sudo, внесем его в одноименную группу:

$ sudo usermod –a –G sudo exampleuser

Теперь не перезагружая систему, выйдем из учетной записи текущего пользователя с помощью команды logout и войдем в учетную запись нового пользователя exampleuser, сейчас все наши действия мы будем выполнять под этой учетной записью. Для шифрования домашней папки нашего основного пользователя нужно задать следующую команду:

$ sudo ecryptfs-migrate-home -u username

где username - имя пользователя, домашний каталог которого вы хотите зашифровать.

Вводим пароль указанного пользователя и готово, домашняя папка будет зашифрована.

Для того, чтобы зашифровать swap-раздел, необходимо выполнить следующую команду:

$ sudo ecryptfs-setup-swap

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

$ ecryptfs-unwrap-passphrase

На этом все, шифрование домашней директории завершено.

Шифрование всего жесткого диска

В предыдущих разделах мы рассмотрели методы шифрования домашней папки пользователя в Ubuntu с использованием утилиты ecryptfs и применили шифрование на уровне файловой системы. Этот метод, конечно же, имеет свои преимущества, но иногда этого бывает недостаточно. Дело в том, что корневой раздел все-таки не шифруется, и квалифицированный злоумышленник может получить список файлов из домашней папки пользователя, даже учитывая, что сам домашний каталог зашифрован. Для более надежной защиты можно применить методы блочного шифрования, т.е. зашифровать весь диск на более низком уровне. Далее мы покажем, как создать один большой зашифрованный раздел, поверх которого мы смонтируем обычные разделы /home, /swap (они образуют виртуальную группу LVM), оставив только один маленький незашифрованный раздел /boot. Пользователь должен будет вводить пароль при каждой загрузке сервера. Начиная с версии Ubuntu 12.10 данная опция присутсвует в стандартном инсталляторе операционной системы.

И так, вновь вернемся к пошаговой инсталляции операционной системы с установочного образа, как было описано в первом разделе. Домашний каталог в этом случае можно не шифровать, ведь у Вас будет зашифрован уже весь диск. В момент, когда инсталлятор предложит выбрать вариант разметки диска, необходимо выбрать опцию «Авто – использовать весь диск с шифрованным LVM» (“Guided – use entire disk and set up encrypted LVM”):

28.png (12 KB)

Далее выберем диск для разметки и выполним разметку. Затем идет очень важный этап, на котором нужно выбрать ключевую фразу для шифрования. Рекомендуем выбирать фразу из 20 знаков и более c использыванием цифр, букв и специальных символов.

29.png (17 KB) 

Далее система сообщает, какие разделы будут отформатированы, соглашаемся с внесением изменений и заканчиваем установку как обычно. На этом шифрование всего диска завершено.

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

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

Подпишитесь на нашу рассылку,
чтобы получать последние обновления нашего блога!