- Вопрос или проблема
- Ответ или решение
- Как настроить зашифрованный каталог для монтирования только при доступе через Samba
- Шаг 1: Установка и настройка EncFS
- Шаг 2: Настройка Samba
- Шаг 3: Правильные разрешения
- Шаг 4: Настройка логон-скрипта (опционально)
- Шаг 5: Создание ловушки для неавторизованных пользователей (бонус)
- Заключение
Вопрос или проблема
(Это не связано с ограничением доступа клиента, для чего достаточно прав ext3)
Я хотел бы зашифровать данные на своем NAS-диске (Buffalo LinkStation Pro с включенным доступом по SSH, если это важно) удобным для пользователя способом. В настоящее время контейнер TrueCrypt необходимо монтировать вручную через SSH, а затем снова размонтировать (если только вы не решите мой вопрос с таймаутом). Используя SSH-ключ без пароля (но зашифрованный EFS), это сводится к двум ярлыкам на рабочем столе PuTTY и вводу пароля TrueCrypt (до дальнейшего упрощения) для монтирования.
Однако идеальным решением было бы полное прозрачное решение. Сначала я думал попробовать каким-то образом позволить расшариванию использовать EFS-шифрование, но это, вероятно, потребует больше работы, и EFS для нескольких пользователей без сервера Active Directory кажется проблематичным.
Однако теперь моя идея заключается в автоматическом монтировании, например, каталога, зашифрованного с помощью EncFS, которое будет автоматически вызываться при доступе Samba от авторизованных пользователей (с использованием клиентов Windows). Как этого можно добиться? (Бонусные баллы за отображение «ловушки» для неавторизованных пользователей…)
Я вижу набросок решения с использованием “скриптов входа” Samba – код на стороне клиента, который выполняется после входа в Samba – но полное решение должно дополнить набросок деталями. Связаны с этим также “предварительные скрипты” – код на стороне сервера, который выполняется во время входа в Samba.
Ссылаясь на мануал по smb.conf
скрипт входа (G)
Этот параметр указывает пакетный файл (.bat) или файл команд NT (.cmd), который будет загружен и выполнен на машине, когда пользователь успешно войдет в систему. Файл должен содержать завершения строк в стиле DOS. Рекомендуется использовать редактор в стиле DOS для создания файла.
Скрипт должен быть относительным путем к службе [netlogon]. Если служба [netlogon] указывает путь /usr/local/samba/netlogon, а скрипт входа = STARTUP.BAT, то загружается файл:
/usr/local/samba/netlogon/STARTUP.BAT
Содержимое пакетного файла полностью на ваш выбор. Рекомендуемая команда может быть добавление NET TIME \SERVER /SET /YES, чтобы заставить каждую машину синхронизировать часы с одним и тем же сервером времени. Другие применения могут включать добавление NET USE U: \SERVER\UTILS для часто используемых утилит, или
NET USE Q: \\SERVER\ISO9001_QA
например.
Обратите внимание, что особенно важно не разрешать запись в общий доступ [netlogon] или предоставлять пользователям разрешение на запись в пакетные файлы в безопасной среде, так как это позволит произвольно изменять пакетные файлы и нарушить безопасность.
Эта опция принимает стандартные замены, позволяя иметь отдельные скрипты входа для каждого пользователя или машины.
и также
preexec (S)
Эта опция указывает команду, которая будет выполнена каждый раз, когда происходит подключение к службе. Она принимает обычные замены.
Интересным примером может быть отправка пользователям приветственного сообщения каждый раз, когда они входят в систему. Может быть сообщение дня? Вот пример:
preexec = csh -c 'echo \"Добро пожаловать в %S!\" | /usr/local/samba/bin/smbclient -M %m -I %I' &
В вашем случае вы действительно хотите скрипты входа (нешифрованная форма монтируется на клиенте), поэтому набросок решения может включать:
- убедиться, что на каждом компьютере установлен аналог EncFS
- написать скрипт входа (.bat формат), который вызывает encfs на клиенте и запрашивает у пользователя вход. Команда encfs тем самым монтирует нешифрованную форму локально, при этом удаленное хранилище остается зашифрованным.
-
настроить smb.conf так, чтобы соответствующие пользователи выполняли скрипт входа. например, что-то вроде
скрипт входа = runencfs.bat
-
Для бонусных баллов ваш скрипт входа может автоматизировать установку Encfs (из общего доступа Samba) и запускать монтирование только в том случае, если он установлен!
Однако скрипты на стороне клиента могут вызвать головную боль из-за языка cmd, обеспечения установки encfs и обхода особенностей Windows, как, например, Windows 8.1 и выше, не выполняют скрипты входа в течение пяти минут, если не настроено иное.
Если вас беспокоит безопасность данных в покое, вы можете найти решение шифрования на NAS вместо этого (FreeNAS и Synology делают это). При загрузке вам необходимо ввести ключ для разблокировки тома, но после этого он работает точно так же, как незашифрованный общий доступ, поэтому конфигурация на стороне клиента не требуется.
Если, с другой стороны, вас беспокоит уязвимость данных, которые могут быть извлечены с сервера во время его работы, наличие шифрования на стороне клиента может решить вашу проблему. Что-то вроде EncFS или Cryptomator может быть самыми простыми решениями для вашей проблемы?
Или, возможно, я неправильно понял проблему?
Я также пытаюсь смонтировать зашифрованную папку encfs в общий доступ samba, но это не работало. После многих попыток я выяснил, что это была проблема с разрешениями на папку. Пользователь Samba не мог получить доступ к visible_folder.
encfs -o allow_other ~/encrypted_folder ~/visible_folder
Опция allow_other решила проблему.
Ответ или решение
Как настроить зашифрованный каталог для монтирования только при доступе через Samba
Эта инструкция поможет вам настроить зашифрованный каталог на вашем NAS (например, Buffalo LinkStation Pro) так, чтобы он монтировался автоматически при попытке доступа через Samba. Мы будем использовать EncFS для шифрования данных.
Шаг 1: Установка и настройка EncFS
-
Установите EncFS на NAS. Для этого вам нужно будет установить необходимые пакеты. На большинстве дистрибутивов Linux это можно сделать, используя пакетный менеджер (например,
apt
,yum
илиpacman
).sudo apt-get install encfs
-
Создайте зашифрованный каталог и видимый каталог:
mkdir ~/encrypted_folder mkdir ~/visible_folder encfs ~/encrypted_folder ~/visible_folder
При первом запуске будут предложены настройки для EncFS. Выберите параметры по умолчанию, если не уверены.
Шаг 2: Настройка Samba
-
Редактируйте конфигурацию Samba. Откройте файл конфигурации Samba, который обычно находится по пути
/etc/samba/smb.conf
.sudo nano /etc/samba/smb.conf
-
Создайте новый раздел для вашей видимой папки. Добавьте в конец файла следующее:
[visible_share] path = /home/your_username/visible_folder valid users = your_samba_user read only = no
-
Настройка preexec для автоматического монтирования при подключении. Это позволит автоматически монтировать зашифрованный каталог:
[visible_share] path = /home/your_username/visible_folder valid users = your_samba_user read only = no preexec = /usr/bin/encfs /home/your_username/encrypted_folder /home/your_username/visible_folder
Шаг 3: Правильные разрешения
Для того чтобы пользователь Samba мог получить доступ к видимому каталогу, вам нужно убедиться, что вы разрешили доступ через параметр allow_other
при монтировании EncFS:
encfs -o allow_other ~/encrypted_folder ~/visible_folder
Шаг 4: Настройка логон-скрипта (опционально)
Если вы хотите использовать логон-скрипты для указания настроек на клиентских машинах (например, Windows):
-
Создайте файл .bat (например,
runencfs.bat
), который будет монтировать EncFS на клиентской машине. Содержимое может быть следующим:@echo off encfs Z:\encrypted_folder Z:\visible_folder
-
Обратите внимание на то, что необходимо установить EncFS на клиентскую машину. Вы можете добавить проверки и установки в ваш логон-скрипт.
-
Убедитесь, что логон-скрипт настроен в конфигурации Samba:
logon script = runencfs.bat
Шаг 5: Создание ловушки для неавторизованных пользователей (бонус)
Чтобы создать ловушку для неавторизованных пользователей, вы можете создать отдельный раздел в Samba, который будет представлять собой пустую или информационную папку:
[unauthorized_access]
path = /path/to/empty/folder
public = yes
writable = no
Это создаст "ловушку", в которой будут показаны файлы и папки, но без реального доступа к зашифрованному контенту.
Заключение
Теперь, когда все настроено, ваш зашифрованный каталог будет автоматически монтироваться при доступе через Samba. Пользователи, имеющие разрешения, смогут получить доступ к зашифрованным данным в удобной форме. Убедитесь, что вы проверили все настройки и протестировали доступ, чтобы обеспечить безопасность и правильную работу конфигурации.