コンテンツにスキップ

Docker への Sophos Linux Sensor のインストール

概要

Sophos Linux Sensor (SLS) は Linux ホストにインストールされる軽量エージェントで、ホストからイベントを収集して、警告生成および自動対応を実施します。SLS は、既存のログおよび警告インフラと統合します。SLS は、パブリッククラウドやプライベートクラウド、コンテナや VM、オンプレミス版ベアメタルなど、Linux のあるあらゆる環境にインストールでき、多種のカーネルバージョンおよび Linux ディストリビューションに対応しています。

ソフォスは、外部 Docker レジストリを維持して、SLS コンポーネントの Docker イメージを顧客が使用できるようにしています。この Docker イメージをご希望の環境で実行して、ホストを保護できます。

これらの手順は、Dockerを実行しているホストにコンテナとしてセンサーの導入の概要を説明している例です。ここでのガイダンスを使用して、SLS Docker イメージを環境で実行するように設定することができます。

要件

SLS Docker イメージを環境に導入するには、次の要件を満たす必要があります。

Docker イメージを取得する

取得する必要のある、レジストリに発行された2つのイメージがあります。

  • sophos-linux-sensor:<SENSOR_VERSION_TAG>: コンテナイメージとしてパッケージ化された Sophos Linux Sensor。
  • sophos-linux-content:<CONTENT_VERSION_TAG>: Sophos Labs によって発行されるデフォルトのコンテンツ。

最新の Docker イメージを取得するには、次の手順を実行します。

  1. Sophos Docker レジストリにログインし、 {LINUX_REPO_API_KEY} をSophosパッケージリポジトリ API キーに置き換えます。API キーが認証に使用されており、パスワードを必要としません。パスワードには少なくとも 1つのスペースを入力する必要があります。

    docker login registry.sophosupd.com -u {LINUX_REPO_API_KEY} -p {LINUX_REPO_API_KEY}
    

    次に例を示します。

    # docker login registry.sophosupd.com -u SLS-################ -p SLS-################
    パスワード:
    警告: パスワードは暗号化されずに /root/.docker/config.json に保存されます。
    資格情報ヘルパーを設定して、この警告を削除します。詳細は、次を参照してください:
    https://docs.docker.com/engine/reference/commandline/login/#credentials-store
    
    ログインに成功
    

    この例の警告メッセージは、Docker の設定に基づいています。API キーとパスワードが Docker の設定ファイルにプレーンテキストで保存されないように資格情報ストレージを構成することで、Docker のベストプラクティスに従うことをお勧めします。認証情報ストアを参照してください。

  2. SLS およびデフォルトのコンテンツイメージに使用可能なタグを取得します。

    curl -u {LINUX_REPO_API_KEY}:{LINUX_REPO_API_KEY} -X GET https://registry.sophosupd.com/v2/release/sophos-linux-sensor/tags/list |jq '.tags'
    
    curl -u {LINUX_REPO_API_KEY}:{LINUX_REPO_API_KEY} -X GET https://registry.sophosupd.com/v2/release/sophos-linux-content/tags/list |jq '.tags'
    

    ヒント

    sophos-linux-sensorsophos-linux-content の両方の最新のバージョンタグをメモしておきます。<SENSOR_VERSION_TAG> プレースホルダと <CONTENT_VERSION_TAG> プレースホルダを置き換えるには、次の手順のほとんどでこれらのタグが必要になります。不明な場合は、最新の SLS バージョンをリリースノートで確認することができます。リリースノートを参照してください。

  3. レジストリから最新の SLS イメージを取得します。

    docker pull registry.sophosupd.com/release/sophos-linux-sensor:<SENSOR_VERSION_TAG>
    
  4. レジストリから最新の SLS コンテンツを取得します。

    docker pull registry.sophosupd.com/release/sophos-linux-content:<CONTENT_VERSION_TAG>
    
  5. ホストに最新のイメージがあることを確認します。

    docker image ls
    

    次に例を示します。

    # docker image ls
    REPOSITORY                                        TAG         IMAGE ID       CREATED         SIZE
    registry.sophosupd.com/sophos-linux-sensor        5.5.0.398   4d09482d2962   7 days ago      108MB
    registry.sophosupd.com/sophos-linux-sensor        5.5.0.384   a624cf037647   7 days ago      108MB
    registry.sophosupd.com/sophos-linux-content       5.4.1.241   ff3d9894434e   7 days ago      7.48MB
    registry.sophosupd.com/sophos-linux-sensor        5.5.0.330   94cf007943af   2 weeks ago     108MB
    

