Sysdig OSS の実践的な活用

By 清水 孝郎 - NOVEMBER 10, 2024

SHARE:

本文の内容は、2024年11月6日にNigel Douglas が投稿したブログ(https://sysdig.com/blog/practical-usage-of-sysdig-oss/)を元に日本語に翻訳・再構成した内容となっております。

Sysdig の 5/5/5 ベンチマークに対処するには、セキュリティ侵害やパフォーマンスの問題が発生した場合に、迅速なトラブルシューティングと詳細なフォレンジック調査が不可欠です。Falco はシステムコールアクティビティに基づくリアルタイムの脅威検出に優れていますが、Sysdig はインシデント後の分析の頼りになるツールとして機能します。パケットキャプチャパラダイムの Wireshark に匹敵する Sysdig Inspect は、システムコールを分析するための同様に強力なインターフェイスを提供し、Linux ホストで実行されるコンテナ、アプリケーション、およびシステムの動作を詳細に分析できます。

Sysdig OSSとは何ですか?

Sysdig Inspect は、コンテナのトラブルシューティングとセキュリティ調査用に設計されたオープンソースツールです。Falco のフォレンジック コンパニオンと考えてください。Falco はリアルタイムで脅威を検出しますが、Sysdig Inspect はインシデント発生後に何が起こったかを理解するのに役立ちます。システム コールを詳細に調べることができるため、デジタルフォレンジックとインシデント対応 (DFIR) の専門家は、侵害に至るまでのアクティビティを追跡し、コンテナの動作を理解し、調査結果を相関させて Falco での脅威検出ルールの設計を改善できます。

キャプチャ: Sysdig のパケットキャプチャに相当するもの

Wireshark はネットワークトラフィックを .pcap ファイルにキャプチャし、ポイントインタイムのネットワークフォレンジックを可能にします。同様に、Sysdig Inspect はシステムコールアクティビティを .scap ファイルに記録し、インフラストラクチャ全体のすべてのシステムコールをキャプチャします。パフォーマンスのボトルネックをトラブルシューティングする場合でも、クラウドネイティブアプリケーションでの疑わしいアクティビティを調査する場合でも、Sysdig Inspect は比類のない洞察を提供します。

Wireshark にはターミナルベースのパケットキャプチャ用のtsharkがありますが、Sysdig Inspect はクラウドインシデント対応者にさらに高い柔軟性を提供します。コマンドラインから直接ヘッドレス環境でキャプチャを実行できるため、リソースが制限されている環境やリモート環境でも軽量なオプションでデータを収集できます。

Sysdig Inspect UIはフォレンジック調査担当の夢です

Sysdig Inspect には、.scap ファイルにキャプチャされた膨大な量のシステム、ネットワーク、およびアプリケーション アクティビティのナビゲーションを簡素化する強力なユーザー インターフェイス (UI) も備わっています。ユーザーフレンドリな設計により、フィルタリング、傾向の調査、主要なメトリクスの相関付けが可能になり、調査中に「干し草の山の中の針」を見つけるのに役立ちます。コンテナアクティビティの詳細なイントロスペクションにより、セキュリティインシデントやパフォーマンスの問題を調査している場合でも、システムの動作を詳細に把握できます。

Sysdig Inspect を使用すると、セキュリティエンジニアとパフォーマンス アナリストは、次のような詳細を詳しく調べることができます。

  • システム アクティビティ: ファイル アクセスからネットワーク接続まで、行われたすべてのシステム コール。
  • ネットワーク相互作用: コンテナ化されたプロセスがネットワークを介してどのように通信するかを観察します。
  • Container Insights : コンテナの動作と脆弱性に関する詳細なイントロスペクション。

これらの洞察は、クラウド セキュリティ エンジニアと開発者が問題を解決するだけでなく、実際の調査結果に基づいて Falco 検出ロジックを改善するのにも役立ちます。

Sysdig をCLIで使用する

Sysdig Inspectの多様性は、そのコマンドラインインターフェース(CLI)で際立っており、UIにアクセスできないことがあるクラウド環境で不可欠なツールとなっています。CLIは、システムコールレベルで発生するすべてのことをキャプチャし、高度に動的でマルチコンテナの環境にも対応します。

始めるには、わずか1ステップでSysdig Inspectをインストールできます:

このインストーラーは、必要なすべての事前チェックを実行し、Linux ディストリビューションとカーネル バージョンに基づいて正しいバージョンの Sysdig がインストールされるようにします。コマンド 1 つでセットアップできるため、デプロイメントが迅速かつ簡単になり、数分以内に最初のキャプチャの準備が整います。

Sysdig 検査

Sysdigがインストールされたら、フィルターなしでSysdigコマンドを実行できます。これは、Wiresharkをフィルターなしで実行するのと似ていますが、そのままでは全く読み取れません。これは、すべてのシステムコール活動のリアルタイムストリームであるためです。

その代わりに、以下のタイムアウトコマンドを使用して5秒間のキャプチャを実行してみましょう:

timeout 5 sysdig -w nigel-capture.scap

以下のコマンドで、nigel-capture.scap ファイルの内容を読み取ることができます:

sysdig -r nigel-capture.scap

プログラムがepollファイルディスクリプタ上でI/Oイベントを待機する際に、epoll_pwaitイベントタイプが生成されることが確認できます。特定のシステムコールイベントのみを表示したい場合は、次のようにコマンドを修正しましょう:

sysdig -r nigel-capture.scap evt.type=epoll_pwait


KubernetesのすべてのAPIオブジェクト(ポッド、サービス、レプリケーションコントローラなど)のデータを検証・設定するkube-apiserverプロセスに非常に興味があります。Sysdig Inspectはブール論理をサポートしているので、and演算子を使用して、クエリに追加のプロセス名を含めてみましょう:

sysdig -r nigel-capture.scap evt.type=epoll_pwait and proc.name=kube-apiserver
Sysdig 検査

出力には満足していますが、実際には問題は解決されていません。システムをよりよく理解できるように、Sysdig Inspect のコマンドライン引数について詳しく学びましょう。

マイクロサービスアーキテクチャーの監視

フロントエンドのワークロード、バックエンドのデータベース タイプのアプリケーション、および通信するその他の中間マイクロサービスを含む、汎用的なマイクロサービス アーキテクチャを紹介します。 storefront-demo デプロイメントマニフェストを Kubernetes クラスターに適用してみましょう。

kubectl apply -f https://installer.calicocloud.io/storefront-demo.yaml

ワークロードが稼働したら、動的に割り当てられた IP アドレスを確認します。

kubectl get pod -n storefront -o wide
Sysdig 検査

もちろん、KubernetesのポッドはKubernetesにおける抽象化されたものです。これらのワークロード上で実際に動作しているプロセスをより詳しく理解したい場合、ps auxやtopのようなコマンドを実行できます。

私の場合は、さらにgrepやフィルターを使って peira に関連するプロセス活動に絞り込んでいます。

ps aux | grep -a "peira"

Kubernetes クラスターで確認されているプロセス peira は、何らかのサービスプローブツールまたはモックツールに関連しているようです。ps aux 出力のコマンド ラインに基づくと、peira は主に次の 2 つの機能を実行しているようです。

  • プローブインスタンスは、クラスター内のサービスをチェックまたは監視する役割を担います。プローブインスタンスは、特定のポート (:80、:9001、:9002) でさまざまなサービス (ログ記録、microservice1、バックエンドなど) と対話します。プローブは、サービスの可用性やレイテンシをチェックしたり、ヘルス チェックを実行したりするためによく使用されます。
  • モックインスタンスは、YAML ファイル (例: /mocks/backend-mock.yaml) からモック構成を読み込んでいます。これは、peira がテスト目的でサービスをシミュレートまたはモックし、システムの他の部分が実際のバックエンドを介さずに実際の動作を模倣する「偽の」サービスと対話できるようにしていることを示しています。

peira プロセス アクティビティをキャプチャするために、5 秒間の新しいキャプチャを実行してみましょう。

timeout 5 sysdig -w storefront-capture.scap

Sysdig を複数のプロセス ソースに対してフィルタリングするために、sandbox-agent と peira をチェックして、両方のプロセスが .scap ファイルに存在するかどうかを確認しましょう。

sysdig -r storefront-capture.scap proc.name=sandbox-agent or proc.name=peira
Sysdig スペクト

基本的な部分は理解できたので、楽しみましょう。Sysdig のフィルタリング システムは強力で多用途であり、干し草の山から針を探すように設計されています。フィルターは、tcpdump と同様にコマンド ラインの末尾に指定され、ライブキャプチャとキャプチャファイルの両方に適用できます。 

不正または悪意のあるワークロード

Project Calico チームのおかげで、公開されている不正なワークロードの例を同じstorefront のネームスペースへインストールできました。 

kubectl apply -f https://installer.calicocloud.io/rogue-demo.yaml -n storefront

新しく作成した不正なワークロードに割り当てられている IP アドレスを確認しましょう。Sysdig Inspect キャプチャのフィルターとして、そのソース IP アドレスを使用します。

kubectl get pods -n storefront -o wide | grep attacker-app

いつものように、干し草の山の中の針を特定するために、不要なトラフィックや不正なトラフィックを含むすべてのトラフィックをキャプチャしましょう。

timeout 5 sysdig -w malicious-traffic.scap

nmap は、ネットワーク トラフィックとログをスキャンして分析したい倫理的なハッカーにとって強力なツールです。ターゲット ネットワークに関するホスト、ポート、サービス、脆弱性、その他の情報を発見するのに役立ちます。プロセスnmapSource IPワークロードをフィルタリングするだけで、新しく作成されたポッドからの攻撃者のトラフィックをすべて確認できます。

sysdig -r malicious-traffic.scap "proc.name=nmap and evt.type=sendto and fd.sip=10.244.0.8"

-S または –summary を使用して、キャプチャ終了時にイベントの概要 (つまり、上位のイベントのリスト) を出力します。
これにより、ユーザーは、生成されたシステム コールと、そのキャプチャ ファイル内でトリガーされたイベントの数を正確に把握できます。このようなエグゼクティブ サマリーは、チームが Falco 検出ルールにスコープされるシステム コールの優先順位付けや、インシデント対応のトラブルシューティングの一部として役立ちます。

sysdig -r malicious-traffic.scap "proc.name=nmap and evt.type=sendto and fd.sip=10.244.0.8" --print-hex-ascii
Sysdig 検査

悪意のあるネットワーク トラフィックの .scap 出力をASCII形式で表示したいとします。これは Wireshark や tshark と同じように実行できます。--print-hex-asciiフラグを付けて以下のコマンドを実行します。

sysdig -r malicious-traffic.scap proc.name=nmap --summary
Sysdig 検査


SysdigのキャプチャにおいてASCII形式は、システムコールデータを読みやすく分析しやすいため、セキュリティ調査やトラブルシューティング時に問題を特定しやすくするのに役立ちます。プレーンテキストの書き込み活動や、特定のC2サーバーのエンドポイントアドレスへの通信を見つけたい場合は、xmrigやマイニングプールのアドレスなどの特定のアクティビティをgrepで検索するだけです。以下の例では、Twilioへの接続が確立されていることが確認できます。

sysdig -r malicious-traffic.scap "proc.name=wget and evt.type=write" | grep -a "api.twilio.com"

ファイル整合性監視 (FIM)


ファイルが開かれたり削除されたりするインスタンスを監視したい場合、これを自動化するために、5秒間隔で実行されるシンプルなバックグラウンドスクリプトを作成しました。以下のfile_watcher.shスクリプトをダウンロードし、.sh実行ファイルに変換して、バックグラウンドプロセスとして実行できます。


これまでのシナリオでは、キャプチャを.scapファイルに書き出していましたが、次のコマンドでは、イベントバッファにリテラル文字列コンテキストが含まれるすべてのcatアクティビティ(ファイルの基本的な読み取り操作)の出力を、ターミナルで直接追跡しています。この場合、私は同じファイルに「helloworld」データを書き続けています:

sysdig proc.name=cat and evt.type=read and evt.buffer contains helloworld


FIM(ファイル整合性モニタリング)に問題がある場合、変更が行われているディレクトリも把握する必要があります。私たちの場合、ルートディレクトリに書き込まれていることが確認できます。

sysdig -p"%evt.arg.name" proc.name=cat or evt.type=open | grep helloworld


sysdig -pコマンドを使用すると、Sysdigでキャプチャされたイベントの出力形式をカスタマイズできます。表示したいフィールドとそのフォーマットを定義することが可能です。-pフラグの後にフォーマット文字列を指定し、プロセス名、ユーザー、ファイルディスクリプタ、システムコールの種類など、含めるフィールドを指定できます。これは、パフォーマンス調査など特定のユースケースに対して関連情報のみを表示するために役立ちます。

Chisels

Sysdig Chiselは、Sysdig イベント ストリームを分析して便利なアクションを実行する小さなスクリプトです。使用可能なチゼルのリストを取得するには、次のように入力します。

sysdig -cl

Chiselには興味深いカテゴリがたくさんあります。エラー処理からリソースの使用、ログ、システム状態、セキュリティ、トレーサーまで。これらすべてのChiselを 1 つのブログ投稿でカバーすることは不可能です。


Chiselを実行するには、-cフラグの後にChiselの名前を指定します。この場合はtopfiles_bytesで、特定の時点でサイズ別に最も一般的なファイル名を集計しています。これは、重要な活動のすべてをライブストリームで表示するものです。

sysdig -c topfiles_bytes

または、特定のコンテナ化された/Kubernetes ワークロードのすべてのnetcatアクティビティを確認することもできます。 

sysdig -c netstat.lua

Sysdig はオープンソースであるため、上記のような固有のトラブルシューティング シナリオに対処するための独自のChiselを柔軟に作成できます。クラウドネイティブの調査に不可欠なこのレベルのきめ細かい制御は、多くのエンタープライズ クラウド プラットフォームに欠けていることがよくあります。Sysdig Inspect は、包括的なデジタル フォレンジック用に設計された開発者中心のソリューションとして際立っています。

Sysdig Inspectの主な使用例

1. セキュリティ侵害後のフォレンジック

セキュリティ侵害が発生した後、その原因を理解する必要があります。Sysdig Inspectはシステムコールの活動をキャプチャできるため、イベントの連鎖を再構築するのに非常に有用です。どのプロセスが関与していたか、どのファイルにアクセスされたか、どのようにネットワーク接続が行われたかを正確に確認することができます。

2. パフォーマンストラブルシューティング
Sysdig Inspect は、プロセスとコンテナがシステムリソースとどのようにやり取りするかを分析することで、パフォーマンスのボトルネックを診断するのに役立ちます。データベースの遅いクエリの特定から CPU を大量に消費するプロセスの特定まで、クラウド ネイティブアプリのパフォーマンスを向上させる実用的なデータを提供します。

3. Falco ルールの設計
キャプチャから実際のシステムコールデータを分析することで、セキュリティエンジニアは新しい Falco ルールを改良または設計できます。正当なプロセスまたは疑わしいプロセスがシステムとどのようにやり取りするかを理解することで、検出ロジックを微調整し、誤検知を最小限に抑えることが容易になります。

まとめ

Sysdig Inspectは、クラウドネイティブ環境におけるセキュリティおよびパフォーマンス調査のための不可欠なツールです。インシデント対応、セキュリティ侵害後のフォレンジック調査、複雑なパフォーマンス問題のトラブルシューティングなど、Sysdig Inspectは意思決定に必要な深い可視性と制御を提供します。特にCLIを通じた柔軟性により、どのような環境でも迅速な展開とキャプチャが可能であり、現代のクラウド運用には欠かせないツールです。

Sysdig Inspectのさまざまなシナリオでの使用方法に関するさらなるインサイトをお楽しみに。強力なCLI機能を使ってトラブルシューティングを自動化・簡略化することもぜひ試してみてください。