一元加速器登录入口

新闻动态

多层安全性针对网络管理应用 安全博客

多层安全性在网络管理应用中的实践

关键要点

在这篇文章中,我们将探讨如何在AWS托管的网络应用程序中实施多层安全性。这包括:

在网络边缘、小型虚拟私有云VPC、负载均衡器、计算实例、操作系统、应用程序和代码层面实施安全控制。通过AWS服务创建分段的架构,限制对管理功能的访问。采用自动化和基础设施即代码IaC实践,减少人类介入引起的错误。

在本帖中,我将展示如何在托管在AWS的网络应用的多个层次上应用安全性。

在所有层面应用安全性 是AWS WellArchitected Framework 的安全支柱的一项设计原则。它鼓励您在网络边缘、虚拟私有云VPC、负载均衡器、计算实例或服务、操作系统、应用程序和代码中实施安全性。

许多流行的网络应用程序仅设计了一层安全性:登录页面。这个登录页面背后通常有一个内置的管理界面,直接暴露在互联网之上。这些应用程序的管理界面通常有简单的登录机制,经常缺乏多因素身份验证MFA支持,这可能使其成为威胁攻击者的目标。

内置的管理界面在希望实现多个服务器的水平扩展时也会带来问题。管理界面在运行应用程序的每个服务器上都可用,因此会产生大量的攻击面。由于管理界面会自动更新其服务器上的软件,您必须在多个实例之间同步更新。

多层安全性旨在确定或创建架构中各部分的隔离边界,并最小化允许跨越每个边界的内容。为您的架构增加更多层次,您可以在每一层引入额外的控制,创建更多可以实施安全控制的边界。

在这篇文章的示例应用场景中,您有机会添加许多额外的安全层级。

多层安全示例

本文展示了如何使用Run WebAdministered Apps on AWS示例项目来帮助解决这些挑战,通过实施一个水平可扩展的架构与多层安全性。该项目构建和配置许多不同的AWS服务,每个服务设计的目的是为不同的层提供安全性。

通过运行此解决方案,您可以产生一个分段的架构,将这些应用的两个功能分开,分别为不具特权的面向公众的视图和管理视图。这个设计限制了对web应用管理功能的访问,同时创建了一批不具特权的实例以便于应用的规模服务。

图1总结了此解决方案中的不同服务如何在以下多个层面上提供安全性:

在网络边缘在VPC内部在负载均衡器在计算实例上在操作系统内部

深入了解多层架构

下图显示了由Run WebAdministered Apps on AWS部署的解决方案架构。该图展示了在此解决方案中部署的服务在不同AWS区域中的部署方式,以及请求如何从应用程序用户流动到不同的服务层。

多层安全性针对网络管理应用 安全博客

接下来,我们将深入探讨架构中的每一层,看看如何在每一层添加安全性。但在讨论技术之前,让我们考虑基础设施是如何构建和管理的一切归根于人。

第一层 人员安全

安全的第一步源于您的团队和组织的操作实践。您的“人员层”如何构建和管理您的基础设施,对于您的安全态势有着显著的影响。

WellArchitected Framework的安全支柱的一项设计原则是自动化安全最佳实践。这有两个好处:一是减少人力的努力,二是防止资源处于不一致或配置错误的状态。当人们使用手动流程完成任务时,出现配置错误和遗漏步骤是常见的情况。

自动化安全性,减少人力努力的最简单方法是采用AWS为您管理的服务,例如Amazon关系数据库服务Amazon RDS。使用Amazon RDS,AWS负责操作系统及数据库软件的补丁更新,并提供工具帮助您轻松备份和恢复数据。

您可以通过使用托管的AWS安全服务来自动化和整合关键的安全功能,例如Amazon GuardDuty、AWS Config、Amazon Inspector 和 AWS安全中心。这些服务提供网络监控、配置管理以及对软件漏洞和意外网络暴露的检测。随着您的云环境的规模和复杂性的增长,自动化安全监控显得至关重要。

采用基础设施即代码IaC是您可以遵循的最佳实践之一,以自动化基础设施的创建。通过使用IaC定义、配置和部署您使用的AWS资源,您降低了构建AWS基础设施时出现人为错误的几率。

采用IaC可以帮助您提升安全态势,因为它将应用代码开发的严格性应用于基础设施的配置。在源代码控制系统如AWS CodeCommit中存储基础设施定义生成可审计的文档。借助版本控制,您可以在架构不断演变的过程中跟踪所做的更改。

您还可以在IaC项目中添加自动测试,以确保您的基础设施与组织的安全政策保持一致。如果您需要从灾难中恢复,可以从您的IaC项目中重新部署整个架构。

一元加速器登录入口

另一种针对人员层的纪律是应用最小权限原则。AWS身份与访问管理IAM是一个灵活且细颗粒的权限系统,您可以使用它为您的解决方案授予所需的最小操作集。IAM控制用户和计算机的访问,我们在本项目中使用它来为计算实例授予所需的最低权限。

您还可以采用其他IAM最佳实践,例如使用临时凭证而非长期凭证例如访问密钥,定期审查并删除未使用的用户、角色、权限、策略和凭证。

第二层 网络保护

互联网是公共的,因此不可信,您必须主动应对来自威胁行为者和网络级攻击的风险。

为减少分布式拒绝服务DDoS攻击的风险,本解决方案使用AWS Shield在网络边缘提供托管保护。AWS Shield标准已自动为所有AWS客户启用,无需额外费用,并旨在提供对常见网络和传输层DDoS攻击的保护。有关针对应用程序攻击的更高级别保护,请订阅AWS Shield高级。

