Exchange 邮箱日志审核报告

使用邮箱审核日志记录可以记录邮箱所有者、委派用户(包含具有完全邮箱访问权限的管理员)和管理员对邮箱的访问。

Exchange 就会在邮箱审核日志中记录相关信息。 每个日志条目都包含以下相关信息:

访问邮箱的用户及访问时间、非所有者执行的操作以及是否成功执行操作。

 默认情况下,邮箱审核日志中的条目将保留 90 天。

可以使用邮箱审核日志来确定某个非邮箱所有者的用户是否访问过邮箱。

审核日志记录是按邮箱启用的。 使用 Set-Mailbox cmdlet 启用或禁用邮箱审核日志记录;默认情况下没有开户用户的邮箱审核。

运行以下命令检查是否成功配置邮箱审核日志记录。

Get-Mailbox | Format-List Name,AuditEnabled

若要为组织中的所有用户邮箱启用邮箱审核,请运行以下命令:

$UserMailboxes = Get-mailbox -Filter “RecipientTypeDetails -eq ‘UserMailbox'” -ResultSize Unlimited

$UserMailboxes | ForEach {Set-Mailbox $_.Identity -AuditEnabled $true}

当您导出邮箱审核日志时,Microsoft Exchange 会将该审核日志(即一个 XML 文件)附加到电子邮件。 但是,默认情况下,Outlook Web App 将阻止 XML 附件。 若要访问导出的审核日志,必须使用 Microsoft Outlook 或配置 Outlook Web App 以允许 XML 附件。

Set-OwaMailboxPolicy -Identity Default -AllowedFileTypes ‘.rpmsg’,’.xlsx’,’.xlsm’,’.xlsb’,’.tiff’,’.pptx’,’.pptm’,’.ppsx’,’.ppsm’,’.docx’,’.docm’,’.zip’,’.xls’,’.wmv’,’.wma’,’.wav’,’.vsd’,’.txt’,’.tif’,’.rtf’,’.pub’,’.ppt’,’.png’,’.pdf’,’.one’,’.mp3′,’.jpg’,’.gif’,’.doc’,’.bmp’,’.avi’,’.xml’

运行以下命令,将 XML 从 Outlook Web App 中被阻止的文件类型列表中删除。

Set-OwaMailboxPolicy -Identity Default -AllowedFileTypes @{add=’.xml’}

Idntity 根据各个组织 的名称确定 默认为Default

Get-OwaMailboxPolicy -Identity Default|Select-Object -ExpandProperty BlockedFileTypes

验证是否 .xml 包含在允许的文件类型列表中。

导出邮箱 审核 日志

在Eac  -合规性管理-审核 -导出邮箱日志

Exchange 恢复删除的邮箱到已知用户

备注:不能使用 EAC 还原删除的邮箱。(恢复邮箱到已知用户)

“软删除”的概念只适用Exchange 2013。

本示例将已删除的邮箱Demo02 还原到已创建的AD启用 Demo01

New-MailboxRestoreRequest -SourceStoreMailbox “Demo02” -SourceDatabase MBXDB01 -TargetMailbox “Demo01” -AllowLegacyDNMismatch

本示例将已删除的邮箱(由 SourceStoreMailbox 参数标识,位于 MBXDB01 邮箱数据库)还原到目标邮箱 Demo02。 使用 AllowLegacyDNMismatch 参数,以便源邮箱可以还原到另一个邮箱,该邮箱不具有相同的旧版 DN 值。

New-MailboxRestoreRequest -SourceStoreMailbox e4890ee7-79a2-4f94-9569-91e61eac372b -SourceDatabase MBXDB01 -TargetMailbox “Demo02” -AllowLegacyDNMismatch

验证还原

Get-MailboxRestoreRequest

Get-MailboxRestoreRequestStatistics

Exchange 恢复已经删除的邮箱

