Tóm tắt
Độ tin cậy nhóm cung cấp một cách cho các tài nguyên trong một nhóm Active Directory danh tính từ một nhóm tin. Tin này có thể được cấu hình trong cả hai hướng. Nhóm tin cậy là nguồn danh tính người dùng. Nhóm tin chứa tài nguyên mà người dùng xác thực. Nhóm tin cậy có thể xác thực người dùng nhóm tin không cho phép đảo xảy ra.
Uỷ quyền Kerberos không bị giới hạn là một cơ chế mà người dùng gửi thông tin đăng nhập của một dịch vụ cho phép các dịch vụ truy nhập tài nguyên thay mặt cho người dùng. Để cho phép uỷ nhiệm Kerberos không bị giới hạn, tài khoản của dịch vụ Active Directory phải được đánh dấu là đáng tin cậy để uỷ nhiệm. Điều này tạo ra sự cố nếu người dùng và dịch vụ thuộc rừng khác nhau. Nhóm Dịch vụ chịu trách nhiệm cho phép uỷ nhiệm. Đoàn bao gồm các thông tin của người dùng nhóm người dùng.
Cho phép một nhóm bảo mật đưa ra quyết định ảnh hưởng đến một nhóm tài khoản vi phạm giới bảo mật giữa rừng. Kẻ sở hữu nhóm tin có thể yêu cầu uỷ nhiệm TGT cho danh từ nhóm tin cậy cho nó truy cập vào tài nguyên trong nhóm tin cậy. Điều này không áp dụng cho uỷ nhiệm Kerberos hạn chế (KCD).
Windows Server 2012 giới thiệu thi hành cho nhóm ranh giới để uỷ nhiệm Kerberos đầy đủ. Tính năng này vào một chính sách miền đáng tin cậy để vô hiệu hoá các uỷ nhiệm không bị giới hạn theo một tin cậy. Thiết đặt mặc định cho tính năng này cho phép uỷ nhiệm không bị giới hạn và không an toàn.
Bản Cập Nhật cung cấp bảo mật cứng có các phiên bản Windows Server:
-
Windows Server 2019
-
Windows Server 2016
-
Windows Server 2012 R2
-
Windows Server 2012
Tính năng này cùng với những thay đổi trong bảo mật cứng là backported cho phiên bản sau đây:
-
Windows Server 2008 R2
-
Windows Server 2008
Các bản Cập Nhật bảo mật thay đổi sau:
-
Ủy nhiệm Kerberos không bị giới hạn được tắt theo mặc định mới nhóm và độ tin cậy bên ngoài mớisau khi cài đặt14 ngày Cập Nhật và các bản Cập Nhật.
-
Uỷ quyền Kerberos không bị giới hạn bị tắt trên khu rừng (mới và đang có) và độ tin cậy bên ngoài sau khi bạn cài đặt vào ngày 9, 2019, Cập Nhật và bản cập nhật mới hơn.
-
Quản trị viên có thể cho phép uỷ nhiệm Kerberos không bị giới hạn bằng cách sử dụng ngày hoặc các phiên bản mô-đun NETDOM và AD PowerShell.
Các bản Cập Nhật có thể gây ra xung đột tương thích cho các ứng dụng hiện yêu cầu uỷ nhiệm không bị giới hạn trên nhóm hoặc độ tin cậy bên ngoài. Điều này đặc biệt đúng ngoài tin cậy cho cách ly kỳ (còn được gọi là SID lọc) được bật theo mặc định. Cụ thể, yêu cầu xác thực cho dịch vụ sử dụng uỷ nhiệm không bị giới hạn loại tin cậy được liệt kê sẽ thất bại khi bạn yêu cầu vé mới.
Ngày phát hành, xem các bản Cập Nhật thời gian.
Cách giải quyết
Cung cấp dữ liệu và tài khoản bảo mật trên phiên bản Windows Server đã thi hành cho nhóm ranh giới để uỷ nhiệm Kerberos đầy đủ tính năng, bạn có thể chặn TGT uỷ nhiệm sau khi bạn cài đặt các bản Cập Nhật ngày 2019 trên thông tin đến bằng cách đặt các cờ netdom EnableTGTDelegationNo, như sau:
netdom.exe trust fabrikam.com /domain:contoso.com /EnableTGTDelegation:No
TGT đoàn bị chặn mới và đang có nhóm và độ tin cậy bên ngoài sau khi bạn cài đặt tháng bảy 2019 Cập Nhật tương ứng.
Để kích hoạt uỷ nhiệm trên độ tin cậy và trở về cấu hình ban đầu không an toàn cho đến khi Uỷ nhiệm hạn chế hoặc tài nguyên dựa trên có thể được kích hoạt, đặt cờ EnableTGTDelegationcó.
NETDOM dòng lệnh cho phép uỷ nhiệm TGT là như sau:
netdom trust <TrustedDomainName > /domain:<TrustingDomainName > /EnableTgtDelegation:Yes
Bạn có thể khái niệm nghĩ về cú pháp NETDOM cho phép uỷ nhiệm TGT như sau:
netdom trust <domain that you are administering> /domain:<domain whose trust NETDOM is modifying> /EnableTgtDelegation:Yes
Cú pháp NETDOM sử TGT uỷ nhiệm người dùng fabrakam.com trên các máy chủ contoso.com là như sau:
netdom.exe trust fabrikam.com /domain:contoso.com /EnableTGTDelegation:Yes
Lưu ý́
-
Cờ EnableTGTDelegation nên được đặt trong miền đáng tin cậy (fabrikam.com trong trường hợp này) cho mỗi tên miền tin tưởng (chẳng hạn như contoso.com). Sau khi cờ được thiết lập, miền đáng tin cậy không sẽ cho phép TGTs giao miền tin cậy.
-
Trạng thái bảo mật cho EnableTGTDelegation là không.
-
Bất kỳ ứng dụng hoặc dịch vụ dựa trên ủy nhiệm không bị giới hạn trên rừng sẽ thất bại khi EnableTGTDelegation theo cách thủ công hoặc lập nằm có. EnableTGTDelegation mặc định không mới và đang có độ tin cậy sau khi bạn cài đặt các bản Cập Nhật tháng 2019 và ngày 2019. Để biết thêm thông tin về cách phát hiện lỗi này, hãy xem Tìm dịch vụ mà dựa vào các uỷ nhiệm không bị giới hạn. Xem bản Cập Nhật thời gian cho một thời gian thay đổi ảnh hưởng đến cách giải pháp này có thể được áp dụng.
-
Để biết thêm thông tin về NETDOM, hãy xem tài liệu Netdom.exe.
-
Nếu bạn phải kích hoạt TGT uỷ nhiệm trên một tin cậy, khuyên bạn giảm thiểu nguy cơ bằng cách cho phép Windows Defender khả năng bảo vệ trên máy khách. Điều này ngăn chặn tất cả không bị giới hạn uỷ nhiệm từ máy tính Windows Defender khả năng bảo vệ được kích hoạt và chạy.
-
Nếu bạn có một nhóm hoặc bên ngoài tin cậy hoặc được cấu hình như cách ly, TGT uỷ nhiệm không thể bật vì cờ hai ngữ nghĩa khác. Cách ly chút tăng cường bảo mật ranh giới giữa tham gia miền. Cho phép uỷ nhiệm TGT xóa ranh giới bảo mật giữa miền bằng cách cho phép truy cập miền tin cậy để uỷ nhiệm người dùng từ đáng tin cậy. Bạn không thể có cả hai cách.
Thêm cờ cách ly: không cú pháp dòng lệnh NETDOM nếu cờ cách ly hiện đang được kích hoạt.
-
Nếu bạn thay đổi EnableTGTDelegationcó, xoá vé Kerberos về nguồn gốc và trung gian gọi là bắt buộc. Vé phù hợp để xóa là máy khách giới thiệu TGT trên tin cậy có liên quan. Điều này có thể bao gồm nhiều thiết bị, tuỳ thuộc vào số lượng đoàn bước nhảy trong một môi trường nhất định.
Để biết thêm thông tin về quy trình này, hãy xem bài viết Windows IT Pro Trung tâm sau:
Bảo vệ thông tin có nguồn gốc miền với Windows Defender khả năng bảo vệ
Thời gian Cập Nhật
12 tháng 3, 2019
Thi hành cho nhóm ranh giới cho Kerberos đoàn đầy đủ sẽ có sẵn như là bản Cập Nhật để kích hoạt tính năng này trên các phiên bản được hỗ trợ của Windows Server được liệt kê trong phần áp dụng ở đầu bài viết này. Chúng tôi khuyên bạn nên đặt các tính năng trên các nhóm độ tin cậy.
Bản Cập Nhật sẽ thêm tính năng thực thi cho nhóm ranh giới để uỷ nhiệm Kerberos toàn bộ hệ thống sau:
-
Windows Server 2008 R2
-
Windows Server 2008
14 ngày, 2019
Bản Cập Nhật được phát hành thêm một mới an toàn mặc định cấu hình nhóm mới và tin cậy bên ngoài. Nếu bạn yêu cầu uỷ nhiệm trên độ tin cậy, cờ EnableTGTDelegation nên được đặt đúng trước khi cài đặt bản Cập Nhật tháng 9, 2019. Nếu bạn không yêu cầu uỷ nhiệm trên độ tin cậy, bạn không nên đặt cờ EnableTGTDelegation . Cờ EnableTGTDelegation sẽ được bỏ qua cho đến khi bản Cập Nhật tháng 9, 2019 được cài đặt cho quản trị viên thời gian để uỷ nhiệm Kerberos không bị giới hạn khi nó.
Là một phần của bản cập nhật này, cờ EnableTGTDelegation sẽ được đặt thành không theo mặc định cho bất kỳ tín mới được tạo ra. Đây là đối diện của chế độ trước đó. Chúng tôi khuyên rằng quản trị viên thay vì cấu hình lại các dịch vụ bị ảnh hưởng để sử dụng tài nguyên dựa trên uỷ nhiệm hạn chế.
Để biết thêm thông tin về cách phát hiện vấn đề tương thích, hãy xem Tìm dịch vụ mà dựa vào các uỷ nhiệm không bị giới hạn.
Tháng 9, 2019
Bản Cập Nhật được phát hành thi hành vi mặc định mới bên trong nhóm và độ tin cậy bên ngoài. Xác thực yêu cầu cho dịch vụ sử dụng uỷ nhiệm không bị giới hạn loại tin cậy được liệt kê sẽ được xác thực nhưng không có uỷ nhiệm. Dịch vụ sẽ thất bại khi cố gắng chạy đều hoạt động.
Để giảm thiểu, hãy xem phần "giải pháp".
Dịch vụ tìm kiếm dựa trên ủy nhiệm không bị giới hạn
Quét rừng đến độ tin cậy cho phép uỷ nhiệm TGT, và tìm thấy bất kỳ bảo mật hiệu cho phép uỷ nhiệm không bị giới hạn, Chạy PowerShell sau kịch bản trong một tập tin (ví dụ: Get-RiskyServiceAccountsByTrust.ps1- Thu thập):
Lưu ý
Bạn cũng có thể vượt qua cờ - ScanAll tìm kiếm trên độ tin cậy cho phép uỷ nhiệm TGT.
[CmdletBinding()]
Param
(
[switch]$Collect,
[switch]$ScanAll
)
if ($Debug) {
$DebugPreference = 'Continue'
}
else {
$DebugPreference = 'SilentlyContinue'
}
function Get-AdTrustsAtRisk
{
[CmdletBinding()]
Param
(
[string]$Direction = "Inbound",
[switch]$ScanAll
)
if ($ScanAll) {
return get-adtrust -filter {Direction -eq $Direction}
}
else {
return get-adtrust -filter {Direction -eq $Direction -and TGTDelegation -eq $false}
}
}
function Get-ServiceAccountsAtRisk
{
[CmdletBinding()]
Param
(
[string]$DN = (Get-ADDomain).DistinguishedName,
[string]$Server = (Get-ADDomain).Name
)
Write-Debug "Searching $DN via $Server"
$SERVER_TRUST_ACCOUNT = 0x2000
$TRUSTED_FOR_DELEGATION = 0x80000
$TRUSTED_TO_AUTH_FOR_DELEGATION= 0x1000000
$PARTIAL_SECRETS_ACCOUNT = 0x4000000
$bitmask = $TRUSTED_FOR_DELEGATION -bor $TRUSTED_TO_AUTH_FOR_DELEGATION -bor $PARTIAL_SECRETS_ACCOUNT
$filter = @"
(&
(servicePrincipalname=*)
(|
(msDS-AllowedToActOnBehalfOfOtherIdentity=*)
(msDS-AllowedToDelegateTo=*)
(UserAccountControl:1.2.840.113556.1.4.804:=$bitmask)
)
(|
(objectcategory=computer)
(objectcategory=person)
(objectcategory=msDS-GroupManagedServiceAccount)
(objectcategory=msDS-ManagedServiceAccount)
)
)
"@ -replace "[\s\n]", ''
$propertylist = @(
"servicePrincipalname",
"useraccountcontrol",
"samaccountname",
"msDS-AllowedToDelegateTo",
"msDS-AllowedToActOnBehalfOfOtherIdentity"
)
$riskyAccounts = @()
try {
$accounts = Get-ADObject -LDAPFilter $filter -SearchBase $DN -SearchScope Subtree -Properties $propertylist -Server $Server
}
catch {
Write-Warning "Failed to query $Server. Consider investigating seperately. $($_.Exception.Message)"
}
foreach ($account in $accounts) {
$isDC = ($account.useraccountcontrol -band $SERVER_TRUST_ACCOUNT) -ne 0
$fullDelegation = ($account.useraccountcontrol -band $TRUSTED_FOR_DELEGATION) -ne 0
$constrainedDelegation = ($account.'msDS-AllowedToDelegateTo').count -gt 0
$isRODC = ($account.useraccountcontrol -band $PARTIAL_SECRETS_ACCOUNT) -ne 0
$resourceDelegation = $account.'msDS-AllowedToActOnBehalfOfOtherIdentity' -ne $null
$acct = [PSCustomobject] @{
domain = $Server
sAMAccountName = $account.samaccountname
objectClass = $account.objectclass
isDC = $isDC
isRODC = $isRODC
fullDelegation = $fullDelegation
constrainedDelegation = $constrainedDelegation
resourceDelegation = $resourceDelegation
}
if ($fullDelegation) {
$riskyAccounts += $acct
}
}
return $riskyAccounts
}
function Get-RiskyServiceAccountsByTrust
{
[CmdletBinding()]
Param
(
[switch]$ScanAll
)
$riskyAccounts = @()
$trustTypes = $("Inbound", "Bidirectional")
foreach ($type in $trustTypes) {
$riskyTrusts = Get-AdTrustsAtRisk -Direction $type -ScanAll:$ScanAll
foreach ($trust in $riskyTrusts) {
$domain = $null
try {
$domain = Get-AdDomain $trust.Name -ErrorVariable eatError -ErrorAction Ignore
} catch {
write-debug $_.Exception.Message
}
if($eatError -ne $null) {
Write-Warning "Couldn't find domain: $($trust.Name)"
}
if ($domain -ne $null) {
$accts = Get-ServiceAccountsAtRisk -DN $domain.DistinguishedName -Server $domain.DNSRoot
foreach ($acct in $accts) {
Write-Debug "Risky: $($acct.sAMAccountName) in $($acct.domain)"
}
$risky = [PSCustomobject] @{
Domain = $trust.Name
Accounts = $accts
}
$riskyAccounts += $risky
}
}
}
return $riskyAccounts
}
if ($Collect) {
Get-RiskyServiceAccountsByTrust -ScanAll:$ScanAll | Select-Object -expandProperty Accounts | format-table
}
Đầu ra của lệnh PowerShell danh hiệu bảo mật Active Directory trong miền được cấu hình cho thông tin đến từ miền executing có unconstrained uỷ nhiệm cấu hình. Kết quả sẽ giống như ví dụ sau.
tên miền |
sAMAccountName |
objectClass |
partner.fabrikam.com |
nguy hiểm |
người dùng |
partner.fabrikam.com |
labsrv$ |
máy tính |
Phát hiện các uỷ nhiệm không bị giới hạn thông qua sự kiện Windows
Khi vé Kerberos được phát hành, một bộ điều khiển miền Active Directory ghi nhật ký sự kiện bảo mật sau. Sự kiện chứa thông tin về miền đích. Bạn có thể sử dụng các sự kiện để xác định xem uỷ nhiệm không bị giới hạn đang được sử dụng trên đến độ tin cậy.
Lưu ý
Kiểm tra sự kiện chứa giá trị TargetDomainName phù hợp với tên miền đáng tin cậy.
Nhật ký sự kiện |
Sự kiện nguồn |
ID sự kiện |
Thông tin chi tiết |
Bảo mật |
Microsoft-Windows-bảo mật-kiểm định |
4768 |
Kerberos TGT được cấp. |
Bảo mật |
Microsoft-Windows-bảo mật-kiểm định |
4769 |
Dịch vụ vé Kerberos được cấp. |
Bảo mật |
Microsoft-Windows-bảo mật-kiểm định |
4770 |
Dịch vụ vé Kerberos được gia hạn. |
Khắc phục sự cố xác thực thất bại
Khi không bị giới hạn uỷ nhiệm được kích hoạt, ứng dụng có thể có vấn đề tương thích với những thay đổi nếu các ứng dụng dựa trên ủy nhiệm không bị giới hạn. Các ứng dụng phải được cấu hình để sử dụng hạn chế uỷ nhiệm hoặc hạn chế uỷ nhiệm tài nguyên dựa trên. Fhoặc thêm thông tin, see Tổng quan về uỷ nhiệm ràng buộc Kerberos.
Ứng dụng dựa trên vòng xác thực trên độ tin cậy không được hỗ trợ bằng cách sử dụng uỷ nhiệm hạn chế. Ví dụ: một uỷ nhiệm không thành công nếu người dùng ở nhóm authenticates cho ứng dụng trong nhóm B và ứng dụng trong nhóm B muốn đại diện một vé về nhóm A.