การเข้าถึงจาก VPN ไปยัง VLAN: สร้างเมทริกซ์ก่อนกฎ
บทบาทด้านหนึ่ง บริการอีกด้านหนึ่ง การตรวจสอบห้าข้อเปลี่ยนการออกแบบการเข้าถึงจาก VPN ไปยัง VLAN ที่คลุมเครือให้เป็นตารางที่เจ้าของไฟร์วอลล์นำไปใช้ได้
เริ่มจากเมทริกซ์ ไม่ใช่ไวยากรณ์ของไฟร์วอลล์ ตารางที่มีบทบาทด้านหนึ่งและบริการอีกด้านหนึ่งสามารถให้เจ้าของแอปพลิเคชันตรวจทาน เจ้าของความปลอดภัยโต้แย้ง และใครก็ตามที่ถือเกตเวย์นำไปใช้ได้ การตรวจทานนั้นถูกกว่าการดีบักกฎที่ไม่มีใครตกลงกัน
การเขียนหนึ่งชั่วโมงประหยัดการขุดค้นกฎหนึ่งสัปดาห์ในภายหลัง การออกแบบพูดถึงใครเข้าถึงบริการใด และนั่นคือส่วนที่อยู่รอดหลังการเปลี่ยนหมายเลข
ขั้นตอนที่ 1: ตั้งชื่อบทบาทก่อนเครือข่าย
เริ่มจากคน ไม่ใช่สวิตช์ จดทุกกลุ่มที่เชื่อมต่อจากระยะไกลและประโยคเดียวที่อธิบายว่ากลุ่มนั้นทำอะไร เช่น พนักงานคลังที่อ่านระดับสต็อกหรือผู้รับเหมาที่ดูแลการเชื่อมต่อหนึ่งรายการ หากสองกลุ่มจะได้รับการเข้าถึงเหมือนกัน สำหรับวัตถุประสงค์นี้ถือเป็นบทบาทเดียว
หยุดตรงนี้หากบทบาทมีอยู่เพียงเพราะผังองค์กร บทบาทที่ไม่มีความต้องการบริการของตัวเองจะกลายเป็นแถวของเซลล์ที่เหมือนกัน และแถวที่เหมือนกันก็ชักชวนให้ใครบางคนให้ซับเน็ตทั้งช่วงในภายหลังเพื่อความสะดวก แบ่งตามสิ่งที่คนทำ ไม่ใช่ตามใครลงนามในค่าใช้จ่ายของพวกเขา สำนักงานเล็กมักมีหกบทบาทมากเกินไป และสามบทบาทมักถูกต้อง
ขั้นตอนที่ 2: เปลี่ยนแต่ละเซลล์ให้เป็นข้อความบริการ
เซลล์ที่เขียนว่า «แอปพลิเคชัน» ตรวจสอบไม่ได้ เซลล์ที่เขียนว่า «HTTPS ไปยังโฮสต์ ERP ที่ 443 จากกลุ่มพนักงาน» ตรวจสอบได้ แทนที่ชื่อเครือข่ายทุกชื่อด้วยปลายทาง โปรโตคอล และพอร์ต จากนั้นเพิ่มการพึ่งพาที่บริการขาดไม่ได้ เช่น ตัวแก้ไขชื่อภายในหรือผู้ให้บริการระบุตัวตน
| Check | Passes when | Stop if |
|---|---|---|
| Destination named | Host and port appear in the cell | Cell names a VLAN or a subnet |
| Direction stated | Initiator and responder are both clear | Cell implies two-way access |
| Dependency listed | DNS or identity path is explicit | Whole infrastructure range is granted |
| Negative case written | At least one denied pair is recorded | Only allow rules exist |
คอลัมน์ทิศทางจับข้อผิดพลาดที่แพงที่สุด การอนุญาตให้พนักงานเปิดแอปพลิเคชันไม่ได้หมายความว่าอนุญาตให้เซิร์ฟเวอร์แอปพลิเคชันเปิดการเชื่อมต่อกลับไปยังแล็ปท็อปของพนักงาน และกฎที่มีสถานะซึ่งอนุญาตทิศทางแรกมักถูกอ่านราวกับอนุญาตทิศทางที่สอง
ขั้นตอนที่ 3: ตัดสินใจว่าตัวตนกลายเป็นนโยบายที่ไหน
ใครบางคนต้อง เปลี่ยนเซสชันที่ผ่านการพิสูจน์ตัวตนให้เป็นบทบาทที่เกตเวย์บังคับใช้ได้ ตัวเลือกที่รองรับรวมถึงนโยบายกลุ่มที่แบ็กเอนด์การพิสูจน์ตัวตนจัดหาให้ คุณลักษณะเซสชันที่เชื่อถือได้ หรือพูลที่อยู่แยกตามบทบาท ทั้งสามแบบใช้ได้ ป้ายกำกับที่ไคลเอนต์ส่งมาใช้ไม่ได้ เลือกกลไกที่เกตเวย์ของคุณจัดทำเอกสาร ไม่ใช่กลไกที่โพสต์ในฟอรัมอธิบาย
การกำหนดที่อยู่ที่เพียงดูเหมือนเป็นของ VLAN คือคำตอบที่ไม่มีคำตอบเดิมในชุดอื่น คู่มือของ Netgate เกี่ยวกับกฎไฟร์วอลล์ของ OpenVPN ทำให้การแยกนั้นชัดเจน การอนุญาตให้อุโมงค์ขึ้นมากับการอนุญาตให้ทราฟฟิกผ่านเป็นคนละการตัดสินใจ
จดว่าคุณเลือกกลไกใดและกำหนดค่าไว้ที่ใด เมื่อบทบาทเปลี่ยน บันทึกนั้นคือความแตกต่างระหว่างการแก้ไขครั้งเดียวกับการค้นหาผ่านสามอินเทอร์เฟซ นอกจากนี้ยังบอกผู้ตรวจสอบว่าควรมองที่ใดก่อน
ขั้นตอนที่ 4: สังเกตที่อยู่ต้นทางที่ปลายทางมองเห็น
นโยบายการส่งต่อต้องตรงกับต้นทางจริงที่ขอบเขต หากเกตเวย์ แปลไคลเอนต์ VPN เป็นที่อยู่ของตัวเอง ไฟร์วอลล์ที่อยู่ต่ำลงไปทุกตัวจะเห็นต้นทางเดียวและสูญเสียความสามารถในการตัดสินใจตามบทบาท หากเก็บที่อยู่ของไคลเอนต์ไว้ เส้นทางกลับก็ต้องมีสำหรับพูลนั้น
ทดสอบทั้งสองทิศทางก่อนเขียนกฎสุดท้าย จากนั้นบันทึกต้นทางที่สังเกตได้ข้างแต่ละเซลล์ รันการตรวจสอบเดียวกันจากสองบทบาทที่ต่างกันและเปรียบเทียบผลลัพธ์ หากทั้งคู่แสดงที่อยู่ของเกตเวย์ การแยกบทบาทก็หายไปแล้ว เมทริกซ์ที่สันนิษฐานว่าที่อยู่ถูกเก็บไว้ในขณะที่เกตเวย์ทำการแปลต้นทางจะล้มเหลวที่ ACL ชั้นล่างตัวแรก
ขั้นตอนที่ 5: ทดสอบแต่ละเซลล์ก่อนส่งมอบ
เปลี่ยนแต่ละเซลล์ที่อนุญาตเป็นการดำเนินการตัวแทนหนึ่งครั้ง และแต่ละเซลล์ที่ปฏิเสธเป็นกรณีเชิงลบ รันทั้งสองจากไคลเอนต์ในบทบาทจริง ไม่ใช่จากคอนโซลของเกตเวย์ เพราะคอนโซลข้ามเส้นทางที่คุณกำลังทดสอบ
# allowed: staff role reaches the ERP endpoint
curl -sS -o /dev/null -w '%{http_code}\n' --max-time 5 https://erp.internal.example/health
# denied: the same role must not reach a management host
nc -vz -w 3 10.30.5.11 22
# observed source address at the destination
sudo tcpdump -ni any 'tcp port 443 and host 10.30.20.15'
กรณีเชิงลบที่เชื่อมต่อได้คือการค้นพบ ไม่ใช่เรื่องบังเอิญ และที่ของมันคือในเมทริกซ์เป็นเซลล์ที่ล้มเหลวจนกว่ากฎจะถูกแก้ไข เก็บคำสั่งทดสอบไว้ข้างตารางเพื่อให้ผู้ตรวจทานคนถัดไปรันซ้ำแทนที่จะสร้างเหตุผลขึ้นใหม่
ตารางที่เสร็จแล้วมีอายุยืนกว่าเกตเวย์ที่มันถูกเขียนขึ้นมา กฎเปลี่ยนไปตามเฟิร์มแวร์และผู้ขาย ขณะที่แถวที่บอกว่าผู้รับเหมาเข้าถึงบริการโครงการหนึ่งยังคงเป็นจริงจนงานนั้นเปลี่ยน