Passwordless và Phishing-resistant MFA

Phishing thời nay không cần lừa bạn tiết lộ mã MFA nữa. Bộ công cụ adversary-in-the-middle (AiTM) dựng một trang trông y hệt trang đăng nhập Microsoft, đứng giữa bạn và Microsoft. Bạn nhập mật khẩu, bấm “Approve” trên Authenticator, mọi thứ diễn ra đúng như bình thường, và kẻ gian nhận được session cookie đã qua MFA. Push notification, mã OTP, SMS đều bị vượt qua theo cách này.

Phishing-resistant MFA (passkey, FIDO2 security key, Windows Hello for Business) chống được AiTM vì chữ ký xác thực gắn với tên miền của trang đăng nhập: trang giả ở tên miền khác thì passkey đơn giản là không phản hồi. Ở bài trước, CA003 đã đòi phishing-resistant MFA cho admin. Bài này đưa cùng mức bảo vệ tới ban giám đốc và kế toán, và tiến tới đăng nhập không cần mật khẩu.

Bài này mình sẽ hướng dẫn bạn bật passkey trong Authentication methods policy, cấp Temporary Access Pass để đăng ký an toàn, đăng ký passkey trong Microsoft Authenticator và FIDO2 key, tạo Conditional Access đòi phishing-resistant MFA cho nhóm rủi ro cao, và kiểm tra bằng sign-in log.

Điều kiện cần

Yêu cầuChi tiết
LicenseMicrosoft 365 Business Premium (Entra ID P1: Conditional Access, authentication strength, Temporary Access Pass)
QuyềnAuthentication Policy Administrator (bật phương thức); Authentication Administrator / Privileged Authentication Administrator (cấp TAP cho admin); Conditional Access Administrator
Thiết bịĐiện thoại iOS 17+ hoặc Android 14+ có Microsoft Authenticator bản mới; hoặc FIDO2 security key (USB-A/USB-C/NFC)

Phương thức nào chống được phishing

Phương thứcChống AiTMGhi chú cho SMB
SMS, cuộc gọiKhôngChỉ dùng làm phương án dự phòng, nên tắt dần
Authenticator push / OTPKhôngĐã có number matching nhưng vẫn bị AiTM
Passkey trong Microsoft AuthenticatorCóKhông tốn thêm tiền, dùng điện thoại sẵn có
FIDO2 security keyCóKhoảng 500.000-1.500.000 đồng/khóa; tốt cho admin, break-glass
Windows Hello for BusinessCóGắn với máy Entra join

Bước 1: Bật passkey trong Authentication methods policy

Mục đích là cho phép nhóm thử nghiệm đăng ký passkey.

  1. Entra admin center → Protection → Authentication methods → Policies → Passkey (FIDO2)
  2. Enable: On → Target: nhóm AUTH-Passkey-Pilot
  3. Tab Configure:
    • Allow self-service set up: Yes
    • Enforce attestation: Yes nếu chỉ cho phép FIDO2 key do công ty cấp; với passkey trong Authenticator, giữ cấu hình theo hướng dẫn hiện tại của Microsoft
    • Enforce key restrictions: tùy chọn, giới hạn theo AAGUID của model khóa công ty mua
  4. Save

Lưu ý: Kiểm tra Authentication methods → Migration đã hoàn tất (tenant đã chuyển hẳn sang Authentication methods policy, không còn dùng cài đặt MFA và SSPR cũ). Tenant cũ còn ở trạng thái “migration in progress” có thể khiến phương thức hiện không nhất quán.

Bước 2: Bật và cấp Temporary Access Pass

Mục đích là user đăng ký passkey mà không cần dùng phương thức yếu hơn để chứng minh danh tính, đặc biệt với người mới hoặc người mất điện thoại.

  1. Authentication methods → Policies → Temporary Access Pass → Enable, target AUTH-Passkey-Pilot
  2. Configure: Minimum lifetime: 1 giờ; Default lifetime: 1 giờ; One-time: Yes
  3. Cấp TAP cho từng user khi họ ngồi trước mặt IT (hoặc gọi video xác minh mặt):
Connect-MgGraph -Scopes "UserAuthenticationMethod.ReadWrite.All"

