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

VPN ตรวจสอบยืนยันอะไรกันแน่

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

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

QuestionAnswered by
Which peer sent this packet?VPN transport authentication
Which device owns this IPv4 address?ARP, trusted only as far as the segment
Which service am I talking to?Application TLS and hostname validation

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

ARP บนเซกเมนต์ที่ใช้ร่วมกันไม่ใช่ไดเรกทอรี

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

ดูว่าโฮสต์เรียนรู้อะไรจริง ๆ ip neigh show แสดงรายการการแมปปัจจุบันและสถานะของมัน และรายการที่สลับระหว่างที่อยู่ MAC สองรายการระหว่างการทำงานปกติเป็นอาการที่ควรตรวจสอบไม่ใช่เพิกเฉย บนเซกเมนต์เล็ก ๆ ที่แข็งแรงรายการเหล่านั้นจะคงที่ยาวนาน

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

เก็บการตรวจสอบใบรับรองไว้ที่ที่บริการอยู่

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

ตรวจดูว่าเซิร์ฟเวอร์นำเสนออะไรก่อนตัดสินว่าคำเตือนเป็นเพียงเรื่องรูปลักษณ์ openssl s_client -connect portal.example.internal:443 -servername portal.example.internal พิมพ์ห่วงโซ่และชื่อทางเลือกของ subject หากชื่อที่คุณพิมพ์ไม่อยู่ในรายการนั้น คำเตือนนั้นถูกต้องและใบรับรองคือสิ่งที่ต้องแก้ การสอนให้ผู้ใช้ข้ามมันไปทำให้การควบคุมที่ทำงานได้กลายเป็นเครื่องประดับ

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

ตัดสินว่าเพียร์เหล่านั้นควรใช้เซกเมนต์ร่วมกันหรือไม่

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

หากเซกเมนต์ต้องอยู่ต่อ ให้ตรวจการตั้งค่าฝั่งเซิร์ฟเวอร์ที่อนุญาตให้ไคลเอนต์เข้าถึงกัน: grep -n client-to-client /etc/openvpn/server.conf เมื่อปิดใช้งาน ทราฟฟิกไคลเอนต์จะผ่านเซิร์ฟเวอร์และกรองได้ที่นั่น เมื่อเปิดใช้งาน เพียร์จะแลกเปลี่ยนเฟรมโดยตรงผ่านบริดจ์ และจุดกรองของคุณคือบริดจ์และไฟร์วอลล์ของโฮสต์

จดบันทึกว่าโฮสต์แต่ละเครื่องพึ่งพาการป้องกันใดจริง ๆ การยืนยันอุโมงค์ การแยกเซกเมนต์ หรือ TLS ของแอปพลิเคชัน โฮสต์ที่พึ่งพาทั้งสามอย่างนั้นโอเค โฮสต์ที่พึ่งพาอย่างแรกและถือว่าอีกสองอย่างมาพร้อมกันคือเครื่องที่ลงเอยด้วยการให้บริการเนื้อหาที่ผิด

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