導入

docker run registry.sophosupd.com/sophos-linux-sensor:<SENSOR_VERSION_TAG> コマンドを実行している場合、SLS は何も行いません。Docker サンドボックス以外にも保護を提供するには、ホストへのデフォルト以外のアクセスが必要です。SLS の起動時にマウントポイントからアクセスできる必要があるファイルが3つあります。

この例では、次のオプションを使用します。

  • 設定ファイルの場所を /etc/sophos/runtimedetections.yaml に設定します。次のコマンドでホストのマウントポイントを変更する限り、これを任意の場所に配置できます。
  • コンテンツパスを /tmp/sophos-content に設定します。次のコマンドでホストのマウントポイントを変更する限り、これを任意の場所に指定できます。
  • stdout に警告を送信します。警告オプションは、監視戦略に合わせて変更可能です。詳細は、警告のエクスポートを参照してください。

SLS をコンテナとして導入するには、次の手順を実行します。

  1. ホスト上で SLS 設定ファイルを作成します。

    {tenant-id} を一意の Sophos Central ID に置き換える必要があります。

    mkdir -p /etc/sophos
    echo "send_labs_telemetry: true
    endpoint_telemetry_enabled: true
    cloud_meta: auto
    # Set your customer id:
    customer_id: "{tenant-id}"
    alert_output:
      outputs:
      -   type: stdout
        enabled: true
        template: 'Alert Triggered: {{ .StrategyName}}'" > /etc/sophos/runtimedetections.yaml
    

    テレメトリデータをソフォスに送信しない場合は、send_labs_telemetryfalse に設定してください。

  2. /tmp/sophos-content パスが存在することを確認します。パスが存在する場合は、次のステップはスキップします。パスが存在しない場合は、次のコマンドを使用して作成します。

    mkdir -p /tmp/sophos-content
    
  3. Sophos Labs のデフォルトのコンテンツファイルを追加します。

    警告

    /tmp/sophos-content/runtimedetections-content.yaml が既に存在する場合は、次のコマンドを実行すると上書きされます。

    docker run --user "$(id -u):$(id -g)" \
    -v /tmp/sophos-content:/var/lib/sophos/content:rw \
    registry.sophosupd.com/release/sophos-linux-content:<CONTENT_VERSION_TAG>
    

    /tmp/sophos-content の下に runtimedetections-content.yaml という名前のファイルが表示されます。

  4. 任意: デフォルトのコンテンツに適用する更新がある場合は、/etc/sophos/runtimedetections-rules.yaml を作成します。詳細は、有効化されたコンテンツの管理を参照してください。

Sensor コンテナを実行する

ホストで、次のコマンドを実行します。