# TAP dùng 1 lần, hiệu lực 60 phút
$tap = New-MgUserAuthenticationTemporaryAccessPassMethod -UserId "giamdoc@khongkho.com" `
    -BodyParameter @{ lifetimeInMinutes = 60; isUsableOnce = $true }
$tap.TemporaryAccessPass

Bước 3: Đăng ký passkey trong Microsoft Authenticator

Mục đích là mỗi người trong nhóm thử nghiệm có ít nhất một passkey.

  1. User mở mysignins.microsoft.com/security-info trên máy tính → đăng nhập (dùng TAP nếu được cấp)
  2. + Add sign-in method → Passkey in Microsoft Authenticator
  3. Làm theo hướng dẫn: mở Authenticator trên điện thoại, quét mã QR, xác nhận bằng Face ID / vân tay. Điện thoại cần bật Bluetooth để xác thực khoảng cách với máy tính
  4. Đặt tên passkey, ví dụ iPhone ca nhan

Với FIDO2 security key: + Add sign-in method → Security key → USB device → cắm khóa → đặt PIN → chạm khóa.

Kết quả kỳ vọng: trang Security info liệt kê Passkey in Microsoft Authenticator hoặc Security key.

Từ thực tế: Lỗi hay gặp nhất khi đăng ký passkey trong Authenticator là Bluetooth tắt trên máy tính hoặc điện thoại, và máy tính để bàn không có Bluetooth. Chuẩn bị sẵn một USB Bluetooth cho buổi đăng ký, hoặc cho user đăng ký trực tiếp trên điện thoại (mở mysignins trên trình duyệt điện thoại). Với ban giám đốc hay đổi điện thoại, cấp thêm một FIDO2 key làm phương thức thứ hai.

Bước 4: Tạo CA đòi phishing-resistant MFA cho nhóm rủi ro cao

Mục đích là ban giám đốc, kế toán chỉ đăng nhập được bằng phương thức không bị phishing.

  1. Conditional Access → + New policy → tên CA010 - Phishing-resistant MFA for high-risk users
  2. Users: Include LIC-EntraP2-Rui-ro-cao; Exclude CA-Exclude-BreakGlass
  3. Target resources: All resources
  4. Grant: Require authentication strength → Phishing-resistant MFA
  5. Enable policy: Report-only

Chạy report-only 7 ngày, kiểm tra ai chưa có passkey:

Connect-MgGraph -Scopes "AuditLog.Read.All","GroupMember.Read.All"

$groupId = (Get-MgGroup -Filter "displayName eq 'LIC-EntraP2-Rui-ro-cao'").Id
$members = Get-MgGroupMember -GroupId $groupId -All | ForEach-Object { $_.AdditionalProperties.userPrincipalName }

# Báo cáo phương thức đã đăng ký (Entra ID P1)
Get-MgReportAuthenticationMethodUserRegistrationDetail -All |
    Where-Object { $_.UserPrincipalName -in $members } |
    Select-Object UserPrincipalName, IsPasswordlessCapable, @{n='Methods';e={$_.MethodsRegistered -join ', '}} |
    Format-Table -AutoSize

Lưu ý: Bật CA010 khi còn người chưa đăng ký passkey sẽ khóa họ ngoài mọi dịch vụ. Với người chưa đăng ký, cấp TAP và ngồi cùng họ đăng ký trước khi bật.

Bước 5: bật CA010 và kiểm tra

  1. CA010 → Enable policy: On
  2. Đăng nhập Outlook web bằng giamdoc@khongkho.com trên trình duyệt ẩn danh → chọn Sign in with a passkey / face, fingerprint, PIN or security key → xác nhận trên điện thoại
  3. Kiểm tra sign-in log: Authentication Details hiện Passkey (device-bound) hoặc FIDO2 security key; tab Conditional Access hiện CA010 Success
  4. Thử đăng nhập chỉ bằng mật khẩu + push notification → bị chặn với thông báo yêu cầu phương thức mạnh hơn

Bước 6: tiến tới không dùng mật khẩu và gỡ SMS

Mục đích là giảm bề mặt tấn công sau khi nhóm thử nghiệm đã ổn định.

  1. Mở rộng nhóm AUTH-Passkey-Pilot sang toàn công ty theo từng phòng, mỗi tuần một phòng
  2. Với máy Windows Entra join: bật Windows Hello for Business trong Intune → Devices → Windows → Enrollment → Windows Hello for Business
  3. Sau khi mọi người có ít nhất một phương thức mạnh: Authentication methods → SMS và Voice call → Disable (hoặc chỉ giữ cho nhóm ngoại lệ)

Lỗi thường gặp

LỗiNguyên nhânCách sửa
Không thấy lựa chọn Passkey in Microsoft AuthenticatorUser không thuộc nhóm target, hoặc Authenticator cũKiểm tra nhóm, cập nhật Authenticator
Quét QR xong không kết nốiBluetooth tắtBật Bluetooth cả hai thiết bị, hoặc đăng ký trực tiếp trên điện thoại
Đăng ký FIDO2 key bị từ chốiEnforce key restrictions chặn model đóThêm AAGUID của model vào danh sách cho phép
User bị khóa sau khi bật CA010Chưa có passkeyĐăng nhập break-glass, cấp TAP, đăng ký passkey
Ứng dụng cũ không đăng nhập đượcỨng dụng không hỗ trợ phương thức hiện đạiLoại trừ ứng dụng đó khỏi CA010 có thời hạn, liên hệ nhà cung cấp

Tổng kết

Thành phầnĐã làm
Phương thứcPasskey (FIDO2) bật cho nhóm thử nghiệm
Đăng ký an toànTemporary Access Pass dùng 1 lần, 60 phút
Người dùngPasskey trong Authenticator, FIDO2 key dự phòng
Conditional AccessCA010 phishing-resistant cho nhóm rủi ro cao
Lộ trìnhMở rộng theo phòng, Windows Hello, tắt SMS

Tài liệu tham khảo

Ban giám đốc công ty bạn đã dùng passkey chưa? Rào cản lớn nhất là gì? Chia sẻ trong comment nhé.