亚马逊AWS官方博客

构建云上勒索病毒防护体系,轻松保护数据完整性

最近几年,勒索病毒成为许多企业安全管理者谈之色变的话题。从早期的WannaCry,到最新的GlobeImposter,各种勒索病毒以及其变种对企业的数据完整性保护提出了极大的挑战,其中针对制造业、政府、医疗等行业的攻击尤其猖獗。为了有针对性的保护我们的数据,我们先来看一下勒索病毒攻击的典型过程。

勒索病毒典型过程解析

勒索病毒顾名思义它是病毒(或恶意软件)的一种。和其他病毒类型一样,它往往是先由内部网络中的一台主机感染,然后由这台感染的主机扩散到整个企业的内部网络其他主机上。最常见的攻击第一台主机的方式是通过钓鱼邮件或者密码暴力破解,一旦成功,攻击者会尝试利用系统或软件漏洞通过内部网络进行快速病毒复制和扩散。一个新的趋势是攻击者会优先搜寻并加密您内网中的备份文件(.bak),包括各种文件服务器上或者备份系统中的备份数据,从而使您无法恢复数据。

 

AWS云上安全视角

AWS云上安全采用云采用框架(Cloud Adoption Framework),将安全控制措施分为:

  • 指导性控制机制

旨在围绕运营环境构建管理、风险和合规模型。

  • 预防性控制机制

旨在保护您的工作负载并减少威胁和漏洞。

  • 检测性控制机制

可以让您在 AWS 中部署的项目的运行情况变得可见、透明。

  • 响应性控制机制

旨在纠正可能偏离安全基线的行为。

 

AWS云上勒索病毒防护之指导性控制机制

  1. 构建企业安全管理体系

同在数据中心一样,首先您需要在企业内部制定一套安全管理制度,定期开展员工信息安全意识培训,特别是针对钓鱼邮件、违规网站文件下载、外部存储设备的使用等方面。可以定期进行钓鱼邮件的内部测试,了解内部员工的安全意识水平,常用的工具包括Kali Linux集成的Swaks,以及Phishing Frenzy,PhishSim等。

  1. 制定AWS云上最小安全基线,规范系统安全配置

针对勒索病毒的感染和扩散的特点,制定AWS云上安全最小基线,规范云管理员的日常运维配置。

 

AWS云上勒索病毒防护之预防性控制机制

病毒的防护重在预防,勒索病毒也如此。AWS上许多原生的服务以及安全合作伙伴的解决方案帮助客户更好的预防勒索病毒。

  1. 补丁管理

勒索病毒往往利用操作系统的安全漏洞,在内部网络中快速扩散。因此,预防勒索病毒大面积爆发最有效的方法就是及时安装系统补丁。AWS Systems Manager 可以帮助您在大量 Amazon EC2 或本地实例中自动选择并部署操作系统和软件补丁。下面为大家演示如何利用AWS Systems Manager进行补丁的统一管理。初始配置Systems Manager请参见:https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-setting-up.html

  • 创建补丁基线

在AWS Systems Manager – Patch Manager中,选择Create patch baseline

输入基线名称、操作系统类型、设置补丁审批规则等参数后,提交创建。

  • 设置实例的patch group

在AWS Systems Manager – Managed Instances中,选择您需要安装补丁的实例,在View details – Tags中设置标签Patch Group。

  • 添加patch group到补丁基线patch baseline中

回到Patch Manager,选中刚才创建的补丁基线,选择Actions – Modify patch groups。

将刚才设置的patch group的值加到baseline中。

  • 创建Maintenance Window

在AWS Systems Manager – Maintenance Window中,创建一个新的维护窗口。

设置Schedule各项参数,并创建维护窗口。

选中创建的维护窗口, 选择Actions – Register targets,注册您需要打补丁的实例。

选中创建的维护窗口, 选择Actions – Register Run command task。设置Command document为 AWS-RunPatchBaseline,设置Priority,选中之前设置的target group id,关联role权限,设置rate control等参数。具体各参数设置参见:https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-patch-mw-console.html

  1. 实例远程管理

TCP 22和TCP 3389是管理员们最常用的远程管理端口。勒索病毒攻击者往往会使用这些端口进行密码暴力破解,从而拿到主机的用户权限,并植入勒索病毒。这种方式也同样适用于内网中。您可以选择AWS合作伙伴中的商业化堡垒机来避免实例直接向陌生地址暴露上述端口,您也可以选择AWS Systems Manager- Session Manager来实现主机的远程管理。

在AWS Systems Manager- Session Manager 中,点击Start Session,选择需要管理的主机,Start Session进入主机命令行界面进行日常操作。

 

