K3s+Sysdig,8分鐘部署並保護集羣安全!

K3s因其易於部署、小型二進制文件以及能夠用於特定用例,如邊緣環境(在這些場景下使用K8S會過於複雜)而在全球開發者社區中備受歡迎。K3s是一個通過CNCF認證的Kubernetes發行版,這意味着K3s集羣上的工作方式與在Kubernetes上完全相同。

在本篇文章中,我們將介紹如何部署K3s,然後安裝Falco OSS和Sysdig Essentials,以快速瞭解K3s的安全性和可見性。在本文中,我們將提供詳細的步驟和腳本,告訴你如何在8分鐘內創建一個安全且完全可觀察的集羣。

部署K3s集羣

我們提供3個選項部署3個節點的K3s集羣。你可以通過更新Terraform config添加更多節點或者在你的提供程序腳本里添加它們。

A.Rancher默認腳本

1、 下載最新版本的K3s,x86_64、ARMv7和ARM64架構均支持。請注意,Sysdig/Falco尚未支持ARM。

2、 運行server:

sudo k3s server &
# Kubeconfig is written to /etc/rancher/k3s/k3s.yaml
sudo k3s kubectl get node

在不同的節點上,運行以下內容。NODE_TOKEN來自

/var/lib/rancher/k3s/server/node-token

# on your server
sudo k3s agent --server https://myserver:6443 --token ${NODE_TOKEN}

B. k3sup

K3sup是一個輕量級的工具,可以在任何本地或遠程虛擬機上使用。你需要的只是ssh訪問來運行k3sup二進制文件,並立即獲得kubectl訪問權限。

我們準備了一些Terraform腳本,在GKE或AWS上提供3個節點,然後用k3sup在上面部署k3s。我們還創建了一個k3sup.sh腳本

https://github.com/danpopSD/sysdig-k3s/blob/master/k3sup.sh)

來使事情變得更加簡單,儘管你需要根據節點IP和你的ssh密鑰來調整它。

圖片

C. 託管的K3s集羣

