ถ้าแล็ปท็อปซึ่งลายเซ็นแอนติไวรัสหยุดอัปเดตตั้งแต่หลายสัปดาห์ก่อนยังเปิดแอปภายในของคุณได้ ปกติแล้วเอกสารนโยบายไม่ใช่สิ่งที่ผิด สามระบบแยกกันต้องเห็นตรงกันก่อนที่จะปฏิเสธการเข้าถึง: บางอย่างวัดอุปกรณ์ปลายทาง บางอย่างแปลงการวัดนั้นเป็นคำตัดสินอนุญาตหรือปฏิเสธ และบางอย่างทิ้งทราฟฟิกจริง ๆ เมื่ออุปกรณ์ที่ไม่เป็นไปตามข้อกำหนดเข้ามาได้อยู่ดี แสดงว่ามีข้อต่อหนึ่งข้อขาดไปหรือกำลังเชื่อหลักฐานที่ไม่ควรเชื่อ การตรวจสอบด้านล่างเรียงตามลำดับนั้น และแต่ละข้อมีจุดหยุด

การบล็อกเป็นขั้นตอนสุดท้าย ไม่ใช่ขั้นแรก

การยืนยันตัวตนและสถานะอุปกรณ์ตอบคำถามคนละเรื่อง การเข้าสู่ระบบสำเร็จพิสูจน์ว่ามีการแสดงข้อมูลรับรอง แต่ไม่ได้บอกอะไรเกี่ยวกับซอฟต์แวร์ที่ทำงานบนเครื่องซึ่งแสดงข้อมูลนั้น ช่องว่างนี้เองที่ทำให้โปรไฟล์ไคลเอนต์ที่ถูกคัดลอกสามารถพาเซสชันที่ดูสุขภาพดีไปยังโฮสต์ที่ไม่สุขภาพดีได้

งานด้านการปฏิบัติตามข้อกำหนดของอุปกรณ์ปลายทางมีคำศัพท์สำหรับห่วงโซ่นี้อยู่แล้ว แบบจำลองอ้างอิง NEA ใน RFC 5209 แบ่งงานเป็นตัวเก็บรวบรวม ขั้นประเมิน และจุดบังคับใช้ และระบุชัดว่าไคลเอนต์ที่โกหกเรื่องสถานะของตัวเองอยู่นอกแบบจำลอง ข้อแม้นี้สำคัญกว่าแผนภาพ: โมดูลแพลตฟอร์มที่เชื่อถือได้ไม่ได้เปลี่ยนการวัดที่อุปกรณ์รายงานเองให้เป็นข้อเท็จจริง

ทำให้ตัวเก็บรวบรวมซื่อสัตย์เรื่องขอบเขต ควรรายงานคุณสมบัติที่นโยบายของคุณระบุ บนอุปกรณ์ที่ขอเข้าถึง และอย่างอื่นเพียงเล็กน้อย เอเจนต์สำรวจทรัพย์สินที่ไล่รายการทุกแพ็กเกจที่ติดตั้งเป็นเครื่องมือคนละชนิดกับตัวเก็บรวบรวมสถานะ และความต่างนั้นเป็นทั้งปัญหาเรื่องการเก็บรักษาและความแม่นยำ ถ้ารายงานผูกกับตัวตนอุปกรณ์เดียวไม่ได้ ผู้ประเมินกำลังเดาว่าเพิ่งปล่อยเครื่องไหนผ่าน

แดชบอร์ดที่แสดงสถานะสีแดงไม่ใช่การควบคุม ถามว่าผู้ใช้ที่ถูกปฏิเสธยังเข้าถึงอะไรได้: วิกิ ที่แชร์ไฟล์ พอร์ตฐานข้อมูล? การแก้ไขต้องใช้พื้นผิวแคบเพียงหนึ่งเดียว และทุกอย่างที่เหลืออยู่หลังการบล็อก

อ่านรายงานก่อนอ่านกฎ

เริ่มจากต้นทาง ไม่ใช่จากเครื่องหมายถูกสีเขียวของไคลเอนต์ บน Windows การวัดในเครื่องมาจาก Defender หรือจากผลิตภัณฑ์ที่ลงทะเบียนกับ Security Center และทั้งสองอ่านได้โดยไม่ต้องใช้คอนโซลของผู้จำหน่าย:

