Giới thiệu: Tại sao RC4 bị khai tử và bạn cần hành động ngay
Nếu bạn đang quản trị Active Directory hoặc làm việc trong đội ngũ IT Helpdesk, thì đây là thông tin bạn không thể bỏ qua: Microsoft chính thức loại bỏ mã hóa RC4 khỏi giao thức xác thực Kerberos. Quá trình này đã bắt đầu từ bản cập nhật bảo mật ngày 13 tháng 1 năm 2026, và sẽ được thực thi hoàn toàn vào tháng 7 năm 2026.
Nghe có vẻ kỹ thuật phải không? Đúng vậy, nhưng tác động thực tế thì lại rất "đời thường": nếu không chuẩn bị kịp, hệ thống xác thực của tổ chức bạn có thể ngừng hoạt động — người dùng không đăng nhập được, ứng dụng nội bộ bị lỗi, file sharing và Remote Desktop gián đoạn. Tất cả chỉ vì một thuật toán mã hóa cũ kỹ không được cập nhật kịp thời.
Thành thật mà nói, mình đã thấy nhiều tổ chức chủ quan với thay đổi kiểu này — cho đến khi người dùng bắt đầu gọi Helpdesk ào ào vì không đăng nhập được. Đừng để điều đó xảy ra với bạn.
Trong bài viết này, chúng ta sẽ đi qua:
- RC4 là gì và tại sao nó nguy hiểm (đặc biệt với tấn công Kerberoasting)
- Lộ trình 3 giai đoạn của Microsoft (CVE-2026-20833)
- Cách phát hiện tài khoản và dịch vụ còn dùng RC4 bằng PowerShell
- Hướng dẫn di chuyển sang AES từng bước
- Các lỗi thường gặp và cách khắc phục cho đội ngũ Helpdesk
- Checklist chuẩn bị trước deadline tháng 7/2026
Nào, bắt đầu thôi.
RC4 và Kerberos: Nền tảng cần hiểu
Kerberos hoạt động như thế nào?
Kerberos là giao thức xác thực mặc định trong môi trường Active Directory (AD). Khi người dùng đăng nhập vào máy tính gia nhập domain, quá trình xác thực diễn ra qua 3 bước:
- Authentication Service (AS) Exchange: Máy client gửi yêu cầu đến Key Distribution Center (KDC) trên Domain Controller. KDC xác minh danh tính và cấp Ticket Granting Ticket (TGT).
- Ticket Granting Service (TGS) Exchange: Khi cần truy cập dịch vụ nào đó (file server, SQL Server chẳng hạn), client dùng TGT để yêu cầu Service Ticket từ KDC.
- Truy cập dịch vụ: Client trình Service Ticket cho server đích để được cấp quyền.
Trong toàn bộ quy trình này, các ticket được mã hóa bằng một thuật toán — và đây chính là nơi RC4 vs AES tạo ra sự khác biệt lớn về bảo mật.
RC4 là gì và tại sao nó yếu?
RC4 (Rivest Cipher 4) là thuật toán mã hóa dòng (stream cipher) ra đời từ tận năm 1987. Trong Kerberos, biến thể được sử dụng là RC4-HMAC-MD5 (mã loại 0x17). RC4 từng là lựa chọn mặc định vì tính tương thích cao, đặc biệt từ thời Windows 2000/2003.
Nhưng nó có những điểm yếu khá nghiêm trọng:
- Không sử dụng salt: Khi chuyển đổi mật khẩu thành khóa mã hóa, RC4 không thêm giá trị ngẫu nhiên — hai mật khẩu giống nhau luôn tạo ra cùng một hash.
- Không có iterated hashing: Quá trình hash chỉ chạy một lần duy nhất, giúp kẻ tấn công thử hàng triệu mật khẩu mỗi giây.
- Dựa trên NetNTLM hash: Khóa mã hóa RC4 chính là NT hash của mật khẩu, nên bẻ khóa RC4 ticket đồng nghĩa với việc tìm ra mật khẩu tài khoản luôn.
Tấn công Kerberoasting: Mối đe dọa thực sự
Đây là phần mà các sysadmin cần đặc biệt lưu ý. Kerberoasting là kỹ thuật tấn công post-exploitation cực kỳ nguy hiểm trong môi trường AD. Quy trình tấn công diễn ra như sau:
- Thu thập SPN: Kẻ tấn công sử dụng bất kỳ tài khoản domain user nào để tìm các tài khoản dịch vụ có Service Principal Name (SPN).
- Yêu cầu Service Ticket: Kẻ tấn công yêu cầu TGS ticket cho các SPN này. Domain Controller cấp ticket mà không kiểm tra người dùng có thực sự cần truy cập dịch vụ hay không — đây là hành vi bình thường theo thiết kế của Kerberos (nghe hơi lạ, nhưng đúng là vậy).
- Bẻ khóa offline: Ticket nhận được sẽ được mã hóa bằng khóa của service account. Kẻ tấn công trích xuất ticket rồi dùng công cụ như Hashcat hoặc John the Ripper để brute-force mật khẩu.
- Chiếm quyền: Khi bẻ được mật khẩu — đặc biệt nếu tài khoản đó có đặc quyền cao — kẻ tấn công có thể lateral movement trong mạng, thậm chí lên Domain Admin.
Điểm then chốt ở đây: với mã hóa RC4, tốc độ bẻ khóa nhanh hơn hàng chục lần so với AES. Đó là lý do Microsoft quyết định loại bỏ RC4 hoàn toàn.
AES — Thuật toán thay thế
AES (Advanced Encryption Standard) hỗ trợ hai biến thể trong Kerberos:
- AES128-CTS-HMAC-SHA1-96 (mã loại 0x11)
- AES256-CTS-HMAC-SHA1-96 (mã loại 0x12)
AES sử dụng salt (kết hợp realm name và principal name) cùng 4096 vòng lặp hash, khiến việc bẻ khóa chậm hơn đáng kể. Ngoài ra, AES còn là tiêu chuẩn mã hóa được cả chính phủ Mỹ lẫn quốc tế công nhận cho dữ liệu mật — nói chung là "xịn" hơn RC4 ở mọi khía cạnh.
Lộ trình 3 giai đoạn của Microsoft (CVE-2026-20833)
Microsoft triển khai việc loại bỏ RC4 theo 3 giai đoạn rõ ràng. Hiểu rõ từng giai đoạn sẽ giúp bạn lên kế hoạch chuẩn bị phù hợp.
Giai đoạn 1: Audit Mode (13/01/2026 – tháng 4/2026)
Đây là giai đoạn hiện tại. Bản cập nhật bảo mật ngày 13/01/2026 mang đến:
- 9 sự kiện audit mới (KDCSVC Event ID 201–209) ghi vào System Event Log trên Domain Controller.
- Registry key mới
RC4DefaultDisablementPhasecho phép quản trị viên kiểm soát quá trình chuyển đổi. - Hệ thống chỉ ghi cảnh báo (warning), chưa chặn kết nối RC4 nào cả.
Mục tiêu: Giúp bạn xác định tất cả tài khoản, dịch vụ và thiết bị còn phụ thuộc RC4 trước khi enforcement bắt đầu. Đây là cơ hội vàng để rà soát — đừng bỏ lỡ.
Giai đoạn 2: AES-Only Defaults (tháng 4/2026)
Giai đoạn này bắt đầu "nghiêm túc" hơn:
- Giá trị mặc định
DefaultDomainSupportedEncTypesđược cập nhật thành 0x18 (chỉ AES128 + AES256). - Các tài khoản chưa cấu hình
msDS-SupportedEncryptionTypessẽ mặc định sử dụng AES. - RC4 fallback bị vô hiệu hóa cho các tài khoản này.
- Enforcement tự động kích hoạt trên tất cả Windows Domain Controller.
- Quản trị viên vẫn có thể rollback thủ công nếu cần.
Đây là giai đoạn nguy hiểm nhất: Nếu chưa chuẩn bị, các ứng dụng legacy và service account thiếu AES key sẽ bắt đầu gặp lỗi xác thực. Mình nhấn mạnh — lúc này không phải là lúc để "thử xem có sao không".
Giai đoạn 3: Full Enforcement (tháng 7/2026)
- Registry key
RC4DefaultDisablementPhasebị loại bỏ hoàn toàn. - Chế độ audit bị gỡ bỏ.
- RC4 bị chặn khỏi protocol path — không còn cách rollback.
- AES-SHA1 trở thành tiêu chuẩn bắt buộc.
Nói cách khác: sau mốc này, RC4 "chết" hẳn.
Tóm tắt lộ trình
| Giai đoạn | Thời gian | Hành vi | Rollback? |
|---|---|---|---|
| 1 — Audit | 01/2026 – 04/2026 | Ghi cảnh báo, không chặn | Có |
| 2 — AES Default | 04/2026 | AES mặc định, RC4 bị từ chối cho tài khoản không cấu hình | Có (thủ công) |
| 3 — Enforcement | 07/2026 | RC4 bị chặn hoàn toàn | Không |
Hiểu các sự kiện audit KDCSVC (Event ID 201–209)
Đây có lẽ là phần quan trọng nhất trong giai đoạn chuẩn bị. 9 sự kiện mới này sẽ giúp bạn xác định chính xác những gì cần xử lý.
Bảng chi tiết Event ID
| Event ID | Loại | Mô tả | Hành vi ở Phase 2 |
|---|---|---|---|
| 201 | Warning | Client chỉ hỗ trợ RC4; service account không có msDS-SupportedEncryptionTypes |
→ Chuyển thành Error 203 (bị chặn) |
| 202 | Warning | Service account thiếu AES key; không có msDS-SupportedEncryptionTypes |
→ Chuyển thành Error 204 (bị chặn) |
| 203 | Error | Client chỉ dùng RC4 bị chặn (enforcement của 201) | Xác thực thất bại |
| 204 | Error | Service thiếu AES key bị chặn (enforcement của 202) | Xác thực thất bại |
| 205 | Warning | DefaultDomainSupportedEncTypes chứa cipher không an toàn |
Tiếp tục cảnh báo (không chặn) |
| 206 | Warning | Cấu hình yêu cầu AES-SHA1 nhưng client thiếu AES | → Chuyển thành Error 208 |
| 207 | Warning | Service account thiếu AES key dù cấu hình yêu cầu AES | → Chuyển thành Error 209 |
| 208 | Error | AES enforced nhưng client không tương thích | Xác thực thất bại |
| 209 | Error | AES enforced nhưng service thiếu key | Xác thực thất bại |
Cách kiểm tra Event Log
Mở Event Viewer trên Domain Controller, vào Windows Logs → System, lọc theo Source là KDCSVC với Event ID 201–209:
# Truy vấn Event Log bằng PowerShell trên Domain Controller
Get-WinEvent -FilterHashtable @{
LogName = 'System'
Id = 201, 202, 203, 204, 205, 206, 207, 208, 209
} -MaxEvents 100 | Format-Table TimeCreated, Id, Message -Wrap
Nếu bạn thấy Event ID 201, 202, 206, hoặc 207 — đó là tín hiệu rõ ràng rằng hệ thống còn phụ thuộc RC4. Cần xử lý trước tháng 4/2026.
Phát hiện tài khoản sử dụng RC4 bằng PowerShell
Kiểm tra thuộc tính msDS-SupportedEncryptionTypes
Thuộc tính msDS-SupportedEncryptionTypes (hay gọi tắt là msds-SET) trên mỗi tài khoản AD xác định loại mã hóa được hỗ trợ. Bảng giá trị quan trọng cần nhớ:
| Giá trị (Hex) | Giá trị (Decimal) | Mã hóa được hỗ trợ | Đánh giá |
|---|---|---|---|
| 0x0 / NULL | 0 / không thiết lập | Phụ thuộc vào DefaultDomainSupportedEncTypes |
Cần kiểm tra |
| 0x4 | 4 | RC4-HMAC only | Nguy hiểm — xử lý ngay |
| 0x7 | 7 | DES + RC4 | Nguy hiểm |
| 0x18 | 24 | AES128 + AES256 | An toàn (khuyến nghị) |
| 0x1C | 28 | RC4 + AES128 + AES256 | Chấp nhận được (AES ưu tiên) |
Script tìm tất cả tài khoản chỉ dùng RC4
# Tìm tất cả tài khoản user có msDS-SupportedEncryptionTypes chỉ hỗ trợ RC4
Import-Module ActiveDirectory
# Tìm user accounts chỉ dùng RC4 (giá trị 4 = RC4 only)
$rc4OnlyUsers = Get-ADUser -Filter * -Properties "msDS-SupportedEncryptionTypes", "PasswordLastSet", "Enabled" |
Where-Object {
$_."msDS-SupportedEncryptionTypes" -eq 4 -or
$_."msDS-SupportedEncryptionTypes" -eq 7
} |
Select-Object SamAccountName, Enabled, PasswordLastSet,
@{N="EncTypes";E={$_."msDS-SupportedEncryptionTypes"}}
Write-Host "=== User accounts chi dung RC4 ===" -ForegroundColor Red
$rc4OnlyUsers | Format-Table -AutoSize
# Tìm computer accounts
$rc4Computers = Get-ADComputer -Filter * -Properties "msDS-SupportedEncryptionTypes" |
Where-Object {
$_."msDS-SupportedEncryptionTypes" -eq 4 -or
$_."msDS-SupportedEncryptionTypes" -eq 7
} |
Select-Object Name, @{N="EncTypes";E={$_."msDS-SupportedEncryptionTypes"}}
Write-Host "`n=== Computer accounts chi dung RC4 ===" -ForegroundColor Red
$rc4Computers | Format-Table -AutoSize
Script tìm tài khoản thiếu AES key
Đây là một "bẫy" mà nhiều admin hay gặp: tài khoản có thể hỗ trợ AES theo cấu hình, nhưng thiếu AES key thực tế vì mật khẩu chưa bao giờ được reset sau khi AES được bật. Tài khoản trông có vẻ OK nhưng sẽ fail ngay khi RC4 bị chặn.
# Tìm service accounts có SPN nhưng thiếu AES key (cần reset password)
$serviceAccounts = Get-ADUser -Filter 'ServicePrincipalName -like "*"' `
-Properties ServicePrincipalName, "msDS-SupportedEncryptionTypes", PasswordLastSet |
Select-Object SamAccountName,
@{N="SPN";E={$_.ServicePrincipalName -join "; "}},
@{N="EncTypes";E={$_."msDS-SupportedEncryptionTypes"}},
PasswordLastSet
Write-Host "=== Service accounts co SPN ===" -ForegroundColor Yellow
$serviceAccounts | Format-Table -AutoSize
# Kiem tra AES key co ton tai khong
# Neu PasswordLastSet truoc 2008 hoac khong thay doi tu lau,
# rat co the account thieu AES key
$riskyAccounts = $serviceAccounts | Where-Object {
$_.PasswordLastSet -lt (Get-Date "2008-01-01") -or
$_.EncTypes -eq $null -or
$_.EncTypes -eq 4
}
Write-Host "`n=== Service accounts CAN RESET PASSWORD ===" -ForegroundColor Red
$riskyAccounts | Format-Table -AutoSize
Sử dụng script chính thức từ Microsoft
Microsoft cung cấp hai script PowerShell chính thức trên GitHub repository Kerberos-Crypto:
- List-AccountKeys.ps1: Truy vấn Security Event Log để liệt kê các khóa mã hóa có sẵn cho từng tài khoản.
- Get-KerbEncryptionUsage.ps1: Xác định loại mã hóa Kerberos đang được sử dụng, kèm tùy chọn lọc theo thuật toán.
# Tai script tu Microsoft GitHub
# https://github.com/microsoft/Kerberos-Crypto
# Liet ke encryption keys cua cac accounts
.\List-AccountKeys.ps1
# Kiem tra Kerberos encryption usage
.\Get-KerbEncryptionUsage.ps1
# Loc chi hien thi RC4 usage
.\Get-KerbEncryptionUsage.ps1 -Encryption RC4
Hướng dẫn di chuyển từ RC4 sang AES từng bước
Bước 1: Cập nhật tất cả Domain Controller
Đầu tiên và quan trọng nhất — cài bản cập nhật bảo mật Windows phát hành ngày 13/01/2026 (hoặc sau đó) trên tất cả Domain Controller trong domain. Không có ngoại lệ.
# Kiem tra phien ban OS Build tren Domain Controller
systeminfo | findstr /B /C:"OS Version"
# Hoac bang PowerShell
Get-HotFix | Sort-Object InstalledOn -Descending | Select-Object -First 5
Lưu ý quan trọng: Nếu có DC nào chưa được cập nhật, các sự kiện KDCSVC sẽ xuất hiện không chính xác trên toàn forest. Phải đảm bảo 100% DC đã được vá — thiếu một cái cũng không được.
Bước 2: Bật Audit Mode và giám sát
Thiết lập registry key trên tất cả Domain Controller:
# Bat Audit Mode (Phase 1) tren Domain Controller
$path = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\Kerberos\Parameters'
if (-not (Test-Path $path)) {
New-Item -Path $path -Force | Out-Null
}
New-ItemProperty -Path $path -Name 'RC4DefaultDisablementPhase' `
-PropertyType DWord -Value 1 -Force | Out-Null
Write-Host "Da bat Audit Mode. Can restart Domain Controller." -ForegroundColor Green
Write-Host "CANH BAO: Hay restart DC ngoai gio lam viec!" -ForegroundColor Yellow
Sau khi restart, hãy giám sát Event Log trong ít nhất 2–4 tuần. Lý do là vì một số dịch vụ hoặc tài khoản có thể chỉ xác thực định kỳ (hàng tuần, hàng tháng), nên cần đủ thời gian để "bắt" hết.
Bước 3: Xử lý từng loại tài khoản
User accounts thiếu AES key
Với các tài khoản tạo từ trước khi AES được hỗ trợ (trước Windows Server 2003) và chưa bao giờ đổi mật khẩu:
# Reset password cho user account de tao AES key
# QUAN TRONG: Thong bao nguoi dung truoc khi thuc hien!
Set-ADAccountPassword -Identity "ten_tai_khoan" `
-Reset -NewPassword (ConvertTo-SecureString "MatKhauMoiManh@2026!" -AsPlainText -Force)
# Bat buoc nguoi dung doi mat khau lan dang nhap ke tiep
Set-ADUser -Identity "ten_tai_khoan" -ChangePasswordAtLogon $true
Service accounts
Service account cần được xử lý cẩn thận hơn nhiều — thay đổi mật khẩu sai cách có thể làm sập dịch vụ đang chạy. Quy trình khuyến nghị:
- Xác định tất cả dịch vụ sử dụng service account đó.
- Lên lịch maintenance window.
- Cập nhật
msDS-SupportedEncryptionTypesthành 0x18 (AES only) hoặc 0x1C (AES + RC4 tạm thời). - Reset mật khẩu service account.
- Cập nhật mật khẩu mới trên tất cả dịch vụ liên quan.
- Kiểm tra dịch vụ hoạt động bình thường.
# Cap nhat msDS-SupportedEncryptionTypes cho service account
# Gia tri 24 (0x18) = AES128 + AES256 (khuyen nghi)
# Gia tri 28 (0x1C) = RC4 + AES128 + AES256 (tam thoi, giai doan chuyen tiep)
Set-ADUser -Identity "svc_sqlserver" `
-Replace @{"msDS-SupportedEncryptionTypes" = 24}
# Xac nhan thay doi
Get-ADUser -Identity "svc_sqlserver" -Properties "msDS-SupportedEncryptionTypes" |
Select-Object SamAccountName, "msDS-SupportedEncryptionTypes"
Computer accounts
# Cap nhat encryption type cho computer account
Set-ADComputer -Identity "SERVER01" `
-Replace @{"msDS-SupportedEncryptionTypes" = 24}
# Doi voi nhieu may tinh cung luc
$computers = Get-ADComputer -Filter 'OperatingSystem -like "Windows Server*"' `
-Properties "msDS-SupportedEncryptionTypes" |
Where-Object { $_."msDS-SupportedEncryptionTypes" -eq 4 -or $_."msDS-SupportedEncryptionTypes" -eq $null }
foreach ($comp in $computers) {
Set-ADComputer -Identity $comp.DistinguishedName `
-Replace @{"msDS-SupportedEncryptionTypes" = 28}
Write-Host "Da cap nhat: $($comp.Name)" -ForegroundColor Green
}
Bước 4: Cập nhật ứng dụng legacy
Phần này hay bị bỏ quên. Một số ứng dụng cũ (đặc biệt ứng dụng Java) có cấu hình Kerberos riêng trong file krb5.conf hoặc krb5.ini. Cần kiểm tra và cập nhật:
Cấu hình cũ (không an toàn):
[libdefaults]
default_tkt_enctypes = rc4-hmac
default_tgs_enctypes = rc4-hmac
permitted_enctypes = rc4-hmac
Cấu hình mới (an toàn):
[libdefaults]
default_tkt_enctypes = aes256-cts aes128-cts
default_tgs_enctypes = aes256-cts aes128-cts
permitted_enctypes = aes256-cts aes128-cts
Bước 5: Cập nhật DefaultDomainSupportedEncTypes
Trên tất cả Domain Controller, thiết lập giá trị mặc định:
# Thiet lap DefaultDomainSupportedEncTypes tren Domain Controller
# Gia tri 0x18 (24) = chi AES128 + AES256
# Gia tri 0x38 (56) = AES128 + AES256 + AES-SHA256 variants
$regPath = "HKLM:\System\CurrentControlSet\services\KDC"
Set-ItemProperty -Path $regPath -Name "DefaultDomainSupportedEncTypes" `
-Value 0x18 -Type DWord
Write-Host "Da thiet lap DefaultDomainSupportedEncTypes = 0x18 (AES only)" -ForegroundColor Green
Write-Host "Can restart Domain Controller de ap dung." -ForegroundColor Yellow
Bước 6: Rekey tài khoản KRBTGT
Tài khoản KRBTGT là tài khoản đặc biệt dùng để mã hóa tất cả TGT trong domain. Đây là bước không được bỏ qua:
# Kiem tra encryption types cua KRBTGT
Get-ADUser -Identity "krbtgt" -Properties "msDS-SupportedEncryptionTypes", "PasswordLastSet" |
Select-Object SamAccountName, "msDS-SupportedEncryptionTypes", PasswordLastSet
# Neu PasswordLastSet qua cu, can reset (CHU Y: reset KRBTGT can thuc hien 2 lan,
# cach nhau it nhat 10 gio de dam bao TGT cu het han)
# CANH BAO: Day la thao tac co rui ro cao - chi thuc hien khi da hieu ro tac dong!
Mình muốn nhấn mạnh: reset KRBTGT là thao tác nhạy cảm. Nếu bạn chưa từng làm, hãy tham khảo tài liệu chính thức của Microsoft và thực hiện ngoài giờ làm việc.
Bước 7: Thử nghiệm Enforcement Mode
Khi đã xử lý hết các cảnh báo, bạn có thể kích hoạt enforcement để mô phỏng Phase 2:
# CANH BAO: Chi thuc hien sau khi da xu ly het Event 201-209!
# Bat Enforcement Mode (mo phong Phase 2)
$path = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\Kerberos\Parameters'
Set-ItemProperty -Path $path -Name 'RC4DefaultDisablementPhase' -Value 2 -Type DWord
Write-Host "Da bat Enforcement Mode. Restart DC va giam sat loi xac thuc." -ForegroundColor Red
Nên thử trên một DC thử nghiệm trước, rồi mới triển khai rộng. Tin mình đi, bạn không muốn phải rollback trên production vào lúc 2 giờ sáng.
Xử lý sự cố thường gặp cho IT Helpdesk
Sự cố 1: Người dùng không đăng nhập được sau khi bật AES enforcement
Triệu chứng: Người dùng nhận thông báo "The encryption type requested is not supported by the KDC" hoặc đơn giản là "Authentication failed".
Nguyên nhân: Tài khoản người dùng hoặc máy tính thiếu AES key.
Giải pháp:
- Kiểm tra Event ID 4769 trên KDC — tìm Failure Code 0xE (KDC_ERR_ETYPE_NOTSUPP).
- Kiểm tra
msDS-SupportedEncryptionTypescủa tài khoản bị ảnh hưởng. - Reset mật khẩu để tạo AES key mới.
- Nếu là computer account, chạy
nltest /sc_reset:TenDomainhoặc rejoin domain.
# Kiem tra loi xac thuc Kerberos tren KDC
Get-WinEvent -FilterHashtable @{
LogName = 'Security'
Id = 4769
} -MaxEvents 50 | Where-Object {
$_.Message -match "0xE|0xe"
} | Format-Table TimeCreated, Message -Wrap
Sự cố 2: Ứng dụng nội bộ ngừng hoạt động
Triệu chứng: Ứng dụng web nội bộ, ERP, hoặc phần mềm kế toán báo lỗi kết nối database hoặc xác thực.
Nguyên nhân: Service account chỉ hỗ trợ RC4, hoặc ứng dụng hardcode RC4 trong file cấu hình.
Giải pháp:
- Xác định service account mà ứng dụng sử dụng.
- Kiểm tra file cấu hình (
krb5.conf,krb5.ini, hoặc registry). - Cập nhật
msDS-SupportedEncryptionTypescủa service account. - Reset mật khẩu service account và cập nhật trong ứng dụng.
- Restart dịch vụ và kiểm tra.
Sự cố 3: Chia sẻ file SMB bị lỗi
Triệu chứng: Người dùng không truy cập được thư mục chia sẻ, nhận lỗi mạng khi mở file server.
Nguyên nhân: Computer account của file server có msDS-SupportedEncryptionTypes = 4 (chỉ RC4).
Giải pháp:
# Kiem tra va cap nhat computer account cua file server
$server = Get-ADComputer -Identity "FILESERVER01" -Properties "msDS-SupportedEncryptionTypes"
Write-Host "Encryption Types hien tai: $($server.'msDS-SupportedEncryptionTypes')"
# Cap nhat sang AES
Set-ADComputer -Identity "FILESERVER01" -Replace @{"msDS-SupportedEncryptionTypes" = 28}
# Restart may hoac chay lenh sau tren file server
klist purge
nltest /sc_reset:TenDomain
Sự cố 4: Remote Desktop / WMI bị từ chối
Triệu chứng: Kết nối Remote Desktop hoặc PowerShell Remoting báo lỗi "WinRM cannot process the request" với mã 0x80090342.
Giải pháp:
- Kiểm tra bằng
klist get HOST/tenserver.domain.comđể xác nhận lỗi encryption type. - Cập nhật
msDS-SupportedEncryptionTypescủa computer account máy đích. - Nếu cần giải pháp tạm thời, thêm RC4 vào danh sách hỗ trợ (giá trị 0x1C = 28).
# Xac nhan loi tren may client
klist get HOST/server01.contoso.com
# Output mau khi bi loi:
# Error calling API LsaCallAuthenticationPackage: 0x80090342
# klist failed with 0xc00002fd: The encryption type requested is not supported by the KDC.
Sự cố 5: Thiết bị không hỗ trợ AES (legacy devices)
Triệu chứng: Máy in mạng, thiết bị IoT, hoặc server chạy Windows Server 2003 không thể xác thực.
Đây là sự cố "đau đầu" nhất vì đôi khi không có giải pháp lý tưởng:
- Thiết bị phần cứng: Kiểm tra firmware update từ nhà sản xuất. Nếu không hỗ trợ AES, cần lên kế hoạch thay thế.
- Windows Server 2003: Bắt buộc phải nâng cấp — phiên bản này hết hỗ trợ từ lâu rồi và không hỗ trợ AES.
- Giải pháp tạm: Thiết lập
msDS-SupportedEncryptionTypesrõ ràng cho tài khoản liên quan (giá trị 0x4). Tuy nhiên, sau Phase 3 (07/2026), cách này sẽ không còn hoạt động. - Microsoft cung cấp email [email protected] để các tổ chức báo cáo thiết bị bên thứ ba không hỗ trợ AES.
Cấu hình Group Policy cho toàn domain
Để áp dụng chính sách mã hóa Kerberos cho toàn bộ domain, dùng Group Policy:
- Mở Group Policy Management Console (gpmc.msc).
- Tạo hoặc chỉnh sửa GPO áp dụng cho OU chứa Domain Controller.
- Đi tới: Computer Configuration → Policies → Windows Settings → Security Settings → Local Policies → Security Options.
- Tìm policy: Network security: Configure encryption types allowed for Kerberos.
- Chọn AES128_HMAC_SHA1 và AES256_HMAC_SHA1.
- Bỏ chọn RC4_HMAC_MD5 (trừ khi vẫn cần hỗ trợ legacy trong giai đoạn chuyển tiếp).
- Áp dụng GPO và chạy
gpupdate /forcetrên các Domain Controller.
# Kiem tra GPO da duoc ap dung chua
gpresult /r /scope:computer | findstr /i "kerberos"
# Hoac chi tiet hon
gpresult /h C:\Temp\GPReport.html
# Mo file HTML de xem bao cao day du
Checklist chuẩn bị trước deadline tháng 7/2026
Mình tổng hợp lại thành checklist để bạn dễ theo dõi tiến độ. In ra dán lên bàn làm việc cũng được!
Giai đoạn ngay lập tức (tháng 2–3/2026)
- ☐ Cập nhật tất cả Domain Controller với bản vá 01/2026 trở lên
- ☐ Bật Audit Mode (
RC4DefaultDisablementPhase= 1) - ☐ Chạy script phát hiện RC4 usage trên tất cả DC
- ☐ Lập danh sách tất cả tài khoản chỉ dùng RC4
- ☐ Xác định tất cả ứng dụng legacy phụ thuộc RC4
- ☐ Bật Kerberos audit policy:
Kerberos Authentication ServicevàKerberos Service Ticket Operations
Giai đoạn xử lý (tháng 3–4/2026)
- ☐ Cập nhật
msDS-SupportedEncryptionTypes= 0x18 cho tất cả service accounts - ☐ Reset mật khẩu service accounts để tạo AES key
- ☐ Cập nhật mật khẩu mới trong tất cả dịch vụ liên quan
- ☐ Cập nhật file cấu hình ứng dụng (
krb5.conf) sang AES - ☐ Cập nhật computer accounts cần thiết
- ☐ Yêu cầu người dùng có tài khoản cũ đổi mật khẩu
- ☐ Thiết lập
DefaultDomainSupportedEncTypes= 0x18
Giai đoạn kiểm tra (tháng 4–5/2026)
- ☐ Giám sát Event ID 201–209 — mục tiêu: không còn warning nào
- ☐ Bật Enforcement Mode (
RC4DefaultDisablementPhase= 2) trên DC thử nghiệm - ☐ Kiểm tra tất cả ứng dụng quan trọng hoạt động bình thường
- ☐ Kiểm tra SMB, Remote Desktop, WMI, LDAP
- ☐ Kiểm tra đăng nhập workstation và laptop
Giai đoạn hoàn tất (tháng 5–6/2026)
- ☐ Bật Enforcement Mode trên tất cả Domain Controller
- ☐ Rekey tài khoản KRBTGT (2 lần, cách nhau ≥ 10 giờ)
- ☐ Xác nhận không có Event ID 203, 204, 208, 209
- ☐ Lập kế hoạch xử lý cho thiết bị legacy không thể nâng cấp
- ☐ Liên hệ [email protected] nếu có thiết bị bên thứ ba không hỗ trợ AES
- ☐ Tài liệu hóa toàn bộ thay đổi và chia sẻ với đội ngũ Helpdesk
Mẹo cho đội ngũ IT Helpdesk
Tạo Knowledge Base nội bộ
Số lượng ticket liên quan đến xác thực có thể tăng đột biến trong giai đoạn chuyển đổi. Chuẩn bị sớm sẽ giúp bạn không bị "ngập":
- Tạo FAQ nội bộ giải thích lý do thay đổi và cách xử lý cơ bản.
- Tạo template ticket cho các sự cố phổ biến (đăng nhập thất bại, ứng dụng lỗi, file share không truy cập được).
- Thiết lập escalation path rõ ràng: Tier 1 xử lý reset password và kiểm tra cơ bản; Tier 2 cập nhật msDS-SET; Tier 3 (hoặc AD admin) xử lý Group Policy và Domain Controller.
Câu lệnh nhanh cho Helpdesk
# === CAC LENH KIEM TRA NHANH CHO HELPDESK ===
# 1. Kiem tra encryption type cua user account
Get-ADUser -Identity "ten_user" -Properties "msDS-SupportedEncryptionTypes" |
Select-Object SamAccountName, "msDS-SupportedEncryptionTypes"
# 2. Kiem tra Kerberos ticket hien tai tren may client
klist
# 3. Xoa Kerberos ticket cache (buoc nguoi dung xac thuc lai)
klist purge
# 4. Kiem tra ket noi den dich vu cu the
klist get HOST/server01.contoso.com
# 5. Kiem tra nhanh encryption type cua computer account
Get-ADComputer -Identity "TEN_MAY" -Properties "msDS-SupportedEncryptionTypes" |
Select-Object Name, "msDS-SupportedEncryptionTypes"
# 6. Reset secure channel giua may client va domain
Test-ComputerSecureChannel -Repair -Verbose
Giao tiếp với người dùng cuối
Khi người dùng gọi Helpdesk vì không đăng nhập được, hãy nhớ 4 bước:
- Trấn an: "Đây là thay đổi bảo mật bắt buộc của Microsoft, không phải lỗi từ phía bạn."
- Xác minh: Kiểm tra Event Log trên DC để xác nhận nguyên nhân liên quan đến RC4/AES.
- Xử lý: Reset mật khẩu (nếu cần) hoặc xóa Kerberos ticket cache bằng
klist purge. - Theo dõi: Đảm bảo người dùng đăng nhập thành công sau khi xử lý.
Đơn giản vậy thôi, nhưng cách giao tiếp chuyên nghiệp sẽ giúp giảm đáng kể sự lo lắng của người dùng.
Kết luận
Việc Microsoft loại bỏ RC4 khỏi Kerberos không phải điều bất ngờ — đây là bước tiến tất yếu sau nhiều năm cảnh báo. Tuy nhiên, tác động thực tế lên môi trường Active Directory là rất lớn, đặc biệt với các tổ chức có hệ thống legacy phức tạp.
Tin tốt là Microsoft đã thiết kế lộ trình 3 giai đoạn với đầy đủ công cụ audit. Điều quan trọng nhất? Bắt đầu ngay từ bây giờ:
- Cập nhật tất cả Domain Controller.
- Giám sát các sự kiện KDCSVC 201–209.
- Xử lý từng tài khoản và ứng dụng phụ thuộc RC4.
- Kiểm tra bằng Enforcement Mode trước deadline.
- Trang bị kiến thức cho đội ngũ Helpdesk.
Tháng 7/2026 sẽ đến nhanh hơn bạn nghĩ. Đừng để đến lúc đó mới phát hiện rằng 50 service account trong tổ chức vẫn đang chạy RC4. Hành động ngay hôm nay — bạn (và đội Helpdesk) sẽ cảm ơn chính mình vì điều đó.