什么是云計(jì)算,?在談到云安全的概念就不得不聊一下云計(jì)算了,。簡(jiǎn)而言之,云計(jì)算就是一種新興的計(jì)算資源利用方式,,云計(jì)算的服務(wù)商通過對(duì)硬件資源的虛擬化,,將基礎(chǔ)IT資源變成了可以自由調(diào)度的資源池,從而實(shí)現(xiàn)IT資源的按需分配,,向客戶提供按使用付費(fèi)的云計(jì)算服務(wù),。用戶可以根據(jù)業(yè)務(wù)的需求動(dòng)態(tài)調(diào)整所需的資源,而云服務(wù)商也可以提高自己的資源使用效率,,降低服務(wù)成本,,通過多種不同類型的服務(wù)方式為用戶提供計(jì)算、存儲(chǔ)和數(shù)據(jù)業(yè)務(wù)的支持,。 云計(jì)算的部署模式1,、公有云(Public Cloud)——出租給公眾的大型的基礎(chǔ)設(shè)施的云 由云服務(wù)提供商擁有和管理,通過互聯(lián)網(wǎng)向企業(yè)或個(gè)人提供計(jì)算資源,,就類似城市的水電,,居民共享,每家每戶各取所需,,按量統(tǒng)計(jì)付費(fèi),。 2、私有云(Private Cloud)——企業(yè)利用自有或租用的基礎(chǔ)設(shè)施資源自建的云 單個(gè)組織專用的云服務(wù),,而無需與其他組織共享資源,,私有云可以在內(nèi)部管理,也可以由第三方云服務(wù)提供商托管,,而公有云和私有云的區(qū)別,,就好比自家的洗衣機(jī)(私有)和干洗店(對(duì)公)的區(qū)別。 3,、混合云(Hybrid Cloud)——由兩種或兩種以上部署模式組成的云 同時(shí)使用公有云和私有云,,從而允許公司將敏感數(shù)據(jù)保留私有云中(安全性),同時(shí)使用公有云來運(yùn)行應(yīng)用程序(低成本),,就類似于我們現(xiàn)實(shí)打點(diǎn)中遇到的企業(yè)官網(wǎng)等業(yè)務(wù)放在云上,,核心業(yè)務(wù)部署在內(nèi)網(wǎng)。 4,、社區(qū)云/行業(yè)云(Community Cloud) ——為特定社區(qū)或行業(yè)所構(gòu)建的共享基礎(chǔ)設(shè)施的云 特定組織或行業(yè)共享使用的云計(jì)算服務(wù)方案,,行業(yè)云是由幾個(gè)具有類似關(guān)注點(diǎn)(例如安全性、隱私性,、和合規(guī)性)的多個(gè)組織共享,,像政務(wù)云,、金融機(jī)構(gòu)、醫(yī)療等特殊客戶群體,,需要滿足其一定的行業(yè)規(guī)范和數(shù)據(jù)安全標(biāo)準(zhǔn),。 云計(jì)算的服務(wù)模式1、云基礎(chǔ)設(shè)置即服務(wù)(IaaS)——出租處理能力,、存儲(chǔ)空間,、網(wǎng)絡(luò)容量等基本計(jì)算資源 IaaS就是由云服務(wù)提供商,提供底層設(shè)施基礎(chǔ)資源(CPU,、內(nèi)存,、硬盤、帶寬等),,用戶需要自己部署和執(zhí)行操作系統(tǒng)或應(yīng)用程序等各種軟件,,就比如我們平時(shí)在阿里云、騰訊云等云廠商哪里購買的VPS服務(wù)器就屬于IaaS服務(wù)模式,。 2,、云平臺(tái)即服務(wù)(PaaS)——為客戶開發(fā)的應(yīng)用程序提供可部署的云環(huán)境 PaaS可提供各種開發(fā)和分發(fā)應(yīng)用的解決方案,如虛擬服務(wù)器,、操作系統(tǒng)等,。如我們常見的docker、k8s等,。 3,、云軟件即服務(wù)(SaaS)——在網(wǎng)絡(luò)上提供可直接使用的應(yīng)用程序 在PaaS之上,用戶不需要管理和控制任何云計(jì)算基礎(chǔ)設(shè)施,,包括網(wǎng)絡(luò),、服務(wù)器、操作系統(tǒng),、存儲(chǔ)等,普通用戶所接觸到的互聯(lián)網(wǎng)服務(wù),,幾乎都是SaaS,。 什么是云安全?那么現(xiàn)在回歸到我們的正題當(dāng)中,,什么是云安全,?如剛剛我們上文所提到的,云計(jì)算徹底改變了數(shù)據(jù)存儲(chǔ)的世界,,它使企業(yè)可以遠(yuǎn)程存儲(chǔ)數(shù)據(jù)和管理業(yè)務(wù),,并隨時(shí)隨地從任何位置訪問業(yè)務(wù),存和取變得簡(jiǎn)單,,同時(shí)也使得云上數(shù)據(jù)極易造成泄露或被篡改,,如云服務(wù)器一般都會(huì)由專業(yè)的運(yùn)維工程師去運(yùn)維,,但是在大多數(shù)開發(fā)小公司,是沒有運(yùn)維工程師的,,這個(gè)時(shí)候一般都是開發(fā)人員自己去維護(hù),,這個(gè)時(shí)候就會(huì)缺乏基本的安全常識(shí),如身份驗(yàn)證控制不當(dāng),、配置錯(cuò)誤,、數(shù)據(jù)庫設(shè)置等等,這些操作都會(huì)使得服務(wù)器遭到攻擊,。 云安全和傳統(tǒng)安全有什么區(qū)別,?一方面,傳統(tǒng)環(huán)境下的安全問題在云環(huán)境下仍然存在,,比如SQL注入,、弱口令、文件上傳,、網(wǎng)站備份泄露等,,另一方面,除了常規(guī)的WEB漏洞之外云環(huán)境下又不斷涌現(xiàn)出一堆新的安全問題例如:Access Key泄露利用,、配置不當(dāng)利用等,。 云安全攻擊分類在我的理解中,云安全分為兩類,,一類為云服務(wù),,一類為云原生 云服務(wù)云服務(wù),顧名思義就是云上的服務(wù),,簡(jiǎn)單的來說就是在云廠商(阿里云,、騰訊云)那里購買的服務(wù)。目前國內(nèi)代表廠商有阿里云,、騰訊云,、華為云等,國外代表廠商有亞馬遜,、微軟云,、google云等。各個(gè)云廠商對(duì)云服務(wù)的叫法都不統(tǒng)一,,這里以阿里云為例主要講述一下常用的云服務(wù)與其作用,。 以上圖阿里云的產(chǎn)品服務(wù)為例:
上圖為火線云安全知識(shí)庫的云服務(wù)攻防矩陣,以下為我自己所整理的云服務(wù)所面臨的安全問題大概,,后面會(huì)根據(jù)此框架詳細(xì)講解安全問題,。 對(duì)象存儲(chǔ)1、Bucket權(quán)限配置錯(cuò)誤-公開訪問 在創(chuàng)建Bucket桶時(shí),,默認(rèn)是private(私有)的權(quán)限,,如果在錯(cuò)誤的配置下,給了listobject(列表對(duì)象)權(quán)限,,就會(huì)導(dǎo)致可遍歷存儲(chǔ)桶,。 2、 Bucket桶爆破 當(dāng)不知道Bucket名稱的時(shí)候,,可以通過爆破獲得Bucket名稱,,有些類似于目錄爆破。 3,、特定的Bucket策略配置 有些Bucket會(huì)將策略配置成只允許某些特定條件才允許訪問,,當(dāng)我們知道這個(gè)策略后,就可以訪問該Bucket的相關(guān)對(duì)象了,。 4,、 Bucket Object遍歷 如果策略中允許了Object的List操作,則在目標(biāo)資源范圍下,,會(huì)將所有的Bucket Object顯示出來,,通過拼接可獲取相對(duì)應(yīng)的文件 5、任意文件上傳與覆蓋 由于Bucket不支持重復(fù)命名,,所以當(dāng)匿名用戶擁有寫入權(quán)限時(shí),,可通過任意文件上傳對(duì)原有文件進(jìn)行覆蓋,通過PUT請(qǐng)求可上傳和覆蓋任意文件,。 6,、AccessKeyID、SecretAccessKey泄露 在開發(fā)過程中可能操作失誤會(huì)導(dǎo)致SecretID/SecretKey泄露,,獲得SecretID/SecretKey相當(dāng)于擁有了對(duì)應(yīng)用戶的權(quán)限,,從而操縱Bucket。 7,、Bucket接管 由于Bucket接管是由于管理人員未刪除指向該服務(wù)的DNS記錄,攻擊者創(chuàng)建同名Bucket進(jìn)而讓受害域名解析所造成的,。 8,、修改策略導(dǎo)致網(wǎng)站癱瘓 當(dāng)策略可寫時(shí),將原來可以訪問的資源權(quán)限設(shè)置為不可訪問,,這樣就會(huì)導(dǎo)致網(wǎng)站癱瘓,。 彈性計(jì)算服務(wù)1,、憑證泄露
2、元數(shù)據(jù) 元數(shù)據(jù)服務(wù)是一種提供查詢運(yùn)行中的實(shí)例內(nèi)元數(shù)據(jù)的服務(wù),,通過元數(shù)據(jù),,攻擊者除了可以獲得當(dāng)前ECS上的一些屬性信息之外,也可獲得與其實(shí)例綁定角色的臨時(shí)憑證,,并通過該臨時(shí)憑證獲得云服務(wù)的控制臺(tái)權(quán)限,。 3、惡意的鏡像 獲取控制臺(tái)權(quán)限后,,可導(dǎo)入存在后門的鏡像,,下次目標(biāo)用戶在選用鏡像創(chuàng)建實(shí)例的時(shí)候,就會(huì)觸發(fā)我們?cè)阽R像中植入的惡意代碼,。 云數(shù)據(jù)庫1,、訪問憑證泄露 如上面兩個(gè)云服務(wù)一樣,云數(shù)據(jù)庫在配置不當(dāng)?shù)那闆r下也有可能會(huì)出現(xiàn)訪問憑證,、臨時(shí)憑證等泄露 2,、 備份文件 在獲得相應(yīng)權(quán)限后,可嘗試下載數(shù)據(jù)庫 3,、弱口令 最大的0day,,弱口令,如果數(shù)據(jù)庫存在弱口令,,則可通過密碼爆破,,猜解出RDS的賬號(hào)密碼。 云原生云原生是基于分布式存儲(chǔ)和統(tǒng)一運(yùn)管的分布式云,,云原生的代表技術(shù)包括容器,、容器編排、微服務(wù),、不可變基礎(chǔ)設(shè)施和聲明式API,。 Kuberneteskubernetes簡(jiǎn)稱K8s,是Google于2014年開源的容器編排調(diào)度管理平臺(tái),。相比與Swarm,、Mesos等平臺(tái)簡(jiǎn)化了容器調(diào)度與管理,是目前最流行的容器編排平臺(tái),。 如上圖所示,,我們可以看到,Kubernetes集群主要分為Master和Node兩部分,,也是典型的分布式架構(gòu),。首先,,外部應(yīng)用程序通過Api-Server提供的HTTP接口與Master進(jìn)行交互,而在與APIs進(jìn)行交互前,,需要經(jīng)過一步認(rèn)證的階段,。而Node由多個(gè)pod組成,pod中運(yùn)行著的便是大家比較熟悉的容器(Docker),,我們將運(yùn)行在一組Pods上的應(yīng)用服務(wù)公開為網(wǎng)絡(luò)服務(wù)的抽象方法稱為服務(wù)(Service),,服務(wù)上一般配置了能夠被公開訪問的IP地址、端口映射關(guān)系等,,通過服務(wù)我們就能夠訪問到相應(yīng)的Pods,。 DockerDocker是一個(gè)開放源代碼軟件,是一個(gè)開放平臺(tái),,用于開發(fā)應(yīng)用,、交付(shipping)應(yīng)用、運(yùn)行應(yīng)用,。Docker允許用戶將基礎(chǔ)設(shè)施(Infrastructure)中的應(yīng)用單獨(dú)分割出來,,形成更小的容器,從而提高交付軟件的速度,。Docker容器與虛擬機(jī)類似,,但二者在原理上不同,容器是將操作系統(tǒng)層虛擬化,,虛擬機(jī)則是虛擬化硬件,,因此容器更具有便攜性、高效地利用服務(wù)器,。下圖是Docker官方給出的架構(gòu)圖,,里面包括了Docker客戶端、Docker容器所在的宿主機(jī)和Docker鏡像倉庫三個(gè)部分,。 Docker可以讓開發(fā)者基于選定鏡像(image),,打包目標(biāo)應(yīng)用以及依賴包到一個(gè)輕量級(jí)、可移植的容器(Container)中,,并通過客戶端的docker命令實(shí)現(xiàn)對(duì)Docker主機(jī)內(nèi)容器的操控,;當(dāng)前容器也可創(chuàng)建成新的鏡像,而所有的鏡像放到倉庫(Registry)中,,類似github一樣分為共有倉庫和私有倉庫,。 云原生攻擊知識(shí)點(diǎn)隨著云計(jì)算技術(shù)的發(fā)展,目前很多企業(yè)都將業(yè)務(wù)部署到了云上,,并開始廣泛使用docker,、Kubernetes等云原生技術(shù),但隨之而來也有一些新的風(fēng)險(xiǎn)和挑戰(zhàn),如docker逃逸,、docker/K8s配置安全、容器鏡像安全,、DevOps安等,。 K8s安全問題配置不當(dāng)引發(fā)的組件接口安全問題1、 Api Server未授權(quán)訪問 如上圖k8s的結(jié)構(gòu)圖所示,,外部應(yīng)用程序是通過Api-Server所提供的HTTP接口與Master進(jìn)行交互的,, 2、Kubelet 未授權(quán)訪問 與API Server類似,,Kubelet也運(yùn)行著API服務(wù),,如果Kubelet存在未授權(quán)訪問,就可以控制所在節(jié)點(diǎn)的權(quán)限,。 3,、Dashboard 未授權(quán)訪問 Dashboard可以給用戶提供一個(gè)可視化的web界面來查看當(dāng)前集群的各種信息,用戶可以用Kubernetes Dashboard部署容器化的應(yīng)用,、監(jiān)控應(yīng)用的狀態(tài),、執(zhí)行故障排查任務(wù)以及管理Kubernetes各種資源。在Dashboard中默認(rèn)是存在鑒權(quán)機(jī)制的,,用戶可以通過kubeconfig或token兩種方式登錄,,當(dāng)用戶開啟了enable-skip-login時(shí)可以在登錄界面點(diǎn)擊skip跳過登錄進(jìn)入Dashboard。 4,、 K8s Config文件泄露 如果攻擊者通過webshell,、Github等特定方式拿到了該K8s配置的Config文件,就可以通過該文件操作集群,,從而接管所有容器,。 5、 Etcd未授權(quán)訪問 etcd默認(rèn)監(jiān)聽2379,、2380端口,,前者用于客戶端連接,后者用于多個(gè)etcd實(shí)例之間的通信,。如果2379端口暴露在公網(wǎng),,可能會(huì)造成敏感信息泄露。 集群風(fēng)險(xiǎn)存在的風(fēng)險(xiǎn)1,、 Kubectl proxy命令未安全使用 攻擊者可通過kube-proxy代理來未授權(quán)訪問本地kube-apiserver組件,,創(chuàng)建惡意pod或控制已有pod,后續(xù)可嘗試逃逸至宿主機(jī) 2,、未開啟RBAC控制 基于角色(Role)的訪問控制(RBAC)是一種基于組織中用戶的角色來調(diào)節(jié)控制對(duì)計(jì)算機(jī)或網(wǎng)絡(luò)資源訪問的方法,,如果運(yùn)維在環(huán)境中沒有設(shè)置RBAC或者Kubernetes版本低于1.16版本,則默認(rèn)是不會(huì)開啟RBAC訪問控制策略。 Docker安全問題
Docker 守護(hù)進(jìn)程主要監(jiān)聽UNIX socket和Tcp socket,,默認(rèn)情況下,,Docker只會(huì)監(jiān)聽UNIX socket。
|
|