株式会社ネットワールドのエンジニアがお届けする技術情報ブログです。
各製品のエキスパートたちが旬なトピックをご紹介します。

SecureBoot環境へのFalcon for Linux センサーのインストール

こんにちは。
今回はSecure Bootが有効化されたLinux環境へのCrowdStrike Falconのセンサー(エージェント)インストールについて書いていきたいと思います。
Secure Boot なんて有効にしていないよ。ちゃんと無効にしているよ という皆様は大丈夫ですが、vSphere環境でRed Hat Enterprise Linux 8 もしくは 9を選択すると自動的にSecure Bootが有効になってしまいます。

このような環境にFalcon Sensorを導入した場合にはひと手間必要になります。
そして、より重要なこととして OSの再起動が必須 になります。

確認ポイントも含めて手順を追ってみます。

環境

今回検証に使った環境は下記です。

  • vSphereバージョン: 7.0.3
  • ESXiバージョン: 7.0.3
  • ゲストOSのバージョン: Red Hat Enterprise Linux 9 (64ビット)
  • ゲストOS
    • OS: Red Hat Enterprise Linux release 9.4 (Plow)
    • Kernel: Linux 5.14.0-427.13.1.el9_4.x86_64
    • Architecture: x86-64

Secure Bootかどうかの確認

RHELのコンソールでコマンドを実行できる場合は mokutil --sb-state を実行します。有効の場合 SecureBoot enabled と表示されます。

[user@rhel94-demo ~]$ mokutil --sb-state
SecureBoot enabled

vSphereコンソール上でVMの設定から確認することもできます。
RHELの仮想マシンの設定の編集から仮想マシンオプション起動オプションを開きます。セキュアブートが有効になっているか確認できます。

Falcon Sensor インストール

インストーラファイルのダウンロードやCID+CheckSumの設定などはドキュメントをご確認ください。
ここでは、RHEL上にインストーラファイルが配置されている想定でインストールを済ませてしまいます。

[user@rhel94-demo ~]$ sudo dnf install falcon-sensor-7.19.0-17219.el9.x86_64.rpm
[sudo] user のパスワード:

依存関係が解決しました。
====================================================================================================================================================================================
 パッケージ                                  アーキテクチャー                     バージョン                                       リポジトリー                               サイズ
====================================================================================================================================================================================
インストール:
 falcon-sensor                               x86_64                               7.19.0-17219.el9                                 @commandline                                61 M

トランザクションの概要
====================================================================================================================================================================================
インストール  1 パッケージ

合計サイズ: 61 M
インストール後のサイズ: 78 M
これでよろしいですか? [y/N]: y
パッケージのダウンロード:
トランザクションを確認しています
トランザクションの確認に成功しました。
トランザクションをテストしています
トランザクションのテストに成功しました。
トランザクションを実行しています
  準備中           :                                                                                                                                                            1/1
  scriptletの実行中: falcon-sensor-7.19.0-17219.el9.x86_64                                                                                                                      1/1
  インストール中   : falcon-sensor-7.19.0-17219.el9.x86_64                                                                                                                      1/1
  scriptletの実行中: falcon-sensor-7.19.0-17219.el9.x86_64                                                                                                                      1/1
Created symlink /etc/systemd/system/multi-user.target.wants/falcon-sensor.service → /usr/lib/systemd/system/falcon-sensor.service.

  検証中           : falcon-sensor-7.19.0-17219.el9.x86_64                                                                                                                      1/1
インストール済みの製品が更新されています。

インストール済み:
  falcon-sensor-7.19.0-17219.el9.x86_64

完了しました!
[user@rhel94-demo ~]$ sudo /opt/CrowdStrike/falconctl -s --cid=1234567890123456789-01

[user@rhel94-demo ~]$ sudo systemctl start falcon-sensor
[user@rhel94-demo ~]$ sudo systemctl status falcon-sensor
● falcon-sensor.service - CrowdStrike Falcon Sensor
     Loaded: loaded (/usr/lib/systemd/system/falcon-sensor.service; enabled; preset: disabled)
     Active: active (running) since Mon 2025-02-10 15:11:34 JST; 7s ago
    Process: 2699 ExecStartPre=/opt/CrowdStrike/falconctl -g --cid (code=exited, status=0/SUCCESS)
    Process: 2700 ExecStart=/opt/CrowdStrike/falcond (code=exited, status=0/SUCCESS)
   Main PID: 2701 (falcond)
      Tasks: 29 (limit: 100308)
     Memory: 19.9M
        CPU: 177ms
     CGroup: /system.slice/falcon-sensor.service
             tq2701 /opt/CrowdStrike/falcond
             mq2702 falcon-sensor

 2月 10 15:11:35 rhel94-demo falcon-sensor[2702]: CrowdStrike(4): ValidateCertificate: Certificate verified!
 2月 10 15:11:35 rhel94-demo falcon-sensor[2702]: CrowdStrike(4): SSLSocket connected successfully to ts01-gyr-maverick.cloudsink.net:443
 2月 10 15:11:35 rhel94-demo falcon-sensor[2702]: CrowdStrike(4): sock/ssl/proxy cnctd ok. First send to cloud.
 2月 10 15:11:35 rhel94-demo falcon-sensor[2702]: CrowdStrike(4): CLOUDPROTO_ESTABLISHED. AgentId has changed.
 2月 10 15:11:35 rhel94-demo falcon-sensor[2702]: CrowdStrike(4): ConnectToCloud successful.
 2月 10 15:11:35 rhel94-demo falcon-sensor[2702]: CrowdStrike(4): SslConnect: lfodown01-gyr-maverick.cloudsink.net:443
 2月 10 15:11:35 rhel94-demo falcon-sensor[2702]: CrowdStrike(4): SslConnect: Unable to connect to lfodown01-gyr-maverick.cloudsink.net:443 via Application Proxy: c0000225
 2月 10 15:11:35 rhel94-demo falcon-sensor[2702]: CrowdStrike(4): trying to connect to lfodown01-gyr-maverick.cloudsink.net:443
 2月 10 15:11:36 rhel94-demo falcon-sensor[2702]: CrowdStrike(4): Connected directly to lfodown01-gyr-maverick.cloudsink.net:443
 2月 10 15:11:36 rhel94-demo falcon-sensor[2702]: CrowdStrike(4): SSLSocket connected successfully to lfodown01-gyr-maverick.cloudsink.net:443

