Falcon APIを使って以下に手順を簡易化してFalconセンサーをインストールできるか試してみます。
今回はWindows編ですがどこかでLinux編も書くかもしれません...
2025/3/3 時点で動作確認を行っています。
通常のインストール手順
一般的なインストール手順はざっくり下記のような感じです。
- 管理用PCでFalconコンソールにログインする
- 対象OS(Windows用)のセンサーインストーラをダウンロードする
- CID+Checksum(インストール時に必須になるID情報)をコピーしておく
- センサーインストーラとCID+Checksumを対象OSにコピーしておく
- 対象OS上でセンサーインストーラを実行しインストールする
全社に一斉展開をするときであればファイルサーバーにファイルや情報をおき、ユーザーに実行してもらえばよいですが、展開する時期がずれた場合センサーバージョンが更新されている可能性もありメンテナンスがめんど・・・大変になってきます。
そのほかにも
- CID+Checksumを社員が見れる状態になっている。
- 極論、このIDとインストーラを使えば家のPCにもインストールできてしまう
- 現在利用しているバージョンのインストーラでインストールすると(ポリシー次第で)センサーバージョンアップが実行されアップデート用のファイルダウンロードが行われる
などの状況が発生します。
読者の皆様向けの理由は上記です。
個人的には環境にあわせて検証環境をつくるのに都度インストールしたりするので毎回のインストール手順がめんど・・・大変なためです。
APIを使ったインストール方法の概要
Githubで公開されているスクリプトがありますのでこのスクリプトを利用してインストールします。
- Repo: https://github.com/CrowdStrike/falcon-scripts
- Powershellを使ったインストール: https://github.com/CrowdStrike/falcon-scripts/tree/main/powershell/install
前提条件
- 対象OSからインターネットにアクセスが可能であること
- Proxyがない環境で検証しています。
- 対象OSで操作する際に管理者権限で操作ができること
- FalconコンソールでAPIクライアントを作成できる権限をもっていること
ステップ
事前準備を含めたステップは下記です。
初回のみ(管理者タスク)
- APIクライアントを作成
- センサー更新ポリシーの作成(もしくは流用)
- スクリプトの作成
インストール実施ごと
- スクリプトを対象OS上に保存
- Powershellを管理者権限で実行
APIクライアント ID/シークレットの作成
API経由でセンサーのインストーラをダウンロードするためにAPIクライアントを作成しクライアントIDとシークレットを入手します。APIクライアントの作成はFalconコンソールの[サポートおよびリソース]-[APIクライアントおよびキー]から作成可能です。必要なAPI権限は「Sensor Downloadの読み取り権限」と「Sensor Update Policiesの読み取り権限」です。下記画像のようなになります。
作成するとAPIクライアントIDとシークレットが表示されますのでコピーして保存しておきます。スクリプト作成時に利用します。
センサー更新ポリシーの作成(もしくは流用)
このスクリプトではセンサー更新ポリシーに設定されているセンサーバージョンをダウンロードしてインストールに利用します。
スクリプト実行時にポリシー名を指定しない場合はplatform_default (日本語環境だと"デフォルト(Windows)"と表示)で指定されているセンサーバージョンが利用されます。
また、センサー更新ポリシーのWindowsバージョンの設定がセンサーバージョン更新オフの場合、センサーバージョンが不明なためスクリプトの実行に失敗します。
platform_defaultの設定がセンサーバージョン更新オフとなっている可能性もありますので、自身で通常利用しているセンサー更新ポリシーもしくは新規にポリシーを作成します。
また、利用するセンサー更新ポリシーの名前をメモしておきます。
センサーバージョンの設定をAuto/Auto N-1/Auto N-2にしている場合、適用されるセンサーバージョンがFalcon側で自動更新されます。通常運用で利用しているセンサー更新ポリシーを利用することで、その他の端末と同じバージョンのセンサーをインストールすることができます。
スクリプトの作成
スクリプトを作成します。今回のスクリプトの条件は下記にしています。
- 管理者権限で実行されたPowershellにコピー&ペーストで張り付ける
- 極力メッセージを出さない
- ダウンロードしたスクリプトファイルは削除する
この条件で作成したスクリプトが下記になります。
$APIKEY / $APISECRET / $POLICY_NAME は自身の環境の値に置き換えてください。
$currentPolicy = Get-ExecutionPolicy Write-Host "現在の実行ポリシー: $currentPolicy" Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process -Force Write-Host "実行ポリシーをUnrestrictedに一時的に設定しました。" $APIKEY = "作成したAPIクライアントID" $APISECRET = "作成したAPIクライアントのシークレット" $POLICY_NAME = "作成/既存のセンサー更新ポリシーの名前" $scriptUrl = "https://raw.githubusercontent.com/CrowdStrike/falcon-scripts/main/powershell/install/falcon_windows_install.ps1" $scriptPath = "$env:TEMP\falcon_windows_install.ps1" Invoke-WebRequest -Uri $scriptUrl -OutFile $scriptPath & $scriptPath -FalconClientId $APIKEY -FalconClientSecret $APISECRET -SensorUpdatePolicyName $POLICY_NAME > $null Remove-Item -Path $scriptPath -Force Write-Host "ダウンロードしたスクリプトファイルが削除されました。" Set-ExecutionPolicy -ExecutionPolicy $currentPolicy -Scope Process -Force Write-Host "実行ポリシーを元の状態($currentPolicy)に戻しました。" Write-Host "スクリプトの実行が完了しました。"
スクリプトを対象OS上に保存
スクリプトの条件にも記載したように管理者権限で開いたPowershellにコピー&ペーストで貼り付けて実行することを想定していますので、対象OS上で利用できるようにテキストファイル等で渡しておきます。
Powershellを管理者権限で実行
対象OS上でPowershellを管理者で実行し、スクリプトを貼り付けて実行してみます。
課題?に対処してみる
想定されるいくつかの課題に対処してみます。
インストール中のステータスが見えないのが困る
実際にスクリプトにエラーが発生するとPowershell上にエラー画面が表示され(こちらで確認した限りは表示されます)ます。が、やっぱりインストール中の画面が見たい!という場合は2つの方法があります。
- スクリプト実行時のログを表示させる
- インストーラの画面を表示させる
スクリプト実行時のログを表示させる
通常、インストール用のスクリプトを実行すると実行中のログがPowershell上に表示されます。
ただし、そのログ上にCID+Checksumの情報などあまりユーザーに知られたくない情報が表示されるため表示されないように指定しています。
作成したスクリプトの下記部分を変更することで実行中の状態が確認できます。ただし、この場合でもインストーラがインストールしているときの進捗状況はわかりません。
- 変更前:
& $scriptPath -FalconClientId $APIKEY -FalconClientSecret $APISECRET -SensorUpdatePolicyName $POLICY_NAME > $null
- 変更後:
& $scriptPath -FalconClientId $APIKEY -FalconClientSecret $APISECRET -SensorUpdatePolicyName $POLICY_NAME
インストーラ実行中のステータスを表示させる
Github上のスクリプトはインストーラを非表示(/quiet)でインストールする設定がデフォルトになっています。
スクリプト実行時にInstallParams を指定することで非表示の設定を変更可能です。
- デフォルトのインストールパラメータ: "/install /quiet /noreboot"
- インストーラの実行画面を表示: "/install /passive /noreboot"
"/passive"を利用するとプロンプトなしで最小限のUIを表示します。
スクリプト実行部分は下記のようになります。
- 変更前:
& $scriptPath -FalconClientId $APIKEY -FalconClientSecret $APISECRET -SensorUpdatePolicyName $POLICY_NAME > $null
- 変更後:
& $scriptPath -FalconClientId $APIKEY -FalconClientSecret $APISECRET -SensorUpdatePolicyName $POLICY_NAME -InstallParams "/install /passive /noreboot" > $null
このスクリプトを利用できないようにしたい
作成したAPIクライアントを削除してください。
だれがこのスクリプトを利用したか調べたい
同じAPIクライアントID/シークレットを使っているので"だれ"が実行したかの判断は難しいです。
ただし、API実行時のログはFalconコンソールの監査ログで確認できますので、どのくらい利用されたかはカウントできるかと思います。
最後に
Falcon APIを使って楽に(なるかもしれない)インストール方法を試してみました。
全社展開や数十台、数百台のPC入れ替えなどの場合は別のツールで展開したほうが早いと思いますが、数台レベルであればこの方法で展開してしまったほうが早いのかもしれません。
今回はスクリプト実行までのセキュリティ面について考慮していない部分もあります。
もし、社内でこれを使う!となった場合は、自社のセキュリティ基準に沿った形で実行できるようスクリプトの変更など行っていただければと思います。
この内容書くのに10回くらいインストールしたので今のところ大変だっただけ!
suzukik-nw