ส่งทุกอย่างไปยังโฮสต์เดียว หรือเขียนพอร์ตใหม่ด้วย?
การแปลที่อยู่และการแปลพอร์ตเป็นการตัดสินใจแยกกัน อ่านปลายทางที่แปลแล้วก่อนตัดสินใจว่าโฮสต์ VPN มีส่วนใดที่เข้าถึงได้จริง
การส่งทุกอย่างไปยังเซิร์ฟเวอร์ VPN ของคุณอาจอธิบายกฎที่แตกต่างกันสองแบบ. ข้อหนึ่งเปลี่ยนที่อยู่ปลายทางและคงพอร์ตขาเข้า อีกข้อเขียนพอร์ตใหม่ไปยังผู้รับฟังเพียงรายเดียว. การเปิดเผยไม่เหมือนกัน และการตัดสินใจขึ้นอยู่กับเงื่อนไขสามข้อ ไม่ใช่ป้ายที่อินเทอร์เฟซของเราเตอร์ใช้.
เงื่อนไขข้อแรก: กฎเปลี่ยนฟิลด์ใด?
การแปลที่อยู่ปลายทางและการแปลพอร์ตปลายทางเป็นการดำเนินการแยกกัน. กฎหนึ่งสามารถทำได้เพียงอย่างแรกหรือทั้งสองอย่างพร้อมกัน และความแตกต่างเป็นตัวกำหนดว่าบริการใดบนโฮสต์เป้าหมายที่เข้าถึงได้. อินเทอร์เฟซของผู้จำหน่ายส่วนใหญ่ซ่อนตัวเลือกนั้นไว้หลังป้ายเดียว. การอ่านกฎพื้นฐานเป็นวิธีเดียวที่จะรู้ว่าคุณได้แบบใด.
อ่านกฎจริง ไม่ใช่ป้ายเมนู. หน้าจอที่ระบุ DMZ หรือทุกพอร์ตอธิบายเจตนา ไม่ใช่เส้นทางของแพ็กเก็ต. เอกสาร Netfilter NAT แยกการแปลทั้งสองออกจากกัน และนั่นคือแบบจำลองทางความคิดที่ถูกต้องแม้เราเตอร์ตรงหน้าคุณจะเป็นอุปกรณ์สำหรับผู้บริโภค.
สองฟิลด์ สองคำถามที่ต่างกัน.
เงื่อนไขข้อที่สอง: อะไรกำลังฟังอยู่บนพอร์ตที่เก็บไว้?
หากกฎคงพอร์ตขาเข้าไว้ ทุกพอร์ตที่มาถึงจะถูกส่งไปยังหมายเลขเดียวกันบนโฮสต์ VPN ภายใต้นโยบายขาเข้าของโฮสต์นั้น. ซึ่งรวมถึงบริการที่คุณอาจลืมไปแล้วว่ากำลังฟังอยู่. กฎไม่ได้สร้างบริการเหล่านั้น และตอนนี้มันคือเส้นทางไปสู่บริการเหล่านั้น.
หากกฎเขียนพอร์ตใหม่ สิ่งที่ตรงกันข้ามจะเกิดขึ้น พอร์ตภายนอกจำนวนมากยุบรวมไปยังผู้รับฟังรายเดียว และไม่มีสิ่งอื่นใดบนโฮสต์ที่เข้าถึงได้ผ่านกฎนั้น. การเขียนใหม่ไปยังพอร์ตคงที่ไม่กลายเป็นการเข้าถึงบริการภายในทุกตัวเพียงเพราะช่วงพอร์ตภายนอกที่กว้างตรงกับมัน. การออกแบบทั้งสองล้มเหลวในทิศทางที่ต่างกัน และโหมดความล้มเหลวคือสิ่งที่คุณเลือก. เลือกแบบที่คุณอยู่กับความล้มเหลวได้.
จัดทำบัญชีผู้รับฟังก่อนที่คุณจะเลือก.
เงื่อนไขข้อที่สาม: ทางเข้าภายนอกกว้างเพียงใด?
การเผยแพร่พอร์ตเดียวที่เลือกนั้นแคบกว่าการเผยแพร่ช่วง และทั้งสองแคบกว่าการยอมรับทุกอย่าง. ความกว้างภายนอกและการแปลภายในเป็นการเลือกที่เป็นอิสระต่อกัน และความสับสนส่วนใหญ่มาจากการเปลี่ยนอย่างหนึ่งขณะอธิบายอีกอย่างหนึ่ง.
สำหรับทางเข้า VPN ทั่วไป ให้เผยแพร่การขนส่งและผู้รับฟังที่การออกแบบต้องการจริง ๆ. จากนั้นตรวจสอบอีกสามสิ่ง ได้แก่ การแมปที่มีผลของเราเตอร์ กฎขาเข้าของโฮสต์เป้าหมายเอง และผู้รับฟัง IPv6 เผยแพร่บริการเดียวกันหรือไม่. กฎที่ดูแคบในตระกูลที่อยู่หนึ่งอาจกว้างในอีกตระกูลหนึ่ง.
เขียนปลายทางที่แปลแล้วให้ครบถ้วน: โพรโทคอล พอร์ตภายนอก ที่อยู่ภายใน พอร์ตภายใน.
สิ่งที่ทั้งสองกฎไม่ได้ให้คุณ
ไม่มีการออกแบบใดพิสูจน์ได้ว่าบริการปลอดช่องโหว่ และไม่มีการป้องกันความพร้อมใช้งาน. การพิสูจน์ตัวตน การอัปเดต และการกู้คืนยังคงอยู่ในขอบเขตไม่ว่าการแมปพอร์ตจะแคบเพียงใด. การแมปที่แคบลดพื้นที่ผิวที่เข้าถึงได้ แต่ไม่ได้ทำให้ผู้รับฟังปลอดภัย.
กฎที่กว้างซึ่งรองรับบริการที่ชอบด้วยกฎหมายอื่นอยู่แล้วคือการพึ่งพา ไม่ใช่แค่ความผิดพลาด. จัดทำบัญชีและแทนที่ผ่านเจ้าของก่อนนำออก มิฉะนั้นการเปลี่ยนแปลงจะดูเหมือนการหยุดชะงักที่เกิดจากการแก้ไขความปลอดภัย. ข้อควรระวังเดียวกันใช้กับการเขียนใหม่ไปยังพอร์ตคงที่ซึ่งมีสิ่งอื่นพึ่งพาอยู่อย่างเงียบ ๆ.
การวิเคราะห์การเปิดเผยเป็นเรื่องของสิ่งที่เข้าถึงสิ่งใดได้ ไม่ใช่ป้ายบนหน้าจอ.
ตัดสินใจโดยมีปลายทางที่แปลแล้วอยู่ในมือ
เขียนผลลัพธ์ของกฎเป็นประโยค: พอร์ต UDP สาธารณะ X ไปถึงที่อยู่ Y พอร์ต Z. จากนั้นถามว่าบริการใดบน Y สามารถตอบบน Z ได้ และใครเป็นเจ้าของ.
nft list ruleset
หากคำตอบคือผู้รับฟังรายเดียวที่คุณตั้งใจ กฎก็ทำหน้าที่ของมัน.
หากคำตอบมีหลายราย แสดงว่าคุณเลือกการส่งต่อไปยังโฮสต์ทั้งหมด ไม่ว่าอินเทอร์เฟซจะเรียกเช่นนั้นหรือไม่.