LAB 08 AZ-500 ~35 phút Chương 02 Conditional Access

Block Legacy Authentication

Chặn hoàn toàn legacy authentication protocols (SMTP AUTH, IMAP, POP3, Basic Auth, Exchange ActiveSync cũ) — các giao thức không hỗ trợ MFA và là vector tấn công phổ biến nhất trong credential spray attacks.

🎯 Mục Tiêu Lab

Hiểu legacy authentication là gì và tại sao phải chặn

Nhận diện legacy auth trong sign-in logs trước khi chặn

Tạo CA policy block tất cả legacy auth client apps

Loại trừ break-glass account và service accounts cần legacy auth

Xác minh policy hoạt động qua sign-in log analysis

Kiểm tra workload/service account nào đang dùng legacy auth

📋 Chuẩn Bị

Yêu cầu:
  • Quyền Conditional Access Administrator hoặc Global Admin
  • Entra ID P1/P2 license
  • Break-glass account đã có sẵn
  • Đã đọc sign-in log 7-14 ngày để xác định ai đang dùng legacy auth
Legacy auth protocols cần chặn:
  • SMTP AUTH — dùng để gửi mail (không hỗ trợ MFA)
  • IMAP4 / POP3 — mail clients cũ
  • Exchange ActiveSync (EAS) legacy — phone cũ
  • Basic Authentication — Office 2013 trở về trước
  • Exchange Web Services, MAPI over HTTP cũ

🏗️ Kịch Bản

Microsoft Security Report cho thấy hơn 99% credential spray attacks và password spray attacks nhắm vào legacy authentication protocols — vì chúng không hỗ trợ MFA, kẻ tấn công chỉ cần username + password là đủ. HoaTranLab Corp đã bật MFA nhưng một số user vẫn dùng Outlook 2010 và mail app cũ. Bạn cần: (1) kiểm tra legacy auth usage trong log 14 ngày qua, (2) thông báo cho các user liên quan migration sang modern auth, (3) chặn toàn bộ legacy auth bằng CA policy.

🧪 Các Bước Thực Hiện

1

Khảo Sát Legacy Auth Usage trong Sign-in Logs

Trước khi chặn, phải biết ai đang dùng legacy auth để tránh gây downtime bất ngờ.

Cách 1 — Portal
  1. 1.1Entra ID → Monitoring → Sign-in logs → Add filter
  2. 1.2Filter: Client app → chọn: Exchange ActiveSync, IMAP, MAPI, POP3, SMTP, Other clients
  3. 1.3Date range: Last 14 days → Export kết quả ra CSV để phân tích
  4. 1.4Ghi chú user nào đang dùng → thông báo trước khi block
Cách 2 — Microsoft Graph PowerShell
Microsoft Graph PowerShell
Connect-MgGraph -Scopes "AuditLog.Read.All"

# Legacy auth client app types
$legacyClientApps = @(
    "exchangeActiveSync", "imap", "pop3", "smtp",
    "mapi", "other"
)

# Tìm sign-ins dùng legacy auth trong 14 ngày qua
$since = (Get-Date).AddDays(-14).ToString("yyyy-MM-ddTHH:mm:ssZ")
$results = @()

foreach ($app in $legacyClientApps) {
    $signIns = Get-MgAuditLogSignIn `
      -Filter "clientAppUsed eq '$app' and createdDateTime ge $since" `
      -Top 50 |
      Select-Object UserPrincipalName, ClientAppUsed,
        AppDisplayName, CreatedDateTime,
        @{N="OS";E={$_.DeviceDetail.OperatingSystem}}
    $results += $signIns
}

# Tổng hợp: ai đang dùng legacy auth
$results | Group-Object UserPrincipalName |
  Select-Object Name, Count, @{N="Apps";E={($_.Group.ClientAppUsed | Sort-Object -Unique) -join ", "}} |
  Sort-Object Count -Descending |
  Format-Table -AutoSize
Quan trọng: Nếu có user/service account đang dùng legacy auth cho việc quan trọng (ví dụ: printer scan-to-email qua SMTP AUTH, monitoring tool dùng IMAP) — phải migrate họ sang modern auth trước khi block, hoặc exclude tạm thời.
2

Tạo CA Policy — Block All Legacy Authentication

Cách 1 — Portal (chính)
  1. 2.1Conditional Access → New policy
  2. 2.2Name: CA-AZ500-BlockLegacyAuth
  3. 2.3Users: Include → All users → Exclude → break-glass account (và service accounts cần legacy auth nếu có)
  4. 2.4Target resources: All cloud apps
  5. 2.5Conditions → Client apps: tick tất cả legacy: Exchange ActiveSync clients, Other clients (bao gồm IMAP, POP3, SMTP AUTH, MAPI, EWS)
  6. 2.6KHÔNG tick "Browser" và "Mobile apps and desktop clients" (đây là modern auth — không nên block)
  7. 2.7Grant: Block access → Enable policy: Report-only → Save
Cách 2 — Microsoft Graph PowerShell
Microsoft Graph PowerShell
Connect-MgGraph -Scopes "Policy.ReadWrite.ConditionalAccess"

$bgId = (Get-MgUser -Filter "UserPrincipalName eq '[email protected]'").Id

