Docker への Sophos Linux Sensor のインストール
概要
Sophos Linux Sensor (SLS) は Linux ホストにインストールされる軽量エージェントで、ホストからイベントを収集して、警告生成および自動対応を実施します。SLS は、既存のログおよび警告インフラと統合します。SLS は、パブリッククラウドやプライベートクラウド、コンテナや VM、オンプレミス版ベアメタルなど、Linux のあるあらゆる環境にインストールでき、多種のカーネルバージョンおよび Linux ディストリビューションに対応しています。
ソフォスは、外部 Docker レジストリを維持して、SLS コンポーネントの Docker イメージを顧客が使用できるようにしています。この Docker イメージをご希望の環境で実行して、ホストを保護できます。
これらの手順は、Dockerを実行しているホストにコンテナとしてセンサーの導入の概要を説明している例です。ここでのガイダンスを使用して、SLS Docker イメージを環境で実行するように設定することができます。
要件
SLS Docker イメージを環境に導入するには、次の要件を満たす必要があります。
-
Docker がインストールされ、実行されていること。
- このガイドに従う前に、Docker をよく理解しておくことをお勧めします。
-
Sophos Linux Sensor パッケージリポジトリ API トークンを生成する方法に従って、
{LINUX_REPO_API_KEY}
および{tenant-id}
を取得します。{LINUX_REPO_API_KEY}
は "SLS-" で始まる短い文字列です。-
{tenant-id}
は以下の形式の文字列です。1a2345b6-78c9-012d-ef34-5a6b789c0de1
-
Kubernetes が使用されていないこと。使用されている場合は、Kubernetes への SLS のインストールを参照してください。
Docker イメージを取得する
取得する必要のある、レジストリに発行された2つのイメージがあります。
sophos-linux-sensor:<SENSOR_VERSION_TAG>
: コンテナイメージとしてパッケージ化された Sophos Linux Sensor。sophos-linux-content:<CONTENT_VERSION_TAG>
: Sophos Labs によって発行されるデフォルトのコンテンツ。
最新の Docker イメージを取得するには、次の手順を実行します。
-
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 のベストプラクティスに従うことをお勧めします。認証情報ストアを参照してください。
-
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-sensor
とsophos-linux-content
の両方の最新のバージョンタグをメモしておきます。<SENSOR_VERSION_TAG>
プレースホルダと<CONTENT_VERSION_TAG>
プレースホルダを置き換えるには、次の手順のほとんどでこれらのタグが必要になります。不明な場合は、最新の SLS バージョンをリリースノートで確認することができます。リリースノートを参照してください。 -
レジストリから最新の SLS イメージを取得します。
docker pull registry.sophosupd.com/release/sophos-linux-sensor:<SENSOR_VERSION_TAG>
-
レジストリから最新の SLS コンテンツを取得します。
docker pull registry.sophosupd.com/release/sophos-linux-content:<CONTENT_VERSION_TAG>
-
ホストに最新のイメージがあることを確認します。
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 をコンテナとして導入するには、次の手順を実行します。
-
ホスト上で 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_telemetry
をfalse
に設定してください。 -
/tmp/sophos-content
パスが存在することを確認します。パスが存在する場合は、次のステップはスキップします。パスが存在しない場合は、次のコマンドを使用して作成します。mkdir -p /tmp/sophos-content
-
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 という名前のファイルが表示されます。
-
任意: デフォルトのコンテンツに適用する更新がある場合は、/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」検出が含まれます。ソフォスでは、これを使用して、センサーがホスト上のアクティビティを検出できることを確認します。センサーの機能を確認するには、次の手順を実行します。
-
コンテナが実行中であることを確認します。
docker ps
-
SLS コンテナを探し、その「STATUS」列に「Up」が含まれていることを確認します。
- 次の手順で使用する、「CONTAINER ID」をコピーします。
-
コンテナ内で SLS が実行されていることを確認します。
docker logs <containerID>
通常の SLS 起動では、最後に「Analytics started processing telemetry」という行が表示されます。
注
「Zero policies configured」と表示された場合は、センサーでいずれの検出ルールも有効になっていないことを意味します。SLS が、コンテンツポリシーを読み取っていない可能性があります。問題を解決するには、ソフォス テクニカルサポートにお問い合わせください。
-
以下のコマンドを実行します。
/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"