主頁 >  其他 > 使用 Istio CNI 支持強安全 TKE Stack 集群的服務網格流量捕獲

使用 Istio CNI 支持強安全 TKE Stack 集群的服務網格流量捕獲

2022-03-10 15:33:38 其他

作者

陳計節,企業應用云原生架構師,在騰訊企業 IT 負責云原生應用治理產品的設計與研發作業,主要研究利用容器集群和服務網格等云原生實踐模式降低微服務開發與治理門檻并提升運營效率,

摘要

給需要快速解決問題的集群管理員:
在 TKE Stack 中正確安裝 Istio CNI 有兩種方式:如果你的 TKE Stack 集群所使用 Galaxy 版本可以支持 cniVersion 0.3.1,請以默認的方式安裝 Istio CNI;否則請使用以“網卡插件”的方式安裝 Istio CNI,并在創建 Pod 時指定使用集群默認網路名稱,
如果你發現你的 TKE Stack 集群安裝完 Istio CNI 之后,無法創建新的 Pod,請立即卸載已安裝的 Istio CNI,并手動恢復各個節點上寫入的 Galaxy 組態檔:將 /etc/cni/net.d/00-galaxy.conflist 檔案內的 plugins 陣列欄位的第一個元素提取出來,并保存為單獨的 conf 檔案: /etc/cni/net.d/00-galaxy.conf,洗掉正在創建中、但無法成功的 Pod,等待其重建,Pod 的創建功能應該能自動恢復,

Istio 是流行的服務網格軟體,它通過向業務 Pod 注入可捕獲出入口流量的代理軟體 Envoy 作為 Sidecar 來完成對流量的觀測與治理,

Istio 為了讓 Envoy 代理能夠捕獲來去業務容器的流量,需要向 Pod 所在網路下發如下 IPTABLES 規則:

*nat
-N ISTIO_INBOUND
-N ISTIO_REDIRECT
-N ISTIO_IN_REDIRECT
-N ISTIO_OUTPUT
-A ISTIO_INBOUND -p tcp --dport 15008 -j RETURN
-A ISTIO_REDIRECT -p tcp -j REDIRECT --to-ports 15001
-A ISTIO_IN_REDIRECT -p tcp -j REDIRECT --to-ports 15006
-A PREROUTING -p tcp -j ISTIO_INBOUND
-A ISTIO_INBOUND -p tcp --dport 22 -j RETURN
-A ISTIO_INBOUND -p tcp --dport 15090 -j RETURN
-A ISTIO_INBOUND -p tcp --dport 15021 -j RETURN
-A ISTIO_INBOUND -p tcp --dport 15020 -j RETURN
-A ISTIO_INBOUND -p tcp -j ISTIO_IN_REDIRECT
-A OUTPUT -p tcp -j ISTIO_OUTPUT
-A ISTIO_OUTPUT -o lo -s 127.0.0.6/32 -j RETURN
-A ISTIO_OUTPUT -o lo ! -d 127.0.0.1/32 -m owner --uid-owner 1337 -j ISTIO_IN_REDIRECT
-A ISTIO_OUTPUT -o lo -m owner ! --uid-owner 1337 -j RETURN
-A ISTIO_OUTPUT -m owner --uid-owner 1337 -j RETURN
-A ISTIO_OUTPUT -o lo ! -d 127.0.0.1/32 -m owner --gid-owner 1337 -j ISTIO_IN_REDIRECT
-A ISTIO_OUTPUT -o lo -m owner ! --gid-owner 1337 -j RETURN
-A ISTIO_OUTPUT -m owner --gid-owner 1337 -j RETURN
-A ISTIO_OUTPUT -d 127.0.0.1/32 -j RETURN
-A ISTIO_OUTPUT -j ISTIO_REDIRECT
COMMIT