Get-MpComputerStatus | Select-Object AMServiceEnabled, RealTimeProtectionEnabled, AntivirusSignatureLastUpdated
Get-CimInstance -Namespace root/SecurityCenter2 -ClassName AntiVirusProduct | Select-Object displayName, productState

คำสั่งที่สองคืนค่าจำนวนเต็มชื่อ productState บิตของมันมีเอกสารหลวม ๆ และผู้จำหน่ายจัดแพ็กธงการเปิดใช้งานและความสดใหม่ต่างกัน จึงควรยืนยันแทนการตีความ แพ็กเกจจากบุคคลที่สามยังทิ้งรายการใน Security Center ไว้หลังถอนการติดตั้ง และรายการนั้นรายงานเกี่ยวกับซอฟต์แวร์ที่ไม่ได้อยู่บนดิสก์แล้ว

อายุคือฟิลด์ที่คนข้ามไป แสตมป์เวลาของลายเซ็นมีความหมายก็ต่อเมื่อเทียบกับนาฬิกาของเครื่องที่ประเมิน ดังนั้นแปลงเป็นช่วงเวลาแทนการกะด้วยตา:

$sig = (Get-MpComputerStatus).AntivirusSignatureLastUpdated
[int](New-TimeSpan -Start $sig -End (Get-Date)).TotalHours

ตอนนี้นโยบายมีตัวเลขให้อ่านหนึ่งตัว ถ้ากฎของคุณบอก 72 ชั่วโมง นั่นคือตัวเลขที่มันใช้ และแล็ปท็อปที่หลับหนึ่งสัปดาห์จะไม่ผ่านโดยไม่มีใครตีความป้ายกำกับ บันทึกเกณฑ์ไว้ข้างคำสั่ง เพราะทั้งสองจะแยกจากกันเมื่อเครื่องมือปลายทางถูกเปลี่ยน

เปลี่ยนทุกสถานะอุปกรณ์เป็นคำตัดสินที่เป็นลายลักษณ์อักษร

ข้อพิพาทเรื่องสถานะส่วนใหญ่จริง ๆ แล้วเป็นข้อพิพาทเรื่องแถวที่ไม่รู้จัก ตัดสินก่อนเหตุการณ์แรก ในตารางที่ระบุหลักฐาน คำตัดสิน และเจ้าของ เพื่อให้ไม่มีใครด้นสดที่คอนโซลเกตเวย์

Evidence the assessor hasVerdictWhat it protects against
Timestamp inside the policy window, protective service runningAdmit to normal applicationsNothing yet; the other checks still apply
Timestamp older than the windowDeny, admit remediation page onlySignature rollback and dormant laptops
Service disabled or reporting offDeny, escalate to the endpoint ownerAn agent reporting stale success
No report at all for this sessionTreat as deny, never as healthyAgents that fail open under load

แถวล่างคือจุดที่ผลิตภัณฑ์ต่างกัน บางเกตเวย์ปฏิเสธการเชื่อมต่อและอธิบายเหตุผล บางตัวปล่อยให้อุโมงค์ขึ้นและใช้นโยบายจำกัด ไม่กี่ตัวถอยกลับไปใช้รายงานดีล่าสุดที่รู้จัก มีเพียงสองแบบแรกที่ป้องกันได้ และคุ้มค่าที่จะทดสอบว่าของคุณทำแบบไหน

เก็บตัวตนและสิทธิ์ไว้ในเลนของตัวเอง แล็ปท็อปที่ผ่านทุกการทดสอบสถานะยังต้องมีการอนุญาตจากมนุษย์ที่ถูกต้องสำหรับแอป และใบรับรองอุปกรณ์พิสูจน์การถือครองกุญแจ ไม่ใช่สถานะของระบบไฟล์ การบีบทั้งสามเป็นบูลีนเดียวคือทางที่บัญชีฝ่ายช่วยเหลือจะได้สิทธิ์ถาวรในระบบโปรดักชัน

ตรวจเส้นทางบังคับใช้ด้วยคำขอ ไม่ใช่แดชบอร์ด

