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

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

เส้นทางบูตขออะไรจริง ๆ

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

ความล้มเหลวถูกเขียนไว้ในการเชื่อมต่อ ไม่ได้ซ่อนอยู่ในคีย์ริง

การอ่านแฟล็กความลับบนการเชื่อมต่อ

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

เริ่มจากรายการโปรไฟล์ แล้วยืนยันว่าการเชื่อมต่อใดตั้งให้ยกขึ้นเอง จากนั้นดัมป์การเชื่อมต่อหนึ่งรายการและอ่านแฟล็กที่เกี่ยวกับรหัสผ่าน:

nmcli -f NAME,UUID,TYPE,AUTOCONNECT connection show
nmcli connection show "Work VPN" | grep -i -E "password|secret|key"
journalctl -b -u NetworkManager --grep "secret"

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

Flag valueWhere the secret livesBehaviour before login
0Stored in the connection profileAvailable to the system service
1Owned by a secret agentBlocks until the agent is unlocked
2Never storedPrompts on every activation
4Not requiredNever requested at all

ทำไมการย้ายการเชื่อมต่อไปยังขอบเขตระบบจึงเปลี่ยนคำตอบ

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

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

คีย์ส่วนตัวที่มีวลีรหัสผ่านของตัวเองเพิ่มอีกชั้น แม้รหัสผ่านบัญชีที่เก็บไว้ก็ไม่ปลดล็อกคีย์ที่ต้องการวลีรหัสผ่าน ดังนั้นตรวจสอบว่าขั้นตอนที่ล้มเหลวขอความลับใดจริง ๆ ก่อนเปลี่ยนแปลงสิ่งใด

สิ่งที่ไม่ควรทำ และสิ่งที่ควรทำแทน

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

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

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

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