如何构build一组前端/后端服务器的“身份validation图”?

我正在接pipe一堆服务器作为一个新手系统pipe理员,其中包括一个前端Web服务器,和几个后端服务器,其中包含数据库,包括Web服务的用户的私人信息。

对于初学者,我禁用了SSH密码authentication。 我想知道在login身份validation方面我还应该注意哪些方面,以确保服务器的合理实力(优先级),并且还可以减轻将来pipe理问题的任务(第二优先级)。

问题1 :是否build议设置一个“垫脚石”服务器,如下面的图(2)所示,这将是唯一一个端口22开放的服务器? 它会使后端服务器更安全吗?

(1)平板形状 – 没有垫脚石(当前设置)

[dev machine] - pub key auth - [Frontend]* private key A public key A 

[开发机器] – pub key auth – [后端] *私钥公钥A

(2)星形 – 垫脚石

 [dev machine] - pub key auth - [S- stone] - ? - [Frontend/Backend]* private key A public key A 

[dev machine] - pub key auth - [S- stone] - ? - [Frontend/Backend]* private key A public key A

问题2 :在这种情况下,build议使用哪种authentication方式进行内部login?
(a)使用另一个密钥对:priv密钥B – pub密钥B
(b)使用ssh-agent
(c)重新使用密钥对A:将priv密钥A置于S-stone
(c)使用密码authentication

注意:问题标题中的“authentication图表”是一个组成单词。 我很高兴知道是否有这样一个问题的术语 – 哪个服务器允许从哪个服务器login。

我不认为一个堡垒主人是一个净利益。 如果你login到后端,就没有任何好处(如果攻击者popup了堡垒,他是完全的),如果你需要以不同的方式login堡垒,这是一个巨大的pipe理沮丧,迟早你会解决它,以提高生产力,你的安全性刚刚走出了窗口。

另一方面,把所有东西都挂在互联网上让任何人捅了一下,都是不必要的风险。 我过去部署的解决scheme包括:

  • 限制源IP地址 :理论上讲,在你的ISP重新连接你的家庭连接之前,或者当你在路上时,你急需进入服务器。
  • 端口敲打 :理论上可爱,但对保持身份validation日志清洁比提供任何真正的安全性更有用。 当你忘记港口敲门顺序也很尴尬。
  • VPN :良好的安全性,特别是如果你必须不时地使用未encryption的协议到后端服务器(该死的你,IPMI),并且如果你使用PKI(yay openvpn!),可以提供很好的,强大的authentication。 缺点是你的客户端configuration变得更复杂。

没有“最好”的解决scheme。 我喜欢VPN,但是YMMV。

一个网关盒子(“踏脚石”,“堡垒主机”等)是一个好主意,因为它限制了攻击概况:而不是让许多机器的SSH守护进程暴露你只有一个。

也就是说,正如womble所指出的,如果你使用相同的凭证来login到“垫脚石”和所有的服务器后面,你在安全方面没有获得净收益 – 一个密钥/密码/等等。 得到妥协,他们可以得到他们想要的任何地方。
你应该至less实现离散的身份validation证书(“垫脚石”盒子和后面的东西的单独密钥),并且应该考虑其他的技术(特别是源IP限制和/或端口敲入)作为附加层安全。

请注意,如果采取VPN方法,通常依靠VPN作为安全提供者(代替“垫脚石”主机)。