security - 具有双因素身份验证的 SVN

标签 security svn authentication

我在一个具有严格安全要求的组织工作,有时甚至过度要求。我的项目团队正在尝试创建一个 SVN 存储库,但我们在设置一个存储库以满足我们的需求和安全要求方面遇到了困难。

我们的 IT 部门要求我们通过双因素身份验证来验证自己的身份。每个开发人员都有一个 RSA token ,必须使用该 token 通过 SSH 登录到存储库主机。 token 上显示的值每分钟更改一次,每个值只能使用一次。

开发人员需要能够存储密码。这会阻止我们使用 svn+ssh 登录存储库。由于 RSA token 每分钟更改一次,因此我们无法存储 SSH 密码。更糟糕的是,RSA token 会使我们每分钟执行一次 SVN 操作。这是完全 Not Acceptable ,特别是因为我们有将多个 SVN 操作链接在一起的脚本。

我们试图通过打开带有端口转发的 SSH 隧道来进行妥协。我们将使用 ssh user@hostmachine -L 3690:localhost:3690 打开一条隧道,将本地计算机上的所有 SVN 请求转发到安全计算机,其中有一个 svnserve 进程正在运行。这意味着我们可以使用双因素身份验证登录,然后在我们的实用程序中使用单独的 SVN 用户名和密码(可以存储)。

不幸的是,我们注意到我们不需要隧道;端口 3690 可用于主机名可见的任何计算机。这对于 IT 来说是 Not Acceptable ,我们的系统管理员认为 svnserve 是问题所在,因此她想知道我们是否必须返回 svn+ssh

有什么有效的解决方案吗?我们的系统管理员正确吗? svnserve 上是否有一个选项可以强制它仅监听来自本地主机的流量?

最佳答案

用途:

svnserve -dr /my/repo --listen-host 127.0.0.1

这样服务将只监听环回接口(interface)。当您使用 ssh 连接时:

ssh -L3690:127.0.0.1:3690 <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="1a6f697f685a696c74697f686c7f683477637975776a7b746334797577" rel="noreferrer noopener nofollow">[email protected]</a>

另请参阅:

vince@f12 ~ > svnserve --help
usage: svnserve [-d | -i | -t | -X] [options]

Valid options:
  -d [--daemon]            : daemon mode
  -i [--inetd]             : inetd mode
  -t [--tunnel]            : tunnel mode
  -X [--listen-once]       : listen-once mode (useful for debugging)
  -r [--root] ARG          : root of directory to serve
  -R [--read-only]         : force read only, overriding repository config file
  --config-file ARG        : read configuration from file ARG
  --listen-port ARG        : listen port
                             [mode: daemon, listen-once]
  --listen-host ARG        : listen hostname or IP address
                             [mode: daemon, listen-once]
  -T [--threads]           : use threads instead of fork [mode: daemon]
  --foreground             : run in foreground (useful for debugging)
                             [mode: daemon]
  --log-file ARG           : svnserve log file
  --pid-file ARG           : write server process ID to file ARG
                             [mode: daemon, listen-once]
  --tunnel-user ARG        : tunnel username (default is current uid's name)
                             [mode: tunnel]
  -h [--help]              : display this help
  --version                : show program version information

关于security - 具有双因素身份验证的 SVN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10035041/

相关文章:

php - 当对用户数据进行匿名化时,伪随机就足够了吗?

windows - 将进程放在危害最小的沙箱中

svn - 如何在 ubuntu 上启动颠覆服务器?

svn - 通过FTP同步SVN

authentication - 跨平台登录

php - 这个 JSON 代码安全吗?

wcf - WS-Security 的互操作性如何?

svn - 在SVN中存储二进制文件的方法

authentication - Symfony 2 中的两个独立登录页面

django - 如何让 Django REST 身份验证工作?