コンテンツにスキップ

CRI-O と containerd を使用した SLS のインストール

Sophos Linux Sensor (SLS) は、CRI-O または containerd がインストールされているホストで実行できます。これは、SLS をコンテナイメージとしてデプロイするか、rpm または deb パッケージを介してホストプロセスとしてインストールするかに関係なく適用されます。

設定

CRI 設定値は、SLS 設定ファイル /etc/sophos/runtimedetections.yaml にあります。

CRI 固有の設定値には、次の 3つがあります。

意味 デフォルト
enabled SLS をオンまたはオフにするブール値。 false enabled: true
addr CRI コンテナランタイム API へのパスを示す。 auto-detect addr: unix:///var/run/crio/crio.sock
poll_interval SLS が CRI インターフェースでコンテナのステータスの変更をチェックする頻度。 250ms poll_interval: 150ms

addr 値の前に unix:// を付ける必要があり、これを付けない場合はエラーメッセージが表示されます。たとえば、CRI-O UNIX ソケットに接続する場合は、addr: unix:///var/run/crio/crio.sock として addr を入力する必要があります。 

次に例を示します。

crisensor:
    enabled: true
    addr: unix:///var/run/crio/crio.sock
    poll_interval: 150ms

対応しているランタイムのデフォルトの UNIX ソケットパス

サポートされているランタイムのデフォルトパスを次の表に示します。

ランタイム ソケットパス 設定オプションの例
CRI-O /var/run/crio/crio.sock crisensor.addr: unix:///var/run/crio/crio.sock
Containerd /var/run/containerd/containerd.sock crisensor.addr: unix:///var/run/containerd/containerd.sock

コンテナの導入

SLS をコンテナに導入する場合、crisensor.addr で指定されるパスは、コンテナにマウントされている UNIX ソケットのパスと一致する必要があります。

CRI-O をコンテナランタイムとして使用している場合は、SLS を実行する際に、環境変数 GRPC_GO_REQUIRE_HANDSHAKEoff に設定する必要があります。これを Kubernetes DaemonSet マニフェストの env セクションに追加できます。

次に例を示します。

env:
 -   name: GRPC_GO_REQUIRE_HANDSHAKE
   value: "off"

バージョン 1.17 以降の GRPC プロトコルの変更により、SLS はこの環境変数を必要とします。CRI-O の多くのバージョンは古いバージョンの gRPC で構築されているため、互換性のために環境変数が必要です。

GRPC_GO_REQUIRE_HANDSHAKE 環境変数を設定しないと、SLS が CRI ソケットに接続できない場合に、次のエラーが発生することがあります。

ERRO[0004] crisensor: connection error context deadline exceeded

このエラーメッセージは、SLS が CRI に対応するコンテナランタイムの UNIX ソケットに接続できなかったことを示します。この問題は、GRPC_GO_REQUIRE_HANDSHAKE 環境変数を設定するとで解決できます。

イベントの並べ替えウィンドウ

イベントは発生した際に Sensor に送信されないため、SLS はイベントを要求する必要があります。これは CRI API の制限によるものです。これは、2019年 8月 30日時点で状態変化を通知するメカニズムが API にないことが原因です。その結果、リクエスト間でコンテナイベントや状態変化が発生する可能性があります。

上記の制限に対処するために、SLS は、状態変化を検出しなかったことに気付いた場合は合成イベントを生成します。たとえば、コンテナが終了したため次のポーリングで存在しない場合、SLS は、コンテナ終了イベントとコンテナ破棄イベントを生成します。この問題は、runtimedetections-rules.yamlevent_reorder_window の値をより長い時間 (デフォルトは 25 ms) に設定することで解決できます。

次に例を示します。

event_reorder_window: 270ms

次の例では、event_reorder_window270ms に設定されています。これによって、分析エンジンは、正しいコンテナデータでイベントを適切にエンリッチ化できます。ただし、並び替えの時間を増加すると、対応アクションが遅くなることにも注意してください。