如何设置一个加密目录只在samba访问时挂载?

如何设置一个加密目录只在samba访问时挂载?

(这不是限制客户端访问,ext3 权限可以解决这个问题)

我想加密我的 NAS 驱动器上的数据(布法罗 LinkStation Pro启用 SSH 访问(如果重要的话)以用户友好的方式。目前,truecrypt 容器必须通过 SSH 手动挂载并再次卸载(除非您解决我的超时问题)。使用无密码(但 EFS 加密)SSH 密钥,这可以减少为两个 PuTTY 桌面快捷方式并输入 truecrypt 密码(直到进一步简化)用于安装。

然而,理想的解决方案是透明的。我首先想到尝试以某种方式共享允许 EFS 加密,但是对于没有 Active Directory 服务器的多个用户来说,这可能会涉及更多的工作和 EFS似乎很麻烦

但现在我的想法是自动挂载例如 EncFS 加密目录,由授权用户(使用 Windows 客户端)的 samba 访问自动触发。如何才能实现这一目标? (为未经授权的用户显示蜜罐共享的奖励积分......)

答案1

我看到了使用 Samba“登录脚本”(Samba 登录后运行的客户端代码)的解决方案的草图,但完整的解决方案需要包含详细信息来完成草图。相关的还有“preexec 脚本”——在 samba 登录期间运行的服务器端代码。

参考smb.conf 手册页

登录脚本 (G)

此参数指定当用户成功登录时要下载并在计算机上运行的批处理文件 (.bat) 或 NT 命令文件 (.cmd)。该文件必须包含 DOS 样式的 CR/LF 行结尾。建议使用 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] 共享进行写访问,或者在安全环境中授予用户对批处理文件的写权限,因为这将导致批处理文件被任意修改并破坏安全性。

此选项采用标准替换,允许您为每个用户或计算机使用单独的登录脚本。

并且

预执行 (S)

此选项指定每当连接到服务时要运行的命令。它需要通常的替代品。

一个有趣的例子是在用户每次登录时向他们发送一条欢迎消息。也许是当天的消息?这是一个例子:

preexec = csh -c 'echo \"Welcome to %S!\" | /usr/local/samba/bin/smbclient -M %m -I %I' &

不过,就您而言,您确实需要登录脚本(未加密的表单安装在客户端上),因此解决方案草图可能涉及:

  1. 确保每台计算机都有EncFS 等效项已安装
  2. 编写一个登录脚本(.bat 格式),在客户端上调用 encfs 并提示用户登录。因此,encfs 命令在本地安装未加密的表单,而远程存储保持加密状态。
  3. 配置smb.conf,以便相关用户运行登录脚本。例如类似的东西

    登录脚本 = runencfs.bat

  4. 为了获得奖励积分,您的登录脚本可能会自动/提示安装 Encfs(从 samba 共享),并且仅在安装后才运行安装!

不过,由于 cmd 语言、确保安装 encfs 以及解决 Windows 问题,客户端脚本肯定会让您头疼,像 Windows 8.1 及更高版本,除非另有配置,否则直到五分钟后才运行登录脚本

答案2

如果您担心静态数据的安全性,您可以在 NAS 上寻找加密解决方案(FreeNAS 和 Synology 就是这样做的)。启动时,您需要输入密钥才能打开卷,但之后,它的工作方式就像未加密的共享一样,因此不需要客户端配置。

另一方面,如果您担心在服务器运行时从服务器获取数据,那么客户端加密可以解决您的问题。像 EncFS 或 Cryptomator 这样的东西可能是解决您的问题的最简单的解决方案?

或者也许我误解了这个问题?

相关内容