こんにちは。
前回の記事でMacOSのMDATP(Microsoft Defender for Endpoint )のオンボード方法を本ブログで投稿しました。
これまでWindowsOSに対してはMicrosoft Defender ATP(MDATP)のオンボード方法を本ブログで複数紹介しましたが、本日はMacOSに対して、オンボード検証を実施しましたので備忘録として記述します。
今日はオンボードした端末に対し、定期的にクイックスキャンを実行する方法を検証しましたので備忘録として投稿します。
目次
Intuneからスキャンをスケジュールするには
現在(2020/9/13)、では、Intuneの構成プロファイルからは、設定メニューには、スキャンの時間を指定する項目がないため、設定ができません。
しかし、公開情報を探ると、どうもlaunchctlで定期的にスキャンを実行することができるようです。
Microsoft Defender ATP for Mac でスキャンをスケジュールする
MacOS デバイスの launchd デーモンを使って、スキャンスケジュールを作成できます。
定期的にスキャンを実行するplistファイルを作成してlaunchdeamonsファイルの直下に保管する手順となっているようですが、 エンドユーザー側で作業が必要となるため、Intuneからどうにか展開できないのか。。。
Microsoft社に問合せしたところ、bashスクリプトであれば展開できると回答があり、1人bashスクリプトを作成し、Intuneから展開しては、失敗しての繰り返しの日々を繰り返しておりました。
数日なやんでいた時、公開情報に追記があり、サンプルのbashスクリプトが公開されてました。
Intune でスキャンをスケジュールする
また、Microsoft Intune でスキャンをスケジュールすることもできます。 Microsoft Defender Advanced Threat Protection のスクリプトで利用可能なrunMDATPQuickScan.sh shell スクリプトは、デバイスがスリープモードから再開すると保持されます。
エンタープライズでこのスクリプトを使用する方法について詳しくは、「 Intune の macOS デバイスでのシェルスクリプトの使用 」をご覧ください。
リンクに移動すると、オンボードの時と同じく、githubに遷移します。
見るとスクリプトは以下の二つがあり、スケジュールの実行タイミングと実行方法に違いがありそうです。
①installMDATPQuickScanjob.sh
⇒Plistファイルを使ってlaunchDaemonsにファイルを保管します。
Plistファイルで定期的なスケジュールでスキャンを実行する方法です。
スケジュールは週、日、時間で指定が可能。(MacOSのPlistの考え方)
②runMDATPQuickScan.sh
⇒ Intuneの以下「スクリプトの頻度」を使って定期的にスキャンを実行します。IntuneMDMエージェントを使って定期的に実行する?(恐らく)
今回は、決まった時間(毎日15時)に動作させたいため、②のスクリプトの頻度では設定が難しいことになります。なので①を使ってクイックスキャンを定期的に動作させたいと思います。
本スクリプトはあくまでサンプルファイルとなっているため、Microsoft社は正式に動作保証はしていないため、ご注意ください。
実際に設定してみる
実際にIntuneから本設定を行ってみました。
まず、①のスクリプトをMacOS上で作成してみましょう。
MacOSでクイックスキャンのbashスクリプトを作成する
リンクからスクリプトを作成します。
Scripts for Microsoft Defender Advanced Threat Protection
Scripts for Microsoft Defender Advanced Threat Protection
These scripts provide examples of how to use Intune Shell Scripting to solve some common MDATP tasks.
Plistファイルはまったく詳しくないため、あくまで調べてみた結果ではなりますが、以下が概要です。
このファイルを「.sh」という拡張子で保存します。
これでbashスクリプトファイルの準備は完了です。
Intuneでbashスクリプトを配信設定する
次はこのスクリプトをIntuneから展開してやります。
Microsoft Endpoint Manager admin center にログインし、[デバイス]-[macOS]をクリックします。
[シェルスクリプト]-[追加]をクリックし、新規でプロファイルを作成します。
作成したスクリプトをアップロードします。
「サインインしたユーザーとしてスクリプトを実行する」を”いいえ”にすれば、ログインしたユーザーに関係なく、rootユーザーで実行します。
対象ユーザーは”すべてのユーザー”を選択します。
特定のグループに所属するユーザーのみ適用することも可能で、逆に対象外にすることもできます。
問題なければ作成します。
MacOS端末でPlistファイルが作成されているかを確認する
MacOS端末でファイルが作成されていることを確認します。
"Library/LaunchDaemons"配下に指定した"com.microsoft.mdatp.schedquickscan.plist"ファイルが作成されています。
翌日スキャンが実行されているかを確認します。
クイックスキャンの実行確認
翌日、クリックスキャンが指定時刻通りに動作していることを確認しました。
※以下は間違って15時ではなく、10時に設定してしまったため、スキャン時刻が10時となっております。ご了承ください。。。
(実際に設定すると動作しました)
また、対象のMacOSがスリープモードの場合、スキャンは実行されず、スキップされます。
デバイスがスリープ状態になっている間、 launchd で実行されるエージェントはスケジュールされた時刻に実行されません。 これは、デバイスがスリープモードから再開された後で実行されます。
もし、予定通りの時刻にスキャンが実行していなかった場合、スリープモードが解除された後に動作したのかもしれません。
デバイスがオフになっている場合は、次のスケジュールされたスキャン時刻にスキャンが実行されます。
終わりに
上記はMacOSのクイックスキャンを毎日定期的に実行する方法になります。
何曜日に実行するなど、指定がある場合、以下<Weekday>関数を使って指定できるそうです。以下launchctl.plistのマニュアルをクリックすると、マニュアルがターミナルを介して表示されます。
記載内容だと、平日は1〜5で定義され、0と7は日曜となるようです。
参考:
https://support.apple.com/ja-jp/guide/terminal/apdc6c1077b-5d5d-4d35-9c19-60f2397b2369/mac
上記Apple社URLにアクセスして、[launchd.plistのマニュアルページ]をクリック
[ターミナル.appを開く]をクリックします。
以下マニュアルに記載の通り、0と7を指定した場合は、日曜日となるようです。
Weekday
The weekday on which this job will be run (0 and 7 are Sunday)
上記を参考に日曜日の12時に実行する場合は以下のようにWeekday関数内にそれぞれ値を書き込みます。
おまけ(フルスキャンの実行)
また、フルスキャンを実行する場合、以下パラメーターに変更することでフルスキャンを実行させることができます。
<string>/usr/local/bin/mdatp --scan --full</string>
実際のファイルを編集すると以下になります。
Launchdでスキャンをスケジュールする
https://docs.microsoft.com/ja-jp/windows/security/threat-protection/microsoft-defender-atp/mac-schedule-scan-atp#launchd%E3%81%A7%E3%82%B9%E3%82%AD%E3%83%A3%E3%83%B3%E3%82%92%E3%82%B9%E3%82%B1%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8Bschedule-a-scan-with-launchd
ただ、所感ではありますが、MacOSのフルスキャン実行後、バッテリーの減少とパフォーマンスに結構負荷がかかっているようにも見受けられました。
どの程度負荷がかかるのか、一度、検証端末でご確認いただき、実装の判断をしていただくほうがいいかもしれません。
なお、本手順はあくまで自身の検証ベースを基に記載している内容となりますため、実際に利用される場合は、ご自身で試験のもと、ご判断いただきますようお願いいたします。
本情報が少しでもみなさまのお役にたてば幸いです。
それではまた。