关于确保对源代码的访问的最佳行业做法是什么?我在考虑通过apache进行的仅SSL连接允许在不影响其他端口的晦涩端口上转移到我们的服务器。困扰我的是将源代码存储在面向公众的服务器上,即不仅可以通过LAN访问。而且,该服务器有多种用途。Apache已经为其他公司内部网站提供服务。我希望每个人都可以从任何地方(房屋,机场等)访问源代码,只要他们具有正确的凭据即可。有什么建议吗?
关于确保对源代码的访问的最佳行业做法是什么?我在考虑通过apache进行的仅SSL连接允许在不影响其他端口的晦涩端口上转移到我们的服务器。困扰我的是将源代码存储在面向公众的服务器上,即不仅可以通过LAN访问。而且,该服务器有多种用途。Apache已经为其他公司内部网站提供服务。我希望每个人都可以从任何地方(房屋,机场等)访问源代码,只要他们具有正确的凭据即可。有什么建议吗?
Answers:
如果您担心它位于面向公众的服务器上,但希望从任何地方进行访问,则应考虑让开发人员使用基于客户端的VPN远程登录网络以访问内部源代码控制服务器。
我不太确定为什么人们会认为VPN方法是最好的。它不一定更安全,仅提供我能想到的一项优势。
例如,众所周知PPTP的安全性不尽人意,尽管我认为自从首次引入以来它已经有所改进...所以请注意使用哪种VPN解决方案。我会选择OpenVPN或IPSEC。
但是,如果没有VPN,您将无法享受SSL / TLS的便利(请进一步阅读)。为了使其更加安全,您只能使其成为证书。
但是,如果您认为您可能会提供源控制以外的其他服务,那么请考虑使用VPN解决方案,因为您将在其上建立其他服务的通道。
使用VPN的缺点是您的PC实际上成为其所连接的网络的一部分。这也是一个优势。但是,如果您离家一百万英里,并且与家庭基地的网络连接不太快,那么每次您要进行比较或签入或签出代码时,您可能会发现自己正在连接和断开VPN。
作为开发人员,我可以从个人经验谈起,做这件事真是让人头疼!!!理想情况下,两个选项都是首选。
因此,如果您要浏览网络等,则可能会使阅读新闻等速度变慢。但是至少您可以安全访问电子邮件。因此,请考虑一下您将如何首先使用它...如果我是我,则考虑同时实现两者。
其实,我喜欢你的建议。如果您仅通过SSL / TLS来访问源代码存储库,并且确定您的开发人员没有使用易于暴力破解的口令(或者最好使用证书),那么它应该和任何东西一样安全。 。
相反,您可以将服务器隐藏在局域网内,并迫使开发人员使用VPN进行访问,但这仅意味着开发人员需要将其用户名/密码(和/或证书)放入另一个登录框中。我建议不要在您的网络中创建一个入口点,该入口点的安全隐患可能并不总是显而易见的,只是为了允许访问一项服务。如果您已经为其他用途配置并保护了VPN,那么请确保这是一件容易的事,请继续使用它。否则,通过SSL / TLS直接使服务本身可用可能更简单,因此更安全。
如果您想从任何地方访问,则需要一台面向公众的服务器-这很清楚。
在该服务器上,您希望公开的尽可能少,最好仅公开 Mercurial / Subversion,而不公开其他任何内容。这是为了防止安全漏洞从源代码控制扩展到公司的其他部门。因此,当Matt说VPN可能很危险时,我会同意他的观点:VPN提供的访问范围超出了所需。
对于Mercurial,您可以通过使用hg-ssh
限制通过SSH连接的客户端可用的命令来紧密锁定所有内容。通过使用SSH,您可以轻松地要求客户端使用公共密钥身份验证而不是密码。这样可以保护您的服务器免受暴力登录攻击。
即使SSH密钥被盗用(也许它的密码短语很弱,并且存储它的笔记本电脑被盗了),攻击者可能造成的最严重破坏还是在Mercurial中添加了垃圾记录。所使用的协议本质上是仅追加的,因此不能使用删除任何协议hg push
。
对于HTTPS,身份验证由前端Web服务器完成。这意味着您可以根据需要获得客户端站点证书,从而获得安全性,例如上面的SSH公钥身份验证。