成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何通過終端快速訪問 Kubernetes 節(jié)點 Shell 的 Root 環(huán)境 (無需 SSH 權限 )

系統(tǒng) Linux
本文介紹了通過 kubectl 命令以 root 權限進入 node shell 的方法,非常簡單,實際上在大多數(shù)的原生 Kubernetes 上都生效。

概述

這種場景下,我想要通過 kubectl 登錄到 K8S 集群里的 Node,可以實現(xiàn)嗎?

可以的!本質上是利用容器(runC)的弱隔離(共享內核,Cgruop 等實現(xiàn)進程隔離)實現(xiàn)的權限逃逸。

如果貴司使用的一些商業(yè)容器平臺(如:openshift,rancher)等,可能默認安裝時就會通過 PSP scc 或 policy 等預先屏蔽掉這層隱患。但是如果是原生的 Kubernetes, 往往下面的辦法是可行的。

原理概述

先說本質,本質上就是:

容器(runC)是弱隔離

?對于虛擬機來說,虛擬機是通過內核(kernel)級別的隔離,不同的虛擬機有不同的內核,所以安全性要高很多,從虛擬機逃逸到其所在的物理機上是非常困難的。?但是,容器(runC)是弱隔離,一臺機器上的所有容器都共享同一個內核,他們之所以默認互相看不見,是通過 Cgroup、net namespace 等實現(xiàn)的進程級別的隔離。

那么,加入你沒有對容器的權限做進一步的限制,我是可以通過運行一個特權容器,直接進入到其所在的 node 上的。

具體步驟

  • 適用于 K8S 1.25 之前的版本。

步驟很簡單,就是創(chuàng)建上文說的這么一個特權容器,通過 nsenter command 進入 node shell。示例 yaml 如下:

apiVersion: v1
kind: Pod
metadata:
labels:
run: nsenter-v0l86q
name: nsenter-v0l86q
namespace: default
spec:
containers:
- command:
- nsenter
- --target
- "1"
- --mount
- --uts
- --ipc
- --net
- --pid
- --
- bash
- -l
image: docker.io/library/alpine
imagePullPolicy: Always
name: nsenter
securityContext:
privileged: true
stdin: true
stdinOnce: true
tty: true
hostNetwork: true
hostPID: true
restartPolicy: Never
tolerations:
- key: CriticalAddonsOnly
operator: Exists
- effect: NoExecute
operator: Exists

直接 kubectl apply -f node-shell.yaml 即可進入 node shell。

上面的 yaml,關鍵有這么幾點:

進入 node shell 的命令:nsenter --target 1 --mount --uts --ipc --net --pid -- bash -l,在 Linux 系統(tǒng)里, nsenter 是一個命令行工具,用于進入到另一個 namespace 。譬如, nsenter -n -t 1 bash 就是進入到 pid 為 1 的進程所在的網(wǎng)絡 namespace 里。

以及進入 node shell 的權限:

?hostPID: true 共享 host 的 pid

?hostNetwork: true 共享 host 的網(wǎng)絡

?privileged: true: PSP 權限策略是 privileged, 即完全無限制。

進入 node shell 的 pod 后, 效果如下:

node shell-可以切換 shell

node shell-可以查看所有的進程信息

node shell-可以執(zhí)行 root 權限的 systemctl

實用工具 - 進入 node shell 更方便

這里推薦 2 個工具,可以更方便地進入 node shell。

krew node-shell

可以通過 kubectl 插件管理工具 krew[1] 安裝 node-shell.

如下:

# 安裝工具
kubectl krew install node-shell
# 進入 node shell
Kubectl node-shell <node-name>

Lens

Kubernetes 圖形化管理工具 - Lens[2] 也有相關功能。

具體使用方法如下:

Lens-選擇指定 node 進入 shell

Lens-實際上也是啟動個特權 pod,可以執(zhí)行 root 命令

總結

上文介紹了通過 kubectl 命令以 root 權限進入 node shell 的方法,非常簡單,實際上在大多數(shù)的原生 Kubernetes 上都生效。

這個命令實際上是一定程度上利用了安全上的未加固配置。

這里最后還是建議大家除了對 OS 進行安全加固,對 Kubernetes 也要按照安全最佳實踐進行安全加固。(典型的就是起碼 PSP 等 policy 不要設置為 privileged, 而是設置為 Baseline 或 Restricted)

注意安全!??????

責任編輯:龐桂玉 來源: 奇妙的Linux世界
相關推薦

2023-08-03 07:35:10

kubernetes云原生

2021-07-16 09:51:21

kubernetes環(huán)境容器

2013-11-20 10:56:07

2010-04-27 14:32:31

2009-07-20 19:53:23

SSHLinuxMac

2022-08-21 16:50:36

Kubeadm?Kubernetes

2022-04-15 15:56:30

云原生容器

2020-04-29 09:00:03

API終端應用環(huán)境

2020-10-08 14:29:57

Kubernetes容器開發(fā)

2017-12-04 10:46:23

2019-07-13 14:21:04

LinuxShell命令

2025-05-15 08:00:00

Shell腳本history

2021-01-27 15:17:38

漏洞網(wǎng)絡安全程序員

2018-06-12 10:12:12

2015-05-22 08:59:38

2011-07-14 09:56:13

RHEL紅帽PuTTY

2022-03-11 13:28:54

SSHLinux命令

2019-11-21 09:24:50

SSH服務器工具

2018-06-19 08:12:25

2018-06-22 10:18:52

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 中文字幕av一区 | 日韩一区在线视频 | 亚洲一区视频在线 | 一区免费看 | 91精品久久久久久久久 | 亚洲精品视频在线看 | 国产精品久久久免费 | 免费午夜剧场 | 亚洲一区国产精品 | 久久精品中文字幕 | 成人精品视频在线观看 | 国产成人精品999在线观看 | 黄色片亚洲 | 欧美成人精品在线 | 国产精品久久久久久久三级 | 久久久久久久久久久久91 | 日本激情视频在线播放 | 欧美一区免费 | 欧美1区| 欧美日韩高清在线一区 | 国产偷录视频叫床高潮对白 | 日韩在线一区二区 | 成人在线观看免费观看 | 中文字幕第一页在线 | 精品av| 久草新在线 | 免费看黄色片 | 中文字幕日韩欧美一区二区三区 | 欧美精品影院 | 成人中文字幕在线 | 国产高清免费在线 | 欧美视频在线观看 | 天天综合亚洲 | 亚洲国产欧美精品 | 欧美日韩中文在线观看 | 91久久精品国产91久久 | 三级国产三级在线 | 久久高清亚洲 | 日韩一区精品 | 亚洲欧美国产精品久久 | 久久av综合 |