在常規安裝模式下,下發 IPTABLES 規則的操作,是通過與 Envoy 代理容器一同注入的初始化容器 istio-init 完成的,向 Pod 網路下發 IPTABLES 規則要求 Pod 可以使用 NET_ADMIN 和 NET_RAW 兩個高權限功能(Capabilities),Linux 將傳統與超級用戶 root 關聯的特權劃分為不同的單元,稱為 Capabilites,Capabilites 每個單元都可以獨立啟用和禁用,這樣當系統在做權限檢查的時候就檢查特定的 Capabilites,并決定當前用戶其行程是否可以進行相應特權操作,比如如果要設定系統時間,就得具有 CAP_SYS_TIME 這個 Capabilites,

Istio 流量捕獲功能面臨的安全挑戰

容器本質上是是宿主機上運行的行程,雖然容器運行時默認只向容器提供必要 Capabilities,但如果使用 --privileded 模式運行容器,或者向容器追加更多 Capabilities 時,容器就可以像其他行程一樣擁有很高權限的操作能力,這樣,能使用 NET_ADMIN 和 NET_RAW 權限的 Pod 理論上不光可以操作自己這個 Pod 的網路,如果處理不當,還可能影響到同一作業節點的其他 Pod 甚至是宿主機的網路配置,通常,這在一些對容器應用的權限嚴格限制的環境中,是不推薦使用的,

從 Kubernetes 1.11 版本開始,我們可以在集群中使用 PodSecurityPolicy 資源(PSP)來限制集群中的 Pod 可以使用的默認權限或能力,通過撰寫如下 PSP 即可限制集群內的 Pod 均不得使用任何特權 Capabilities:

apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: pod-limited
spec:
  allowPrivilegeEscalation: false
  # 不允許使用 Capabilities
  # allowedCapabilities:
  #   - '*'
  fsGroup:
    rule: RunAsAny
  runAsUser:
    rule: RunAsAny
  supplementalGroups:
    rule: RunAsAny
  volumes:
  - configMap
  - downwardAPI
  - emptyDir
  - persistentVolumeClaim
  - secret
  - nfs

可想而知,在一個添加了上述限制的集群上,istio-init 容器由于無法獲得相應特權,將無法完成預定作業:無法讓 Envoy 代理軟體捕獲 Pod 中的流量,這樣整個 Istio 軟體的功能也就無從談起了,此外,從 Kubernetes 1.21 版本開始, PSP 功能將逐步被棄用,新版集群上可能使用其他替代機制限制 Pod 權限,

使用 Istio CNI 解決權限擴散問題

上面談到的安全風險來自于在所有需要注入 Sidecar 的業務 Pod 均需要同步注入高權限 istio-init 容器,而業務 Pod 可以由使用集群的任何人來創建和使用,這對于集群來說,就構成了攻擊面的無限蔓延,這類問題的解決思路,通常是將攻擊面集中化管理,也就是說,由少量可控的高權限 Pod 來偵聽 Pod 創建的程序,在 Pod 啟動前,為它們完成 IPTABLES 下發程序,

這正是 Istio CNI 所解決的問題,

通常,如果要偵聽 Pod 創建、洗掉的事件,使用 Imformer 機制即可很輕松地獲取到集群內各類資源的創建與回收事件,這也是在 Kubernetes 中開發各類 Controller 所常見的做法,但為 Pod 下發 IPTABLES 規則的任務與普通 Controller 有所不同:它需要在 Pod 事件創建或洗掉時,在 Pod 所在作業節點上,進入相應容器的 Linux Namespace,并下發 IPTABLES 規則,從執行位置來說,這更像是一種 Daemonset,另一方面,對 Pod 的創建和洗掉事件的處理恰好與 CNI 定義的一些命令吻合,CNI 是 Kubernetes 定義的用于為 Pod、Service 提供網路的機制,正好下發 IPTABLES 也是一種網路相關的操作,所以 Istio 團隊也就索性直接以 CNI 插件的方式提供這一功能,

Istio CNI 的作業流程如下圖:

