Exchange 2019 中客户端访问规则的过程

客户端访问规则允许或阻止 Exchange 管理中心 (EAC) 或远程 PowerShell 连接到 Exchange 2019 组织,具体取决于连接的属性。 有关客户端访问规则的详细信息,请参阅 Exchange Server 中的客户端访问规则

提示

验证规则是否按预期方式工作。 确保全面测试每个规则以及规则之间的交互。 有关详细信息,请参阅本主题后面的 使用 Exchange 命令行管理程序测试客户端访问规则 部分。

开始前,有必要了解什么?

  • 估计完成每个过程的时间:少于 5 分钟。

  • 本主题中的过程仅在 Exchange 命令行管理程序中可用。 有关详细信息,请参阅 打开 Exchange 命令行管理程序 或使用 远程 PowerShell 连接到 Exchange 服务器

  • 客户端访问规则支持 IPv4 和 IPv6 地址。 有关 IPv6 地址和语法的详细信息,请参阅此 Exchange 2013 主题: IPv6 地址基础知识

  • 你必须先获得权限,然后才能执行此过程或多个过程。 若要查看所需的权限,请参阅邮件流权限中的“ 邮件流”条目。

提示

是否有任何疑问? 在 Exchange 论坛中寻求帮助。 访问 Exchange Server 的论坛。

使用 Exchange 命令行管理程序查看客户端访问规则

若要返回所有客户端访问规则的摘要列表,请运行以下命令:

Get-ClientAccessRule

若要返回有关特定规则的详细信息,请使用以下语法:

Get-ClientAccessRule -Identity "<RuleName>" | Format-List [<Specific properties to view>]

此示例返回名为“阻止来自 192.168.1.0/24 的客户端连接”的规则的所有属性值。

Get-ClientAccessRule -Identity "Block Client Connections from 192.168.1.0/24" | Format-List

下面的示例仅返回同一规则的指定属性。

Get-ClientAccessRule -Identity "Block Client Connections from 192.168.1.0/24" | Format-List Name,Priority,Enabled,Scope,Action

有关详细语法和参数信息,请参阅 Get-ClientAccessRule

使用 Exchange 命令行管理程序创建客户端访问规则

若要在 Exchange 命令行管理程序中创建客户端访问规则,请使用以下语法:

New-ClientAccessRule -Name "<RuleName>" [-Priority <PriorityValue>] [-Enabled <$true | $false>] -Action <AllowAccess | DenyAccess> [<Conditions>] [<Exceptions>]

此示例创建一个名为“阻止 PowerShell”的新客户端访问规则,该规则阻止远程 PowerShell 访问,IP 地址范围 192.168.10.1/24 中的客户端除外。

New-ClientAccessRule -Name "Block PowerShell" -Action DenyAccess -AnyOfProtocols RemotePowerShell -ExceptAnyOfClientIPAddressesOrRanges 192.168.10.1/24

注意

  • 最佳做法是创建优先级最高的客户端访问规则,以保留管理员对远程 PowerShell 的访问权限。 例如:New-ClientAccessRule -Name "Always Allow Remote PowerShell" -Action Allow -AnyOfProtocols RemotePowerShell -Priority 1
  • 规则具有默认优先级值,因为我们未使用 Priority 参数。 有关详细信息,请参阅本主题后面的 使用 Exchange 命令行管理程序设置客户端访问规则的优先级 部分。
  • 规则已启用,因为我们未使用 Enabled 参数,默认值为 $true

此示例创建一个名为“限制 EAC 访问”的新客户端访问规则,该规则阻止对 Exchange 管理中心的访问,除非客户端来自 192.168.10.1/24 范围内的 IP 地址,或者用户帐户名称包含“tanyas”。

New-ClientAccessRule -Name "Restrict EAC Access" -Action DenyAccess -AnyOfProtocols ExchangeAdminCenter -ExceptAnyOfClientIPAddressesOrRanges 192.168.10.1/24 -ExceptUsernameMatchesAnyOfPatterns *tanyas*

有关详细语法和参数信息,请参阅 New-ClientAccessRule

如何知道操作成功?

若要验证是否已成功创建客户端访问规则,请使用以下任一过程:

  • 在 Exchange 命令行管理程序中运行此命令,查看规则列表中的新规则:

    Get-ClientAccessRule
    
  • RuleName> 替换为<规则的名称,并运行以下命令以查看规则的详细信息:

    Get-ClientAccessRule -Identity "<RuleName>" | Format-List
    
  • 使用 Test-ClientAccessRule cmdlet 查看哪些客户端访问规则会影响与 Exchange 的特定客户端连接。 有关详细信息,请参阅本主题后面的 使用 Exchange 命令行管理程序测试客户端访问规则 部分。

使用 Exchange 命令行管理程序修改客户端访问规则

修改客户端访问规则时,没有可用的其他设置。 这些设置与创建规则时可用的设置相同:

若要在 Exchange 命令行管理程序中修改客户端访问规则,请使用以下语法:

