# ATMCash 利用虚拟化实现安全性-不变性和还原

> 原文： [http://highscalability.com/blog/2011/7/11/atmcash-exploits-virtualization-for-security-immutability-an.html](http://highscalability.com/blog/2011/7/11/atmcash-exploits-virtualization-for-security-immutability-an.html)

*这是 ATMCash 技术负责人 [Ran Grushkowsky](/cdn-cgi/l/email-protection#6210030c052203160f0103110a4c010d0f) 的来宾帖子。*

虚拟化和基于云的系统在业界非常受欢迎。 但是，大多数金融公司偏离了这些解决方案。 在 ATMCash，我们采用虚拟化的原因并非出于可扩展性的通常原因，而是出于通常错过的安全性价值。

在本文中，我将介绍虚拟化利用中安全性增值的概念，以及为什么人们应该考虑为这些用例部署小型云。

## 虚拟机如何帮助减轻风险？

我敢肯定，您中的大多数人都听说过金融行业中最近发生的[黑客攻击。 金融公司一直在不断地进行黑客攻击，因此安全性至关重要。 系统部署中最大的风险之一是堆栈组件之一的损坏。 定期的系统修补程序和维护修复了已知的漏洞利用和问题，但是，有时可能为时已晚，并且该组件已被破坏。 如果系统已经在将补丁程序应用于现有系统的自然环境中遭到破坏，则有时补丁程序可能来得太迟，并且已经注入了特洛伊木马或某种恶意代码（如最近的案例所示） 。 虚拟机提供了一个伟大的隐藏宝藏：**不变性和还原映像**。](http://www.latimes.com/business/la-fi-citibank-hack-20110609,0,2504101.story)

## ATMCash 如何将这些功能用于堆栈中的安全性的示例：

我们的堆栈包含三个主要组件：前端，后端和数据库。

我们的机器正在运行 VMWare vSphere。 我们已经决定为前端组件安装 4gb / ram 64gb / SSD 服务器。 具有 16gb / ram 的更强大的服务器（用于我们的后端组件）以及具有用户 ID 分片和复制功能的专用 MySQL 数据库服务器。 我们的虚拟机正在运行 CentOS 的修改版本。 我们学会了以相对快速的修补周期和易于修改的配置来喜欢 CentOS。

前端和后端是随每个版本更改的静态组件，而数据库是唯一随时更改的动态组件。 我们利用静态特征来增强我们的安全性，并消除感染后被感染的系统受到修补的风险。

我们拥有尚未部署的每个系统组件的最新映像，但是会不断对其进行修补和更新以反映最新的安全风险。 然后，我们将对该映像进行任何软件更新，并用新更新和修补的映像替换运行中的映像。 通过安装负载平衡器，我们在整个过程中不会停机。 我们通过关闭一台计算机来逐一替换虚拟机，而负载平衡器将流量引向运行中的计算机，并重复该过程，直到所有虚拟机都被替换为止。 交换图像的过程通常每个过程少于 30 秒。 VMWare vSphere 具有一些强大的功能，这些功能使动态替换映像变得非常容易。 这是一个相对较快的重新部署过程。

## 我们如何使用不变性来提高安全性的示例：

在 ATMCash，我们的客户服务和呼叫中心在内部进行处理。 我们还将客户的安全和隐私视为最高优先事项。 为了进一步保护客户，我们开发了自己的 CSR（客户服务代表）系统，该系统利用了各种安全级别。 其中之一是虚拟机的不变性功能。 每个 CSR 工作站都在运行一个主 VM 映像的副本，该副本是不变的（无法修改，并且在每次重新引导后将被重置）。

以这种方式部署工作站可提供至关重要的安全级别，以保护我们的系统免受可能进入工作站的恶意代码的侵害。 如今，病毒和恶意脚本以各种方式传播。 从电子邮件附件到 Word 文档，它们无处不在。 如果您认为制定一项政策来指示员工不要从可移动驱动器中加载个人文档，或者甚至限制对社交网络的 Web 访问将消除这种风险，那么事实证明您是错误的。 您应始终假定恶意脚本会找到通往您工作站的路径，并且您的防病毒软件很可能不会检测到它。 使用每次重新启动都会重新启动的不可变映像，不仅提供了更高的安全性，而且还提供了应用补丁程序和在整个系统范围内更新（仅更新一个映像）的能力。

## 为什么 ATMCash 有自己的私有云而不使用现有的基础架构：

我们得到了很多问题，答案很简单。 我们从事货币业务，我们需要特别注意客户的信息。 这是真的; 部署自己的小型云的成本比利用任何现有基础架构要高得多，但是安全性的附加价值是无价的。

此外，借助戴尔和其他零件制造商提供的财务计划，如果您将付款分散到各处，则您只需支付云服务的费用即可。 价格比较：使用 Rackspace 拥有 10 台 4gb 和 200gb 上/下的 Linux 服务器，每月将花费$ 1804。 在您自己的微型云上使用戴尔服务器配置可比较的服务器，服务器硬件的费用为每月 105 美元，网络配件的费用为每月 400 美元，VMWare 许可的费用为 600 美元/月，数据中心费用可能有所不同，但大约为 400 美元/月。

最重要的是，您必须维护设置，并且任何可伸缩性都需要购买和设置更多节点。 $ 1505 /月，之前员工维持固定成本的费用略高，但是，特别是在安全方面所享有的收益不容错过。

## 发生停机时如何处理对帐问题？

处理金融交易时，不能选择停机。 因此，虚拟化非常重要，而负载均衡器对于任何虚拟化环境都至关重要。 我们设计的系统具有极高的冗余性。 堆栈的每个部分都被复制并旨在处理停机时间。 我们在本地数据中心级别使用物理负载均衡器设备（也执行 SSL 握手）在 DNS 级别使用负载均衡器。 一旦一个组件发生故障，负载均衡器将自动将流量定向到其克隆节点。

我们使用批处理更新执行大量数据处理，在此我们将重要更新作为增量更新，小的增量更新进行提交，从而无需更新整个数据集。 您只需更新所需的小更改。 例如，提款或大量资金需要立即在整个系统中进行更新以反映余额，但是，交易历史记录的优先级较低。 当在 ATM 级别上发生负载时，请求正在通过我们的系统，以确保交易有效。

交易获得批准后，我们​​将对前端数据库执行增量更新以反映该交易。 然后，我们将触发不同的过程，以警告客户该交易，更新其界面并执行安全性速度检查（检查以确保我们的客户卡的安全性不会被盗）。

当大多数数据作为批处理时，系统将处理关键更新，例如增量更新。 批处理更新的本质是海量数据与增量更新的完整汇总，增量更新仅包含已修改的数据。 为确保整个系统中数据的完整性并允许更快的更新，我们将增量更新用于流水线更新和批处理更新，其中还包括更多对数据完整性检查而言不重要的数据。 迄今为止，由于批量更新不会阻塞系统，因此我们可以安全地使用增量更新来扩展规模，而不会影响系统的稳定性或性能。

## 总结一下：

如果安全性是您业务中不可或缺的一部分，就像 ATMCash 处的业务一样，那么您应该利用虚拟机的附加安全性功能。 您将学习到它所提供的灵活性以及您的版本始终是“无恶意软件”的，让您高枕无忧。

关于公司： [ATMCash.com](http://atmcash.com/) 成立于 2005 年，是全球支付平台和在线汇款服务，服务于 150 多个国家/地区。 使用预付费借记卡代替了传统的基于第三方代理的模型和银行电汇。 没有银行帐户的接收者可以从全球超过 150 万台 ATM 机中提取资金。 [ATMCash.com](http://atmcash.com/) 通过为客户提供更多控制，省心和省钱的方式，改变了人们转移资金和向自由职业者付款的方式。

[](http://payment.atmcash.com/)

Centos 和 VMWare 的安全性？ 请查看最近十年影响 VMWare 的漏洞列表，并且不要忘记研究 CentOS 开发人员社区的规模和内部流程。
将结果与其他虚拟化系统和其他 Linux 发行版进行比较。 请。

嘿，巨魔，你为什么不以那种傲慢，模棱两可的态度停下来，并谈谈具体细节。 显示影响 ESXi4.1 的单个报告的未修补 VMWare 漏洞
与 CentOS / RedHat / Scientific / OEL 相同。

非常有趣，谢谢！

花旗银行《洛杉矶时报》的故事链接已断开。 他们可能将链接更改为此 http://www.latimes.com/business/la-fi-citigroup-hacking-20110617,0,1445324.story