Sign-in logs: ตรวจการล็อกอินผิดปกติใน Microsoft Entra
คำตอบสั้น ๆ: เปิด Sign-in logs ใน Microsoft Entra admin center กรองตามผู้ใช้ ประเทศ แอป และสถานะ อ่านรหัสข้อผิดพลาด จับการล็อกอินผิดปกติ และ Export เก็บไว้ก่อนหมดอายุ
คู่มือนี้อธิบาย Sign-in ทีละขั้นตอน พร้อมคำสั่งที่ใช้ได้จริงและปัญหาที่พบบ่อย
Sign-in logs ใน Microsoft Entra admin center คือบันทึกการลงชื่อเข้าใช้บัญชี Microsoft 365 ทุกครั้ง บอกว่าใครเข้า เมื่อไร จาก IP และประเทศใด ผ่านแอปอะไร สำเร็จหรือไม่ ผ่าน MFA แล้วหรือยัง และนโยบาย Conditional Access ตัวใดมีผลบ้าง เมื่อสงสัยว่าบัญชีอีเมลถูกแฮก หรือผู้ใช้บ่นว่าถูกล็อกบัญชีบ่อย Sign-in logs คือจุดแรกที่ต้องเปิดดู
คู่มือนี้เขียนให้ผู้ดูแลระบบที่ต้องตอบคำถามแบบ "มีใครล็อกอินอีเมลของผู้จัดการจากต่างประเทศหรือเปล่า" เมื่อทำครบ คุณจะเปิด Sign-in logs ได้ถูกที่ แยก log แบบ interactive กับ non-interactive กรองตามผู้ใช้ สถานะ ประเทศ และแอป อ่านรายละเอียดของการ Sign-in แต่ละครั้ง จับรูปแบบที่ผิดปกติ และ Export ข้อมูลเก็บไว้เกินระยะที่ไลเซนส์ให้
สิ่งที่ต้องเตรียม
สิทธิ์ : บทบาทขั้นต่ำคือ Reports Reader ผู้ที่มี Security Reader, Global Reader หรือ Security Administrator ก็ดูได้ ไม่จำเป็นต้องใช้ Global Administrator
ไลเซนส์กับระยะย้อนหลัง : Microsoft Entra ID Free เก็บ Sign-in logs 7 วัน ส่วน Entra ID P1 และ P2 เก็บ 30 วัน แผน Microsoft 365 Business Premium และ E3 มี P1 ส่วน E5 มี P2 ถ้าใช้ Business Basic หรือ Standard ให้ถือว่ามีข้อมูลย้อนหลังแค่ 7 วัน การอัปเกรดไลเซนส์ไม่ได้ทำให้ข้อมูลที่หมดอายุไปแล้วกลับมา
ข้อมูลปกติของผู้ใช้ : IP สาธารณะของสำนักงาน เช่น 203.0.113.10 ประเทศที่พนักงานเดินทางไปบ่อย และแอปที่ใช้ประจำ จะช่วยแยกสิ่งผิดปกติได้เร็ว
ถ้าจะดึงข้อมูลด้วย Microsoft Graph PowerShell ต้องมี Entra ID P1 ขึ้นไป และสิทธิ์ AuditLog.Read.All
ข้อมูลที่หมดอายุแล้วกู้ไม่ได้ ดาวน์โหลดเก็บทันทีเมื่อเกิดเหตุ
ขั้นตอนที่ 1: เปิดหน้า Sign-in logs
ลงชื่อเข้าใช้ https://entra.microsoft.com ไปที่ Entra ID > Monitoring & health > Sign-in logs ถ้าสนใจเฉพาะคนเดียว อีกทางคือไปที่ Entra ID > Users เลือกผู้ใช้ แล้วคลิก Sign-in logs ในเมนูของผู้ใช้ ตัวกรองจะถูกตั้งให้เป็นผู้ใช้นั้นอัตโนมัติ
ผู้ใช้ทั่วไปดูประวัติ Sign-in ของตัวเองได้ที่ https://mysignins.microsoft.com เมื่อสงสัยว่ารายการไหนเป็นของผู้ใช้จริง ให้ผู้ใช้เปิดหน้านี้ดูคู่กับคุณได้
ขั้นตอนที่ 2: เลือกประเภทของ Sign-in logs ให้ถูก
หน้า Sign-in logs แบ่งเป็นแท็บ
User sign-ins (interactive) : ครั้งที่ผู้ใช้กรอกรหัสผ่าน ตอบ MFA หรือยืนยันตัวตนด้วยตัวเอง
User sign-ins (non-interactive) : ครั้งที่แอปขอ token ใหม่แทนผู้ใช้โดยไม่ต้องกรอกอะไร เช่น Outlook ที่เปิดค้างไว้ทั้งวัน รายการเยอะมาก แต่คนร้ายที่ขโมย session ไปจะปรากฏในแท็บนี้ ห้ามข้าม
Service principal sign-ins และ Managed identity sign-ins : การลงชื่อเข้าใช้ของแอปและบริการบน Azure ที่ไม่เกี่ยวกับผู้ใช้ ใช้เมื่อสืบเรื่องแอปที่ได้สิทธิ์เข้าถึงอีเมล
เมื่อสืบเหตุบัญชีถูกแฮก ให้ทำตัวกรองชุดเดียวกันทั้งในแท็บ interactive และ non-interactive เสมอ
ขั้นตอนที่ 3: กรองและเพิ่มคอลัมน์ที่ต้องใช้
คลิก Columns แล้วเพิ่ม IP address , Location , Client app , Conditional Access และ Authentication requirement คลิก Save
ตั้งช่วงวันที่ในตัวกรอง Date ให้ครอบคลุมก่อนเกิดเหตุอย่างน้อยหนึ่งวัน
คลิก Add filters แล้วเลือกตัวกรองที่ต้องการ คลิก Apply ตัวที่ใช้บ่อยคือ User , Status (Success, Failure, Interrupted), Location , IP address , Application , Client app และ Conditional Access (Not applied, Success, Failure)
ตัวกรอง Client app แยก Modern authentication clients (Browser, Mobile apps and desktop clients) ออกจาก Legacy authentication clients เช่น IMAP4, POP3, Authenticated SMTP และ Exchange ActiveSync ถ้าเห็นการ Sign-in สำเร็จผ่านโปรโตคอลเก่าที่องค์กรไม่ได้ใช้ ถือเป็นสัญญาณอันตราย เพราะโปรโตคอลเหล่านี้ข้าม MFA ได้
ทำตัวกรองชุดเดียวกันทั้งแท็บ interactive และ non-interactive ทุกครั้ง (ภาพจำลอง)
ขั้นตอนที่ 4: อ่านรายละเอียดของการ Sign-in แต่ละครั้ง
คลิกแถวใดแถวหนึ่งเพื่อเปิด Activity Details แท็บที่ควรอ่านมีดังนี้
Basic info : เวลา แอป ผลลัพธ์ รหัสข้อผิดพลาด (Sign-in error code) และเหตุผล รวมถึง Request ID กับ Correlation ID ที่ใช้อ้างอิงเวลาเปิดเคสกับ Microsoft
Location : IP เมือง และประเทศ ซึ่ง Microsoft ประเมินจาก IP จึงคลาดเคลื่อนได้เมื่อใช้ VPN หรือเครือข่ายมือถือ
Device info : ระบบปฏิบัติการ เบราว์เซอร์ และอุปกรณ์อยู่ในการจัดการขององค์กรหรือไม่
Authentication Details : ใช้วิธียืนยันตัวตนอะไร และ MFA ถูกตอบสำเร็จหรือถูกปฏิเสธ
Conditional Access : นโยบายใดถูกประเมินและผลเป็นอย่างไร
รหัสข้อผิดพลาดที่เจอบ่อย: 50126 ชื่อผู้ใช้หรือรหัสผ่านผิด, 50053 บัญชีถูกล็อกชั่วคราวเพราะพยายามผิดหลายครั้ง, 50074 ต้องยืนยันตัวตนแบบเข้มแข็ง, 500121 การยืนยัน MFA ไม่สำเร็จหรือถูกปฏิเสธ และ 53003 ถูกบล็อกโดย Conditional Access
ขั้นตอนที่ 5: จับรูปแบบ Sign-in ที่ผิดปกติ
Sign-in สำเร็จจากประเทศที่ไม่เกี่ยวข้อง โดยเฉพาะถ้าผู้ใช้อยู่ไทยในเวลาเดียวกัน เป็นสัญญาณสำคัญที่สุด
ล้มเหลว 50126 จำนวนมากจากหลาย IP ไล่หลายบัญชีพร้อมกัน คือการเดารหัสผ่านแบบ password spray
500121 ซ้ำหลายครั้ง แปลว่าผู้ใช้ถูกส่งคำขอ MFA รัว ๆ ซึ่งคนร้ายมีรหัสผ่านแล้ว รอให้ผู้ใช้เผลอกดอนุมัติ
สำเร็จผ่าน Legacy authentication เช่น IMAP4 หรือ Authenticated SMTP จากที่ที่ไม่รู้จัก
Non-interactive จาก IP แปลก ที่ไม่มี interactive ก่อนหน้า อาจเป็น session ที่ถูกขโมย
ถ้าพบรายการที่ผู้ใช้ยืนยันว่าไม่ใช่ของตัวเอง ให้ทำตาม Compromised Account: รับมือบัญชีอีเมลถูกแฮกทีละขั้น ทันที และวางแผนกันซ้ำด้วย Conditional Access จำกัดการล็อกอินตามประเทศและอุปกรณ์ ถ้ายังไม่ได้เปิด MFA ให้ทุกคน ดู เปิดใช้งาน MFA บน Microsoft 365
รายการสีแดงให้ถือว่าบัญชีถูกแฮกไว้ก่อน แล้วค่อยพิสูจน์ว่าไม่ใช่
ขั้นตอนที่ 6: Export Sign-in logs และเก็บไว้นานกว่าที่ไลเซนส์ให้
ตั้งตัวกรองให้แคบก่อน แล้วคลิก Download เลือก CSV หรือ JSON ตั้งชื่อไฟล์ แล้วคลิก Download ของ log ที่ต้องการ เช่น Interactive sign-ins และ Non-interactive sign-ins ไฟล์หนึ่งเก็บได้ไม่เกิน 100,000 รายการ เวลาในไฟล์เป็น UTC ซึ่งช้ากว่าเวลาไทย 7 ชั่วโมง และไฟล์มีทุกคอลัมน์ไม่ว่าคุณจะเลือกแสดงคอลัมน์ใดไว้ ฟีเจอร์ดาวน์โหลดใช้ได้ทุกรุ่นของ Entra ID รวมถึง Free
เมื่อเกิดเหตุ ให้ดาวน์โหลดเก็บทันที เพราะข้อมูลจะหายตามรอบ 7 หรือ 30 วัน องค์กรที่มี P1 ขึ้นไปและมี Azure subscription ส่ง log ต่อไปยัง Log Analytics หรือ Storage account ผ่าน Diagnostic settings เพื่อเก็บนานเท่าที่ต้องการ หรือดึงด้วย Microsoft Graph PowerShell
Connect-MgGraph -Scopes "AuditLog.Read.All","Directory.Read.All"
Get-MgAuditLogSignIn -Filter "userPrincipalName eq '[email protected] '" -Top 20 |
Select-Object CreatedDateTime, IPAddress,
@{n='Country';e={$_.Location.CountryOrRegion}},
@{n='Error';e={$_.Status.ErrorCode}}, AppDisplayName |
Format-Table -AutoSize
คำสั่งนี้ดึงเฉพาะ interactive sign-in ตามค่าเริ่มต้นของ API ถ้าต้องการรายละเอียดตัวกรองและประเภท log ทั้งหมด ดูเอกสาร Sign-in logs in Microsoft Entra ID
ดึงผ่าน Graph ได้เมื่อมี Entra ID P1 ขึ้นไป เวลาในผลลัพธ์เป็น UTC
คำถามที่พบบ่อยเกี่ยวกับ Sign-in logs
Sign-in logs ดูย้อนหลังได้กี่วัน?
Entra ID Free เก็บ 7 วัน ส่วน P1 และ P2 เก็บ 30 วัน ถ้าต้องการนานกว่านี้ต้องดาวน์โหลดเก็บเองหรือส่งต่อผ่าน Diagnostic settings ล่วงหน้า ข้อมูลที่หมดอายุไปแล้วกู้คืนไม่ได้แม้จะซื้อไลเซนส์เพิ่มภายหลัง
ทำไมเห็นการ Sign-in จากต่างประเทศ ทั้งที่ผู้ใช้อยู่ในไทย?
ถ้าผู้ใช้ต่อ VPN หรือใช้เครือข่ายมือถือขณะเดินทาง ตำแหน่งที่ประเมินจาก IP อาจเป็นประเทศอื่นได้ ให้ดูแท็บ Device info และสอบถามผู้ใช้ ถ้าเป็นอุปกรณ์ที่ผู้ใช้ไม่รู้จักหรือมีการ Sign-in จากสองประเทศในเวลาใกล้กันจนเดินทางไม่ทัน ให้ถือว่าบัญชีถูกแฮกไว้ก่อน
Interactive กับ Non-interactive ต่างกันอย่างไร ต้องดูทั้งสองแท็บไหม?
Interactive คือครั้งที่ผู้ใช้ยืนยันตัวตนเอง Non-interactive คือแอปใช้ token ที่มีอยู่ขอ token ใหม่ คนร้ายที่ได้ session ไปแล้วไม่ต้องล็อกอินใหม่ จึงอาจปรากฏแค่ในแท็บ Non-interactive ต้องดูทั้งสองแท็บทุกครั้ง
เห็นรหัส 50126 หลายร้อยครั้งต่อวันในหลายบัญชี ควรทำอย่างไร?
เป็นรูปแบบของการเดารหัสผ่าน ตรวจว่าไม่มีบัญชีใดที่ Sign-in สำเร็จจาก IP เดียวกัน บังคับ MFA ให้ทุกคน และบล็อก Legacy authentication เพราะการโจมตีลักษณะนี้มักใช้โปรโตคอลเก่า
ถ้าต้องการให้ทีมงานช่วยอ่าน Sign-in logs ในเหตุการณ์จริง หรือวางระบบเก็บ log ระยะยาวให้ตรวจย้อนหลังได้ ติดต่อทีมงาน THAI DATA CLOUD ได้ และดูบริการเฝ้าระวังความปลอดภัยได้ที่ Managed Security Services
อ่านเพิ่มเติมเกี่ยวกับ Sign-in