Set-ClientAccessRule -Identity "<RuleName>" [-Name "<NewName>"] [-Priority <PriorityValue>] [-Enabled <$true | $false>] -Action <AllowAccess | DenyAccess> [<Conditions>] [<Exceptions>]

此示例禁用名为“允许 EAC”的现有客户端访问规则。

Set-ClientAccessRule -Identity "Allow EAC" -Enabled $false

修改客户端访问规则时的一个重要注意事项是修改接受多个值的条件或例外:

  • 指定的值将 替换 任何现有值。
  • 若要在不影响其他现有值的情况下添加或删除值,请使用以下语法: @{Add="<Value1>","<Value2>"...; Remove="<Value1>","<Value2>"...}

本示例将 IP 地址范围 172.17.17.27/16 添加到名为“允许 EAC”的现有客户端访问规则,而不会影响现有 IP 地址值。

Set-ClientAccessRule -Identity "Allow EAC" -AnyOfClientIPAddressesOrRanges @{Add="172.17.17.27/16"}

有关详细语法和参数信息,请参阅 Set-ClientAccessRule

如何知道操作成功?

若要验证是否已成功修改客户端访问规则,请使用以下任一过程:

  • RuleName> 替换为<规则的名称,并运行以下命令以查看规则的详细信息:

    Get-ClientAccessRule -Identity "<RuleName>" | Format-List
    
  • 使用 Test-ClientAccessRule cmdlet 查看哪些客户端访问规则会影响与 Exchange 的特定客户端连接。 有关详细信息,请参阅本主题后面的 使用 Exchange 命令行管理程序测试客户端访问规则 部分。

使用 Exchange 命令行管理程序设置客户端访问规则的优先级

默认情况下,客户端访问规则的优先级取决于在 (较新的规则的优先级低于旧规则) 。 较低的优先级编号指示规则具有较高优先级,并按照优先级顺序处理这些规则(先处理具有较高优先级的规则,然后再处理具有较低优先级的规则)。 不存在两个规则具有相同优先级的情况。

可以对规则设置的最高优先级为 1。 可以设置的最小优先级值取决于规则的数量。 例如,如果有五个规则,则可以使用优先级值 1 到 5。 更改现有规则的优先级可对其他规则产生级联效应。 例如,如果有五个规则 (优先级 1 到 5) ,并且将规则的优先级从 5 更改为 2,优先级为 2 的现有规则将更改为优先级 3,优先级为 3 的规则将更改为优先级 4,优先级为 4 的规则将更改为优先级 5。

若要在 Exchange 命令行管理程序中设置客户端访问规则的优先级,请使用以下语法:

Set-ClientAccessRule -Identity "<RuleName>" -Priority <Number>

本示例将名为“禁用 PowerShell”的规则的优先级设置为 3。 优先级小于或等于 3 的所有现有规则将减少 1 (其优先级编号增加 1) 。

Set-ClientAccessRule -Identity "Disable PowerShell" -Priority 4

注意:若要在创建新规则时设置该规则的优先级,请在 New-ClientAccessRule cmdlet 上使用 Priority 参数。

如何知道操作成功?

若要验证是否已成功设置客户端访问规则的优先级,请使用以下任一过程:

  • 在 Exchange 命令行管理程序中运行此命令,查看规则列表及其 优先级 值:

    Get-ClientAccessRule
    
  • RuleName> 替换为<规则的名称,并运行以下命令:

    Get-ClientAccessRule -Identity "<RuleName>" | Format-List Name,Priority
    

使用 Exchange 命令行管理程序删除客户端访问规则

若要删除 Exchange 命令行管理程序中的客户端访问规则,请使用以下语法:

Remove-ClientAccessRule -Identity "<RuleName>"

此示例删除名为“阻止 EAC”的客户端访问规则。

Remove-ClientAccessRule -Identity "Block EAC"

注意:若要禁用客户端访问规则而不将其删除,请使用 Enabled 参数和 Set-ClientAccessRule cmdlet 上的 值$false

有关详细语法和参数信息,请参阅 Remove-ClientAccessRule

如何知道操作成功?

若要验证是否已成功删除客户端访问规则,请在 Exchange 命令行管理程序中运行以下命令,验证该规则是否不再列出:

Get-ClientAccessRule

使用 Exchange 命令行管理程序测试客户端访问规则

若要查看哪些客户端访问规则会影响与 Exchange 的特定客户端连接,请使用以下语法:

Test-ClientAccessRule -User <MailboxIdentity> -AuthenticationType <AuthenticationType> -Protocol <Protocol> -RemoteAddress <ClientIPAddress> -RemotePort <TCPPortNumber>

此示例返回与 Exchange 的客户端连接匹配的客户端访问规则,该连接具有以下属性:

  • 身份验证类型:基本
  • 协议ExchangeAdminCenter
  • 远程地址:172.17.17.26
  • 远程端口:443
  • 用户: julia@contoso.com
Test-ClientAccessRule -User julia@contoso.com -AuthenticationType BasicAuthentication -Protocol ExchangeAdminCenter -RemoteAddress 172.17.17.26 -RemotePort 443

有关详细语法和参数信息,请参阅 Test-ClientAccessRule