docker run \
--pid=host \
--privileged \
--user=0 \
--detach \
-v /etc/sophos:/etc/sophos:rw \
-v /tmp/sophos-content:/var/lib/sophos/content:rw \
-v /tmp/sophos-log:/var/log/sophos-log:rw \
-v /sys/fs/cgroup:/var/run/sophos/mnt/sys/fs/cgroup:ro \
-v /sys/kernel/debug:/var/run/sophos/mnt/sys/kernel/debug:rw \
-v /etc/hostname:/var/run/sophos/mnt/hostname:ro \
-v /proc:/var/run/sophos/mnt/proc:ro \
-v /var/lib/docker:/var/lib/docker:ro \
-v /var/run/docker:/var/run/docker:ro \
-v /var/run/containerd:/var/run/containerd:rw \
-v /var/run/crio:/var/run/crio:rw \
--cap-add SYS_ADMIN --cap-add SETUID --cap-add SETGID --cap-add SETPCAP \
--cap-add SYS_PTRACE --cap-add KILL --cap-add DAC_OVERRIDE --cap-add IPC_LOCK \
--cap-add FOWNER --cap-add CHOWN --cap-add SYSLOG \
--cap-add NET_RAW --cap-add SYS_RESOURCE \
registry.sophosupd.com/release/sophos-linux-sensor:<SENSOR_VERSION_TAG>

Sensor 機能の確認

Suspicious Interactive Shell

コンテナからの SLS コンテンツは、デフォルトで保護機能のセットで、「Suspicious Interactive Shell」検出が含まれます。ソフォスでは、これを使用して、センサーがホスト上のアクティビティを検出できることを確認します。センサーの機能を確認するには、次の手順を実行します。

  1. コンテナが実行中であることを確認します。

    docker ps
    
  2. SLS コンテナを探し、その「STATUS」列に「Up」が含まれていることを確認します。

  3. 次の手順で使用する、「CONTAINER ID」をコピーします。
  4. コンテナ内で SLS が実行されていることを確認します。

    docker logs <containerID>
    

    通常の SLS 起動では、最後に「Analytics started processing telemetry」という行が表示されます。

    「Zero policies configured」と表示された場合は、センサーでいずれの検出ルールも有効になっていないことを意味します。SLS が、コンテンツポリシーを読み取っていない可能性があります。問題を解決するには、ソフォス テクニカルサポートにお問い合わせください。

  5. 以下のコマンドを実行します。

    /bin/sh -i
    exit
    

    このコマンドは、Suspicious Interactive Shell 検出を開始します。Sensor が正しく設定されている場合は、アクティビティが報告されます。

    この例の runtimedetections.yaml ファイルには、カスタムテンプレートの警告の出力の種類「stdout」が含まれています。これによって、ログをチェックして生成された警告を確認できます。警告の出力をカスタマイズした場合は、出力先が異なる場合があります。詳細は、はじめに: 警告のエクスポート

    トリガーされたポリシーの名前でstdoutにアラートを送信するように設定された runtimedetections.yaml の例:

    alert_output:
      outputs:
      -   type: stdout
        enabled: true
        template: 'Alert Triggered: {{ .StrategyName}}'"
    

    警告の出力は次のとおりです。

    docker logs <containerID>
    ...
    Alert triggered: Suspicious Interactive Shell
    

    ヒント

    出力で検出に関する詳細情報を取得するために、追加フィールドを設定することができます。以下を参照してください。

設定ファイルの確認

runtimedetections-rules.yaml を使用して個々の検出を調整する場合は、SLS がファイルを使用していることを docker logs コマンドで確認できます。ホストプロセスとして実行する場合と同様の出力が表示されます。

次に例を示します。

2023-05-16T17:14:37.227Z    INFO    using sensor configuration file "/etc/sophos/runtimedetections.yaml"
2023-05-16T17:14:37.227Z    INFO    using analytics strategy file "/etc/sophos/runtimedetections-rules.yaml"
2023-05-16T17:14:37.227Z    INFO    fetching metadata
2023-05-16T17:14:37.228Z    INFO    fetched metadata
2023-05-16T17:14:37.228Z    ERROR    File permissions on runtimedetections YAML file are world-accessible, proceeding anyway
2023-05-16T17:14:37.228Z    INFO    using sensor configuration file "/etc/sophos/runtimedetections.yaml"
2023-05-16T17:14:37.228Z    INFO    using analytics strategy file "/etc/sophos/runtimedetections-rules.yaml"