k8s安全01

时间: 2023-08-18 admin IT培训

k8s安全01

k8s安全01

k8s安全01--云安全简介

  • 1 基础概念
    • 1.1 什么是安全
    • 1.2 基础安全原则
    • 1.3 攻击者类别
    • 1.4 攻击来源
    • 1.5 攻击类型
    • 1.6 4C 安全
    • 1.7 其它漏洞利用
    • 1.8 硬件
    • 1.9 NIST 网络安全框架
    • 1.10 高价值资产保护
    • 1.11 国家备忘录程序
    • 1.12 CIS Benchmarks
    • 1.13 kube-bench
    • 1.14 高价值资产保护
    • 1.15 提高安全团队文化
    • 1.16 限制访问
  • 2 说明

  在云时代更加普遍的今天,云安全也逐被各大厂商关注,因此有必要了解常见的云安全知识。
  通过本文,可以理解安全处理的过程、基础安全准则、常见攻击类型,能够检测云安全里面的 4C(code, container, cluster, cloud),研究安全机构和安全资源等等。

1 基础概念

1.1 什么是安全

 计算机安全指的是对计算机或者计算机系统的某个项目或者资产价值的保护;这里的资产有很多种类,包括硬件、软件、数据、程序、员工,以及它们的组合等。
 安全可以集成到资产生命周期,即获取到资产的时候就存在资产安全问题了;
 安全也可以集成到软件开发生命周期,软件开发包括设计、开发、测试、部署等主要过程,其中在软件产品的设计阶段就很有必要考虑到软件的安全问题了;
 安全也可以通过建立有组织性的策略和程序来保障,即建立策略和规则降低意外风险和损害;
 安全还可以通过定义角色和职责来保障,即在实际中很有必要建立一个有层次的结构来相应各类安全事件。

1.2 基础安全原则

当前有很多种方式来查看系统安全,绝大部分可以划分到如下四个原则中。

  1. 评估
     评估主要包括检测资产价值的操作和实施保护资产的费用,一般聚焦于重要的资产。通常情况下,由于资源的有限性,且不可能100%的保障安全,因此需要根据特定资产价值来分配其安全的优先级。
     在实际中,有很多威胁,包括偶然、恶意或者直接的威胁,因此评估阶段非常有意义。
  2. 预防
     预防已知的风险是集成到系统的最简单且最符合成本效益的原则。
     预防可以被归纳到安全方式的实施中,它也被称为控制,用于在评估阶段来保护资产安全。控制代表了保护资产而实施的软件和策略,通常包括如下三种类型:
     1)技术管控,涉及到软件和硬件对资产的保护;
     2)流程管控,涉及到避免损失和危害的过程和策略;
     3)物理管控,涉及到设备、人员、秘钥、锁和其它的相关措施。
     不同的资产都需要不同保护,例如设备需要有可用性、数据需要有机密性、新的软件或模块需要保障代码和可执行程序的完整性等等。
  3. 检测
     检测涉及到在使用过程中对不同技术的跟踪,例如远程登录、系统数据和性能指标。检测通常代价比较昂贵,而且很难高效执行。
     入侵和防御系统(Intrusion Detection and Prevention Systems ,IDPS) 用于鉴定识别可能的事件、创建一致性审计跟踪、报告常识性的侵入。
     当前的事件检测方法可以包括基于用户签名、基于匿名数据、和有状态协议的分析。
     有状态协议分析包括系统跟踪。
     基于匿名数据检测包扩创建基线、跟踪异常现象,例如普罗米修斯工具非常有利于观察产品层面的属性和时序数据的历史信息。当然产品层面的的登录也非常有利于理解典型的使用和异常的活动。
  4. 响应
     响应是最应当被考虑的准则。通常情况下,当系统有薄弱点或者存在风险时,落后的响应计划容易引起大的故障。考虑到事件处理方式会存在一个长期的影响,因此需要认真仔细制定故障处理计划。
    由于检测系统风险是非常重要的,因此组织如何应对这些薄弱点能决定系统的生存状态,在某些情况下甚至决定了一个组织的生存状态。
     事件响应可以包括增加防火墙规则、添加扫描器、重构系统,或者关闭某些组件。不恰当的响应在技术效果上可能是灾难性的,或者只能简单地存在于其感知到的效应。如果用户或者消费者对组织的响应不自信,那么他们就有可能转向其它的竞争者。
     部分响应是用于确保商业的可持续进行,它需要用户知到哪些组件对商业最重要。这个问题反过来又涉及到安全框架的评估阶段。
     在实际中,不论计划和各类防御措施做的多好,都有可能出现一些始料未及的异常或错误,因此在响应阶段最重要的是聚焦于解决问题,特别是分析和查找问题的根因。

