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

Архитектура

шифрованное хранилище данных owncloudВ рассматриваемом варианте за основу берем систему облачного хранения данных ownCloud, которая была установлена в OS Debian Linux v7.1 и развернута в виде виртуальной машины под гипервизором Proxmox Virtual Environment v3.1.

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

Гипервизор Proxmox Virtual Environment

Гипервизор Proxmox Virtual Environment представляет собой специализированный дистрибутив OS Debian Linux v7.1, удаленный доступ к системе возможен по протоколу SSH на стандартном порту TCP 22. Однако основным рабочим инструментом для управления виртуальными машинами является Web-интерфейс.

Раз в сутки происходит генерирование горячей копии (snapshot) виртуальной машины ownCloud с экспортом ее на серверы NFS, используя стандартные возможности Proxmox VE.

шифрованное хранилище данных owncloud - установка

На скриншоте виртуальная машина в Web-интерфейсе имеет идентификатор 100 (ownCloud). Доступ к ее консоли возможен через пункт контекстного меню «Console».

Например, вот так выглядит ввод пароля для шифрованного диска во время загрузки:
шифрованное хранилище данных owncloud - настройка

Облачное хранилище данных ownCloud

О том, как установить ownCloud, можно узнать из хорошей статьи  – там уже перечислены основные возможности и некоторые плюсы этой платформы. Тем не менее, мнения в нашей команде разделились, и наши админы предлагают более простой способ установки ownCloud для дистрибутива ОС Linux Debian и многих других, нежели предложенный автором статьи. Доступны готовые репозитории: http://software.opensuse.org/download/package?project=isv:ownCloud:community&package=owncloud В этом случае все необходимые зависимости ставятся автоматически, а от вас будет лишь требоваться скорректировать настройки под свою специфику.

Итак, мы развернули ownCloud на базе ОС Debian Linux v7.1 внутри виртуального контейнера. Удаленный доступ к хранилищу возможен по протоколу SSH на стандартном порту TCP 22. Основная работа с ownCloud осуществляется через Web-интерфейс, возможно также подключение через протокол WebDAV и использование клиентов синхронизации (Sync):

шифрованное хранилище данных owncloud

Кстати, поскольку доступ к ownCloud осуществляется через HTTPS логи доступа и ошибок ведутся сервером Apache в файлах «/var/log/apache2/access.log» и «/var/log/apache2/error.log» соответственно. Также ownCloud имеет свой собственный лог «/var/www/owncloud/data/owncloud.log«.

Одноразовые пароли OTP

Для усиления безопасности доступ к ownCloud через Web-интерфейс возможен с использованием двухфакторной авторизации: традиционный пароль и одноразовый пароль OTP. Функционал OTP реализуется с помощью внешнего дополнения One Time Password Backend. Встроенной поддержки OTP у ownCloud нет.

Настройка основных параметров OTP осуществляется в разделе «Admin» под административной учетной записью:
шифрованное хранилище данных owncloud

На скриншотах – настройки двухфакторной авторизации и одноразовых паролей подобранные для обеспечения совместимости с аппаратными генераторами FEITIAN OTP c200.
Алгоритм: Time-based One Time Password (TOTP)
Количество цифр в пароле: 6
Время жизни пароля: 60 секунд
шифрованное хранилище данных owncloud - быстрое развертывание

хранилище данных owncloud

Чтобы двухфакторная авторизация вступила в действие, необходимо назначить пользователю Token Seed. До этого момента он может заходить в ownCloud, используя только лишь обычный пароль. Поэтому сразу после создания пользователя необходимо перейти в раздел Personal и ввести Token Seed в одноименное поле.

безопасное хранилище данных

owncloud

Генерировать Token Seed, используя встроенные возможности модуля OTP ownCloud, не рекомендуется, поскольку в алгоритме его работы наблюдаются проблемы. Формат ввода: Base32 (%32) UPPERCASE. Конвертировать Token Seed в разные форматы можно с помощью утилиты www.darkfader.net/toolbox/convert

Конкретно для этого проекта использовался Token Seed, вшитый в аппаратный Token FEITIAN OTP c200. В общем случае можно использовать любой генератор паролей, а затем приводить его к нужному формату, используя приведенный в тексте конвертер.

Примером такого приложения для ОС Android может служить Google Authenticator: https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2

Проинициализированный Token Seed выглядит следующим образом:
хранилище данных owncloud

Для отключения OTP достаточно удалить Token Seed из настроек. Если это невозможно (например, если генератор OTP утерян, поэтому доступа к личному кабинету пользователя нет), то отключение OTP возможно только путем прямой модификации данных в СУДБ MySQL. Для этого необходимо запустить из командной строки клиент MySQL:
# mysql -uowncloud –p
Enter password:

Затем выполнить запрос, аналогичный следующему, изменив значение поля «user» на необходимое:
mysql> delete from owncloud.oc_user_otp where `user` = 'test';

Из-за архитектурных ограничений OTP работает только при доступе к ownCloud через Web-интерфейс, но не через WebDAV. Этот недостаток компенсируется тем, что список IP-адресов, которые могут использовать WebDAV, строго ограничен. Отвечают за это директивы «Allow from» в файле настроек сервера Apache «/etc/apache2/conf.d/owncloud.conf». Обратите внимание, что директивы там указываются дважды.

хранилище данных owncloud

IP-адреса перечисляются через пробел. Необходимо удостовериться в том, что в списке обязательно присутствуют IP обратной петли 127.0.0.1, а также публичный IP сервера самого ownCloud. В противном случае в работе WebDAV возможны сбои. После изменения настроек Apache его необходимо перезапустить:
service apache2 restart

Защита от брутфорса

В свежих версиях ownCloud ведется лог неудачных попыток авторизации: «/var/log/owncloud/auth.log«. Содержимое «/var/log/owncloud/auth.log» контролирует сервис Fail2ban. Если им в течение короткого времени фиксируется 5 или более неудачных попыток авторизации с одного IP-адреса, то этот адрес блокируется фильтром пакетов IPTables на 10 минут. Если после автоматической разблокировки попытки продолжаются, то IP блокируется повторно навсегда. Следить за работой Fail2ban можно в логе «/var/log/fail2ban.log«.

Список IP-адресов, которые не должны блокироваться ни при каких обстоятельствах, задается параметром ignoreip в файле настроек «/etc/fail2ban/jail.conf«. IP перечисляются через пробел.

шифрованное хранилище данных owncloud

После изменения настроек Fail2ban его необходимо перезапустить:
service fail2ban restart

В случае необходимости вручную разблокировать какой-либо IP, необходимо выполнить на сервере из CLI команду, аналогичную следующей, скорректировав в ней адрес:
iptables -D fail2ban-Owncloud -s 187.22.109.14/32 -j DROP

P.S.
Live-версию ownCloud можно посмотреть на официальном сайте http://demo.owncloud.org