การโคลนอิมเมจของเซิร์ฟเวอร์ VPN โดยไม่โคลนตัวตนของมัน
ตัดสินใจว่าสำเนาจะกู้คืนเกตเวย์หนึ่งตัวหรือเพิ่มตัวที่สอง การกำหนดค่าที่ใช้ซ้ำได้ อำนาจการลงนาม และสถานะเครือข่ายต่างเดินทางกันคนละแบบ
อิมเมจบูตขึ้น บริการเริ่มทำงาน และไคลเอนต์เชื่อมต่อ นั่นคือจังหวะที่ต้องหยุดและถามว่าการดำเนินการสองอย่างที่ต่างกันมากเกิดอะไรขึ้นเมื่อสักครู่ ไม่ว่าจะเป็นการที่สำเนากู้คืนเกตเวย์เชิงตรรกะหนึ่งตัวที่มีอยู่ก่อน หรือเป็นการเพิ่มเกตเวย์ตัวที่สองเข้าในฝูง ทั้งสองอย่างชอบด้วยกฎหมาย และมีผลต่อตัวตนและการเข้าถึงต่างกัน เครื่องที่บูตขึ้นมาอย่างสะอาดไม่ได้พิสูจน์อย่างใดอย่างหนึ่ง
เงื่อนไขสามข้อตัดสินคำตอบ และนั่นคือตะกร้าวัสดุสามใบที่อิมเมจสามารถพกพาได้ จัดเรียงก่อนที่อิมเมจจะถูกสร้าง ไม่ใช่หลังจากที่ติดตั้งไปแล้วสองครั้ง
ก่อนอื่นต้องตัดสินใจว่ากำลังทำการดำเนินการใดในสองอย่างนี้
การกู้คืนรักษาตัวตนของบริการไว้หนึ่งตัว อินสแตนซ์เก่าหายไป ชื่อและใบรับรองยังอยู่ และไคลเอนต์ยังคงเชื่อถือจุดปลายทางเดิม การเพิ่มจะสร้างตัวตนที่สองซึ่งไคลเอนต์ บันทึก และการเพิกถอนทุกฝ่ายต้องแยกแยะ
ความแตกต่างนี้ไม่ใช่เพียงรูปลักษณ์ หากโฮสต์ที่ทำงานอยู่สองตัวนำเสนอใบรับรองเกตเวย์เดียวกัน ไคลเอนต์ไม่สามารถแยกแยะได้ ร่องรอยการตรวจสอบก็เช่นกัน และการเพิกถอนใบรับรองนั้นจะลบทั้งสองตัวพร้อมกัน นั่นอาจเป็นสิ่งที่การออกแบบความพร้อมใช้งานสูงที่ตั้งใจต้องการ และแทบไม่เคยเป็นสิ่งที่สำเนาอิมเมจที่เร่งรีบตั้งใจ
ดังนั้นการตัดสินใจแรกคือประโยคหนึ่ง ซึ่งเขียนไว้ก่อนที่อิมเมจจะออกจากโฮสต์สำหรับสร้าง: สำเนานี้กู้คืนเกตเวย์ A หรือสำเนานี้กลายเป็นเกตเวย์ B ทุกสิ่งหลังจากนั้นคือการทำบัญชีเทียบกับประโยคนั้น หากไม่มีใครเขียนได้ สำเนายังไม่พร้อมจะถูกสร้าง
อินพุตที่ใช้ซ้ำได้ ตัวตนและอำนาจ สถานะการติดตั้ง
ตะกร้าที่ใช้ซ้ำได้คืออันที่ง่าย: แพ็กเกจ การกำหนดค่าที่ผ่านการตรวจสอบโดยไม่มีความลับ เทมเพลตบริการ การตั้งค่าการเสริมความแข็งแกร่ง นี่คือสิ่งที่อิมเมจทำได้ดีจริง และสามารถสร้างซ้ำได้ไม่จำกัด
ตะกร้าตัวตนและอำนาจคือจุดที่สำเนาผิดพลาด กุญแจส่วนตัวและใบรับรองของเกตเวย์ระบุตัวเกตเวย์นั้นต่อไคลเอนต์ทุกตัว กุญแจลงนามของหน่วยรับรองเป็นวัตถุอื่นที่มีอำนาจต่างกัน: มันออกตัวตน การไว้วางใจผู้ออกไม่ได้หมายความว่าเกตเวย์ใหม่ทุกตัวต้องการความสามารถในการออก และการส่งกุญแจลงนามไว้ในอิมเมจย่อมให้ความสามารถนั้นแก่ทุกสิ่งที่อ่านอิมเมจได้
ตะกร้าสถานะการติดตั้งคืออันที่คนมักลืมเพราะดูเหมือนการกำหนดค่า ที่อยู่รับฟัง พูลที่อยู่ เส้นทางที่ผลักไป การตั้งค่าตัวแปลงชื่อ และการผสานรวมภายใน ทั้งหมดเข้ารหัสสมมติฐานเกี่ยวกับโฮสต์แรก โหนดที่สองซึ่งคัดลอกสิ่งเหล่านี้อาจจัดสรรจากพูลที่เกตเวย์อื่นเป็นเจ้าของอยู่แล้ว หรือส่งไคลเอนต์ไปยังทรัพยากรที่มีอยู่เฉพาะข้างต้นฉบับ
โหนดใหม่ต้องได้รับอะไร และจากใคร
โหนดที่บริหารจัดการอย่างอิสระควรได้รับข้อมูลรับรองของตนเองผ่านกระบวนการลงทะเบียนที่ได้รับอนุมัติ โดยการลงนามเกิดขึ้นที่ที่กุญแจลงนามอยู่ ไม่ใช่บนโฮสต์ใหม่ บันทึกว่าตัวตนใดสามารถเรียกคืนได้โดยไม่รบกวนโหนดอื่น หากคำตอบคือ "ทั้งหมด" การออกแบบนั้นมีตัวตนเดียวที่แสร้งว่าเป็นสอง
ค่าของเครือข่ายสมควรได้รับการปฏิบัติเช่นเดียวกัน เลือกพูล ที่อยู่รับฟัง และชุดเส้นทางที่ผลักไปซึ่งไม่ชนกับเกตเวย์ที่มีอยู่ และเขียนสิ่งเหล่านั้นในอินพุตการจัดสรรแทนที่จะเป็นในอิมเมจ อินพุตตรวจสอบได้ อิมเมจตรวจสอบไม่ได้
มีกรณีกลางที่ชอบด้วยกฎหมาย การออกแบบการกู้คืนหรือการทำสำเนาที่ได้รับการสนับสนุนอาจเก็บตัวตนของบริการเชิงตรรกะหนึ่งตัวไว้ข้ามโฮสต์โดยเจตนา พร้อมการเข้าถึงแบบควบคุมไปยังสำเนาเก่าและแผนการหมุนเวียน นั่นคือการตัดสินใจที่มีเจ้าของ ไม่ใช่ค่าเริ่มต้นที่เกิดขึ้นเพราะอิมเมจสะดวก
openssl x509 -in /etc/openvpn/server/server.crt -noout -subject -issuer -dates
find /etc/openvpn -name '*.key' -o -name '*.pem' | head -20
คำสั่งแรกบอกว่าจริง ๆ แล้วโหนดนำเสนอตัวตนใดและใครลงนาม คำสั่งที่สองคือรายการเริ่มต้น ไม่ใช่ข้อพิสูจน์: วัสดุส่วนตัวอาจอยู่ภายนอกไดเรกทอรีนั้น ภายในฐานข้อมูลของแอปพลิเคชัน หรือในชั้นสแนปชอตที่ระบบไฟล์ที่ทำงานอยู่ไม่แสดงอีกต่อไป
สำเนาของอิมเมจพกพาอะไรไปอย่างเงียบ ๆ
การลบไฟล์ออกจาก revision ล่าสุดของอิมเมจไม่ได้ลบมันออกจาก revision เก่า แคชของชั้น หรือสแนปชอตที่ถ่ายไว้ขณะที่มันมีอยู่ ด้วยเหตุนี้จึงต้องปฏิบัติต่ออิมเมจที่พกพาข้อมูลรับรองเป็นวัตถุที่ละเอียดอ่อนตลอดอายุขัย ไม่ใช่เฉพาะเวลาที่ถูกสร้าง
ตรวจสอบเนื้อหาของอิมเมจและอินพุตการจัดสรรเป็นคำถามสองข้อแยกกัน อิมเมจตอบคำถาม "อะไรอยู่ในสิ่งประดิษฐ์นี้" ขณะที่อินพุตตอบคำถาม "อินสแตนซ์นี้จะกลายเป็นอะไรในการบูตครั้งแรก" อิมเมจที่สะอาดพร้อมสคริปต์บูตที่ดึงกุญแจร่วมตอบคำถามแรกได้ดีและตอบข้อที่สองได้แย่
เก็บอิมเมจการกู้คืนที่มีความลับโดยชอบด้วยกฎหมายไว้เฉพาะผู้ที่ต้องการ และบันทึกว่าจัดเก็บไว้ที่ใด ทางเลือกอื่น คืออิมเมจที่สะดวกเพราะทำงานได้โดยไม่ต้องจัดสรรใด ๆ คืออิมเมจเดียวกันกับที่มอบตัวตนของเกตเวย์ให้แก่ผู้ที่พบมัน งานเพียงหนึ่งในสองอย่างนั้นปรากฏในบันทึกการสร้าง
การตรวจสอบการรับเข้าก่อนการผลิต
ก่อนที่โหนดจะรับทราฟฟิก ให้ยืนยันสี่สิ่ง: ตัวตนที่นำเสนอ ไคลเอนต์ที่จะยอมรับ ทรัพยากรที่ได้รับอนุญาตให้เข้าถึง และเส้นทางกลับสำหรับที่อยู่ที่แจกจ่าย
systemctl status openvpn-server@lab --no-pager
ss -lunp 'sport = :1194'
ip -4 route show table all | grep -F '10.90.'
จากนั้นตรวจสอบกรณีเชิงลบ ซึ่งเป็นสิ่งที่จับอุบัติเหตุ: โหนดใหม่มีสิทธิ์ผู้ดูแลระบบหรือไคลเอนต์ที่ตั้งใจไว้สำหรับต้นฉบับหรือไม่ การกำหนดค่าที่คัดลอกมาอาจพกการป้อนไคลเอนต์เพิ่มเติม เส้นทางบริหารจัดการที่สืบทอดมา หรือคำสั่งพุชที่สมเหตุสมผลบนโฮสต์แรก
หากอิมเมจที่มีความลับที่ยังใช้งานได้ได้เคลื่อนออกนอกขอบเขตที่ได้รับอนุมัติแล้ว ให้เปลี่ยนข้อมูลรับรองและจำกัดสำเนา การลบไฟล์ออกจากการสร้างครั้งล่าสุดไม่เหมือนกับการปลดระวางข้อมูลรับรองที่สำเนาเก่ายังถืออยู่ และช่องว่างระหว่างข้อเท็จจริงสองข้อนั้นคือหน้าต่างที่ผู้โจมตีต้องการอย่างแม่นยำ