题 在哪里维护中央源库?


有关保护源代码访问的行业最佳实践是什么?我认为只有通过apache的SSL连接允许通过一个不与其他任何东西冲突的模糊端口连接到我们的服务器。困扰我的是将源代码存储在面向公众的服务器上,即不仅可以通过LAN访问。而且,这个服务器有几个用途。 Apache已经在提供其他一些内部公司网站。我希望每个人都可以从任何地方(家庭,机场等)访问源代码,只要他们拥有正确的凭据即可。建议?


10
2017-11-08 20:26






答案:


如果您担心它位于面向公众的服务器上但希望从任何地方访问,您应该考虑让您的开发人员使用基于客户端的VPN远程登录您的网络以访问内部源控制服务器。


13
2017-11-08 20:36



您是否可以解释为什么您认为VPN比基于SSL / TLS的服务器更安全的原因,因为它们都需要“面向公众”? VPN使用熟悉的加密技术来实现SSL / TLS。因此,如果您可以破解VPN,您将获得一切。 - Matt
@Matt如果他没有理由将他的存储库放在公共部分,那为什么要把它放在那里呢?此外,VPN可能为他的开发人员带来其他好处。你还会注意到我从来没有说过“VPN比SSL / TLS更安全”,所以不要把话放在我嘴里:) - phoebus
真正。我觉得myr声明中隐含着安全感。也许你可以证明这一点:“如果你担心它出现在面向公众的服务器上” - Matt
在我看来,在VPN后面拥有私有服务器/服务是分层方法的一部分。它有助于防止可能将源公开给公众的配置错误。不是必需的,但很聪明。 - Martijn Heemels


我不太清楚为什么人们认为VPN方法是最好的。不是 必须更加安全,只提供我能想到的一个优势。

众所周知,PPTP具有不太理想的安全性,但我相信它已得到改进 自从第一次介绍以来......所以要小心你使用哪种VPN解决方案。我会选择OpenVPN或IPSEC。

但是,如果没有VPN,你无法超越SSL / TLS的便利性(进一步阅读)。 为了使其更加安全,您只能将其作为证书。

但是,如果您认为可能提供除源代码控制之外的其他服务,那么请考虑使用VPN解决方案,因为您将通过它来隧道其他服务。

使用VPN的缺点是您的PC有效地成为其连接的网络的一部分。这也是一个优势。 但是,如果你距离家有一百万英里并且与家庭基地的网络连接速度不是太快,那么每次你想要做差异或检查或输入代码时,你可能会发现自己正在连接并断开VPN连接。

我可以在这里说个人经验,因为我是一名开发人员,这样做真是痛苦!理想情况下,两种选择都是首选。

因此,如果您要浏览网页等,那么它可能会使阅读新闻等相当缓慢。但至少你可以安全地访问电子邮件。所以考虑一下你将如何首先使用它...如果我是你,我会考虑实施两者。


4
2017-11-09 01:43





其实,我喜欢你的建议。如果您只能通过SSL / TLS访问源代码存储库,并确保您的开发人员不使用易于暴力破解的密码短语(或者更好,使用证书),那么它应该像任何东西一样安全。

相反,您可以在局域网中隐藏您的服务器并强制开发人员使用VPN来获取访问权限,但这只意味着您的开发人员需要将他们的用户名/密码(和/或证书)放入不同的登录框中。我建议不要在网络中创建一个入口点,其安全隐患可能并不总是很明显,只是为了允许访问单个服务。如果您已经为其他用途配置并保护了VPN,那么确定,这是一个明智的选择,继续使用它。否则,通过SSL / TLS使服务本身直接可用可能更简单,因此更安全。


3
2017-11-08 22:02





行业标准可能取决于您(或您的客户)行业:-)

实际上,您需要考虑您想要访问的对象以及他们可以处理的内容。您可能想要/需要访问的某些人将无法应对用户名/密码。其他人可能能够绕过ssh和私钥,这可以让你安全地获得密钥给他们,也不错。 TortoiseSVN客户端可以处理ssh + svn并通过一些手臂扭曲来支持私钥。这对我的目的来说已经足够了。

VPN隧道也是一个公平的建议,虽然在很多地方你很乐意让外部人员只访问您的源代码控制,但不能访问整个网络!


3
2017-11-08 22:03





和其他人一样,我更喜欢VPN。另一种选择是SSH隧道,我认为实际上它是一种VPN。


2
2017-11-08 21:08





使其仅限内部并实施远程用户VPN解决方案。 / Doh-重复。


0
2017-11-08 20:47





如果你想从任何地方访问,那么你需要一个面向公众的服务器 - 这很清楚。

在那台服务器上,你想要 暴露尽可能少,最好只是Mercurial / Subversion而不是别的。这是为了防止安全漏洞从源代码控制传播到公司的其他部分。因此,我同意 与马特 当他说VPN可能是危险的时候:它提供了比需要更广泛的访问权限。

对于Mercurial,您可以通过使用来严密锁定 hg-ssh 限制通过SSH连接的客户端可用的命令。通过使用SSH,您可以轻松地要求客户端使用 公钥认证 而不是密码。这可以保护您的服务器免受暴力登录攻击。

即使SSH密钥被泄露(可能它的密码短,而且存储它的笔记本电脑被盗),那么攻击者可以做的最大损害就是在Mercurial中添加垃圾历史记录。使用的协议本质上是仅附加的,因此不能删除任何内容 hg push

对于HTTPS, 身份验证由前端Web服务器完成。这意味着您可以根据需要使用客户端站点证书,从而获得上述SSH公钥认证之类的安全性。


0
2017-12-24 01:38