默认情况下,Subversion 允许用户将密码以明文形式保存在~/.subversion/auth/svn.simple
.我正在研究以下选项在svn中存储加密的密码,但至少,我想尽快完全禁用所有用户存储密码的功能。我们正在运行 Subversion 1.6.17。
我可以通过配置文件在用户的主目录中禁用此功能。
〜/.subversion/服务器:
[global]
# Password / passphrase caching parameters:
store-passwords = no
store-plaintext-passwords = no
但是,用户可以根据需要更改配置文件。没有系统范围的 svn 配置文件吗?我见过的几个选项:
选项1
在 1.8-dev 中,Subversion 的配置脚本接受 --disable-plaintext-password-storage 选项来绕过存储明文密码和客户端证书密码的逻辑。
我不想更新到开发版本。
选项2
/etc/subversion/config
AFAIK,仅当用户的主目录中没有配置文件时才使用此配置文件。
选项3
添加一个 cron 作业来删除 中用户的身份验证缓存~/.subversion/auth/svn.simple
。因此,即使他们更改了 svn 配置文件,我们的 cron 作业也会删除所有存储的密码。然而,即使每分钟运行一次也不能保证我们的备份系统不会抓取包含明文密码的文件。
有想法吗?
答案1
你不能。
无论您做什么,您的用户都可以绕过它并将其密码存储在纯文本文件中。如果您禁用客户端二进制文件中的该功能,他们将下载或编译不同的客户端。通常,如果您设置了令人讨厌的安全措施(例如必须为每个 svn 操作输入密码),您的用户将以一种使安全性变得更糟的方式绕过它们。 (例如,编写包含密码的包装脚本。他们将使世界可读。)所以不要这样做。
重申一下:仅通过技术措施,您无法阻止用户将其密码存储在文件中。你可以禁止,但如果这让他们的生活变得困难,他们无论如何都会这么做。
如果您担心笔记本电脑或备份被盗,请加密用户的主目录。这将保护密码和数据。如果整个主目录被加密,出于可用性原因,加密密码通常与登录密码相同。请务必制定密码备份策略(例如密封的信封),因为丢失加密密码将无法恢复。
如果您担心密码重复使用,请强加一个随机(因此是唯一的)密码,他们将在客户端中一次性输入该密码。当然,有一个简单的过程来更改泄露的密码。
答案2
顺便说一句,即使在加密任何内容之前,我也会处理文件权限:只是出于好奇检查了我自己的设置,发现这是世界可读的。对于包含明确密码的文件,在我看来它就像一个安全漏洞。