【问题标题】:Restricting SSH Access at (HA)proxy on User限制用户 (HA) 代理的 SSH 访问
【发布时间】:2020-09-10 01:22:47
【问题描述】:

我正在通过互联网设置 git ssh 访问权限。

git 服务器托管在一个私有子网中,没有公开的 SSH 访问。为了提供访问(通过公共子网),已经设置了一个 HAproxy,将 SSH 访问从 Internet 转发到后端 git 服务器。

我希望用户通过如下 URL 访问 git:

ssh://git@my-git-server.example.com:8022/repopath.git

我的 HAProxy 节如下所示:

my-git-server
    bind *:8022",
    mode tcp",
    server git 172.16.0.1:22 check port 22"

这可行,并且符合要求,但它存在固有的安全问题 - 我们还暴露了 git 服务器上的所有其他用户。即我也可以像这样连接到非 git 用户:

ssh://privateuser@my-git-server.example.com:8022

我想确保只有 git 用户被暴露(即无法通过互联网访问其他用户)。

如果可能,我想通过 haproxy 执行此操作,但不知道如何更改我的 haproxy 规则以过滤掉没有“git@”的请求 URL。 如果在 HAProxy 中不可能,请提供有关如何通过 git 服务器上的 ssh-config 进行管理的建议。

【问题讨论】:

    标签: security ssh haproxy


    【解决方案1】:

    也许有人仍然对此感兴趣,尽管我已经晚了将近 4 年。据我所知,HAProxy 无法做到这一点。但是,如果您仍然使用 HAProxy 服务器从远程/互联网连接到它,那么在 sshd_config 文件中的 Git 服务器上执行此操作很容易。 只需在 sshd_config 文件的末尾添加:

    Match Address IP.OF.HAPROXY.SERVER
        AllowUsers git
    

    这样,当流量来自 HAProxy 的 IP 时,只允许用户 git 登录。不过,在重新加载 sshd 之前,您可能需要使用以下命令测试新的 sshd 配置:

    sshd -t
    

    【讨论】:

      猜你喜欢
      • 2014-06-14
      • 2015-07-23
      • 2015-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-19
      • 2019-02-17
      相关资源
      最近更新 更多