Microsoft365 Microsoft Exchange Onlineの監査ログ(後編)

マネージド&セキュリティサービス部 セキュリティサービス部門 インシデントレスポンスチームの濱崎と戸祭です。 今回は、前回紹介したビジネスメールサービス「Microsoft Exchange Online」の監査ログについて、の後編となります。

前の記事(前編)ではログの種類と取得方法について説明しました。 後編ではログを記録しておくための設定方法について説明します。

目次

前編の要約

前編では、以下のログの概要と、NTT Comでの調査に最低限必要なログの取得方法を説明しました。

  • Unified Audit Log(統合監査ログ)
  • AzureADサインインログ
  • Mailbox Audit Log(メールボックス監査ログ)
  • Admin Audit Log(管理者監査ログ)
  • Message Trace(メッセージ追跡)

後編では、これらのログを記録しておくための設定方法を説明します。

ログの設定

前編で紹介したログは、既定では取られていない可能性があるため、ログを確実に残せるよう設定の確認と変更を推奨します。

またログの保存期間も既定では短いため、保存期間の延長を検討する必要があります。

この節では、Powershellを用いた適切なログ取得設定と保存期間の延長方法について紹介します。

Exchange Online Powershellへの接続

まずExchange Online Powershellに管理者権限をもつユーザでログインします。

> Install-Module -Name ExchangeOnlineManagement
> Import-Module ExchangeOnlineManagement
> Connect-ExchangeOnline -UserPrincipalName <User Principal Name, メールアドレス等>

Unified Audit Log(統合監査ログ)の有効化

Unified Audit Logは、現在では基本的には既定で有効1です。
しかしライセンスや過去の設定によっては有効でない場合があるため確認を推奨します。

UnifiedAuditLogIngestionEnabledがTrueになっているかを以下のコマンドで確認します。

> Get-AdminAuditLogConfig | FL UnifiedAuditLogIngestionEnabled

UnifiedAuditLogIngestionEnabled : True

Falseになっていた場合、次の方法でTrueにしてください7

> Set-AdminAuditLogConfig -UnifiedAuditLogIngestionEnabled $true

(ただしNTT Com IRチームの検証用環境では上記コマンドの前にEnable-OrganizationCustomizationの実行が必要でした。また反映まで数時間待つ必要がありました8。 エラーが出る場合はお試しください。)

Mailbox Audit Log(メールボックス監査ログ)の設定

Mailbox Audit Logは、設定上では有効になっていても検索ができない、既定では取れない項目があるなど一部わかりにくい箇所があります。

基本的な設定をはじめとした、いくつかのポイントをご紹介します。

組織の既定の設定で監査が無効になっていないかを確認

監査の有効無効は、組織の既定、および各メールボックスごと、各ユーザごとに設定できます。

ただし公式のドキュメント9に以下のようにあることから、現在は各メールボックスごとの監査の有効無効の設定は無視され、常に組織の既定の設定が優先されるようです。

Turning off mailbox auditing on by default has the following results: Mailbox auditing is not enabled for new mailboxes and setting the AuditEnabled property on a new or existing mailbox to True will be ignored.

Currently, you can't disable mailbox auditing for specific mailboxes when mailbox auditing on by default is turned on in your organization.

そのため一番重要になる組織の既定の設定で、メールボックス監査が無効にされていないかを確認します。

> Get-OrganizationConfig |Select-Object -ExpandProperty AuditDisabled

False

もしTrue(監査が無効)だった場合、以下の方法でFalseにします。

> Set-OrganizationConfig -AuditDisabled $false

ユーザごとに監査をバイパスしていないかを確認

組織の既定の設定で監査が有効になっている場合でも、ユーザごとに監査を無効にできます。

以下の方法でこの機能がFalseになっていることを確かめます。
MailboxIdentityとしてユーザ名やメールアドレスを渡します。

> Get-MailboxAuditBypassAssociation -Identity <MailboxIdentity> | Format-List AuditByPassEnabled

AuditBypassEnabled : False

もしTrue(監査をバイパス)になっていた場合、Falseに切り替えます。

> Set-MailboxAuditBypassAssociation -Identity <MailboxIdentity> -AuditBypassEnabled $false

ユーザごとに行う必要があるため、スクリプトで自動化することを推奨します。

監査ログ検索を可能にする

既定でメールボックスの監査は有効になっていますが、公式ドキュメント9には以下のように注意書きがあります。

If mailbox auditing already appears to be enabled on the mailbox, but your searches return no results, change the value of the AuditEnabled parameter to $false and then back to $true.

つまり監査が有効になっているように見えても、Microsoft 365 コンプライアンスセンターやPowershellコマンドレット等での監査ログ検索ができない場合があります。その際はメールボックスごとの監査の有効無効(AuditEnabledパラメータ)を切り替えて再び有効にすることが必要です。

#有効化
> Set-Mailbox -Identity <MailboxIdentity> -AuditEnabled $true

#無効化
> Set-Mailbox -Identity <MailboxIdentity> -AuditEnabled $false