Amazon Route 53解析解决方案使用的主机名,并将这些主机名作为别名映射到Amazon CloudFront分发。Route 53是一个健壮的全球分布式高可用DNS服务,能检查请求以保护其免受特定于DNS的攻击,例如DNS放大攻击。

第三层 请求处理

CloudFront同样在AWS网络边缘工作,并缓存、转换并转发传入的请求到相关的源服务,跨越低延迟的AWS全球网络。通过在CloudFront中缓存网络请求,可以进一步减少DDoS攻击对您的应用程序服务器的冲击。

该解决方案配置CloudFront在源请求内添加共享密钥,内含自定义头部。一个CloudFront函数将源用户的IP复制到另一个自定义头部。这些头部在请求到达负载均衡器时会被检查。

AWS WAF失败防护,阻止已知的恶意流量,包括跨站脚本XSS和SQL注入事件,这些流量会进入CloudFront。该项目使用AWS托管规则,但您也可以添加自己的规则。为了限制前台访问,仅允许特定的IP CIDR块访问,项目在网络应用防火墙上配置了一个IP限制规则。

第四层 VPC

在CloudFront和AWS WAF检查请求后,CloudFront将其转发到Amazon Virtual Private CloudAmazon VPC内的计算服务。VPC是AWS帐户内逻辑隔离的网络,您可以使用它来控制允许进出网络流量。该项目配置其VPC以使用一个私有IPv4 CIDR块,不允许通过互联网直接路由,从而在AWS上为资源创建网络周边。

Amazon Elastic Compute Cloud (Amazon EC2)实例托管在VPC内不具有从互联网的入站路由的私有子网中。通过使用NAT网关,实例可以进行必要的出站请求。这种设计将数据库实例托管在没有入站或出站互联网访问的隔离子网中。Amazon RDS是一个托管服务,因此AWS负责服务器和数据库软件的补丁更新。

该解决方案通过使用接口VPC端点访问AWS Secrets Manager。VPC端点使用AWS PrivateLink将您的VPC连接到AWS服务,仿佛它们在您的VPC内。因此,VPC内的资源可以与Secrets Manager通信而无需穿越互联网。

项目在VPC设置中配置了VPC流日志。VPC流日志捕获有关在您的VPC内网络接口的IP流量的信息。GuardDuty分析这些日志,并利用威胁情报数据来识别AWS环境中意外、潜在未经授权和恶意活动。

尽管使用VPC和子网来分段应用程序的部分是常见策略,但您仍有其他方式可以实现应用组件的分区:

您可以使用单独的VPC来限制访问数据库,并使用VPC对等连接来在它们之间路由流量。您可以采用多账户策略,以便在不同账户中应用不同的安全性和合规性控制,构建系统各部分之间强有力的逻辑边界。您可以通过使用AWS Transit Gatewayhttps//awsamazoncom/transitgateway/在账户之间路由网络请求,并使用AWS网络防火墙进行控制。

在复杂性、便利性和安全性之间总是存在权衡,因此在组件间适当的隔离级别取决于您的需求。

第五层 负载均衡器

请求被发送到VPC后,一个应用负载均衡器ALB将其处理。ALB将请求分发到基础EC2实例上。ALB使用TLS 12版本,通过AWS证书管理器ACM证书加密传入连接。

不允许对负载均衡器进行公共访问。应用于ALB的安全组仅允许来自CloudFront IP范围的镇入流量在443端口。此规则通过将区域特定的AWS管理的CloudFront前缀列表指定为安全组规则中的源来实现。

ALB利用规则来决定是否将请求转发到目标实例或拒绝流量。作为额外的安全层,ALB使用来自CloudFront的自定义头部以验证请求源是否来自CloudFront。在另一条规则中,ALB根据源用户的IP来决定应该由哪个目标组的Amazon EC2实例处理请求。因此,您可以将管理用户引导到配置为处理管理任务的实例。

如果请求不符合有效规则,ALB将向用户返回404响应。

第六层 计算实例网络安全

安全组在EC2实例周围创建了隔离边界。只有安全组规则允许的流量会到达实例。在此解决方案中,只有ALB被允许与EC2实例建立入站连接。

客户常见的做法是打开端口,或设置和管理堡垒主机以便为其计算实例提供远程访问。这种做法的风险在于,端口可能会开放至整个互联网,使实例暴露于远程访问协议的漏洞中。随着远程工作趋势的上升,生成这些开放入站规则的风险也在增加。

使用AWS Systems Manager会话管理器,您可以通过创建安全的临时连接与EC2实例进行交互,而无需堡垒主机或开放端口,利用安装的SSM代理。与您所安装的每个软件包类似,您应检查SSM代理是否符合您的安全和合规要求。要查看SSM代理的源代码,请参见amazonssmagent GitHub库。

该解决方案的计算层由两个独立的Amazon EC2 Auto Scaling实例组组成。一个组处理来自管理员的请求,而另一个处理来自普通用户的请求。通过保持职能的分离,这为系统提供了另一种隔离边界,同时有助于保护系统免受单个组件故障导致整个系统的崩溃。每个Amazon EC2 Auto Scaling组跨越多个可用区域AZs,在AZ发生故障时提供弹性。

通过使用托管数据库服务,您可以降低未主动更新数据库服务器实例以获取安全补丁的风险。托管基础设施有助于降低由于底层操作系统未及时获取安全补丁而导致的安全问题风险,以及由硬件故障导致的停机风险。

第七层 计算实例操作系统

当实例首次启动时,操作系统必须是安全的,并且当发布新安全补丁时,实例必须按需更新。我们建议使用类似于EC2镜像构建工具的工具创建不可变服务器immutable servers,并通过它进行构建和加固。与其在运行中的实例上打补丁,不如在更新的Amazon机器镜像AMI创建