1.3 攻击者类别

  1. White Hat(白帽黑客)
    白帽黑客通过非恶意性的方式来突破|破坏网络安全,或许是为了测试他们自己的安全系统,亦或在安全公司工作生产开发安全软件。白帽黑客在网络俗语中代表有道德的黑客,这个分类也包括个人在某周合约协议下执行渗透测试和漏洞评估。
  2. Black Hat(黑帽黑客)
    黑帽黑客多指恶意或者为了个人理由而违反计算机安全的黑客。黑帽黑客形成了老套的、非法的组织,通常扮演在某种流行文化中。黑帽黑客可能打破网络安全来毁坏数据,或者让那些通过认证来使用网络的用户的网络不稳定。
  3. Script Kiddie(脚本小子)
    脚本小子(也被称为 skid 或 skiddie) 通常是指非专家或熟手通过预先打包好的自动化工具来闯入计算机系统中,他们通常只知道一点网络安全相关的基础概念。
  4. Hacktivist(激进黑客)
    激进黑客指的是那些利用技术来宣布社会性、思想意识、宗教信仰或政治性言论的黑客。通常情况下,大部分激进黑客涉及到网站涂改或 拒绝服务等类型的攻击。
  5. Nation State(国家层面的攻击)
    国家层面的攻击指的是国家的情报机构和网络战争操作者。
  6. Organized Crime(有组织的犯罪)
    有组织的犯罪通常代表为某种利益而开展的犯罪活动。
  7. Bots(机器人)
    Bots 指的是可以被任何黑客使用的自动化软件工具。

1.4 攻击来源

 攻击既可以来自于内部,也可能来源于外部。内部攻击是由一个内部安全边界中的实体发起,也就是说这个实体被授权访问系统资源,但是其使用一种不被认可的访问资源方式。
 外部攻击是有边界外部发起的,例如未被该系统授权的用户或非法的用户。在网络上,潜在的外部攻击者包括网络安全余业爱好者、有组织的不法分子、国际恐怖组织、敌对的政府机构等。
 被攻击的资源(物理或逻辑上)被称为资产;在一次威胁或者攻击活动中,资产通常有一个或者多个漏洞可以被威胁代理人利用。若资源存在漏洞,那么结果可能导致妥协资源的保密性、完整性或可用性。
  攻击者有时候实施攻击行为并不需要移动或者删除数据,他们只需要读取某些材料,例如私密公式、加密算法 或者敲诈勒索的关键信息。

1.5 攻击类型

攻击类型可以分为2种,主动攻击和被动攻击。

  1. 主动攻击
     当一个攻击尝试修改系统资源或者影响系统操作,它妥协系统的完整性和可用性的时候,该攻击就可以被称为主动攻击。
     拒绝服务攻击通常通过发起更多请求造成网络或者服务泛洪导致的,这些请求超过了系统的服务上限,导致服务逐渐变得不可用。有时候客户端配置异常会导致这种拒绝服务攻击。
     欺骗攻击通常是攻击者通过IP地址窜改的方式来扮演有效或者授权的系统。服务使用方认为正在和一个授权的系统通信,而实际上正在和一个冒充者通信;常见的攻击方式包 ARP, DNS, IP地址, MAC地址等形式的攻击。
     端口扫描可以通过nmap工具实现,其涉及到发送 SYN 包到目标系统的某些端口范围。目标机器回复或者不回复都能给攻击者提供目标机器上正在运行服务的大量信息。
     空扫描是端口扫描的变种,其用第三方系统(通常被称为僵尸机或肉鸡)来获取目标系统的信息。当前存在很多种被广泛使用的网络攻击,它们利用大多数基础设施所需要不同网络协议来实施网络攻击。ARP风暴、会话层劫持、包注入等都是常用主动网络攻击技术。
  2. 被动攻击
     被动攻击尝试从系统中学习或者利用其信息,但其不影响系统资源,即妥协系统保密。
     网络窃听通常可以通过 tcpudump 或者 wireshard 来监听网络上的流量。这是通过将网络接口置于混杂模式来实现的,在混杂模式中,所有的包(实际上所有的1和0)都被传递给 tcpdump 应用程序以进行解码,从而达到窃听的目的。
     在正常操作期间,当目的网络包和配置的主机不匹配的时候,网络接口会丢掉这些数据包。在实际中,几乎很多网络通信协议和机制都容易被监听,包括以太网、wifi、USB和移动网络。
     除此之外,大多数建筑物是不包含信号和声音的;因此在一个被称为作战驱动(wardriving)的情况下,这些信号是可以从外部检测到的。安全的地方会通过播放音乐、震动的墙壁(tempest walls)、震动的窗户来避免被监听。这些安全基础设施和定期搜索未授权的型号都是综合安全的一部分。