センサーのステータス確認

SecureBootの有効・無効にかかわらず、Falcon Sensorが正常に動作していない状態の場合、RFMモードという状態になります。
これは、Falcon コンソールのホストの一覧で対象ホストを選択していただくと確認できます。

ここでは"なぜRFMモードになっているか"を確認できません。
確認用のコマンドが存在しますのでRHELのコンソール上で実行します。
- sudo /opt/CrowdStrike/falconctl -g --rfm-state
- sudo /opt/CrowdStrike/falconctl -g --rfm-reason
- sudo /opt/CrowdStrike/falconctl -g --rfm-history

[user@rhel94-demo ~]$ sudo /opt/CrowdStrike/falconctl -g --rfm-state
rfm-state=true.

[user@rhel94-demo ~]$ sudo /opt/CrowdStrike/falconctl -g --rfm-reason
rfm-reason=Modules file invalid signature, code=0xC000A000.

[user@rhel94-demo ~]$ sudo /opt/CrowdStrike/falconctl -g --rfm-history
rfm-history={[0 (newest)] kernel backend, in RFM, rfm-reason=Modules file invalid signature, code=0xC000A000; [1] kernel backend, in RFM, rfm-reason=Modules file invalid signature, code=0xC000A000; [2] kernel backend, in RFM, rfm-reason=Modules file invalid signature, code=0xC000A000}.

Modules file invalid signature という理由が表示される且つSecureBootが有効な環境の場合、CrowdStrikeの公開署名鍵をインポートします。

RFMの理由である Modules file invalid signature, code=0xC000A000. でサポートナレッジを検索しても情報がでてきません。
SecureBootの状態と合わせて次のステップに進んでください。
SecureBootが無効であってもこのメッセージが表示される場合はサポートまでご連絡ください。

CrowdStrikeの公開署名鍵をインポート

ファイルのダウンロード

Falconコンソールから Falcon Linux Sensor code signing certificate (DER), 2022 ファイルをダウンロードし、RHEL上にコピーします。
ファイルはコンソールの[サポートおよびリソース]-[ツールのダウンロード]からダウンロードできます。

ファイルのインポート

sudo mokutil --import Falcon_Linux_Sensor_code_signing_certificate_DER_2022.cer を実行してファイルをインポートします。インポートする際に登録用のパスワードを設定します。

[user@rhel94-demo signature]$ ls -la
合計 8
drwxr-xr-x.  2 user user   71  2月 10 15:35 .
drwx------. 15 user user 4096  2月 10 15:35 ..
-rw-r--r--.  1 user user 1620  1月 24 15:00 Falcon_Linux_Sensor_code_signing_certificate_DER_2022.cer
[user@rhel94-demo signature]$ sudo mokutil --import Falcon_Linux_Sensor_code_signing_certificate_DER_2022.cer
input password:
input password again:

登録

インポート後、OSを再起動します。
再起動後のvSphereのコンソール画面に Shim UEFI key management 画面が表示されるので Enter を入力します。

10秒操作をしないとOSが起動してしまいます。

Enroll MOK を選択し Enter を入力します。

View key 0を選択し Enter を入力します。

CrowdStrikeのCode Signingが表示されることを確認しEnter を入力します。

前の画面に戻ります。Continueを選択し Enter を入力します。

Yesを選択し Enter を入力します。

インポート時に指定したパスワードを入力し Enter を入力します。

Rebootを選択し Enter を入力します。OSが起動します。

ステータス確認

RFMモードが終了し、通常のセンサーとして動作しているか確認します。
Falconコンソールでホストの状態を確認します。RFMNoとなっていればOKです。

RHELのコンソール上でもステータスを確認しておきましょう。
- sudo /opt/CrowdStrike/falconctl -g --rfm-state
- sudo /opt/CrowdStrike/falconctl -g --rfm-reason
- sudo /opt/CrowdStrike/falconctl -g --rfm-history

[user@rhel94-demo ~]$ sudo /opt/CrowdStrike/falconctl -g --rfm-state
rfm-state=false.
[user@rhel94-demo ~]$ sudo /opt/CrowdStrike/falconctl -g --rfm-reason
rfm-reason=None, code=0x0.
[user@rhel94-demo ~]$ sudo /opt/CrowdStrike/falconctl -g --rfm-history
rfm-history={[0 (newest)] kernel backend, not in RFM, rfm-reason=None, code=0x0; [1] kernel backend, not in RFM, rfm-reason=None, code=0x0}.

以上です。
状況が確認できていれば大きな作業ではありませんが、RFMの理由から必要な作業が見つけづらかったり、OSの再起動が必要になるという点がありますので、もしこれからインストールされる場合は事前に手順をご確認いただくことをお勧めします。