SSL VPN หรือเปลือก TLS? เทียบพรมแดนที่ล้มเหลว
สองดีไซน์วาง TLS บน 443 ได้แต่หมายความต่างกัน สี่การตรวจสอบ: เส้นทางที่กำหนดค่า, backend, ทราฟฟิกที่บรรทุก และพรมแดนที่ล้มเหลว
สองดีไซน์รัน TLS บนพอร์ต 443 ได้แต่หมายถึงสิ่งที่ต่างกันโดยสิ้นเชิง เปลือกหุ้มหนึ่งชั้นปกป้องการเชื่อมต่อที่กำหนดค่าไว้หนึ่งรายการระหว่างพอร์ตท้องถิ่นกับ backend ที่อยู่ไกล ออกแบบการเข้าถึงเครือข่ายบรรทุกทราฟฟิกที่เลือกไว้และเปลี่ยนสิ่งที่ไคลเอนต์เข้าถึงได้ ทำการตรวจสอบสี่ข้อด้านล่างตามลำดับแล้วคุณจะรู้ว่ากำลังดูอันไหน ซึ่งโดยปกติเพียงพอที่จะรู้ว่าชั้นใดล้มเหลว
เริ่มจากการเชื่อมต่อที่คุณกำหนดค่าไว้จริง
จดส่วนหน้าและส่วนหลังก่อนเปรียบเทียบผลิตภัณฑ์ เปลือกหุ้มฟังบนที่อยู่ท้องถิ่นและส่งต่อไปยังที่อยู่ไกล หรือเริ่มโปรแกรมทางฝั่งไกล และคู่นั้นคือสัญญาทั้งหมดของมัน แอปพลิเคชันอื่นของไคลเอนต์ไม่รู้อะไรเกี่ยวกับมันเลยเว้นแต่คุณจะชี้ให้ไปทางนั้น นี่ไม่ใช่ข้อบกพร่องของเครื่องมือ เครื่องมือมีไว้เพื่อสิ่งนี้
สัญญาของดีไซน์เครือข่ายนั้นต่างออกไป และแสดงออกในเส้นทางและนโยบาย ไม่ใช่ในคู่พอร์ต
สังเกตว่าคำอธิบายใดในสองแบบตรงกับแผนภาพของคุณ หากคำตอบคือการแมปพอร์ตเดียวที่มีใบรับรองอยู่ตรงกลาง คุณมีเปลือกหุ้มแม้ชื่อผลิตภัณฑ์จะบอกว่า VPN หากคำตอบคืออินเทอร์เฟซอุโมงค์และการเปลี่ยนแปลงเส้นทาง คุณมีดีไซน์เครือข่ายแม้จะรันบน 443
ตรวจสอบว่าเปลือกหุ้มเชื่อมต่อกับอะไร
อ่านการตั้งค่าการฟังและการเชื่อมต่อแล้วตามไปจนถึง backend จริง เปลือกหุ้มที่ส่งต่อไปยังพอร์ตฐานข้อมูลไม่ได้เปิดแอปพลิเคชันเว็บ และเปลือกหุ้มที่รันโปรแกรมก็เริ่มโปรแกรมนั้นแทนที่จะเผยแพร่ทุกอย่างอื่นที่โฮสต์รันอยู่ backend คือสิ่งเดียวที่เปลือกหุ้มรู้จัก
จากนั้นตัดสินว่าสตรีมที่ส่งต่อเป็นข้อความธรรมดาหรือไม่เมื่อ TLS สิ้นสุด การเชื่อมต่อที่ห่อหุ้มปกป้องส่วนระหว่างเปลือกหุ้มสองชั้น และสิ่งที่เกิดขึ้นหลังเปลือกหุ้มไกลเป็นคำถามแยกต่างหาก นั่นคือเหตุผลที่การห่อหุ้มสิ่งที่นำการป้องกันของตัวเองมาอยู่แล้วบางครั้งสมเหตุสมผลและบางครั้งก็เป็นเพียงชิ้นส่วนที่เคลื่อนไหวเพิ่มเติม ตรวจสอบ hop ถัดไปแทนที่จะสันนิษฐานคำตอบใดคำตอบหนึ่ง
openssl s_client -connect wrapper.lab.example:443 -servername wrapper.lab.example -verify_return_error
sudo ss -ltnp | grep 443คำสั่งแรกแสดงใบรับรองที่เสนอให้ไคลเอนต์จริง และคำสั่งที่สองแสดงสิ่งที่ฟังอยู่บนโฮสต์ เปรียบเทียบชื่อใบรับรองนั้นกับชื่อที่คุณคาดไว้ก่อนอ่านสิ่งอื่นใด
ตรวจสอบว่าดีไซน์บรรทุกทราฟฟิกใด
ดีไซน์การเข้าถึงเครือข่ายบรรทุกทราฟฟิกที่เลือกไว้และผสานกับการกำหนดเส้นทางและนโยบายการเข้าถึงของไคลเอนต์ การรับเข้าไม่ใช่การอนุญาต ดังนั้นการเชื่อมต่อที่ผ่านการพิสูจน์ตัวตนยังต้องการการตัดสินใจว่าจะเข้าถึงทรัพยากรใดได้ พอร์ทัลที่ไม่มีไคลเอนต์เป็นรูปแบบที่สามซึ่งทำพร็อกซีการดำเนินการที่รองรับโดยไม่เคยปรากฏเป็นอินเทอร์เฟซ tun
ฉลากผลิตภัณฑ์ไม่ได้บอกคุณว่าซื้อรูปแบบใดในเหล่านี้ และหมายเลขพอร์ตบอกได้น้อยกว่านั้นอีก
การซ้อนชั้นเป็นไปได้และไม่ควรทำให้การเปรียบเทียบสับสน โปรโตคอลอุโมงค์เองสามารถถูกห่อด้วย TLS ในการจัดวาง TCP ที่รองรับ ซึ่งเพิ่มชั้นรอบอุโมงค์โดยไม่เปลี่ยนเปลือกหุ้มให้เป็นอุโมงค์ นี่เป็นการตัดสินใจออกแบบที่มีพฤติกรรมด้านประสิทธิภาพและความล้มเหลวของตัวเอง และสมควรได้หนึ่งบรรทัดในแผนภาพ บันทึกไว้แล้วเปรียบเทียบรูปแบบพื้นฐานแทนที่จะเป็นเปลือกหุ้มชั้นนอก
ตรวจสอบพรมแดนที่ล้มเหลว ไม่ใช่ฉลาก
จดข้อเท็จจริงของการพยายามหนึ่งครั้งที่ล้มเหลว: ที่อยู่ส่วนหน้า ผู้ฟัง ตัวตนที่ไคลเอนต์ตรวจสอบ เป้าหมาย backend และการดำเนินการที่ร้องขอ การจับมือที่สำเร็จพิสูจน์ว่า TLS ชั้นนอกเสร็จสมบูรณ์และไม่ได้บอกอะไรเกี่ยวกับ backend การปฏิเสธจาก backend เป็นเหตุการณ์ที่แตกต่างจากความล้มเหลวของตัวตนที่ส่วนหน้า และทั้งสองไม่ดีขึ้นจากการเอา -verify_return_error ออกจากไคลเอนต์ เปรียบเทียบสิ่งที่เทียบกันได้ เพราะความสำเร็จผ่านชื่อโฮสต์หรือพอร์ตอื่นไม่ได้แสดงว่าเงื่อนไขเหมือนกัน
พอร์ต 443 เป็นธรรมเนียมที่ปล่อยให้ TLS ผ่านกล่องกลางได้ ไม่ได้ทำให้ทราฟฟิกตามอำเภอใจดูเหมือนคำขอเว็บสำหรับอุปกรณ์นโยบาย
จบด้วยประโยคเดียวที่ระบุคู่ปลายทาง สิ่งที่บรรทุก แอปพลิเคชันใดใช้ และสิทธิ์ใดที่ปลายทางบังคับใช้ ดีไซน์ที่ไม่สามารถเติมช่องว่างทั้งสี่นั้นได้ยังไม่เสร็จ ไม่ว่าฉลากจะอ้างอย่างไร ประโยคนั้นยังเป็นวิธีที่เร็วที่สุดในการอธิบายดีไซน์ให้แก่ผู้ที่เป็นเจ้าของไฟร์วอลล์