若要将已删除的邮箱连接到用户帐户,该帐户必须存在, 并且 RecipientType 属性的值必须是 User,这表示该帐户尚未启用邮箱。参因为是删除邮箱一并删除的Ad账户,所以需要新建一个AD 账户来连接要恢复的邮箱。

注:在连接删除的链接邮箱、资源邮箱或共享邮箱时,要将邮箱连接到的 Active Directory 用户帐户必须处于禁用状态

实验步骤如下 :

  1. 删除邮箱 demo01
    • Remove-Mailbox -Identity demo01 -Confirm:$false
  2. 查询 AD 账户已经一并删除
    • Get-User -Identity demo01
    • Get-ADUser -Identity demo01
  3. 刷新数据库
    • Get-MailboxStatistics -Database DB1603 | Where { $_.DisconnectReason -ne $null } | ForEach { Update-StoreMailboxState -Database $_.Database -Identity $_.MailboxGuid -Confirm:$false }
  4. 再次验证删除的邮箱状态
    • Get-MailboxDatabase | foreach {Get-MailboxStatistics -Database $_.name} | where {$_.DisplayName -eq “demo01”} | Format-List DisplayName,Database,DisconnectReason
  5. 新建用户demo01
    • $splat = @{
    • Name = ‘Demo01’
    • AccountPassword = (Read-Host -AsSecureString ‘AccountPassword’)
    • Enabled = $true
    • }
    • New-ADUser @splat
  6. 连接邮箱 后,之前的邮件并没有被删除
    • Connect-Mailbox -Identity Demo01 -Database DB1603 -User Demon01
  7. Get-User -Identity demon01

Exchange 连接禁用的邮箱

每个 Microsoft Exchange 邮箱都由 Active Directory 用户帐户以及存储在 Exchange 邮箱数据库中的邮箱数据组成。

  • 禁用和删除邮箱的区别
    • 禁用邮箱时,将从对应的 Active Directory 用户帐户中删除 Exchange 属性,但保留此用户帐户。
    •  而删除邮箱之后,Exchange 属性和 Active Directory 用户帐户均会删除。
    • 删除邮箱时, DisconnectReason 属性中的值也是 Disabled。 但是,对应的 Active Directory 用户帐户将会删除
    • 禁用邮箱时, DisconnectReason 属性中的值也是 Disabled。 但是,对应的 Active Directory 用户帐户将会保留下来。
    • 恢复连接邮箱要保证 AD账户是存在的,最好是启用的。
  • 查询邮箱数据库保留时长
    • Get-MailboxDatabase | Select-Object Name ,MailboxRetention
  • 查看断开连接的邮箱 (查看之前最好使用Update-StoreMailboxState)刷新数据库状态
    1. $dbs = Get-MailboxDatabase
    2. $dbs | foreach {Get-MailboxStatistics -Database $_.DistinguishedName} | where {$_.DisconnectReason -ne $null} | Format-Table DisplayName,Database,DisconnectDate
    3. 禁用邮箱demo01
      • Get-MailboxStatistics -Identity demo01 | fl
      • Disable-Mailbox -Identity demo01
      • Get-ADUser -Identity demo01 (查看AD用户 状态)确保AD 用户在启用状态
    4. 刷新数据库状态
      • Get-MailboxStatistics -Database DB1603 | Where { $_.DisconnectReason -ne $null } | ForEach { Update-StoreMailboxState -Database $_.Database -Identity $_.MailboxGuid -Confirm:$false }
    5. 查询禁用的邮箱
      • $dbs = Get-MailboxDatabase
      • $dbs | foreach {Get-MailboxStatistics -Database $_.DistinguishedName} | where {$_.DisconnectReason -ne $null} | Format-Table DisplayName,Database,DisconnectDate
    6. 连接邮箱 (Identity 参数最好使用displayname)
      • Connect-Mailbox -Identity demo01 -Database DB1603 -User demon01
    7. 再次刷新数据库
      • Get-MailboxStatistics -Database DB1603 | ForEach { Update-StoreMailboxState -Database $_.Database -Identity $_.MailboxGuid -Confirm:$false }
    8. 验证 Get-Mailbox -Identity demo01

