在工作中,我们为工作组使用一个服务器,我们每个人都有自己的帐户。我们还拥有我们小组所属机构的存储。因此,每个人的存储都安装在文件中/etc/fstab
,例如
//external/storage /mounting/point cifs noperm,cred=/home/user/.smbcredentials,domain=WORK,iocharset=utf8,vers=3.0,sec=ntlmv2i,uid=user,gid=WORKGROUP,dir_mode=0770,file_mode=0770 0 0
每个人都把他们的凭证放在他们的/home/user/.smbcredentials
文件中,例如
user=user
password=pass
但是,这个文件是纯文本的。权限是正确的,所以只有用户可以查看/更改文件,但sudo
据我所知,用户也可以。问题是密码是还密码是机构的一部分,用户敏感信息的密码是机构的一部分(因此存储与敏感信息链接到同一个帐户)。因此,我担心的是,如果服务器甚至只是用户的帐户被盗用,这可能会带来严重后果,因为密码以纯文本形式存在。
那么我的问题是:如何才能使其更安全?肯定有纯文本密码的替代方案吧?
答案1
目前,不支持加密凭证。从smbclient
手册页中可以看到-U
,-A
后台传递的内容如下:
-A|--authentication-file=filename
This option allows you to specify a file from which to read the
username and password used in the connection.
...
Make certain that the permissions on the file restrict access from
unwanted users.
-U|--user=username[%password]
Sets the SMB username or username and password.
...
A third option is to use a credentials file which contains the
plaintext of the username and password. This option is mainly
provided for scripts where the admin does not wish to pass the
credentials on the command line or via environment variables. If
this method is used, make certain that the permissions on the file
restrict access from unwanted users. See the -A for more details.
...
目前,即使在 20.04 中也是如此。您必须使用纯文本凭据。
您声明“用户帐户被泄露的风险”是一种风险,并且这些凭据也是管理员凭据:
机构要求所有密码(管理员、邮件、存储)都只有一个。
IT安全规则2是最小特权和特权分离。这里您将管理员帐户和非管理员帐户分开。 所有优秀的组织都会在某个方面发挥作用。这会阻止其他系统的“管理员”访问。存储和电子邮件访问只是审核访问尝试或限制某人访问信息的方式的问题。
但另一个问题是,如果你的系统被黑客入侵,你就会面临一系列其他问题其中最不重要的是某个特定用户的密码泄露(您可以通过在 Active Directory / LDAP 系统中强制更改密码来解决这个问题)。
唯一的其他方法没有密码泄露可能是在挂载周围编写包装器,手动请求凭据,然后直接执行挂载命令而不暴露凭据文件或密码。这里棘手的部分是,这必须由用户手动输入和执行,这意味着您的自动 fstab 挂载将无法工作。它还需要专门的访问权限(或特定条目sudoers
才能正常工作),因为您将传递挂载选项,并且root
目前只能在所有mount
设置中执行此操作。
至于您评论的其余部分:
... 也许我建议他们允许(或者更好的是,要求)对 samba/存储访问使用不同的密码
... 你必须向 Samba 开发人员提出这个问题在 samba.org 上。虽然这可能是一个已经在排队的请求,但 Windows 互操作性很麻烦,所以...
答案2
你可以尝试西夫斯克罗克。您可以使用以下方式安装:
sudo python3 -m pip install cifscloak