RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

k8s安全漏洞如何解決

阿銘linux ? 來源:lp ? 2019-03-26 14:27 ? 次閱讀

具體來說,惡意用戶可以使用 KubernetesAPI 服務(wù)器連接到后端服務(wù)器以發(fā)送任意請求,并通過 API 服務(wù)器的 TLS 憑證進(jìn)行身份驗證。這一安全漏洞的嚴(yán)重性更在于它可以遠(yuǎn)程執(zhí)行,攻擊并不復(fù)雜,不需要用戶交互或特殊權(quán)限。

更糟糕的是,在 Kubernetes 的默認(rèn)配置中,允許所有用戶(經(jīng)過身份驗證和未經(jīng)身份驗證的用戶)執(zhí)行允許此升級的發(fā)現(xiàn) API 調(diào)用。也就是說,任何了解這個漏洞的人都可以掌控你的 Kubernetes 集群。

最后的痛苦之處在于,對于用戶而言,沒有簡單的方法來檢測此漏洞是否已被使用。由于未經(jīng)授權(quán)的請求是通過已建立的連接進(jìn)行的,因此它們不會出現(xiàn)在 Kubernetes API 服務(wù)器審核日志或服務(wù)器日志中。請求確實會出現(xiàn)在 kubelet 或聚合的API服務(wù)器日志中,但是卻無法與正確通過 Kubernetes API 服務(wù)器授權(quán)和代理的請求區(qū)分開來。

現(xiàn)在,Kubernetes 已經(jīng)發(fā)布了修補(bǔ)版本 v1.10.11、v1.11.5、v1.12.3 和 v1.13.0-rc.1。如果仍在使用 Kubernetes v1.0.x 至 Kubernetes v1.9.x 版本,請即刻停止使用并升級到修補(bǔ)版本。

如果由于某種原因無法進(jìn)行升級,也必須暫停使用聚合的 API 服務(wù)器,并從不應(yīng)具有對 kubelet API 的完全訪問權(quán)限的用戶中刪除 pod exec/attach/portforward 權(quán)限。

Kubernetes作為一個分布式集群的管理工具,保證集群的安全性是其一個重要的任務(wù)。API Server是集群內(nèi)部各個組件通信的中介,也是外部控制的入口。所以Kubernetes的安全機(jī)制基本就是圍繞保護(hù)API Server來設(shè)計的。

Kubernetes使用了認(rèn)證(Authentication)、鑒權(quán)(Authorization)、準(zhǔn)入控制(Admission Control)三步來保證API Server的安全。

Kubelet 認(rèn)證

默認(rèn)情況下,所有未被配置的其他身份驗證?法拒絕的,對kubelet的HTTPS端點的請求將

被視為匿名請求,并被授予system:anonymous?戶名和system:unauthenticated組。

如果要禁?匿名訪問并發(fā)送 401 Unauthorized 的未經(jīng)身份驗證的請求的響應(yīng):

啟動kubelet時指定 --anonymous-auth=false

對kubelet HTTPS端點啟?X509客戶端證書身份驗證:

--client-ca-file 提供 CA bundle 以驗證客戶端證書

啟動apiserver時指定--kubelet-client-certificate和--kubelet-client-key標(biāo)志

Secret

Kubernetes設(shè)計了?種資源對象叫做Secret,分為兩類,?種是?于ServiceAccount的

service-account-token

另?種是?于保存?戶?定義保密信息的Opaque。我們在ServiceAccount中?到包含三個

部分:Token、ca.crt、namespace。

token 是使?API Server私鑰簽名的JWT。?于訪問API Server時,Server端認(rèn)證。

ca.crt ,根證書。?于Client端驗證API Server發(fā)送的證書。

namespace , 標(biāo)識這個service-account-token的作?域名空間。

更詳細(xì)參考:https://k8smeetup.github.io/docs/admin/kubelet-authenticationauthorization/

通過kubelet攻擊Kubernetes

通過kubelet默認(rèn)配置對Kubernetes集群上的API Server發(fā)起特權(quán)訪,特權(quán)訪問有可能會獲取集群中的敏感信息,也可能導(dǎo)致節(jié)點上機(jī)器命令執(zhí)?。

API Server提供了對集群各種資源訪問和控制的REST API。