Exchange RBAC 基于角色的访问控制

Exchange Role Based Access Control: Management Roles (practical365.com)

https://learn.microsoft.com/zh-cn/powershell/exchange/find-exchange-cmdlet-permissions?view=exchange-ps

Role Based Access Control 是一种权限模型

RBAC 主要有以下两种向组织中的用户分配权限的方法:管理角色组和管理角色分配策略。 每种方法都会将用户与执行其工作所需的权限相关联。 另外,也可以使用第三种更高级的方法,即直接用户角色分配

通用安全组 (USG) :管理角色组是基于角色访问控制 (RBAC) 权限模型中使用的通用安全组 (USG) 

RBAC认为权限授权的过程可以抽象地概括为:Who是否可以对What进行How的访问操作,并对这个逻辑表达式进行判断是否为True的求解过程,也即是将权限问题转换为Who、What、How的问题,Who、What、How构成了访问权限三元组,具体的理论可以参考RBAC96

微软定义的RBAC 组件 What\Who\Where 这里的what是可以执行的命令,Who也就是角色,Where是范围也就是可以管理哪些任务。

一般在日常管理中角色(或者说头衔)和权限是紧密联系的,例如经常提到的几个O ,CEO、CFO、CTO等,这些角色被赋予特定的权限。基于上述中的角色进行日常的管理任务;这些角色不被绑定到任何个人,但可以赋予给个人也就是Exchange中所说的成员(member)进行日常的管理工作;归根结底还是哪些人(role)拥有哪些权限(permission)可以做哪些事情(things).这里的things 可以是Exchange 中角色使用操作的命令(cmdlet).

可以使用 Get-RoleGroup 查看Exchange 内置的管理角色组,管理角色组在Exchange 中是特殊的安全组,是可以将用户作为成员添加到其中以授予其执行管理任务的权限的安全组。Built-in role groups: Exchange 2013 Help | Microsoft Learn

可以使用Get-ManagementRole 查看Exchange 内置的管理角色;

结合官网给出的RBAC概念,理解如下 :

  1. 管理角色项(Entry),是用户可以执行的特定任务,例如运行Set-Mailbox cmdlet。
    • Get-ManagementRoleEntry “Mail Recipients\*” | Select Name
  2. 管理角色(ManagementRole),是角色条目的集合,例如邮件收件人角色。
    • Get-ManagementRole “Mail Recipients” | fl Description
    • Get-ManagementRole “Mailbox Import Export” | Format-List
  3. 管理角色范围(Scope),定义管理角色适用于组织中的哪个位置,例如整个组织、特定服务器或特定组织单位。
  4. 管理角色分配(AssigenMent),将管理角色链接到角色组。
  5. 管理角色组(Role Group),是可以将用户作为成员添加到其中以授予其执行管理任务的权限的安全组。

查看管理所属的管理角色组

Get-RoleGroup -Filter “Members -eq ‘abc.com/Users/Administrator'” | Format-Table Name

查看管理角色类型

Get-ManagementRole

Get-ManagementRole -RoleType MailboxImportExport

为成员分配管理角色 (最常用的)

New-ManagementRoleAssignment -Role “Mailbox Import Export” -User “Administrator”

查看CMDLET 执行需要的角色 (role)

$Perms = Get-ManagementRole -Cmdlet Search-MessageTrackingReport
$Perms | foreach {Get-ManagementRoleAssignment -Role $_.Name -Delegating $false | Format-Table -Auto Role,RoleAssigneeType,RoleAssigneeName}

查看角色分配所属的用户和组

Get-ManagementRoleAssignment -Role “View-Only Recipients” -GetEffectiveUsers -Delegating $false | Where-Object {$_.EffectiveUserName -ne “All Group Members”} | Format-Table -Auto EffectiveUserName,Role,RoleAssigneeName,AssignmentMethod