如何在不丧失进行验尸的能力的情况下实现不可变的服务器模式?


12

不变的服务器模式是一种部署准则,有利于部署的可重复性。它的特点是“ 一旦部署服务器,就不会被修改,仅被新的更新实例替换 ”,而实施这一准则要求服务器部署自动化。这种自动化具有许多操作优势,其中最重要的一项就是允许快速可靠地替换基础架构中发生故障的实例。这种自动化还意味着服务器部署由版本控制的软件工件来描述,并且需要进行迭代式改进。

该学科实施的一个流行方面是,一旦启动服务器,就删除对服务器的远程访问方法(尤其是删除SSH访问)。删除远程访问是一种确保服务器配置与部署自动化准备的配置相匹配的简便方法。

但是,在调查软件故障的原因时,仅依靠结构化监视并不总是足够的,因此可能需要远程访问计算机。常见的实际情况是服务器监视未涵盖所有故障源,或者服务器故障本身可能会损害监视,如果服务器内存不足或达到其进程限制,则很可能会发生这种情况。

如何在不丧失进行验尸的能力的情况下实现不可变的服务器模式?

Answers:


9

首先,在不可变的服务器上删除ssh并不能保证不会有任何更改,更多的是,由于不需要更改某些内容,因此可以通过删除远程访问通道来减少攻击面。

进行某种验尸的一种方法是日志集中化。有无数种方法可以实现它,ELK堆栈,Splunk,系统日志...

为不可变服务器保留事后验验的另一种更粗略的方法是在关闭过程中有一个脚本(不可变服务器发生故障将被关闭,并启动一个新的替换它)以收集程序的核心转储,即内存转储,并将它们与大多数日志一起发送到远程系统进行分析。

该解决方案的主要优点是,您仅在出现问题时才获取失败的系统信息,从而可以收集比定期获取更大的信息。

很难更具体地说明如何实现此目标,每个发行版都有某种获取方法的途径,我没有通用的示例。


7

您没有SSH访问权限这一事实并不意味着无法访问该计算机。您很可能会在某个云运营商上运行它,在这里您还可以执行以下操作:

  • 拍摄机器快照。您可以在销毁盒子之前拍摄快照,以供以后分析。
  • 通过控制台访问机器。您可能需要为此输入root密码,但是某些云提供商可以随时注入随机root密码进行控制台访问。

这些本质上是对计算机的“物理”访问,即使您删除其他类型的访问也将可用。您也可以限制这些接口。

除了@Tensibai所说的之外,更好的方法是建立适当的日志记录和监视,因此,在您必须进行事后验尸的时候,有足够的数据可用于做事。


4
好吧,为了应对控制台访问,AWS EC2不提供任何控制台访问,如果您未配置SSH,则您无权访问该计算机。对计算机卷进行快照可能会有所帮助,将其作为新磁盘安装在“司法鉴定”实例中以分析数据。
Tensibai'3
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.