在缺少對TLS身份驗證,?在?些默認(rèn)配置中啟?了,--anonymous-auth 默認(rèn)為true

允許匿名身份訪問API,端?為10250

/pods # 列出正在運?中的pod

/exec # 在容器中運?命令并反回信息

這?我從shodan上隨意找的IP進(jìn)?測試

https://192.168.4.110:10250/pods

獲取信息執(zhí)?容器中的命令:

CURL請求:

不過有點可惜,較?版本現(xiàn)在已經(jīng)?不通了。

除了通過curl請求,提供了這樣的?個腳本執(zhí)?Kubelet Anonymous RCE :

https://github.com/serain/kubelet-anon-rce

幫助?檔例?:

如果能執(zhí)?命令可以通過:

/var/run/secrets/kubernetes.io/serviceaccount 獲取token

然后訪問kube-api server

測試步驟:

1. 訪問pods獲取信息

2. 獲取namespace、pods、container

3. 執(zhí)?exec獲取token

4. /var/run/secrets/kubernetes.io/serviceaccount

5. 利?Token訪問API Server進(jìn)?對pods操作

Kube-Hunter尋找漏洞

使?Kube-hunter尋找Kubernetes集群中的安全漏洞。

會對apiserver、dashboard、etcd、hosts、kubelet、ports、proxy進(jìn)?測試。

https://github.com/aquasecurity/kube-hunter

通過?些信息判斷,發(fā)現(xiàn)匿名身份驗證,可以訪問pods 查看信息。

對外?IP掃描:

Kubelet API | 91.xxx.xxx.x2:10255

Kubelet API | 91.xxx.xxx.x2:10250

API Server | 91.xxx.xxx.x2:6443

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    9123

    瀏覽量

    85322
  • API
    API
    +關(guān)注

    關(guān)注

    2

    文章

    1499

    瀏覽量

    61959
  • 安全漏洞
    +關(guān)注

    關(guān)注

    0

    文章

    151

    瀏覽量

    16709

原文標(biāo)題:干貨 | k8s安全漏洞如何解決 (上)