Istio CNI DaemonSet 負責將 Istio CNI 插件的可執行程式安裝到作業節點上,這些程式稍后在新的業務 Pod 創建或銷毀時會收到來自 k8s 的呼叫,接著它們完成 IPTABLES 規則的配置,由于這些程式是運行在作業節點上,因此具有較高的權限:但它們可以被集中管理,因此權限是受控的,而業務 Pod 此時不再需要高權限來配置這些 IPTABLES,只需要運行一個簡單的檢查程式,確保業務容器運行之前,這些規則已就緒即可,

上圖是 Istio 自注入模板的代碼片斷,從中可以看出,當啟用 Istio CNI 時,如果啟用了 Istio CNI 功能,Istio 向 Pod 注入的容器不再需要高權限,

在 TKE Stack 中安裝 Istio CNI 的問題

與普通 CNI 插件不同,Istio CNI 并不提供常規的 IP 地址管理(IPAM)和聯網(SDN)功能,它只在 Pod 的網路已建立之后,負責下發上述規則,因此,Istio CNI 并不會、也不能替換集群現有的 CNI 插件的功能,也就是說,在配置 Istio CNI 之外,k8s 集群還需要配置其他負責 IPAM 和 SDN 的軟體,比如我們熟悉的 Flannel 或 Calico 等,

為了配合不同種類的現有 CNI 插件,Istio CNI 既能以“網卡插件”(Interface Plugins)的方式運行,也能以“插件鏈”(Chained Plugins)的方式附加到現有網卡插件運行,根據 CNI 標準的描述,網卡插件是用于創建虛擬網卡的 CNI 插件,而插件鏈則允許多個插件為已創建的網卡提供附加功能,插件鏈模式很符合 Istio CNI 的定位,也是 Istio CNI 的默認運行方式,在這種運行方式下,Istio CNI 先會檢查集群當前 CNI 插件的配置:如果它已經是一個插件鏈,則將自身添加到它的尾部,成為新的功能;如果當前插件是一個“網卡插件”,則先將其轉換為插件鏈,再將自身添加到鏈的尾部,

TKE Stack 是由騰訊主導的開源 k8s 發行版,與社區版 k8s 相比,TKE Stack 主要提供了更強的網路接入能力、多集群管理能力,以及將容器資源與業務和用戶等因素集成管理等豐富的功能,TKE Stack 也是騰訊云提供的容器服務的開源版本,在騰訊內部部署了超過數十萬核的超大規模集群,穩定運行了數年,

TKE Stack 的默認 CNI 插件是 Galaxy,它是一個能讓集群接入各類網路插件的“元 CNI”框架:基于它,我們可以讓集群中的 Pod 基于 Flannel 之類的插件獲得普通 Overlay 網路的同時,還可以基于其他插件獲得諸如 Underlay 網路等強大的能力,比如,典型的 Underlay 網路可以提供的能力有,可以讓 Pod 獲取到另一個子網(比如作業節點所在子網)的 IP 地址、獲取固定 IP 地址等,

經過測驗發現,在一些集群上,Istio CNI 插件默認的插件鏈運行模式與 Galaxy 不能兼容,原因是,Istio CNI 的配置轉換處理程序存在瑕疵:這些集群上的原有 Galaxy CNI 的配置是網卡插件(即 00-galaxy.conf)模式, 經過 Istio CNI 的處理之后,相關配置無法被 Galaxy CNI 識別和處理,

具體原因是,Istio CNI 在將原有配置復制為插件鏈模式的程序中,會洗掉原配置中的 cniVersion 版本號(如果有),在新生成的插件鏈組態檔 00-galaxy.conflist 時,將此版本號強制改為 Galaxy CNI 尚未支持的 0.3.1,進入 Galaxy CNI 相關 daemonset 容器,并模擬執行 CNI 版本檢查命令,可以發現此集群上 Galaxy CNI 支持的 cniVersion 最高為 0.2.0,相關原始碼可點擊此處,