$params = @{
    displayName = "CA-AZ500-BlockLegacyAuth"
    state = "enabledForReportingButNotEnforced"   # Report-only mode
    conditions = @{
        users = @{
            includeUsers = @("All")
            excludeUsers = @($bgId)
        }
        applications = @{
            includeApplications = @("All")
        }
        clientAppTypes = @(
            "exchangeActiveSync",   # EAS legacy
            "other"                 # IMAP, POP3, SMTP AUTH, MAPI, EWS, Basic Auth
        )
        # Modern auth (browser, mobileAppsAndDesktopClients) NOT included = not blocked
    }
    grantControls = @{
        operator        = "OR"
        builtInControls = @("block")
    }
}
New-MgIdentityConditionalAccessPolicy -BodyParameter $params
Write-Host "CA-AZ500-BlockLegacyAuth created in Report-only mode"
Key insight: Trong CA policy, clientAppTypes chỉ cần chọn exchangeActiveSyncother là đủ để block tất cả legacy auth. Không chọn browsermobileAppsAndDesktopClients vì đó là modern auth (MSAL, OAuth 2.0).
3

Bật Policy On và Xác Minh Sign-in Log

Cách 1 — Portal
  1. 3.1Sau khi Report-only log xác nhận đúng (không có service account quan trọng bị ảnh hưởng) → bật On
  2. 3.2Sign-in logs → Filter: Client app = Exchange ActiveSync / Other clients → xem status = Failure, error 53003
  3. 3.3Xác nhận: user dùng browser/Outlook 365 (modern auth) → KHÔNG bị ảnh hưởng
Cách 2 — Microsoft Graph PowerShell
Microsoft Graph PowerShell
# Bật policy On
$policyId = (Get-MgIdentityConditionalAccessPolicy `
  -Filter "displayName eq 'CA-AZ500-BlockLegacyAuth'").Id

Update-MgIdentityConditionalAccessPolicy `
  -ConditionalAccessPolicyId $policyId `
  -State "enabled"

# Kiểm tra sign-in log - legacy auth bị block
$since = (Get-Date).AddHours(-2).ToString("yyyy-MM-ddTHH:mm:ssZ")
Get-MgAuditLogSignIn `
  -Filter "createdDateTime ge $since and clientAppUsed ne 'Browser' and clientAppUsed ne 'Mobile Apps and Desktop Clients'" `
  -Top 20 |
  Select-Object UserPrincipalName, ClientAppUsed,
    @{N="Status";E={if($_.Status.ErrorCode -eq 0){"Success"}else{"Blocked ($($_.Status.ErrorCode))"}}} |
  Format-Table -AutoSize
Expected Output — Sign-in log sau khi block
UserPrincipalName                  ClientAppUsed         Status
-----------------                  -------------         ------
[email protected]         Exchange ActiveSync   Blocked (53003)
[email protected]    IMAP4                 Blocked (53003)
[email protected]     POP3                  Blocked (53003)
# Browser và modern Outlook: không xuất hiện vì không bị block

📊 Kết Quả Đầu Ra

Legacy auth usage được kiểm kê

Danh sách user dùng legacy auth trong 14 ngày qua đã được xuất và thông báo

CA Policy State = On

CA-AZ500-BlockLegacyAuth enabled, blocking EAS + Other clients

Legacy auth bị chặn

Sign-in log: Error 53003 cho IMAP, POP3, EAS, Other clients

Modern auth không bị ảnh hưởng

Browser và modern Outlook tiếp tục hoạt động bình thường

🧹 Dọn Dẹp

Policy này nên giữ On vĩnh viễn trong production. Chỉ tắt trong lab nếu cần thử nghiệm legacy auth:

Microsoft Graph PowerShell
# Chỉ tắt nếu thực sự cần cho mục đích lab
Update-MgIdentityConditionalAccessPolicy `
  -ConditionalAccessPolicyId $policyId `
  -State "disabled"
# Khuyến nghị: giữ Report-only thay vì disable hoàn toàn

❓ Câu Hỏi Ôn Tập

1. Tại sao legacy authentication nguy hiểm hơn modern authentication về mặt bảo mật?

Gợi ý: Legacy auth không hỗ trợ MFA, không hỗ trợ CA policy enforcement, dùng Basic Auth (username/password plaintext) — kẻ tấn công có thể bypass MFA hoàn toàn

2. Khi tạo CA policy block legacy auth, tại sao chỉ chọn "Exchange ActiveSync" và "Other clients" trong Client apps?

Gợi ý: "Browser" và "Mobile apps and desktop clients" đại diện cho modern auth (OAuth 2.0/OIDC) — block chúng sẽ chặn cả user dùng browser và Outlook 365 modern

3. Trước khi block legacy auth, bước chuẩn bị quan trọng nhất là gì?

Gợi ý: Kiểm tra sign-in log 14-30 ngày để phát hiện user/service account đang dùng legacy auth, thông báo và migration họ sang modern auth trước

4. Printer scan-to-email dùng SMTP AUTH bị block sau khi bật policy — phải xử lý thế nào?

Gợi ý: Tạo service account riêng cho printer, exclude account đó khỏi policy. Hoặc tốt hơn: migrate printer sang OAuth 2.0 client credentials flow (M365 hỗ trợ từ 2022)

Lab 07: Named Location Thư viện Labs Lab 09: Device Compliance
Zalo