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

ข้อมูลรับรองชุดที่สองต้องมาจากไหน

OpenVPN ใช้ auth-nocache กับความลับที่ auth-user-pass และ askpass เก็บรวบรวม เมื่อใช้แล้วโปรเซสจะทิ้งไปแทนที่จะเก็บไว้สำหรับการจับมือครั้งถัดไป การเจรจาใหม่มาถึงตามตัวจับเวลา โดยค่าเริ่มต้นคือชั่วโมงละครั้ง คำขอที่สองจึงมาถึงนานหลังจากคนที่พิมพ์รหัสผ่านไปแล้ว ช่องว่างนั้นคือเรื่องทั้งหมด หากเปิดแคชไว้ ไคลเอนต์จะเล่นสำเนาที่บันทึกไว้ซ้ำโดยไม่ถามใคร หากปิดไว้ก็ต้องหาความลับที่อื่นหรือล้มเหลว

ดังนั้นจงระบุทุกที่ที่ความลับจะมาจากได้ในขณะนั้น และพูดตามตรงว่าที่ใดมีอยู่จริงบนโฮสต์ คนที่นั่งอยู่หน้าเทอร์มินัล ไฟล์ที่ auth-user-pass หรือ askpass อ่านได้ หรือโทเคนเซสชันที่เซิร์ฟเวอร์ออกให้ คือสามสิ่งที่มีความสำคัญที่นี่ ถ้าไม่มีเลย การเจรจาใหม่จะล้มเหลวหนึ่งชั่วโมงหลังการเปลี่ยนแปลง ไม่ใช่ในขณะที่คุณทำ

สามรูปแบบ สามจุดล้มเหลว

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

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

ไดเรกทีฟหรือแฟล็ก: เลือกอย่างใดอย่างหนึ่งและรู้ว่าคุณใช้ตัวไหน

ภายในโปรไฟล์ auth-nocache เป็นบรรทัดของตัวเอง ในการเรียกที่ระบุโปรไฟล์อย่างชัดเจน มันเป็นแฟล็กบนบรรทัดคำสั่งนั้น และ คู่มือ OpenVPN แสดงทั้งสองรูปแบบ ทั้งสองทำสิ่งเดียวกันกับการเก็บข้อมูลรับรอง และไม่แตะประเภทอินเทอร์เฟซหรือซ่อมคำเตือนที่ไม่เกี่ยวข้องในบันทึกเดียวกัน ข้อแตกต่างคือความคงอยู่ แฟล็กครอบคลุมเฉพาะการรันนั้น บริการที่รีสตาร์ตจากไฟล์ unit หรือสคริปต์ห่อจึงไม่มีแฟล็กนั้น เว้นแต่ตัวห่อจะส่งต่อด้วย

auth-nocache
openvpn --config /path/client.ovpn --auth-nocache

ตัดสินใจว่าสิ่งใดเป็นเจ้าของการตั้งค่า เปลี่ยนที่นั่นและไม่มีที่อื่น โปรไฟล์ที่แก้ไขบนแล็ปท็อปบวกกับ unit ของ systemd ที่เขียนทับด้วยแฟล็กคือคู่ที่สร้างพฤติกรรมขัดแย้งหลังรีบูต

ไฟล์ข้อมูลรับรองย้ายความลับแทนที่จะลบมัน

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

เก็บไฟล์ไว้ในความเป็นเจ้าของของบัญชีที่รันเดมอน ไม่ให้ใครอื่นอ่าน และอยู่นอกการสำรองข้อมูลที่ออกจากโฮสต์ ตัวเลือก auth-gen-token ฝั่งเซิร์ฟเวอร์ของ OpenVPN มอบโทเคนเซสชันให้ไคลเอนต์หลังเข้าสู่ระบบสำเร็จ ซึ่งเป็นสิ่งที่เล็กกว่าที่จะปล่อยทิ้งไว้เมื่อเทียบกับรหัสผ่านของบัญชี เขียนขั้นตอนการหมุนไว้ข้างไฟล์ไม่ว่าอย่างไร เพราะไฟล์มักมีอายุยืนกว่าคนที่สร้างมัน

การยืดการเจรจาใหม่ย้ายต้นทุน ไม่ได้ลบมัน

ข้อเสนออื่นคือเพิ่ม reneg-sec จนกว่าพรอมต์จะหายากพอที่จะมองข้าม นั่นเขียนตารางการหมุนคีย์ของเซสชันใหม่ และดันปัญหาเดียวกันไปยังช่วงเวลาที่ช้ากว่าและคาดเดาได้น้อยกว่า มันไม่ได้สร้างแหล่งข้อมูลรับรอง นโยบายที่ต่ออายุคีย์ตามตารางด้วยเหตุผลบางอย่างไม่ควรผ่อนลงเพียงเพื่อหลีกเลี่ยงการพิมพ์รหัสผ่าน

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

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

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