Closed5

Falcoを雑に触ってみる話

RyuSARyuSA

2021-03-05のkubenewsで少し話になっていたFalcoの話が上がっていたのでちょっと書いておく

RyuSARyuSA

FalcoはSysdig社が開発運用しているOSSです。
ワークロード上のセキュリティ事案を検知して収集し通知することができることが特徴で、とりあえず困ったら雑にぶち込んでおくとかなり便利になります。
https://github.com/falcosecurity/falco

RyuSARyuSA

今回はKubernetesで動かすことを想定して、HelmでFalcoをデプロイしてみます。
FalcoはHelmチャートとして公開されておりサクッと導入することができます。
https://github.com/falcosecurity/charts

雑に使ってみることを目標とするので、下記の動作を検証してみます。

  • PodをたててBashを取得
  • パッケージマネージャーを更新してcurlをインストール
  • Kubernetes APIにアクセスしてみる
  • Slackに↑のイベントが全て検知されていることを確認する
RyuSARyuSA

まずはインストールをします。FalcoチャートはFalco本体とFalcosidekickというヘルパーツールの混ぜこぜを構成することができます。

Falco本体は検知を、Fαlcosidekickは検知したものを外部へ通知をするツールです。
https://github.com/falcosecurity/falcosidekick

values.yamlを下記のように定義してHelmをインストールします。

auditLog:
  # 監査ログをチェックする
  enabled: true

falcosidekick:
  # sidekickを有効にしてSlackへ検知結果を飛ばす
  enabled: true
  config:
    slack:
      webhookurl: "https://hooks.slack.com/services/あなたのWebhook"
      footer: "=== This is footer ==="
      outputformat: "all"
      messageformat: 'Alert : rule *{{ .Rule }}* triggered by user *{{ index.OutputFields "user.name" }}*' 
  webui:
    # sidekickを画面でみたいなーという人は有効にする
    enabled: true
~/develop/github.com/ryusa/falco/helm/
❯ helm install falco falcosecurity/falco -f values.yaml

DaemonSetでFalcoが起動し、DeploymentでFalcosidekickが起動していればOKです。

~/develop/github.com/ryusa/falco/helm/
❯ kubectl get daemonset,deployment
NAME                   DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
daemonset.apps/falco   2         2         2       2            2           <none>          65m

NAME                                     READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/falco-falcosidekick      2/2     2            2           65m
deployment.apps/falco-falcosidekick-ui   1/1     1            1           65m
RyuSARyuSA

メモ(文章書くのはまた後日

Podを作ってBash奪う

apt udpate && apt install curl -y

root@debug:/# KUBE_TOKEN=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)
root@debug:/# NAMESPACE=default
root@debug:/# curl -sSk -H "Authorization: Bearer $KUBE_TOKEN" \
> https://$KUBERNETES_SERVICE_HOST:$KUBERNETES_PORT_443_TCP_PORT/api/v1/namespaces/$NAMESPACE/pods/$HOSTNAME

これでSlackを眺めてみる

UIを眺めてみる

デフォルト設定でも良い感じ

このスクラップは2021/04/26にクローズされました