#再び有効化
> Set-Mailbox -Identity <MailboxIdentity> -AuditEnabled $true

メールボックスごとに行う必要があるため、スクリプトで自動化することを推奨します。

「高度な監査」を有効化

E5/A5/G5といったライセンスを使用すれば、「高度な監査」を使用してより詳しいログの調査が可能です10

中でも有用なものは、MailItemsAccessedイベントとSearchQueryInitiated系イベントです。
MailItemsAccessedイベントはメールの閲覧を記録します。読まれたメールが特定できるため、漏洩した情報の特定に利用できます。 SearchQueryInitiated系イベントは検索内容を記録します。攻撃者がどのような情報を探していたのか、意図をつかみやすくなります。

ただし、単一のメールボックスで1,000イベント/日と大量の監査レコードが生成された場合、そのメールボックスに関するMailItemsAccessedのログ生成が打ち切られるという注意点があります11

「高度な監査」が有効になっているかは、次の手順で確かめることができます12

Microsoft 365 管理センター > ユーザー > アクティブなユーザー > ユーザーをクリック > ライセンスとアプリ から右に出るペインのアプリ欄を見て、Advanced Auditingにチェックが入っていることを確認します。

f:id:NTTCom:20210922131207p:plain 高度な監査が有効になっている例

メールボックス操作の記録設定

Mailbox Audit Logは、ユーザ種別ごとにどんな操作を記録するか設定できます。 確実に必要なログを残すため確認することを推奨します。

公式ドキュメント13では以下の記述があるため、特にメールボックスオーナーについての設定は注意が必要です。

メールボックスオーナーの操作を監査すると、大量のメールボックス監査ログ エントリが生成される可能性があるため、既定では無効となっています。

(なお、NTT Com IRチームの検証環境では最初からメールボックスオーナーの監査が有効化されていたようでした。)

ユーザ種別は3つあり、 AuditAdmin, AuditDelegate, AuditOwnerです。
ユーザ種別ごとにロギング可能な操作一覧9を参考に、少なくとも同ページ表中の*マークが付いているものが有効になっていることを確かめてください。

次のようにして、ロギングされる操作の一覧を表示できます。例として以下ではメールボックスオーナー (AuditOwner)に関して表示しています。

> Get-Mailbox <identity of mailbox> | Select-Object -ExpandProperty AuditOwner

Update
MoveToDeletedItems
SoftDelete
HardDelete
UpdateFolderPermissions
UpdateInboxRules
UpdateCalendarDelegation
ApplyRecord
MailItemsAccessed
Send

もしメールボックスオーナーに関してMailItemsAccessedがロギングされない設定であった場合、以下のコマンドで有効にします。

> Set-Mailbox -Identity <identity of mailbox> -AuditOwner @{Add="MailItemsAccessed"} 

(コマンドでデフォルト設定と完全に同一か確認したり、デフォルト設定に戻したりすることも可能です。本記事のスコープ外なので詳しくは公式ドキュメント9を参照してください。)

また、前セクションで触れた SearchQueryInitiated系イベントのロギングをメールボックスオーナーに対して有効化します。

> Set-Mailbox -Identity <identity of mailbox> -AuditOwner @{Add="SearchQueryInitiated"}

以上の操作は全てのユーザのメールボックスに対して行うことが望ましいため、スクリプトでの自動化を推奨します。

ログの保持期間の延長

デフォルトでの保持期間は以下の通りです。 設定を変更する、ライセンスを契約する等でできる限り期間を伸ばしておくのが安心です。

ログ名 デフォルト保持期間 延長方法
UnifiedAuditLog
(統合監査ログ)
90日-1年2 ライセンス契約*1
MailboxAuditLog
(メールボックス監査ログ)
90日9 AuditLogAgeLimitの値を増やす13
AdminAuditLog
(管理者監査ログ)
90日3 - (オンプレミス版Exchangeなら可)6
MessageTrace
(メッセージ追跡)
90日4 -
Azure AD サインインログ 30日5 -

将来のインシデント時にデータが残っていないと取れる対処の選択肢が狭まってしまいます。 以上を参考に、できる限り長期間のログを保持するようにしておくことをお勧めします。

更に長期間ログを保持したい場合、SIEMを使用することを推奨します。ログの活用も容易になります。

まとめ

前編ではMicrosoft Exchange Online に関するログの種類と取得手順を説明し、後編ではログを記録しておくための設定方法を説明しました。

2つを併せて、来たるインシデントへの備えとしてご活用ください。

ログの分析については、各ログの意味の理解や、大量のログを処理しながらの頻度分析、アノーマリ分析、インテリジェンスを活用しての調査が必要となります。機会があれば別記事で解説したいと思います。


*1:Unified Audit Log(統合監査ログ)についてはライセンスによって異なり、E5などの上位のライセンスで高度な監査が有効な場合(既定で有効)、一部のRecodeTypeをもつログの保存期間が1年となります2。また特別なアドオンライセンスを契約すれば、最大で10年間保持することが可能です10

© NTT Communications Corporation 2014