OpenVPN ตัดเซสชัน OTP ในภายหลัง: การยืนยันตัวตนซ้ำต้องใช้อะไร
เซสชันที่หลุดหลังผ่านไปหนึ่งชั่วโมงมักเป็นการเปลี่ยนคีย์ที่ขอรหัสซึ่งใช้ไปแล้ว เลือกระหว่างโทเคนที่เซิร์ฟเวอร์ออกให้กับความท้าทายแบบโต้ตอบใหม่
จากฝั่งไคลเอนต์มันดูเหมือนการตัดการเชื่อมต่อแบบสุ่มหลังทำงานไปหนึ่งชั่วโมง ไอคอนในถาดระบบหายไป อุโมงค์ถูกสร้างใหม่ และบันทึกแสดงความล้มเหลวในการยืนยันตัวตนแทนข้อผิดพลาดของเครือข่าย สิ่งที่เกิดขึ้นจริงคือเซสชันเจรจาใหม่และการจับมือครั้งที่สองต้องใช้ข้อมูลรับรองที่ไคลเอนต์ไม่มีสำเนาที่ถูกต้องแล้ว รหัสใช้ครั้งเดียวที่ใช้ได้ตอนเข้าสู่ระบบไม่สามารถใช้ซ้ำได้ การเปลี่ยนคีย์จึงล้มเหลวตามที่ออกแบบไว้
ทางแก้คือการตัดสินใจว่าการจับมือครั้งที่สองควรนำเสนออะไร ไม่ใช่ตัวจับเวลาลองใหม่ที่ยาวขึ้น
ไล่การแลกเปลี่ยนจากมุมมองของไคลเอนต์
ตอนเข้าสู่ระบบไคลเอนต์ส่งชื่อผู้ใช้ รหัสผ่าน และรหัสจากอุปกรณ์โทเคน และเซิร์ฟเวอร์ยอมรับการรวมกันนั้น จากนั้นเซสชันดำเนินไปจนกว่าตัวกระตุ้นการเจรจาใหม่จะทำงาน ซึ่งเริ่มการจับมือ TLS ใหม่ภายในอุโมงค์ที่มีอยู่ การจับมือนั้นขอการยืนยันตัวตนอีกครั้ง หากเส้นทางการยืนยันตัวตนของเซิร์ฟเวอร์คาดหวังรหัสผ่านบวกรหัสใช้ครั้งเดียวปัจจุบัน ไคลเอนต์ก็ไม่มีรหัสใหม่ให้เสนอเว้นแต่ผู้ใช้จะอยู่ตรงนั้นเพื่อพิมพ์
ไคลเอนต์ส่วนใหญ่ไม่เปิดพรอมป์กลางเซสชัน การจับมือจึงหมดเวลาและอุโมงค์หลุด ผู้ใช้เห็นการเชื่อมต่อใหม่ ไม่ใช่พรอมป์ยืนยันตัวตน ซึ่งเป็นเหตุผลที่รายงานแรกมักโทษเครือข่าย
auth-gen-token เปลี่ยนว่าใครตอบคำถามที่สอง
auth-gen-token ตัวเลือกนี้ให้เซิร์ฟเวอร์ออกโทเคนหลังเข้าสู่ระบบสำเร็จ และการเจรจาใหม่ในภายหลังนำเสนอโทเคนนั้นแทนการส่งรหัสผ่านและรหัสซ้ำ คู่มืออธิบาย อายุการใช้งานและพฤติกรรมการต่ออายุ ไว้ และต้องถือว่าโทเคนเป็นข้อมูลรับรองที่มีวันหมดอายุของตัวเอง ในเส้นทางค่าเริ่มต้น เซิร์ฟเวอร์ตรวจสอบโทเคนเองแทนการเรียกตัวตรวจสอบรหัสผ่านภายนอกอีกครั้ง
เมื่อมีการรวมการยืนยันตัวตนภายนอก การแบ่งหน้าที่นั้นก็เปลี่ยนไป ปลั๊กอินต้องเข้าใจสถานะของโทเคนและใช้การตรวจสอบของตนเอง เพราะเซิร์ฟเวอร์ไม่ใช่องค์ประกอบเดียวที่ตัดสินว่าเซสชันจะดำเนินต่อหรือไม่ การถือว่าโทเคนเป็นรหัสใช้ครั้งเดียวแบบตัวเลขอีกตัวหนึ่งไม่ใช่การนำคุณสมบัตินี้ไปใช้
ตัดสินใจว่าเกิดอะไรขึ้นกับสถานะบัญชี
โทเคนที่มีอายุยืนกว่าสิทธิ์เข้าถึงของบัญชีคือช่องโหว่ในนโยบาย ตัดสินใจว่าบัญชีที่ถูกปิดใช้งาน การเป็นสมาชิกกลุ่มที่ถูกถอด หรืออุปกรณ์ที่ถูกเพิกถอนจะมีผลอย่างไรในขณะที่โทเคนยังใช้ได้ อายุโทเคนที่สั้นลงทำให้หน้าต่างแคบลง เส้นทางการเพิกถอนที่ชัดเจนทำให้มันเป็นเจตนา จดคำตอบไว้ก่อนเปิดใช้งานตัวเลือก เพราะเส้นทางค่าเริ่มต้นไม่ได้ปรึกษาตัวตรวจสอบภายนอกทุกครั้งที่เจรจาใหม่
ในการติดตั้งหลายเซิร์ฟเวอร์ ความลับในการลงนามโทเคนต้องถูกแชร์ มิฉะนั้นไคลเอนต์อาจถูกส่งไปยังโหนดที่ไม่สามารถตรวจสอบโทเคนของตนได้
ทดสอบการหมดอายุและการเชื่อมต่อใหม่ ไม่ใช่แค่การเข้าสู่ระบบ
ลดช่วงการเจรจาใหม่ในโปรไฟล์ทดสอบเพื่อให้การจับมือครั้งที่สองเกิดขึ้นขณะที่คุณเฝ้าดู แล้วตามบันทึกทั้งสอง ยืนยันว่าโทเคนถูกออกตอนเข้าสู่ระบบ ถูกนำเสนอตอนเปลี่ยนคีย์ และถูกต่ออายุหรือออกใหม่ตามอายุที่ตั้งไว้ จากนั้นบังคับให้โทเคนหมดอายุและการเชื่อมต่อใหม่เต็มรูปแบบ เพราะไคลเอนต์ที่เชื่อมต่อใหม่ได้สะอาดก็ยังล้มเหลวในเส้นทางการเปลี่ยนคีย์ได้
ทดสอบการลบบัญชีเป็นลำดับสุดท้าย กรณีนั้นบอกคุณว่านโยบายที่คุณเขียนถูกบังคับใช้หรือเป็นเพียงเอกสาร
อย่าแก้ด้วยการปิดการต่ออายุ
การตั้งช่วงการเจรจาใหม่เป็นศูนย์บนทั้งสองฝ่ายจะกำจัดอาการและกำจัดการหมุนคีย์ไปด้วย นั่นซ่อนปัญหาเรื่องการใช้ข้อมูลรับรองซ้ำไว้หลังการเปลี่ยนนโยบายที่ไม่มีใครตรวจทาน เก็บการต่ออายุไว้ และเลือกระหว่างโทเคนที่เซิร์ฟเวอร์ออกให้กับความท้าทายแบบโต้ตอบใหม่ตามว่ามีผู้ใช้อยู่หรือไม่
ตัวจับเวลาลองใหม่ที่นานขึ้นไม่ได้ทำให้รหัสที่ใช้ไปแล้วกลับมาใช้ได้อีก มันเพียงเลื่อนการตัดการเชื่อมต่อออกไปและทำให้บันทึกอ่านยากขึ้น