AWS云上勒索病毒防护之检测性控制机制

  1. 安全合规检查

在指导性控制机制中,我们定义了AWS云上最小安全基线,我们应该如何来检测并确保安全基线的落实呢?AWS Config rules为我们提供了强大的自动化合规工具,我们可以通过这个服务,将我们原来指导性的控制机制通过Compliance as Code的方式,变成自动化的检测性控制机制。之前我们提到过,勒索病毒的一种攻击途径就是通过远程管理端口使用暴力破解的方式,进入到我们内部网络中,针对这个风险,应该在安全基线中要求“实例禁止使用Public IP”。下面我们通过这个User Case为大家展示如何通过AWS Config rules来持续监控这项安全基线要求。

在AWS 托管规则中,我们没有找到对应的规则,因此需要创建自定义的Config规则。这里推荐使用Github上开源的开发套件aws-config-rdk来部署。RDK环境准备,参见:https://github.com/awslabs/aws-config-rdk

  • 编写python脚本

您可以自己编写Lambda脚本,或者使用github上开源的已有Config rules脚本。这里我们直接将别人写好的脚本copy到rdk目录下。脚本地址:https://github.com/awslabs/aws-config-rules/tree/master/python/EC2_INSTANCE_NO_PUBLIC_IP

  • 设置AWS Profile

在您的CLI中设置AWS Profile,具体可参见https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html

  • 部署Config rules

在RDK目录下输入rdk –profile=china deploy EC2_INSTANCE_NO_PUBLIC_IP进行部署。

  • 验证

在Lambda函数中,可以看到使用RDK自动创建的Lambda函数。

在AWS Config规则中,可以看到RDK部署的Config规则。

点击规则名称,我们可以查看到不合规的具体资源情况。

  1. 构建安全日志SIEM系统

除了安全合规检查以外,您还选择购买AWS合作伙伴的安全日志SIEM类产品,帮助集中管理和展示当前安全态势。通过对类似防病毒软件产品日志、系统安全日志等的分析,及时发现潜在的勒索病毒,并在其扩散前进行响应。对于使用AWS Global的用户,您也可以使用AWS Security Hub帮助您对当前的安全态势进行集中监控。

 

AWS云上勒索病毒防护之响应性控制机制

一旦被勒索软件感染,最有效的解决手段是从备份中恢复数据。因此,那些存在主机上的备份文件成为了勒索病毒最主要的攻击目标,如何有效保护备份文件给用户带来了新的挑战。AWS采用快照的方式对块存储进行备份,这些备份被存储在S3对象存储上,能够帮助您解决备份的安全性问题。与此同时,AWS也推出了AWS Backup服务,能够帮助您集中的管理备份策略。目前支持的服务有Amazon EFS, EBS, Storage Gateway, DynamoDB以及RDS。

我们以EBS的备份和恢复为例:

  • 创建Backup Vault

Backup Vault用于集中管理您的备份。在AWS Console中选择AWS Backup – Backup vaults – Create Backup vault

输入Backup vault名称,选择用于加密Vault中备份的KMS master key (目前仅支持对Amazon EFS的backup加密),输入标签;

  • 创建备份计划

在AWS Console中选择AWS Backup – Backup plans – Create Backup plan,创建一个新的Backup plan以及Backup rule,关联到之前创建的Backup Vault。具体参数配置参见:https://docs.aws.amazon.com/aws-backup/latest/devguide/creating-a-backup-plan.html

选择Assign resources并关联需要备份的资源。

  • 备份恢复

在AWS Console中选择AWS Backup – Protected resources中,选中您需要恢复的AWS Resource ID;

选中需要恢复的备份,并点击Restore,确认参数后,选择Restore backup;

等待片刻后,备份恢复成功。

 

最后也是最重要的

尽可能的使用AWS云原生的托管服务,例如RDS、DynamoDB等。因为AWS采用责任分担模型来明确用户和AWS之间的安全责任,当您选择使用这些服务时,您将不再需要将精力放在如何给操作系统安装补丁,如何保护操作系统的密钥,是否有防病毒措施等安全问题上,这些工作将由AWS为你负责,您可以更放心的在AWS上存放您的数据,免受勒索软件的困扰。

 

参考:https://aws.amazon.com/blogs/mt/how-to-develop-custom-aws-config-rules-using-the-rule-development-kit/

 

本篇作者

陈晓东

亚马逊 AWS 专业服务团队云安全咨询顾问。负责企业级客户的云安全咨询、安全架构设计和技术实施。在信息安全领域拥有多年架构设计、运维、咨询和团队管理经验,对公有云安全、容器安全、DevSecOps等有深入的研究和热情。