การบังคับใช้เป็นคุณสมบัติของคำขอ ดังนั้นวัดด้วยคำขอหนึ่งครั้ง วางเครื่องที่ไม่เป็นไปตามข้อกำหนดบนอุโมงค์และเรียกแบบที่ผู้ใช้จริงจะเรียก:

curl -sS -o /dev/null -w '%{http_code}
' --max-time 5 https://app.internal.example/health

การตอบ 200 จากอุปกรณ์ที่ควรถูกบล็อกหมายความว่าคำตัดสินไม่เคยไปถึงเส้นทางข้อมูล สาเหตุปกติสองข้อ: นโยบายผูกกับกลุ่มที่บัญชีทดสอบไม่เคยเข้าร่วม หรือแอปเข้าถึงได้ผ่านเส้นทางที่ VPN ไม่ได้เป็นเจ้าของ

ตรวจสมมติฐานเรื่องเส้นทางก่อน ถ้าชื่อภายในแปลงเป็นที่อยู่ที่ไคลเอนต์เข้าถึงได้อยู่แล้วผ่าน LAN ท้องถิ่น อุโมงค์ก็ไม่เกี่ยวและจะไม่มีนโยบายใดถูกใช้ เทียบที่อยู่นั้นกับเส้นทางที่เกตเวย์ผลักไป บน OpenVPN นโยบายต่อไคลเอนต์อยู่ในไฟล์ที่ใช้ชื่อสามัญเป็นกุญแจ จึงตรวจได้ง่าย:

ls /etc/openvpn/ccd/
cat /etc/openvpn/ccd/laptop-17

ไฟล์ที่มี disable ตัดการเชื่อมต่อไคลเอนต์นั้นทั้งหมด ส่วนบรรทัด push "route ..." จำกัดสิ่งที่มันเข้าถึงได้ ทั้งสองเป็นการบังคับใช้ และทั้งสองมองเห็นได้สำหรับใครก็ตามที่ดีบักรายงาน

ทดสอบทั้งสี่กรณีบนบัญชีทดสอบเดียว

การตรวจสอบสุดท้ายคือเมทริกซ์เล็ก ๆ ไม่ใช่เส้นทางสุขสบาย ขับบัญชีทดสอบหนึ่งบัญชีผ่านสี่สถานะ: ปัจจุบัน ลายเซ็นหมดอายุ การป้องกันถูกปิด เอเจนต์ไม่ได้ติดตั้ง สำหรับแต่ละกรณี บันทึกคำตัดสินในบันทึกการประเมิน สถานะ HTTP ที่แอปคืนค่า และหน้าแก้ไขโหลดหรือไม่

foreach ($case in 'current', 'stale', 'disabled', 'absent') {
  Get-MpComputerStatus | Select-Object AMServiceEnabled, AntivirusSignatureLastUpdated
  curl.exe -sS -o NUL -w "%{http_code}
" --max-time 5 https://app.internal.example/health
}

สองรายละเอียดหลุดง่าย อย่างแรกคือการเล่นซ้ำ รายงานที่เก็บตอนเครื่องสุขภาพดีต้องไม่ถูกยอมรับสำหรับเซสชันถัดไปบนอุปกรณ์เดียวกัน จึงมองหาแสตมป์เวลาที่ผูกกับการเชื่อมต่อปัจจุบัน จากนั้นคือการถอน เอเจนต์ที่ถูกถอนควรให้ผลปฏิเสธเหมือนรายงานเก่า ไม่ใช่ผ่านสะอาด และนี่คือกรณีที่มักไม่เคยถูกทดสอบเลย

เมื่อเมทริกซ์ตรงกับตาราง ส่งมอบสามอย่างให้คนที่จะดูแลเกตเวย์ต่อ: คำสั่ง เกณฑ์ และผลลัพธ์ที่คาดไว้สี่ข้อ การส่งมอบนั้นคือผลลัพธ์จริง เพราะการออกแบบสถานะที่อยู่ในเอกสารนโยบายเท่านั้นจะเพี้ยนทันทีที่เครื่องมือปลายทางเปลี่ยนฟิลด์รายงาน

บทความที่เกี่ยวข้อง