Sysdig Secure の Drift Controlを使ってみた
どんな機能か?
この機能は、コンテナはimutableである特性を活かし、本番環境で変更されないはずのファイルシステムが変更され、実行されたことを検知できます。コンテナのベストプラクティスを実装し、Sysdigを追加することで、攻撃の検知に役立てます。
何を検出できるのか?(検出できるパターン)
Sysdigの公式ブログと設定画面から、以下の3つのパターンで検知することができます。
A. Sysdigの設定画面から、指定されたプログラムの実行
B. パーミッション/アトリビュートが実行可能に変更されたファイルの実行
C. パッケージマネージャでダウンロードまたは更新されたパッケージの実行
それぞれ、A. B. C. と試してみました。
準備と前提
以下の事前準備をしました。
- Kuberentes Clusterが動いている
- Sysdig Secureのアカウントがある
- Sysdig Agentが対象のKubernetesにインストールされている
- Container Drift機能が使える状態である(Sysdigに連絡し有効化してもらう)
やってみた
設定
まずは、Continer Driftを選択し、新しいRuntime Policyを作成しました。
テストとして、Always Deny に /usr/bin/curl
を追加しました。
検出テスト
Kubernetesにて、Nginxのpodを走らせました。
kubectl run drift-test --image=nginx
pod/drift-test created
その上で、コンテナにsshします。
kubectl exec -it drift-test -- /bin/bash
root@drift-test:/#
このpodで、以下のパターンを試します。
A/ curl (= 指定したbinary)
B/ downlad & chmod
C/ パッケージインストール
A. curl でkubectlをインストールしてみます
実行:
root@drift-test:/# curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 138 100 138 0 0 3209 0 --:--:-- --:--:-- --:--:-- 3209
100 42.9M 100 42.9M 0 0 133M 0 --:--:-- --:--:-- --:--:-- 133M
root@drift-test:/#
結果:
Sysdig UIを確認すると、イベントページにて検出され多ことを確認できました。
検出されたイベントを見ると、match_type: deny_list
となっています。
B. ダウンロードした、kubectlを叩いてみました
先ほどDownloadした、kubectlに実行権限をつけます。Always Denyに入れていませんが、実行権限をつけたら、Sysdig Agentが自動的に deny listに入れてくれるという仕組みです。
実行:
root@drift-test:/# chmod +x kubectl
root@drift-test:/# ./kubectl help
kubectl controls the Kubernetes cluster manager.
結果:
イベントが検出されました。イベントの詳細を見るとmatch_type dynamic_list
となっています。
C.apt でgitをインストールして叩いてみました
実行:
root@drift-test:/# apt update
root@drift-test:/# apt install git --yes
root@drift-test:/# git help
結果:
イベントが検出されました。イベントの詳細を見ると match_type dynamic_list
となっています。
使ってみた感想
設定が簡単で、コンテナの利点を活かしながら、セキュリティも担保できるため良い機能に感じられる。最初からマイクロサービスとして設計されていない既存のシステムの場合、誤検知が生じると考えられるため、scopeを絞って導入していくのがよさそうです。
今回は試していないが、該当のプログラムを阻止することもできる。しばらくモニターした後、おコラなことを確認したら、悪意のあるプログラムとして、阻止してしまう選択肢も取れる。