CNI_COMMAND=VERSION /opt/cni/bin/galaxy-sdn </etc/cni/net.d/00-galaxy.conf

在這樣的 TKE Stack 集群中以插件鏈模式運行 Istio CNI 之后,將出現新 Pod 無法創建的問題,具體錯誤為:plugin galaxy-sdn does not support config version "0.3.1",從 Pod 創建日志及 kubelet 上都可以找到這一錯誤資訊,

更糟糕的是,即使此時卸載 Istio CNI,仍然不能恢復 Galaxy CNI 的功能,這是因為雖然 Istio CNI 卸載程序會嘗試回退它做的修改,但是回退程序只是將 Istio CNI 相關內容從新創建的 conflist 格式配置中移除,而并未將 CNI 組態檔恢復為原始的 conf 格式,無法識別的版本號 0.3.1 被保留了下來,

此時,需要管理員登錄每臺集群作業節點,手工將 /etc/cni/net.d/00-galaxy.conflist 檔案內的 plugins 陣列欄位的第一個元素提取出來,并保存為單獨的 conf 檔案: /etc/cni/net.d/00-galaxy.conf,洗掉正在創建中、但無法成功的 Pod,等待其重建,Pod 的創建功能應該能自動恢復,

Istio CNI 安裝問題的解決思路

明確了問題的緣由,要解決這些問題就很直接了,在 TKE Stack 集群中安裝 Istio CNI 的兩個思路是:

  1. 使用網卡插件的方式運行 Istio CNI
  2. 升級 TKE Stack 集群中的 Galaxy CNI 版本

使用網卡插件的方式運行 Istio CNI

既然 Istio CNI 提供了網卡插件的運行方式,那啟用它是一種比較輕松的處置方法,安裝 Istio CNI 時,關閉 chained 引數即可以網卡插件的方式運行 Istio CNI,如果是為已有 Istio 集群補充安裝 Istio CNI,則可能需要手工修改位于 istio-system 命名空間的 Istio 注入模板配置 configmap/istio-sidecar-injector 資源中的 values 資料,其中的 istio_cni 配置節:

"istio_cni": {
  "enabled": true,
  "chained": false
}

需要注意的是,以網卡模式運行的 Istio CNI,會在 Pod 創建為其時添加 k8s.v1.cni.cncf.io/networks 注解(Annotation),以便通知集群上可以支持這個注解的 CNI 插件呼叫 Istio CNI 完成功能,Galaxy CNI 作為一個元 CNI 插件,是可以支持這個注解的,當 Galaxy 遇到這個注解時,將會跳過默認的 Galaxy 網路插件,而啟用注解中配置的 CNI 插件,Istio CNI 并不實際提供聯網功能,因此如果只運行 Istio CNI 會導致 Pod 無法獲得正確的 IP,因此還是無法正確創建,以下代碼片斷來自 Istio 注入模板,從中可以看出其中的邏輯:

  {{- if and (.Values.istio_cni.enabled) (not .Values.istio_cni.chained) }}
  {{ if isset .ObjectMeta.Annotations `k8s.v1.cni.cncf.io/networks` }}
    k8s.v1.cni.cncf.io/networks: "{{ index .ObjectMeta.Annotations `k8s.v1.cni.cncf.io/networks`}}, istio-cni"
  {{- else }}
    k8s.v1.cni.cncf.io/networks: "istio-cni"
  {{- end }}
  {{- end }}

從上面的代碼中可以看出,Istio 模板嘗試讀取 Pod 上已有的注解值,并將 istio-cni 追加到末尾,這樣,我們只需要在創建 Pod 時將 Galaxy 默認的網路配置名稱以注解的方式提前列出,即可正確創建 Pod,從 kube-system 命名空間中的 configmap/galaxy-etc 配置的 DefaultNetworks 可以找到當前 Galaxy CNI 的默認網路名稱,

kind: Pod
metadata:
  annotations:
    k8s.v1.cni.cncf.io/networks: galaxy-flannel
  name: my-pod

