コンテンツにスキップ

Sophos Linux Sensor の再パッケージ

Sophos Linux Sensor (SLS) は、最小限のスクラッチイメージ上に構築された静的リンクの Go アプリケーションです。SLS をベースイメージに再パッケージできます。

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

前提条件

SLS を再パッケージするには、Docker をインストールして実行している必要があります。また、Sophos Linux Sensor Docker イメージを取得している必要があります。詳細は、Docker イメージを取得するを参照してください。docker image ls コマンドの出力は、次の例のようになります。

# docker image ls
REPOSITORY                                                               TAG         IMAGE ID       CREATED             SIZE
...
registry.sophosupd.com/release/sophos-linux-sensor                       5.8.1.10    821473d98e09   6 weeks ago         91.9MB
registry.sophosupd.com/release/sophos-linux-content                      5.6.1.2     bc76b3048e4d   6 months ago        7.9MB

Docker イメージファイルのビルド

この例では Alpine Linux を新しいコンテナとして使用しています。

SLS コンテナから新しく作成した Docker イメージに /sophoslinuxsensor/var/lib/sophos をコピーします。次の手順を実行します。

  1. 新しいファイルを作成します。名前はどのようなものでもかまいません。次の手順で必要になるため、名前をメモしておいてください。
  2. ファイルに次の行を入力し、 <sensor repository> を SLS センサーリポジトリの名前に置き換え、<tag> をイメージに使用するタグに置き換えます。

    FROM <SENSOR REPOSITORY>:<TAG> AS sophos-linux-sensor
    FROM alpine:latest AS alpine-base
    COPY --from=sophos-linux-sensor /sophoslinuxsensor /sophoslinuxsensor
    COPY --from=sophos-linux-sensor /var/lib/sophos /var/lib/sophos
    CMD /sophoslinuxsensor
    
  3. 次のコマンドを実行して、レジストリに新しいイメージを作成し、<DOCKERFILE> を作成したファイルの名前に置き換え、 <REPOSITORY NAME> をイメージに付ける名前に置き換え、 <TAG> をイメージに付けるタグに置き換えます。

    docker build -f <DOCKERFILE> . -t <REPOSITORY NAME>:<TAG>
    

    次に例を示します。

    # docker build -f my-docker-file.txt . -t sophoslinuxsensor-alpine:latest
    [+] Building 0.2s (9/9) FINISHED                                                                                                         docker:default
    => [internal] load build definition from my-docker-file.txt                                                                                        0.0s
    => => transferring dockerfile: 384B                                                                                                                0.0s
    => [internal] load metadata for docker.io/library/alpine:latest                                                                                    0.1s
    => [internal] load metadata for registry.sophosupd.com/release/sophos-linux-sensor:5.8.1.10                                                        0.0s
    => [internal] load .dockerignore                                                                                                                   0.0s
    => => transferring context: 2B                                                                                                                     0.0s
    => [alpine-base 1/3] FROM docker.io/library/alpine:latest@sha256:77726ef6b57ddf65bb551896826ec38bc3e53f75cdde31354fbffb4f25238ebd                  0.0s
    => [sophos-linux-sensor 1/1] FROM registry.sophosupd.com/release/sophos-linux-sensor:5.8.1.10                                                      0.0s
    => CACHED [alpine-base 2/3] COPY --from=sophos-linux-sensor /sophoslinuxsensor /sophoslinuxsensor                                                  0.0s
    => CACHED [alpine-base 3/3] COPY --from=sophos-linux-sensor /var/lib/sophos /var/lib/sophos                                                        0.0s
    => exporting to image                                                                                                                              0.0s
    => => exporting layers                                                                                                                             0.0s
    => => writing image sha256:df3bc6be7b338037d1ca53eb905f9f59d5fdbc0921937a19b6faa5db9794aeb7                                                        0.0s
    => => naming to docker.io/library/sophoslinuxsensor-alpine:latest                                                                                  0.0s
    

    イメージが正常に作成されたことを確認するには、docker image ls コマンドを使用します。次に例を示します。

    # docker image ls
    REPOSITORY                                                               TAG         IMAGE ID       CREATED             SIZE
    sophoslinuxsensor-alpine                                                 latest      df3bc6be7b33   About an hour ago   99.4MB
    registry.sophosupd.com/release/sophos-linux-sensor                       5.8.1.10    821473d98e09   6 weeks ago         91.9MB
    registry.sophosupd.com/release/sophos-linux-content                      5.6.1.2     bc76b3048e4d   6 months ago        7.9MB
    

新しいイメージの導入

カスタムイメージの導入は、SLSをDocker イメージとして導入するのと同じプロセスに従います。唯一の変更は使用されているイメージへの参照です。詳細は、導入を参照してください。

  1. 次のコマンドを実行し <REPOSITORY NAME> をイメージの名前に置き換え' <TAG> をイメージのタグに置き換えます。

    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 \
    <REPOSITORY NAME>:<TAG>
    

    コマンドが成功したことを確認する新しいコンテナのハッシュが表示されます。

  2. docker ps コマンドを実行して、イメージが実行されていることを確認します。次に例を示します。

    # docker ps
    CONTAINER ID   IMAGE                             COMMAND                  CREATED         STATUS         PORTS     NAMES
    4a015bebf4d3   sophoslinuxsensor-alpine:latest   "/bin/sh -c /sophosl?"   5 seconds ago   Up 4 seconds             upbeat_ellis
    

    これで、センサーイメージと Alpine ベースイメージを介してアクセス可能な追加パッケージの両方を実行しているため、異なるコマンドを実行できるようになりました。 次に例を示します。

    docker exec -it
    # docker exec -it 4a015bebf4d3 sh
    / # ls -l
    total 87656
    drwxr-xr-x    2 root     root         16384 May 22 09:47 bin
    drwxr-xr-x   11 root     root          2800 May 23 19:48 dev
    drwxr-xr-x    1 root     root            20 May 23 19:48 etc
    drwxr-xr-x    2 root     root             6 May 22 09:47 home
    drwxr-xr-x    6 root     root         16384 May 22 09:47 lib
    drwxr-xr-x    5 root     root            44 May 22 09:47 media
    drwxr-xr-x    2 root     root             6 May 22 09:47 mnt
    drwxr-xr-x    2 root     root             6 May 22 09:47 opt
    dr-xr-xr-x  177 root     root             0 May 23 19:48 proc
    drwx------    1 root     root            26 May 23 19:51 root
    drwxr-xr-x    1 root     root            64 May 23 19:48 run
    drwxr-xr-x    2 root     root         16384 May 22 09:47 sbin
    -rwxr-xr-x    1 root     root      89706632 Apr  8 15:51 sophoslinuxsensor
    drwxr-xr-x    2 root     root             6 May 22 09:47 srv
    dr-xr-xr-x   13 root     root             0 May 23 17:41 sys
    drwxrwxrwt    2 root     root             6 May 22 09:47 tmp
    drwxr-xr-x    7 root     root            66 May 22 09:47 usr
    drwxr-xr-x    1 root     root            28 May 22 09:47 var
    / # cd /etc/sophos/
    /etc/sophos # ls -l
    total 8
    -rw-r--r--    1 root     root          1879 May 23 19:14 runtimedetections-rules.yaml
    -rw-r--r--    1 root     root           262 May  6 15:38 runtimedetections.yaml
    /etc/sophos # exit
    

その他のリソース