【问题标题】:SVN With Two-Factor Authentication具有两因素身份验证的 SVN
【发布时间】:2012-04-19 13:45:17
【问题描述】:

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

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

开发人员需要存储密码的能力。这会阻止我们使用svn+ssh 登录到存储库。由于 RSA 令牌每分钟更改一次,因此我们无法存储 SSH 密码。更糟糕的是,RSA 令牌会使我们每分钟减少一次 SVN 操作。这是完全不可接受的,尤其是因为我们有将多个 SVN 操作链接在一起的脚本。

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

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

有没有可行的解决方案?我们的系统管理员正确吗? svnserve 上是否有一个选项可以强制它只监听来自 localhost 的流量?

【问题讨论】:

  • ServerFault 会更好,我猜。
  • 有没有简单的移动方法?
  • 我只是将其标记为“属于服务器故障”。如果认为合适,版主会查看并发送给那里。

标签: security svn authentication


【解决方案1】:

svnserve 可能有只监听 localhost 的选项,但这听起来像是防火墙配置问题。

如果端口 3690 不能从外部访问,则应被防火墙阻止。 svnserve 或其他任何东西是否在该端口上侦听都无关紧要。 svnserve 可以继续在 3690 上侦听,但只会接收来自 localhost 的连接,因为其他连接被防火墙阻止。

【讨论】:

    【解决方案2】:

    使用:

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

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

    ssh -L3690:127.0.0.1:3690 user@svnserver.mycompany.com

    另见:

    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
    

    【讨论】:

      猜你喜欢
      • 2016-10-01
      • 2019-07-21
      • 1970-01-01
      • 2015-12-10
      • 1970-01-01
      • 2012-11-03
      • 2016-06-06
      • 2016-02-21
      • 1970-01-01
      相关资源
      最近更新 更多