文章出處:【微信號:aming_linux,微信公眾號:阿銘linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    k8s核心原理學(xué)習(xí)指南3

    k8s學(xué)習(xí)3 - 核心原理
    發(fā)表于 09-25 16:37

    OpenStack與K8s結(jié)合的兩種方案的詳細(xì)介紹和比較

    OpenStack與K8S結(jié)合主要有兩種方案。一是K8S部署在OpenStack平臺之上,二是K8S和OpenStack組件集成。
    的頭像 發(fā)表于 10-14 09:38 ?2.7w次閱讀

    如何使用kubernetes client-go實踐一個簡單的與K8s交互過程

    【導(dǎo)讀】Kubernetes項目使用Go語言編寫,對Go api原生支持非常便捷。 本篇文章介紹了如何使用kubernetes client-go實踐一個簡單的與K8s交互過程
    的頭像 發(fā)表于 02-02 11:16 ?6842次閱讀
    如何使用kubernetes client-go實踐一個簡單的與<b class='flag-5'>K8s</b>交互過程

    Docker不香嗎為什么還要用K8s

    Docker 雖好用,但面對強(qiáng)大的集群,成千上萬的容器,突然感覺不香了。 這時候就需要我們的主角 Kubernetes 上場了,先來了解一下 K8s 的基本概念,后面再介紹實踐,由淺入深步步為營
    的頭像 發(fā)表于 06-02 11:56 ?3436次閱讀

    簡單說明k8s和Docker之間的關(guān)系

    這篇文章主要介紹了k8s和Docker關(guān)系簡單說明,本文利用圖文講解的很透徹,有需要的同學(xué)可以研究下 最近項目用到kubernetes(以下簡稱k8s,ks之間有
    的頭像 發(fā)表于 06-24 15:48 ?3403次閱讀

    K8S集群服務(wù)訪問失敗怎么辦 K8S故障處理集錦

    問題1:K8S集群服務(wù)訪問失敗? ? ? 原因分析:證書不能被識別,其原因為:自定義證書,過期等。 解決方法:更新證書即可。 問題2:K8S集群服務(wù)訪問失?。?curl: (7) Failed
    的頭像 發(fā)表于 09-01 11:11 ?1.6w次閱讀
    <b class='flag-5'>K8S</b>集群服務(wù)訪問失敗怎么辦 <b class='flag-5'>K8S</b>故障處理集錦

    K8S(kubernetes)學(xué)習(xí)指南

    K8S(kubernetes)學(xué)習(xí)指南
    發(fā)表于 06-29 14:14 ?0次下載

    mysql部署在k8s上的實現(xiàn)方案

    的 RDBMS (Relational Database Management System,關(guān)系數(shù)據(jù)庫管理系統(tǒng)) 應(yīng)用軟件之一。這里主要講 mysql 部署在 k8s 上,mysql 部署在 k8s 上的優(yōu)勢主要有以下幾點。
    的頭像 發(fā)表于 09-26 10:39 ?2506次閱讀

    虹科分享|如何解決勒索軟件安全漏洞

    近年來,各種網(wǎng)絡(luò)攻擊的數(shù)量和頻率都在增加,每分鐘都會發(fā)生數(shù)次勒索軟件的攻擊入侵。如何解決勒索軟件安全漏洞?答案是使用移動目標(biāo)防御(MTD)技術(shù)。MTD技術(shù)利用多態(tài)性,以不可預(yù)測的方式向?qū)κ蛛[藏應(yīng)用程序和操作系統(tǒng)目標(biāo)。歡迎閱讀,了解更多。
    的頭像 發(fā)表于 07-22 14:24 ?686次閱讀
    虹科分享|如<b class='flag-5'>何解</b>決勒索軟件<b class='flag-5'>安全漏洞</b>

    k8s是什么意思?kubeadm部署k8s集群(k8s部署)|PetaExpres

    k8s是什么意思? kubernetes簡稱K8s,是一個開源的,用于管理云平臺中多個主機(jī)上的容器化的應(yīng)用,Kubernetes的目標(biāo)是讓部署容器化的應(yīng)用簡單并且高效(powerful
    發(fā)表于 07-19 13:14 ?1113次閱讀

    什么是K3sK8s?K3sK8s有什么區(qū)別?

    Kubernetes,通??s寫為 K8s,是領(lǐng)先的容器編排工具。該開源項目最初由 Google 開發(fā),幫助塑造了現(xiàn)代編排的定義。該系統(tǒng)包括了部署和運行容器化系統(tǒng)所需的一切。
    的頭像 發(fā)表于 08-03 10:53 ?7511次閱讀

    k8s生態(tài)鏈包含哪些技術(shù)

    1. Apache APISIX Ingress 定義 ? 在 K8s 生態(tài)中,Ingress 作為表示 K8s 流量入口的一種資源,想要讓其生效,就需要有一個 Ingress Controller
    的頭像 發(fā)表于 08-07 10:56 ?1229次閱讀
    <b class='flag-5'>k8s</b>生態(tài)鏈包含哪些技術(shù)

    K8S落地實踐經(jīng)驗分享

    k8s 即 Kubernetes,是一個開源的容器編排引擎,用來對容器化應(yīng)用進(jìn)行自動化部署、 擴(kuò)縮和管理。
    的頭像 發(fā)表于 01-02 11:45 ?1116次閱讀
    <b class='flag-5'>K8S</b>落地實踐經(jīng)驗分享

    k8s云原生開發(fā)要求

    IO性能。網(wǎng)絡(luò)要求穩(wěn)定,建議使用私有網(wǎng)絡(luò)VPC,并配置與Kubernetes兼容的網(wǎng)絡(luò)插件。操作系統(tǒng)需與K8s版本匹配,虛擬化平臺支持Docker等。此外,還需關(guān)注安全配置,如禁用Swap、調(diào)整Sysctl等,以及etcd數(shù)據(jù)存儲后端的配置。合理配置硬件可確保
    的頭像 發(fā)表于 10-24 10:03 ?210次閱讀
    <b class='flag-5'>k8s</b>云原生開發(fā)要求

    k8s和docker區(qū)別對比,哪個更強(qiáng)?

    Docker和Kubernetes(K8s)是容器化技術(shù)的兩大流行工具。Docker關(guān)注構(gòu)建和打包容器,適用于本地開發(fā)和單主機(jī)管理;而K8s則提供容器編排和管理平臺,適用于多主機(jī)或云環(huán)境,具備自動化
    的頭像 發(fā)表于 12-11 13:55 ?70次閱讀
    RM新时代网站-首页