私有云安全-边界安全设计实践

对于私有云环境的安全建设工作中,需要做的事务繁杂而冗长。但我们在梳理要点后,会发现非传统边界的加固工作,也是我们应该重点关注的。

边界安全概述

首先,我们需要关注私有云环境的访问控制问题,在实现一定程度的可信准入后,对各层次的边界进行鉴权和认证;另外,我们需要针对潜在外部的大流量,以及容器间的流量风暴,通过代理集群和容灾多活的方式,进行分流防御处理;当然,无论是IDC资源还是容器资源,我们都务必要做好主机加固的工作,阻止黑客进行权限提升和横向扩散。

主机加固

端口策略

出入策略

在对网络边界的安全进行设计时,我们需要对出入端口的访问控制策略,进行精细化的控制。

云环境边界:

对于云环境边界的宿主机和IDC来说,端口开放的越多,意味着攻击面会扩大。而它们被黑客尝试或者存在风险的可能性,也会越大。

所以在此逻辑基础上,这些主机需要依赖云容器管理平台和人工配置,借助类iptables的系统工具,对开放的端口实行最小化原则,同时也要对所有的端口进行严格的认证控制,保障基础的传统边界控制。

安全域隔离边界:

至于云环境网络隔离区,则相对来说没有没那么严格。在不同的服务之间,本身可能会存在流量交互,所以进出口规则会比较复杂,变动也会相对来说更多,如果同样采用最小化策略,可能会对业务带来比较多的困扰。

但是,对于网络隔离区的出入策略,对于端口控制,也是需要做好认证和鉴权的,这块儿的内容也需要云管平台去做统一的配置管理。

流量监控

对于端口出入的流量,我们除了做好异常流控,保证网络稳定以外,也需要对其中的流量进行监控检测。

在黑客通过手段获取了云环境内主机的临时权限后,可能会尝试横向移动或者后门反弹,抑或直接进行数据拖取。在这种情况下,对于端口流量的监控就显得尤为重要了。

在监控到端口流量异常后,安全运营中心(SOC)可以通过行为联动进行分析告警,及时阻断隔离可能沦陷的机器的访问控制。

攻击阻断

边界WAF

在私有云环境提供对外的WEB服务时,对于外部用户可触达的范围,是需要提供WAF保护的。

在针对这部分内容的防御上,主要是针对传统URI进行访问核查,以及对API的访问控制。

其中对于接口的访问频次和流量内容,是否存在异常,都是边界WAF需要关注的。

这里显然不建议在安全域隔离边界进行WAF部署,我们应该专注对云环境边界的主机(如Nginx层)进行流量收口阻断控制,这样是相对合适的做法。

边界防火墙

对于边界防火墙的话,可以对私有云网络的内外流量进行交互限制,限制异常流量的出入。

就部署的优先级来看,是私有云边界优先于安全域隔离边界。

我们也可以在云环境边界,尝试部署硬件防火墙,再在安全域边界通过软件防火墙的形式进行补充,当然具体实施要看情况而定。

在实际部署的过程中,我们可能会遇到预算有限、业务复杂性较高、网络稳定性要求高等多重问题困扰。

所以我们需要在保障最低安全标准的情况下,对相关安全能力逐步进行建设和方案优化。

HIDS

在边界主机上,我们部署HIDS的同时,进行日志的留存分析也是很有必要的。

在入侵事件发生的事前和事中,我们可以通过内网态势感知(日志流量的监控联动),对攻击进行拦截阻断。

而边界主机上的HIDS的监控告警和相关安全日志,能帮助安全运维人员更好的治病于腠理。

另外需要强调的一点,日志最好统一上传到日志分析中心(比如ELK或者Splunk),以免被拿到权限的黑客清除入侵痕迹。

分流防御

对于进入私有云环境的流量,我们首先需要做好流量控制,防止内部脆弱的网络出现稳定性故障。

负载均衡SLB:

负载均衡(Server Load Balancer)是将访问流量根据转发策略,分发到后端多台机器的流量分发控制服务,这是在流量出入口实施分流控制的常见做法。

比如在云环境边界的Nginx集群接受了用户的访问请求后,经过流量控制检测,如果没有问题会继续向后分发到真实主机,经过逻辑处理后跟数据主机集群进行交互,最后把结果再反馈给Nginx集群,形成完整的访问闭环。

这个问题其实更偏向于运维的内容,而非安全主要关注的点。但它又在对外防御流量攻击(Dos和CC)上,会起到不可或缺的作用。

CDN防护和流量清洗:

CDN防护和流量清洗(类比云堤的黑洞),这些概念其实应该归类于混合云的范畴了。

如果想要在私有云环境里完成独立的防护和清洗,先不论实现效果的差异,我们需要注意下面几点:

  • 静态服务器集群:主要功能是静态资源托管,这是完成内网CDN替代的关键。不过混合云使用的CDN本身是可以隐藏真实IP的,这能在一定流量上限范围内,防止外部流量打穿从而泄露真实主机。

  • 高防硬件防火墙清洗:如果不能把流量导向到各大云厂商进行清洗后回流,那高标准的硬件边界防火墙是必要的。否则极端情况下,会直接导致业务瘫痪。

  • 高吞吐量的带宽:这也是高稳定性业务必须要具备的基础,它能支持我们在对入口流量进行清洗的同时,还能稳定的对外提供访问。

