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

การพิสูจน์ตัวตนด้วยคีย์สาธารณะส่งอะไร

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

ข้อกำหนดการพิสูจน์ตัวตนนิยามหลักฐานนั้น และคีย์ส่วนตัวไม่ใช่ฟิลด์ในคำขอ

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

การส่งต่อเอเจนต์มอบหมายอะไร

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

ไฟล์คีย์ที่ถูกคัดลอกคือการเปิดเผย เอเจนต์ที่ถูกส่งต่อคือการอนุญาต และทั้งสองต้องได้รับการตอบสนองต่างกัน

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

อ่านหลักฐานก่อนเลือกการตอบสนอง

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

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

ssh-add -l
ssh -G host.example | grep -i forwardagent

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

การควบคุมสองอย่างที่แลกกันไม่ได้

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

ปลายทางที่ถูกบุกรุกเป็นคำถามที่สี่ เพราะซอฟต์แวร์ที่มีสิทธิพิเศษบนเครื่องของคุณเองสามารถทำได้มากกว่าการสังเกตแพ็กเก็ตอย่างมาก

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

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