1.6 4C 安全

 云原生中的4C 安全包括 code, container, cluster 和 cloud,其结构图如下所示。
 下图中每一层都会影响其内部的每一层的资源安全,若集群层面存在漏洞,那么通常情况下没法从Code层保护所有资源的安全。
 在云层面,当前有很多云供应商,它们都有自己的一套最佳安全实践和设置。云厂商的安全设置大多是固定或者锁定的,作为用户我们需要去探索研究它们的设置,而不能一味地相信。甚至有的时候我们需要主动从安全角度武装设备和资源,从而保障其安全。
 在集群层面,很多组件都有它们自己可能的安全关注点,后续会在笔者相应的博文中加以介绍。
 在容器层面,容器安全很多时候需要依赖可靠的代码。该层不仅可以结合容器漏洞扫描、镜像签名来确保相关内容没有被修改,还能预防超过最小特权来利用更高的特权的问题。

1.7 其它漏洞利用

 云上的每一个组件都有可能称为一个受到攻击的目标,也被称为攻击面。一些攻击面可能不太明显,例如攻击门禁读卡器然后接管整个IT系统。
 一种确保数据安全的方式是移除电源并且锁住整个系统,然后将其放在一个保险库中。这种方式虽然安全,但是不利于数据访问。实际中,每种环境都应该综合考虑可访问性和安全性,然后按需取舍。
 在k8s中,etcd数据库组件存储了集群状态、认证和授权设置,该组件不易于重建。因此在实际使用中,应该额外对其进行备份并保护该组件的安全,一旦其被攻击,就有可能提供攻击者绝大多数访问和控制权限。
 在大多数环境中,终端用户都是通过网络来访问资源的,因此网络也应当作为一个主要的关注对象。通常应该注意只开放必要的端口,保护终端用户不需要的API端点,并计划定期重新评估。
 在k8s工作节点上,kubelet 和 kube-proxy 的pods有权限访问控制面板,节点往往可以通过某种方式暴露给外部;因此需要特别关注这些组件,确保它们没有攻击。在集群或者系统上安装的其它项目都可能有类似agent,这些代理组件都需要定期计划评估。

1.8 硬件

  像 Platform AbstRaction for SECurity (PARSEC)这样的项目正在尝试为特定平台抽象出来的安全服务提供一个通用的API。
  根据 The Parsec Book, Parsec 旨在定义一个通用的软件标准,以便于与安全对象存储和加密服务进行交互、创建一个通用的方法与函数进行交互(传统方式可能需要多专用APIs才能被访问)。
  该项目允许应用利用与平台无关的原言,且同时在同一个系统上支持一系列的应用。

1.9 NIST 网络安全框架

  当前有很多出版物可以用来阅读和跟踪时下的安全威胁,FIPS (Federal Information Processing Standard) 是一个很好的出发点。我们可以通过访问 Computer Security Resource Center Publications web page 来找到标准的特殊出版物 和 研究报告等内容。
  通常刊物和报告上的内容非常多,很难快速吸收消化相关信息。CSF(Cybersecurity Framework) 把安全组织分类为5种不同的活动(Identify, Protect, Detect, Respond, and Recovery),并提供了信息以便于查找相关协助处理的人员或组织。第一个活动是鉴定,它管理者网络安全所必须的组织结构,被进一步划分为6个类别,具体包括:资产管理,商业环境,管理,风险评估,风险管理策略,供应链风险管理。
  通过分解大量网络安全到多个活动和类别,我们可以根据自己当前的角色找到最有用的信息,并且随着时间、精力的增长而获得更多的知识。

1.10 高价值资产保护

  实际中,网络安全攻击面看起来无穷无尽,而且我们也不可能检测到任何阶段的攻击,因此我们应该把时间和精力投入到最重要的高价值资产上,并且支持相关系统和应用。然后再去考虑下一层次的依赖,并且随着环境动态变化的提高,我们更应该重新评估响应的安全事项。
  除此之外,当网络攻击发生时候我们应当预先计划如何返回到系统操作或返回到一个健康状态。就像评估高价值资产一样,我们应当有一个计划用来重新评估如何返回到典型的商业计划中。
  另外一个政府机构CISA( Cybersecurity and Infrastructure Security Agency) 致力于帮助政府和重要的基础设施组织减少网络攻击的风险。他们提供扫描和渗透测试,以鼓励联邦、州、当地、部落和领土政府实现最佳的网络卫生。

