ทำไมหน้า man apt-key ไม่แนะนำให้ใช้คำสั่ง add


10

หน้าคน Ubuntu สำหรับ apt-ที่สำคัญรวมถึงการบันทึกต่อไปนี้เกี่ยวกับapt-key add:

หมายเหตุ: แทนที่จะใช้คำสั่งนี้คุณควรวางพวงกุญแจโดยตรงในไดเรกทอรี /etc/apt/trusted.gpg.d/ ด้วยชื่ออธิบายและ "gpg" หรือ "asc" เป็นนามสกุลไฟล์

ฉันไม่คิดว่าฉันเคยเห็นคำแนะนำนี้มาจากที่อื่น apt-keyโครงการส่วนใหญ่ที่โฮสต์ที่เก็บของตัวเองบอกว่าจะดาวน์โหลดไฟล์สำคัญของพวกเขาและเพิ่มด้วย

  1. แรงจูงใจเบื้องหลังคำแนะนำนี้คืออะไร?
  2. นี่คือ Ubuntu-ism หรือไม่หรือใช้กับ distro ที่ใช้ APT หรือไม่


1
ไม่ซ้ำกันตามจริง แต่คำถามพื้นฐาน (ทำไมต้องใช้.dไดเรกทอรี?) เหมือนกัน
DopeGhoti

3
มันไม่ซ้ำกันเลยเพราะคำตอบที่แท้จริงนั้นไม่ได้เกี่ยวข้องกับความต้องการหรือของ.dไดเรกทอรี
JdeBP

คำตอบ:


12

โครงการเหล่านั้นมีคำแนะนำที่ล้าสมัย ฉันรู้สิ่งนี้เพราะฉันเผยแพร่ที่เก็บ Debianและฉันอัปเดตคำแนะนำของฉันเมื่อฉันพบข้อมูลเกี่ยวกับการเปลี่ยนแปลงใน Debian 9 APT แท้จริงส่วนนี้ของคู่มือนี้ล้าสมัยเพราะเป็นไดเรกทอรีที่ไม่ถูกต้อง

สิ่งนี้ไม่ได้เกี่ยวข้องกับได.dเร็กตอรี่และเกี่ยวข้องกับการป้องกันช่องโหว่ข้ามไซต์ใน APT ระบบเก่าใช้ไฟล์พวงกุญแจแยกต่างหากเพื่อความสะดวก แต่ตอนนี้เป็นสิ่งจำเป็นสำหรับความปลอดภัย ความปลอดภัยของคุณ

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

การผ่อนปรนสำหรับผู้ใช้ในการใช้ keyrings แยกสำหรับผู้เผยแพร่แต่ละคนและเพื่ออ้างอิง keyrings เหล่านั้นด้วยSigned-Byการตั้งค่าส่วนบุคคลในคำจำกัดความที่เก็บของพวกเขา โดยเฉพาะคีย์ของผู้จัดพิมพ์ A จะใช้เฉพาะในที่Signed-Byเก็บ A และคีย์ของผู้เผยแพร่ B จะใช้เฉพาะในที่Signed-Byเก็บขด้วยวิธีนี้หากผู้เผยแพร่ A แทนที่ที่เก็บของผู้เผยแพร่ B APP จะไม่ยอมรับแพ็คเกจที่ถูกโค่นล้มเนื่องจากพวกเขาและ พื้นที่เก็บข้อมูลได้รับการลงนามโดยรหัสของผู้จัดพิมพ์ A ไม่ใช่ของ B Publisher

/etc/apt/trusted.gpg.dกลไกที่มือเป็นสูงอายุที่ยากจนของชายที่สมบูรณ์ค่อนข้างครึ่งทางบ้านไปทางนี้, จากด้านหลังในปี 2005 หรือดังนั้นที่ไม่เพียงพอที่ค่อนข้างดี มันตั้งค่าพวงกุญแจในไฟล์แยกต่างหากเพื่อที่จะสามารถบรรจุและติดตั้งในขั้นตอนเดียวโดยผู้จัดการแพคเกจ (หรือดาวน์โหลดด้วยfetch/ curl/ wget) เป็นไฟล์อื่น ๆ (ตัวจัดการแพคเกจจัดการป้องกันไม่ให้แพคเกจนี้คือ is-my-repository-keyringพิเศษของผู้เผยแพร่ A จากการติดตั้งบนผู้เผยแพร่ B ในวิธีปกติที่จะจัดการกับความขัดแย้งของไฟล์ระหว่างแพ็คเกจโดยทั่วไป) แต่ก็ยังเพิ่มลงในชุดของคีย์ ที่เชื่อถือได้ทั่วโลกสำหรับที่เก็บทั้งหมด กลไกเต็มรูปแบบที่มีอยู่ตอนนี้ใช้ไฟล์ที่แยกต่างหากไม่น่าเชื่อถือทั่วโลกและพวงกุญแจ/usr/share/keyrings/มา

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

อ่านเพิ่มเติม


IMO คำตอบนี้ควรจะมีผู้โหวตมากขึ้น! เห็นได้ชัดว่าการเพิ่ม repo ของบุคคลที่สามมักจะมีผลกระทบด้านความปลอดภัยอยู่บ้าง แต่เราจะให้โอกาสสำหรับสิ่งเลวร้ายที่เกิดขึ้นกับเอ๊ะขั้นต่ำ!
Jeremy Davis

1

apt-key delใช้เวลาkeyidซึ่งเป็นแฮชที่ไม่มีความหมายของคีย์

มันง่ายกว่าถ้าคุณสามารถถอนการติดตั้งคีย์โดยใช้ชื่อที่มีความหมาย ... เช่นชื่อไฟล์

ดังที่ JdeBP กล่าวว่าทำงานได้ดีกับไฟล์คีย์ที่เชื่อถือได้ซึ่งติดตั้งเป็นส่วนหนึ่งของแพ็คเกจเดเบียน ฉันคิดว่ามันยังดีกว่าเมื่อคุณติดตั้งไฟล์กุญแจด้วยตนเอง

ในกลไกใหม่ซึ่งขณะนี้อยู่ใน "การทดสอบเริ่มต้น" สิ่งนี้จะง่ายขึ้นอีก คุณจะต้องลบ / ปิดการใช้งานสิ่งเดียว: ที่เก็บข้อมูล (ใน source.list / sources.list.d) ที่จะหยุดโดยอัตโนมัติอนุญาตให้คีย์ที่กำหนดค่าสำหรับ repo นั้น (เว้นแต่ว่ามันจะถูกใช้โดย repo อื่น)

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.