访问控制

在私有云环境里的边界,通过多维度进行准入访问控制,也是我们需要重点关注的内容。

IAM认证

IAM(身份和访问管理)通常负责用户需要访问的各种系统中的身份生命周期管理。简单来说,分为身份、认证、授权三个大模块。这个无论在边界访问控制,还是在纵深防御的建设上,我们都会重点提及。

在私有云边界入口,有试图对内部发起访问的行为时时,我们需要对其属性和角色进行合法性校验,再对其进行细致的访问控制。

身份(身份生命周期管理):

这块儿的内容是企业关注的重点之一,在员工入职、角色变更、离职等单一流程线之外,其实也涉及到了复杂的关联变化。

认证(身份认证):

这点我们可以采用多种方式进行,比如token、签名秘钥、或者多因子认证等等。

而针对用户身份进行鉴别准入时,我们可能会考虑到多维度的内容,比如IP、用户指纹、设备指纹等等。

授权(权限分配):

这是IAM安全管控的核心,确保正确的人在正确的时间,动态地获得正确的访问权。

从概念上来讲,PBAC是当前和未来的IAM最佳授权方法,因为PBAC结合了RBAC和ABAC的最佳特性。

落地补充:

对于私有云落地实施来讲,部分云厂商给的采购解决方案里,管控平台统一为未来接入的系统,预留了IAM管控方案,我们可以少操一点心。

但如果如果在中后期独立研发、采购的系统,或者本身就是自己组建的私有云环境,则需要通过设计接口和相关改造方案,尽快接入统一的IAM体系。

我们在私有云网络组建前期,需要定制和遵循基础的安全原则和方针路线,这能在一定程度上,减少后期改造和维护的成本。

API网关

针对API的细粒度访问控制来讲,我们可能会借助平台,在其间扮演网关的角色进行管控,我们主要关注下面几点:

API全生命周期管理:

涵盖API的完整生命周期管理功能,可随时回滚指定环境到特定版本。

API流量控制:

细致精确的流量控制,用户可根据自身业务对API服务进行流量配置,精确到秒级请求过滤和控制,避免突发高流量,导致后端服务出现过载。

API认证安全:

在API访问时进行代理认证,保障不出现横向和纵向的越权访问。

落地总结:

这些工作的进行,一般是基于平台进行第三方管控的。

但实际情况是,我们的系统代码里可能为了调试和兼容,不用强行要求认证也能进行访问。所以针对这些情况的治理,也是我们需要特别思考的。

可信原则

在私有云建设中,由于我们需要遵循政策,做到IaaS和PaaS层面的安全合规,实现一定程度可信链路。

而不是一味追求零信任,从而真实的优化我们的安全管理工作。

流量可信:

首先在日常的私有云管理中,每日管理员操作的时段是有限的,操作行为也是有限的,所以剩下的都是自动化运维的行为。

剔除这部分流量后,剩下的异常流量行为审计,可以在自动化的分析下比较明显的突显出来,最终将减少我们溯源和应急所耗费的精力。

账号可信:

在接入的账号里,管理级别权限的账号数量和操作行为应该做到最小化,细节操作应该更多的去依赖子账号。

另外,针对租户内子账号的具体角色绑定,也需要进行细致配置核查,坚持实现权限最小化,防止错误配置导致事故的发生。

边界隔绝:

私有云由于其合规的特殊性,一般要求不能直接接入互联网边界。在这种情况下,我们对于私有云IDC数据流量是可控的,进出的数据可以做旁路和代理前置监控。

另外,这种情况下一般也不能接入VPN和外部专线,即使需要实现异地多活进行容灾,可能也需要独立运维进行支持,不可一概而论。

终端可信:

在我们在接入平台进行运维的时候,需要尝试遵循一致性原则,通过EUC(终端用户上下文)ticket,多维度证明初始请求者(original requester)的身份。

我们在实践中颁发凭证时,可以尝试把设备和服务请求进行分别绑定,使得服务间授权后能完成互相信任。

这样一来,即使出现了事故我们需要溯源,定位也会更加精确迅速。

服务可信:

当不同的服务间进行RPC通信时,本身应该遵从Service Access Policy(服务访问策略),Service Mesh服务网格技术(比如Istio)能帮我们做好这点。

在实际应用中,即使在同一租户内的不同微服务之间,默认不应该保持信任,需要其他的安全控制:例如认证和加密。

同时,向微服务的转变,给我们提供了一个对传统安全模型进行重新思考的机会。

参考文章

互联网边界防火墙

阿里云负载均衡SLB 详解

网络安全架构 | IAM(身份访问与管理)架构的现代化

某医院智慧医疗网络安全项目案例(DMZ区域建设解决方案)

[译] BeyondProd:云原生安全的一种新方法(Google, 2019)