Civo Cloud(https://www.civo.com/)是全球首個由K3s驅動的、託管的Kubernetes服務。你只需點擊幾下就可以準備好你的集羣。

安裝Falco

Falco是一款開源的運行時安全工具。它最初由Sysdig.Inc開發構建,目前已經捐獻給CNCF,現在是CNCF的孵化項目。Falco在運行時解析來自內核的Linux系統調用,並針對強大的規則引擎聲明流。如果違反了規則,就會觸發Falco警報,並將其發送到許多方便的機制(本文後半部分會列出)。

下面是@krisnova整理的一張很棒的圖,展示了Falco的工作原理,我們將其中一部分修改爲K3s:

圖片

Falco默認規則集

默認情況下,Falco在出廠時就有一套成熟的規則,會檢查內核是否有異常行爲,比如:

  • 使用特權容器的權限升級
  • 使用setns等工具更改命名空間
  • 讀/寫知名目錄,如/etc、/usr/bin、/usr/sbin等。
  • 創建symlinks
  • 所有權和模式更改
  • 意外的網絡連接或插座突變
  • 使用execve生成的進程
  • 執行shell二進制文件,如sh、bash、csh、zsh等。
  • 執行SSH二進制文件,如ssh、scp、sftp等。變更Linux coreutils可執行文件
  • 變更登錄二進制文件
  • 變更shadowutil或passwd可執行文件。
  • Shadowconfig
  • pwck
  • chpasswd
  • getpasswd
  • change
  • useradd

Falco 告警

Falco可以給一個或多個頻道發送告警:

  • 標準輸出
  • 文件
  • Syslog
  • spawned program
  • HTTP[s] end point
  • 通過gPRC API的客戶端

安裝Falco

既然我們已經瞭解了Falco是什麼以及它能夠實現什麼功能,那麼我們將開始在K3s集羣上運行Falco:

1、 選擇上述其中一種方法來部署K3s。

圖片

2、(可選)使用命令創建命名空間:kubectl create ns falco

3、運行命令helm install falco falcosecurity/falco。如果你正在使用GCP或later kernel,則嘗試這一命令:helm install falco falcosecurity/falco --set ebpf.enabled=true


 1. helm repo add falcosecurity
 2. https://falcosecurity.github.io/charts
 3. helm repo update
 4. helm install falco falcosecurity/falco

圖片

Falco運行狀態

下面是一個違反規則的例子和Falco的結果輸出(標準輸出)。

Falco規則:網絡工具在容器中啓動。

圖片

圖片

攻擊行爲:

圖片

結果:在STDOUT中以內核的速度發出通知,可以以JSON和其他格式發送。

關於Falco規則和安裝細節的更多信息,請訪問falco.org。

安裝Sysdig

有了新的Sysdig onboarding,你將在5分鐘內完成設置。

1、註冊免費試用版本:

https://sysdig.com/company/free-trial/

2、 通過“Get started”curl腳本進行安裝

你會得到一個訪問密鑰和一個需要集羣名稱的 curl 語句。在這種情況下,我們使用sysdg-k3s。

K3s使用containerd作爲運行時。你需要將其添加到你的curl語句的末尾:

-cd unix:///run/k3s/containerd/containerd.sock -cv /run/k3s/containerd

Sysdig for k3s:5個基本工作流程

既然我們已經完成安裝,讓我們看看Sysdig可以幹什麼。

現在,讓我們看看最近創建的k3s集羣上的五個基本工作流程。我們將從鏡像掃描開始,一直到整體可見性。瞭解安全事件期間發生的情況至關重要。

1、 鏡像掃描

在本例中,我們已經將一個busybox鏡像部署爲k3s pod。Sysdig鏡像掃描器既可以在線分析鏡像,也可以從鏡像倉庫中獲取鏡像。

Sysdig幫助你遵循鏡像掃描的最佳實踐。例如,你可以通過在線掃描轉移left security,在流水線上更早地檢測安全問題,並阻止脆弱的鏡像被推動到鏡像倉庫中。

2、 運行時安全:Falco規則引擎

我們在Falco中使用的相同規則也可以在Sysdig Secure中使用。然而,這次我們能夠停止容器並留下審計線索。

Sysdig Activity Audit顯示了ncat命令的執行情況,以及k3s cluster/pod/process/container中運行的所有其他命令。

你在我們的UI中看到的所有豐富的上下文都可以被提取到下游的SIEM中,爲你的Kubernetes嵌入式安全提供強大的動力

3、 合規性

雖然目前還沒有針對k3s的CIS基準,但正常的Kubernetes主機或linux主機的CIS基準也適用。這將允許你調整並確保你的k3s集羣在實例層面的合規性。

你可以在Sysdig內以儀表板的形式可視化你的環境的合規性分數。

4、 Kubernetes及容器監控

瞭解K3s集羣的利用率、可用性和整體容量極爲重要,這些關鍵信息將幫助你增加或刪除資源,並相應地調整大小。更好地管理你的資源,爲你節省成本。

5、 應用程序和雲服務監控

Sysdig提供的開箱即用的儀表盤將幫助你監控最常見的雲服務。它們遵循黃金信號原則,讓你很好地瞭解你的應用程序的健康和性能,正如你的最終用戶所看到的那樣。

Sysdig也完全兼容Prometheus,這是Kubernetes監控的事實標準。這意味着你的開發人員可以繼續使用他們所熟悉和喜愛的工具,同時從PromCat等資源庫中訪問各種各樣的資源。

總 結

在本文中,我們瞭解到通過K3s可以在一個簡單的二進制文件中輕鬆部署Kubernetes及其功能。再加上Sysdig,你的集羣安全將不費吹灰之力得到保障。在你的實例上運行K3s以及DevOps的5基本工作流程,都可以在8分鐘內完成。

K3s還有更多的應用場景和使用方式,我們在過去的文章中也探索了許多K3s與其他工具的組合,進而發揮出意想不到的作用。希望讀到這裏的你,也能在日常的工作中多多探索K3s的隱藏用法,幫助你進一步提升效率。

作者:Dan Papandrea
原文鏈接:
https://sysdig.com/blog/k3s-sysdig-falco/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章