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

เขียนลำดับการไหลก่อน แล้วจึงตัดสินใจว่ากลไกใดสามารถบังคับแต่ละอย่างได้จริง รายการการไหลนั้นเป็นสิ่งเดียวที่อยู่รอดหลังการเปลี่ยนกฎครั้งถัดไป

หมวดหมู่เลือกกฎ ไม่ใช่เส้นทาง

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

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

ดังนั้นกฎที่จำกัดเฉพาะโปรไฟล์จึงไม่สามารถหมายถึงเฉพาะทันเนลได้ คุณสมบัติสองอย่างนี้ถูกตัดสินโดยองค์ประกอบที่ต่างกัน และอย่างหนึ่งแทนอีกอย่างไม่ได้

FlowWhat decides itWhat a rule can enforce
VPN client to its endpointRouting plus the outer transportAllow the client process before the tunnel exists
Application to an internet hostInterface metric and prefix lengthBlock the process unless the tunnel interface is up
Application to a LAN hostLocal subnet routeAllow one destination, not the whole category

การบล็อกแบบชัดเจนอยู่เหนือการอนุญาตที่แคบกว่า

แนวทางกฎไฟร์วอลล์ของ Microsoft แยกความแตกต่างระหว่างการอนุญาตที่เป็นข้อยกเว้นของการกระทำบล็อกเริ่มต้น กับการบล็อกแบบชัดเจนที่ขัดแย้งกับการอนุญาต การบล็อกแบบชัดเจนชนะความขัดแย้งนั้น และกฎขาออกก็ปฏิบัติตามลำดับความสำคัญเดียวกัน

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

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

กฎสองข้อที่ขัดแย้งกันนั้นแย่กว่ากฎข้อเดียว เพราะพฤติกรรมที่ได้นั้นถูกต้องและอธิบายไม่ได้ในเวลาเดียวกัน

ให้เจ้าของเดียวแก่นโยบายขาออก

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

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

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

ทดสอบผลลัพธ์สี่อย่างแทนการอ่านป้าย

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

Get-NetConnectionProfile | Select-Object Name,NetworkCategory,InterfaceAlias
Get-NetFirewallProfile | Select-Object Name,DefaultOutboundAction
Get-NetFirewallRule -Direction Outbound -Enabled True | Where-Object Action -eq Block |
  Select-Object DisplayName,Profile

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

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

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