什么是云安全?
是指保护云计算环境中的数据、应用程序和基础设施免受未经授权的访问、攻击、泄露、破坏和其他威胁的一系列措施。那么提到云安全,我们也不得不提到云计算了,因为云计算的本质是共享资源,涉及到多租户和虚拟化等技术,而这些技术也带来了一些安全问题,如数据隔离、身份认证、访问控制、数据加密、漏洞管理等。
云安全需要综合考虑不同层面和不同环节的安全问题,包括物理层、网络层、主机层、应用程序层、数据层和用户层等。常见的云安全措施包括数据备份、数据加密、访问控制、入侵检测、漏洞扫描、安全审计、灾备恢复等。云安全也需要用户和云服务提供商共同承担责任,建立起合作和信任的关系。
但是像现阶段,很多小公司的数据上云之后,一般该公司都是没有专门的运维人员的,一般都是开发也把运维干了,而开发人员也可能存在安全意识问题,如身份验证控制不当、配置错误、数据库设置等等,这些操作都会使得服务器遭到攻击。
云安全的分类
我个人感觉主要是分两种
1. 云服务
2. 云原生
如果从不同的角度去分类的话可以大致分为以下几种
按安全层次划分:
• 物理层安全:主要涉及云数据中心的安全措施,如物理访问控制、环境监测、电源管理等。
• 网络层安全:主要涉及云计算网络的安全措施,如网络隔离、流量监测、入侵检测等。
• 主机层安全:主要涉及云主机的安全措施,如操作系统加固、漏洞管理、防病毒等。
• 应用程序层安全:主要涉及云应用程序的安全措施,如代码审计、访问控制、数据加密等。
• 数据层安全:主要涉及云数据的安全措施,如数据备份、数据加密、数据隔离等。
按云服务类型划分:
• IaaS 安全:提供基础设施的安全控制和管理。
• PaaS 安全:提供应用程序的安全控制和管理。
• SaaS 安全:提供软件服务的安全控制和管理。
什么是云计算?
云计算是通过互联网提供计算资源和服务(例如计算能力、存储、数据库、软件应用程序等),而无需用户自己拥有和维护这些资源和服务的一种计算模式。云计算的基础是数据中心技术,通过虚拟化技术将计算资源抽象出来,以服务的形式提供给用户。用户可以根据需要弹性地使用和扩展这些资源和服务,无需关注底层的基础设施和运维细节。云计算的优点包括灵活性、可扩展性、高可用性、安全性和成本效益等。
什么是云服务?
云服务,顾名思义就是云上的服务,简单的来说就是在云厂商(阿里云、腾讯云)那里购买的服务。目前国内代表厂商有阿里云、腾讯云、华为云等,国外代表厂商有亚马逊、微软云、google 云等。各个云厂商对云服务的叫法都不统一,这里以腾讯云为例主要讲述一下常用的云服务与其作用。
上图可以看到腾讯云所提供的一些服务
- 对象存储(腾讯云 COS):简单来说就是一个存储服务,可以实现数据的上传、下载、删除、复制、追加等操作
- ECS(Elastic Compute Service):简单来说就是云上的一台虚拟机
- 身份和访问管理(Identity and Access Management):简单来说就是云控制台上的一套身份管理服务,可以用来管理每个子账号的权限。
云服务的攻击面
这里借火线云安全知识库的分享,如图:
这上面的总结挺全的,笔者也不再赘述了,挂个链接,大家感兴趣可以去看看
http://cloudsec.huoxian.cn/
目前新的安全问题比较多的还是一些配置不当,导致控制台或 Bucket 被接管例如:Access Key 泄露利用、配置不当利用等。
常见的泄露方式我总结有以下几种:
- APK 反编译后的配置文件
- 小程序反编译后的配置文件
- GITHUB 关键字、JS 文件、FOFA 等
- spring 未授权读取 env 或 heapdump 泄露
- 低权限的 WEBSHELL 查看网站的配置文件
- 任意文件读取漏洞读取 bash_history
- 浏览器插件 FindSomething
- debug 泄露
拿到 ak/sk 后的一些简单利用方式
第三方平台,如:行云管家
OSS/COS Browser、例如阿里、腾讯
aksk_tool
cf
可以参考我公众号的文章,链接如下:https://mp.weixin.qq.com/s/lkwz-jYM-j9VbOm-0nv42w
什么是对象存储
上文提到对象存储,在这里简单介绍一下,对象存储也称为“面向对象的存储”,英文是Object-based Storage。现在很多云厂商,也直接称之为“云存储”.不同的云厂商对它有不同的英文缩写命名。
例如:阿里云自家的对象存储服务叫 OSS
⚫ 华为云:OBS
⚫ 腾讯云:COS
⚫ 七牛云:Kodo
⚫ 百度云:BOS
⚫ 网易云:NOS
对象存储和块存储、文件存储的区别
1. 对象存储,主要操作对象是对象(Object)。存储协议是 S3、Swift 等。
2. 块存储,操作对象是磁盘。存储协议是 SCSI、iSCSI、FC。
3. 文件存储,操作对象是文件和文件夹。存储协议是 NFS、SAMBA(SMB)、POSIX 等。
以 S3 为例,主要接口命令有 PUT/GET/DELETE 等,接口命令非常简洁,没有那种目录树的概念,在对象存储系统里,你不能直接打开/修改文件,只能先下载、修改,再上传文件。
(相信大家多多少少都会遇到一些上云的站,一定可以秒懂)
对象存储中的数据组成
说到对象存储就不得不提 Amazon,Amazon S3 (Simple Storage Service) 简单存储服务,是Amazon 的公开云存储服务,与之对应的协议被称为 S3 协议,目前 S3 协议已经被视为公认的行业标准协议,因此目前国内主流的对象存储厂商基本上都会支持 S3 协议。
对象存储呈现出来的是一个“桶”(bucket),你可以往“桶”里面放“对象(Object)”。这个对象包括三个部分:Key、Data、Metadata。
➢ Key 可以理解为文件名,是该对象的全局唯一标识符(UID)
这里用阿里云为例
例如一个 URL 为 https://test.oss-cn-beijing.aliyuncs.com/flag/202305281716990.jpg,这里的 test 就是存储桶 Bucket 的名称,202305281716990.jpg 就是 Key
➢ Data 就是存储的数据本体,就不做赘述了
➢ Metadata 叫做元数据,它是对象存储一个非常独特的概念。可以简单的理解成数据的标签、描述之类的信息。
举个例子,如果对象是一张人物照片,那么元数据可以是姓名、性别、国籍、年龄、拍摄地点、拍摄时间等。
在传统的文件存储里,这类信息属于文件本身,和文件一起封装存储。而对象存储中,元数据是独立出来的,并不在数据内部封装。元数据的好处非常明显,可以大大加快对象的排序,还有分类和查找。
操作使用 Amazon S3 的方式也有很多,主要有以下几种:
• AWS 控制台操作
• AWS 命令行工具操作
• AWS SDK 操作
• REST API 操作,通过 REST API,可以使用 HTTP 请求创建、提取和删除存储桶和对象。
什么是云原生?
云原生是基于分布部署和统一运管的分布式云,以容器、微服务、DevOps 等技术为基础建
立的一套云技术产品体系。
Kubernetes
kubernetes,简称 K8s,是用 8 代替名字中间的 8 个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes 的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes 提供了应用部署,规划,更新,维护的一种机制。
我们可以看到,上图所示,k8s 集群主要分为 Master 和 Node 两部分,也是典型的分布式架构。外部应用程序通过 Api-Server 提供的 HTTP 接口与 Master 进行交互,而在与 APIs 进行交互前,需要经过一步认证的阶段。而Node由多个pod(根容器)组成,而pod也由容器(Docker)在里面运行,我们将运行在一组 Pods 上的应用服务公开为网络服务的抽象方法称为服务(Service),服务上一般配置了能够被公开访问的 IP 地址、端口映射关系等,通过服务我们就能够访问到相应的 Pods。
K8S 安全问题
1. 认证和授权: Kubernetes 使用 TLS 证书来进行认证和授权。如果证书过期、泄漏、或者被攻击者盗取,那么攻击者就可以获得 Kubernetes 群集的完全控制权。
2. 网络隔离: Kubernetes 的网络隔离机制可能会受到攻击。攻击者可以通过欺骗Kubernetes 网络来访问其他命名空间或集群的资源,并执行恶意操作。
3. 数据泄露: Kubernetes API 服务器可以存储敏感信息,例如密钥、密码、配置文件等。如果该服务器没有得到适当的保护,攻击者可以在未经授权的情况下获取这些数据。
4. 应用程序漏洞: Kubernetes 可以使容器化应用程序更加安全,但它本身仍然存在潜在的漏洞。如果攻击者能够利用这些漏洞,他们就可以在 Kubernetes 平台上运行恶意容器,以达到破坏或窃取数据的目的。
5. 无限制的 API 访问: Kubernetes API 允许管理员和开发人员对群集进行操作。如果未能正确配置 API 访问权限,攻击者可能会利用此漏洞来获取无限制的访问权限。
6. 节点安全问题: Kubernetes 中的节点可能存在安全问题。如果节点被入侵或攻击,攻击者可以获得容器内的敏感数据或执行恶意代码。
集群存在的潜在风险
1. Kubectl proxy 命令未安全使用
攻击者可通过 kube-proxy 代理来未授权访问本地 kube-apiserver 组件,创建恶意 pod 或控制已有 pod,后续可尝试逃逸至宿主机
2. 未开启 RBAC 控制
基于角色(Role)的访问控制(RBAC)是一种基于组织中用户的角色来调节控制对计算机或网络资源访问的方法,如果运维在环境中没有设置 RBAC 或者 Kubernetes 版本低于 1.16 版本,则默认是不会开启 RBAC 访问控制策略。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)