實際測驗結果表明,以網卡插件模式運行 Istio CNI,并在 Pod 上標記原有網路模式,即可在 TKE Stack 上成功運行 Pod 并正常使用 Istio 的各項功能,

升級 TKE Stack 集群中的 Galaxy CNI

雖然以獨立網卡插件模式運行 Istio CNI 是可以解決 Pod 無法創建的問題的,但是由于需要向 Pod 上添加額外的注解,所以給應用開發者或者部署流水線增加了額外的復雜度,甚至有可能影響 Pod 使用 Galaxy CNI 提供的其他網路功能,比較理想的效果是,能像 Istio CNI 原生提供的那樣,能透明地支持相關功能,

幸運的是,在最新的 1.0.8 版本 的 Galaxy CNI 的代碼中,已經支持了 0.4.0 及之前版本的各個 cniVersion,因此將 Galaxy CNI 的版本升級到最新版,就能以默認插件鏈模式運行 Istio CNI 了,如果你的集群中的組件經過了自己團隊的定制,則需要聯系這些定制組件的開發團隊核實他們所使用的上游版本,并提醒他們升級 Galaxy 組件的版本,

升級到最新版本的 Galaxy 組件之后,再運行相應的驗證腳本,可以發現新版本的 Galaxy 已支持包括 0.3.1 在內的多個 cniVersion,

總結

作為流行的服務網格軟體,Istio 可以為微服務提供接近無侵入的強大流量治理能力和豐富的觀測能力,而 Istio 這些能力都來源于它對來往業務容器的網路流量的完全捕獲能力,

雖然 Istio 本身提供了多種在指定命名空間安裝的特性,但將 Istio 作為一個集群級基礎平臺能力是眾多團隊的首選,而在一些公開的多租戶集群、有特殊安全策略要求等復雜的集群環境,安裝和運營 Istio 會面臨一些獨特的挑戰,

本文簡要介紹了在安全限制嚴格的集群中,要使用 Istio 流量治理功能所依賴的 IPTABLES 網路策略需要的 Istio CNI 插件的運行原理,以及要在 TKE Stack 集群中運行 Istio CNI 會遇到的問題和解決方法,運用這些方法,可以較好地使用較低的權限運行業務應用的同時,以兼容集群現有網路功能的方式,提供 Istio 的完整功能,

參考資料

  • Istio CNI 的安裝方法
  • Kubernetes CNI 插件標準
  • 在 OpenShift 上消除 Istio Pod 高權限并提高安全性
  • [Linux 上的 Capabilities](https://www.qikqiak.com/post/capabilities-on-k8s/ https://istio.io/latest/docs/setup/additional-setup/cni/ "Linux 上的 Capabilities

關于我們

更多關于云原生的案例和知識,可關注同名【騰訊云原生】公眾號~

福利:

①公眾號后臺回復【手冊】,可獲得《騰訊云原生路線圖手冊》&《騰訊云原生最佳實踐》~

②公眾號后臺回復【系列】,可獲得《15個系列100+篇超實用云原生原創干貨合集》,包含Kubernetes 降本增效、K8s 性能優化實踐、最佳實踐等系列,

③公眾號后臺回復【白皮書】,可獲得《騰訊云容器安全白皮書》&《降本之源-云原生成本管理白皮書v1.0》

④公眾號后臺回復【光速入門】,可獲得騰訊云專家5萬字精華教程,光速入門Prometheus和Grafana,

⑤公眾號后臺回復【精選集】,可獲得騰訊24位騰訊云專家精彩演講——4萬字《騰訊云技術實踐精選集 2021》,

【騰訊云原生】云說新品、云研新術、云游新活、云賞資訊,掃碼關注同名公眾號,及時獲取更多干貨!!

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/440428.html

標籤:其他

上一篇:【面經】面試基本流程

下一篇:淺析HTTPS的通信機制

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more