1.11 国家备忘录程序

  NVD(National Vulnerability Database) 是美国国家标准与技术研究所提供的服务,是有美国政府物理科学实验室主持的计算机安全资源中心(CSRC),在这里能找到 FIPS(Federal Information Processing Standards) 和 SP(Special Publications) 相关的文档。
  除了可以找到很多文档外,我们也可以在他们的数据库里找到很多问题和清单,例如合规、漏洞、特殊问题等相关的清单。更多信息可以在 NCP(National Checklist Program Repository page) 中查找,其提供了相对低级的操作系统和应用安全配置指导。

1.12 CIS Benchmarks

  CSI( Center for Internet Security, Inc. (CIS®)) 是一个致力于分享网络安全最佳实践、信息和工具的非盈利组织。一些信息可以免费获取,其它的一些工具可能需要会员的形式才能使用。
  CIS-CAT® Pro 是其中的一个很流行的工具,需要会员身份才能使用;该工具可以在系统上运行,然后比较、汇报其和最佳实践的一致性。其数据主要按照数字的形式排列,并且通过动态web界面提供了相应的改进信息。
  该组织也提供了一些基准,以便于我们自己评估系统和软件;该组织的软件也能从不同的安全考量方式给我提供一些独特的观点。

1.13 kube-bench

  在无法使用 CIS 工具的时候,可以选择使用 kube-bench 。kube-bench 努力像CIS一样测试一些相同的问题,当然不会包含CIS 中所有测试,也不会存在一对一的映射。但是它能够让我们知道一些漏洞。
  需要注意的是,如果我们使用类似与GKE这样的云上管理的集群,云供应商可能不允许我们进行相关测试。而我们自己搭建的集群,或者不受云供应商限制的集群,就比较合适用kube-bench这样的工具来查找和发现漏洞了。

1.14 高价值资产保护

  另外一个用于提高安全的资源是 Homeland Security 网站, Cybersecurity Directives, 它为联邦机构列出了 BOD(Binding Operational Directives ),同时列出了一些已知、可能存在的广泛问题。
  更多相关新版本信息可以在 Securing High Value Assets page 中查找,该文档可以查阅到安全团队组织结构、学习安全的方法和常规的高价值资产评估。

1.15 提高安全团队文化

  安全团队需要培养一种健康的团队文化。一方面需要积极响应遇见的安全问题,主动承担安全咨询的角色,让内部人员期待与安全团队一起工作。另一方面需要提高团队知识和技能,提供的内部咨询越多,那么对应参与的工作就显得更有价值。
  总的来说,如果安全团队形如花瓶,那么整个组织也会随之受损;如果安全团队是一群佼佼者,那么组织就会持续把安全推到各个方面,设置让安全意识深入人心。

1.16 限制访问

  在安全领域一个很核心的概念是限制外部直接访问生产环境。外部终端用户需要访问某个服务,通常需要经过多层网络才能到达最终的目标服务上,这种多层的网络就能够有效的保护敏感信息和高价值资产。
  其次需要保护网络流量,包括节点间的连接和节点内部的通信,在这个过程中应该由一系列的防火墙相关配合工作。
  对于动态的CI/CD环境,由于其不断变化导致不易于受到保护。此时可以加入扫描和验证工具到pipeline中,同时持续进行一些检验和评估,确保问题能被捕获并被修护。
  此外,需要一些与容器无关的安全工具来管理从硬件到应用每一层的访问,例如 SELinux、 Kerberos、SAML等。

2 说明

本文主要对Kubernetes安全知识精要(LFS260) 中的云安全概述进行了整理,主要是翻译相关知识点,并结合个人的理解作了少量调整。
翻译过程中难免有一些不精准的地方,望各位读者理解;若有更好的见解,欢迎在评论区留言。

参考文档

  1. Kubernetes Security Profiles Operator SIG
    旨在于集成安全配置文件和一般的安全工具。
  2. CNCF Special Interest Group for Security
    聚焦于所有CNCF项目的安全问题。
  3. CIS 官网
  4. kube-bench github
  5. Kubernetes安全知识精要(LFS260)