云安全是公有云厂商最着力宣传的卖点之一,但是对于企业用户而言,过于信任和盲从云服务的默认配置是一件非常危险的事情,企业的安全架构师及云安全审核人员需要对云计算初始环境的安全漏洞和配置错误进行全面评估和调优。
以下,我们列举微软Azure云计算环境的TOP20常见账户和配置漏洞(初始默认配置),对企业选择其他类似公有云服务也有一定借鉴意义。
1. 可从互联网访问的存储账户
Azure存储账户的默认设置是允许从任何地方(包括互联网)进行访问。这样的设置自然会带来潜在的未经授权的数据访问,数据泄漏,泄露等风险。
始终采用最小特权原则,并仅从选定的IP地址,网络范围或vnet(Azure虚拟网络)子网限制对每个存储账户的访问。
2. 存储账户的不安全传输
通过此设置,可以强制执行向存储的安全(加密)数据传输。这意味着任何通过不安全协议(例如HTTP或SMB)但未加密的请求都将被拒绝。
Azure存储账户的默认设置是接受任何协议,这不可避免地使云存储容易受到窃听攻击。位置良好的攻击者可能会窃听通信,并获得对敏感或私人信息的访问权。
显而易见,应该为所有存储账户启用加密数据传输。
3. 特权用户缺乏多因素身份验证
对任何Azure资源具有管理或写入权限的任何用户都应该要求多因素身份验证(MFA),包括以下角色:
- 管理员
- 服务共同管理员
- 订阅所有者
- 贡献者
使用MFA保护这些高特权账户非常重要,因为它们极有可能成为对手的攻击目标。
启用MFA后,攻击难度大增,从而大大降低了风险。
请注意,Microsoft Azure支持各种MFA解决方案和选项,其中一些是免费的,其中一些是根据高级计划按订阅提供的,例如:
- Azure多重身份验证
- 条件访问策略
无论如何,至少应对所有管理用户强制执行某种MFA。
4. 缺少针对新加入设备的多因素身份验证
应该要求所有用户提供第二种身份验证方法,然后才能将设备加入Active Directory。
这是为了确保防止恶意设备通过被入侵账户被添加到目录中。
风险在于,攻击者可能将不受管控、不合规的恶意设备加入企业网络,然后用于访问企业的应用程序和其他资源。
5. 免费版Azure安全中心
与免费(基础)版相比,付费增强版Azure安全中心增加了以下一些重要的安全功能:
- 威胁检测和威胁情报源
- 异常检测,行为分析和安全警报
- 能识别新型攻击和零时差攻击的机器学习功能
- 整个基础架构的漏洞扫描和漏洞管理
- 高级访问和应用程序控制可阻止恶意软件和其他网络攻击
上述这些功能无疑可以帮助抵御某些网络攻击,尽管成本增加,但在每个生产环境中都应启用这些功能。
6. 虚拟网络的基础DDoS保护
与基础DDoS保护相比,增强的标准DDoS(分布式拒绝服务)保护提供了以下附加防御措施:
- 近实时遥测和交通监控
- 持续的攻击警报和通知
- 自适应调整和流量分析
- 详细的攻击分析
以上措施可以帮助防御基于网络的DDoS攻击。在每个生产环境中的所有重要vnet上都应启用标准 DDoS防御服务。
唯一的缺点是,这是一项高级功能,因此需要额外付费。
7. 未加密的操作系统和数据磁盘
不用说,磁盘加密应该成为每个生产环境、工作站、服务器以及云环境的标准配置。
在云环境中,有时将其称为“静态加密”,Azure支持Windows和Linux VM的磁盘加密:
- 在Windows环境,使用BitLocker
- 在Linux环境,使用DM-Crypt
根据Azure文档,磁盘加密不应影响性能,也不会增加任何成本,因此,没有任何理由不为所有磁盘启用加密,这包括:
- 操作系统磁盘
- 数据盘
- 未连接的磁盘
8. 安全中心中缺少电子邮件通知
在Azure云上运行生产环境而不在Azure安全中心中配置电子邮件通知可算得上是一个重大安全事故。
Azure安全中心应始终配置有电子邮件地址和/或电话号码,以便接收有关事件的通知,尤其是,当特定资源受到威胁时。
邮件通知应当在每个环境中都配置,并始终以很高的优先级进行监视。
9. Azure Monitor中缺少日志警报
Azure的监控和警报服务允许创建自定义警报,以针对Azure云中部署的服务的特定需求量身定制。
如果使用相关的警报条件对其进行了适当的配置,则它可以提供环境中问题的早期指示,而不是依赖于内置的Azure安全功能。
因此,在Azure体系结构审阅中,总是希望看到与环境相关的定义明确的自定义警报列表。
以下是我们可以使用Azure监控警报发出警报的示例列表:
- 指标值
- 记录搜索查询
- 活动日志事件
- 基础Azure平台的运行状况
- 测试网站可用性
10. Azure NSG入站规则配置为ANY
在NSG(网络安全组)中定义防火墙规则时,常见的错误配置是协议、源或目标配置为“ ANY”。
这种做法可能会导致流量超出预期流量的风险。对于攻击者而言,这些看似良性的配置常常他们入侵的突破口。
最佳做法是始终坚持最小特权的原则。仅允许具有明确定义的源和目标地址的特定协议的方式定义防火墙规则。
请注意,强烈建议在具有应用程序感知能力的Azure中启用第7层防火墙。第7层防火墙在整个Azure网络(包括应用程序)中提供增强的安全功能。
11. 公共IP地址配置为Basic SKU
与基础(Basic)SKU相比,在Azure中将公共IP地址配置为标准SKU(库存单位)具有以下优点:
- 真正的静态IP地址
- 默认安全,对入站流量不开放
- 允许区域冗余和分区(区域,地理等)
- 支持将来的扩展
对于基础SKU,主要的安全问题是总体开放性。除非由防火墙特别保护,否则默认情况下,分配有基础SKU的公共IP地址的系统将完全暴露给外界。
不用说,这在任何生产环境中都是大忌。在生产环境中,所有公共IP地址都应配置为Standard SKU,并应充分理解其网络流量。
请注意,一旦以任何一种方式配置了IP地址,就无法更改此设置。因此,解决此问题可能需要规划停机和迁移时间。
12. 面向公众的服务的动态IP地址
这本身并不是真正的安全漏洞,但是对于任何面向公众的系统,这都是一个严重的错误配置。、如果IP地址是动态的,则意味着它可以在任何时间更改,例如在重新启动或DHCP租约续订之后。而且,当它出现在公开可用的系统上时,它可能会破坏很多东西,例如:
- DNS记录
- 监控和日志警报
- 系统集成和互操作性
这可能会导致不必要的可用性问题(例如DoS)。因此,始终强烈建议对任何面向公众的服务使用静态IP地址。
13. 可匿名读取访问的Blob存储
Azure Blob存储是在云上共享数据的强大而便捷的方式。它支持以下3个访问控制(级别)选项:
- 私人(无匿名访问)
- Blob(仅针对Blob的匿名读取访问权限)
- 容器(容器和Blob的匿名读取访问权限)
将访问级别配置为后两个选项(匿名读取访问)会带来未经授权访问数据,数据泄漏,渗漏等安全风险。
在生产环境中,应将所有Blob存储都设置为私有,禁止任何匿名访问。
14. Azure AD中的访客用户数量很高
Azure Active Directory(AD)中的访客用户通常是外部用户(例如供应商,承包商,合作伙伴,客户和其他临时角色)创建的账户。
他们只是外部人士,因此,请尽量减少他们的数量。
问题在于,随着时间的流逝,一些企业的访客用户不断堆积,往往导致一些访客失效后忘记撤消其访问权限,这是非常危险的。
访客账户往往会成为攻击者在网络环境中的立足点,可能导致特权提权以及Azure云环境中的其他问题。
因此,应始终检查访客账户的数量。实际上,CIS Benchmark甚至建议完全不使用访客用户。
这是我们使用Azure CLI查找所有来宾用户的方法:
- az ad user list --query "[?additionalProperties.userType=='Guest']"
15. Azure AD中不安全的访客用户设置
在Azure Active Directory中拥有访客账户是一回事,为他们提供高特权是另一回事。
默认情况下,与完整功能的内部成员用户相比,访客的特权非常有限,但是在Azure AD中,也可以将访客配置为具有与成员用户相同的特权!
通过外部协作设置(例如上图所示)进行配置。上面描述的配置将授予访客用户以下权限:
- 枚举所有其他用户和组(包括成员)
- 读取所有已注册的企业应用程序的属性
- 从外部邀请其他用户加入组织
从安全的角度来看,这当然是非常不安全的,应该尽快更改,除非有非常强硬的理由。
最后,建议完全取消访客账户。
16. 对Azure AD管理门户的无限制访问
Azure AD管理门户包含大量敏感信息,默认情况下,Azure AD下的任何用户都可以访问它。
这意味着可以作为标准(成员)用户登录到https://portal.azure.com/并浏览,查看几乎所有设置,其他用户的详细信息,组成员身份,应用程序等。
这是一个重大安全风险,因此应加以限制。
17. Azure身份保护功能被禁用
Azure身份保护为Active Directory中的用户账户增加了一层额外的保护,以减轻登录(登录)风险,例如:
- 用户的异常行径
- 恶意软件链接的源IP地址
- 用户账户泄漏
- 密码喷射攻击尝试
- 匿名源IP地址(例如Tor)
这些都是是有助于保持Azure AD环境更安全的功能,因此强烈建议启用此功能。
唯一的缺点是,这是一项高级功能,会增加额外的费用。
18. Azure Network Watcher被禁用
Azure Network Watcher提供了至关重要的诊断和可视化工具,用于了解和解决Azure网络中的网络问题。
它还为NSG(网络安全组)Azure防火墙提供网络流分析,包括与特定VM之间的数据包捕获以及许多其他诊断功能。
默认情况下此功能被禁用,建议用户对所有区域都启用此功能。
我们还可以通过以下方法使用Azure CLI检查Network Watcher的状态:
- az network watcher list
19. 未对所有Web应用程序流量强制执行HTTPS
从安全的角度来看,对于内部和外部(公开)的所有Web应用程序,都应仅接受安全(加密)HTTPS连接,这也是当今的安全标准。
HTTPS提供了非常必要的安全性,机密性和私密性。
启用上述设置后,对给定Azure Web服务的每个传入的不安全(纯文本)HTTP请求都将重定向到其HTTPS端口。
应该为所有Azure Web服务进行HTTPS配置。
对于Azure中的数据库,应实施相同的策略,例如:
- MySQL服务器
- PostreSQL服务器
所有服务器都应启用“强制SSL连接”选项。
现在,您可能想知道应该选择哪个TLS?
NIST(美国国家标准技术研究所)和PCI(支付卡行业)都不再建议TLS版本1.0和1.1版本。因此,应始终至少选择TLS 1.2版。
20.Azure安全中心中的监视策略
CIS基准建议启用Azure安全中心的以下监控策略:
计算和应用程序:
- 系统升级
- 操作系统漏洞
- 端点保护
- 磁盘加密
- 漏洞评估
- 自适应应用程序控件
网络:
- 网络安全组(NSG)
- Web应用程序防火墙(WAF)
- 下一代防火墙(NGFW)
数据:
- 储存加密
- SQL审核
- SQL加密
在每个生产环境中都应启用所有这些策略(将其设置为“ AuditIfNotExists”)。这些策略提供了对Azure云组件的基本安全监视。
启用这些策略时,还应同时启用“自动设置监视代理程序”:
这将确保在环境中部署的所有现有虚拟机以及将来创建的任何新虚拟机上预配置Azure监视代理。
总结
评估Microsoft Azure云环境的安全状况并非易事。与任何其他云技术一样,微软的Azure是一个复杂的话题。要安全地进行设置,需要付出巨大的努力,需要了解多个技术领域,并且需要了
Azure生态系统。您需要深入了解许多领域,而不仅仅是Azure云本身。
云安全是一个动态话题,因为整个云计算生态系统不断变化和发展,引入新功能,适应新要求等。
希望本文至少能对Azure云安全审计领域提供一些有用的见解,并为您审计其他公有云安全时提供一些实用信息,提高云基础架构的安全性。
【本文是51CTO专栏作者“安全牛”的原创文章,转载请通过安全牛(微信公众号id:gooann-sectv)获取授权】