จะใช้ https กับ apt-get ได้อย่างไร?


51

ไม่apt-getใช้ https หรือชนิดของการเข้ารหัสใด ๆ มีวิธีกำหนดค่าให้ใช้หรือไม่


3
โปรดทราบว่าเนื่องจากช่องโหว่เช่นbugs.launchpad.net/ubuntu/+source/apt/+bug/1647467 ... ซึ่งหลีกเลี่ยงการลงชื่อเข้าใช้ InRelease จึงเป็นความคิดที่ดีที่จะกำหนดค่า HTTPS
Royce Williams

whydoesaptnotusehttps.comเป็นเว็บเพจที่สามารถตอบคำถามนี้ได้อย่างแม่นยำและครอบคลุม
m.raynal

1
มีเหตุผลทางโลกที่มากขึ้นว่าทำไมสิ่งนี้ถึงมีประโยชน์ ฉันมักจะเชื่อมต่ออินเทอร์เน็ตด้วยพร็อกซี "โปร่งใส" ที่เสียซึ่งมีแนวโน้มที่จะบล็อกการดาวน์โหลด deb บางอย่าง (พวกเขาอาจเรียกตัวบล็อกมัลแวร์ที่โง่ ๆ ) แต่เหนือ https พร็อกซีไม่รู้ว่าฉันกำลังดาวน์โหลดอะไรและมันไม่รบกวน
Nate Eldredge

คำตอบ:


53

apt-get(และคำสั่งการจัดการแพ็คเกจอื่น ๆ ซึ่งเป็นส่วนหน้าของไลบรารี APT เดียวกัน) สามารถใช้ HTTP, HTTPS และ FTP (และระบบไฟล์ที่เมาท์) หากคุณระบุhttps://URL ใน/etc/apt/sources.listและ/etc/apt/sources.list.d/*จากนั้น APT จะใช้ HTTPS

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

แม่นยำยิ่งขึ้นการไหลของข้อมูล (ประยุกต์) สำหรับแพคเกจมีดังต่อไปนี้:

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

HTTPS รับรองว่าขั้นตอนที่ 4 เกิดขึ้นอย่างถูกต้อง แพคเกจลายเซ็นให้แน่ใจว่าขั้นตอนที่ 2 ถึง 4 เกิดขึ้นอย่างถูกต้อง

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

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

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


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

3
เมื่อหลายสัปดาห์ก่อนฉันพยายามเปลี่ยนแหล่งข้อมูลให้เป็น https และใช้งานไม่ได้apt-get updateจะรายงานข้อผิดพลาดเมื่อพยายามเข้าถึงลิงก์ ด้วย ppas: เหมือนกัน มีใครลองบ้างไหม?
Strapakowsky

8
ที่เก็บข้อมูล (เซิร์ฟเวอร์อัปเดต) ต้องรองรับ https / SSLเพื่อให้สามารถใช้งานได้ หลักไม่ได้archive.ubuntu.com คุณสามารถตรวจสอบในเบราว์เซอร์ของคุณได้หากเซิร์ฟเวอร์รองรับได้โดยนำหน้า https: // ไปยัง URL และดูว่าคุณได้รับรายชื่อของไดเรกทอรี ฯลฯ หรือไม่
ish

7
"ผู้โจมตีในขั้นตอนที่ 4 สามารถเลียนแบบเซิร์ฟเวอร์ที่ถูกกฎหมายและให้บริการแพ็คเกจรุ่นเก่า" ที่จริงแล้วเราป้องกันสิ่งนี้ด้วยการให้ข้อมูลแพคเกจวันหมดอายุ APT จะเตือนหลังจากวันที่กระจกของคุณค้างอยู่
tumbleweed

4
นี่คือรายการของ
มิรเรอ

13

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

APT มีการตรวจสอบลายเซ็นในตัวเพื่อให้แน่ใจในสิ่งนี้

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

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

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


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

6
จุดที่ดี โดย "ข้อมูลเก่า" ฉันคิดว่าคุณหมายถึงการตั้งค่ากระจกอูบุนตูในรุ่นกลางประกอบด้วยรุ่นก่อนหน้าเล็กน้อย แต่ยังคงไม่เปลี่ยนแปลงจากสิ่งที่ Ubuntu ได้ลงนามไว้ในขณะนั้น
thomasrutter

5
ใช่แค่นั้นแหละ อย่าลังเลที่จะชี้ให้เห็นว่าถ้าฉัน jargony บิต - ฉันจำเป็นต้องเก็บไว้ในใจว่านี่คือถามอูบุนตูและไม่รักษาความปลอดภัยข้อมูล
Gilles 'SO- หยุดความชั่วร้าย'

ดูเหมือนว่าจะมีรูขนาดใหญ่ใน apt - เมื่อคุณapt updateและมีผู้ชายคนหนึ่งอยู่ตรงกลางให้อาหารคุณดัชนีปลอม, apt อย่างมีความสุขจะใช้สิ่งที่คนที่อยู่ตรงกลางให้คุณและเขียนในรายการ / var / lib / apt / นี่ไม่ใช่แค่กับคนชั่วร้ายที่อยู่ตรงกลาง แต่เหมือนกับว่าคุณอยู่ในโรงแรม WiFi และได้รับการเปลี่ยนเส้นทางไปยังหน้าเข้าสู่ระบบหากคุณเรียกใช้apt updateก่อนที่คุณจะเข้าสู่ระบบ / var / lib / apt / รายการของคุณจะถูกทิ้ง ด้วย HTML หน้าแรกของโรงแรม ปลอม! อย่างไรก็ตามการตรวจสอบใบรับรอง TLS ขั้นพื้นฐานจะทำให้เกิดข้อผิดพลาดในทันที
Marius

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

1

APT รีลีสล่าสุดมีการรองรับ TLS ในตัวดังนั้นคุณเพียงแค่ต้องการแทนที่ URL มิเรอร์ที่เก็บแพ็กเกจของคุณด้วยhttps-prefixed สำหรับ Debian มันอาจมีลักษณะเช่นนี้:

deb https://deb.debian.org/debian/ stretch main
deb https://deb.debian.org/debian-security stretch/updates main
deb https://deb.debian.org/debian/ stretch-updates main

สิ่งนี้มีประโยชน์แม้ว่า APT จะมีโปรโตคอลลายเซ็นของตัวเองเพื่อให้แน่ใจว่าแพคเกจจะไม่ถูกแก้ไขเพราะอาจมีข้อบกพร่องใน APT (ดังที่เคยมี: CVE-2016-1252 , CVE-2019-3462 ) โปรโตคอล HTTP / TLS และเลขศูนย์ของพวกเขาจะต้องผ่านการตรวจสอบอย่างเข้มงวดดังนั้นช่องโหว่ที่รุนแรงในช่วง zero-day มีโอกาสน้อยกว่ามากหากคุณเพิ่มชั้นความปลอดภัยนี้


โอ๊ะโอฉันเพิ่งรู้ว่าไซต์นี้ถามอูบุนตู :) ฉันไม่พบโซลูชัน CDN ที่คล้ายกันสำหรับ Ubuntu
Leif Arne Storset

0

ฉันคิดว่าคำถามนี้สามารถใช้คำตอบพร้อมคำแนะนำสำหรับคนธรรมดาดังนั้น ...

APT ยังคงไม่ใช้ HTTPS ตามค่าเริ่มต้นในการสร้างประจำวันของ Ubuntu 19.10 (Eoan) (ซึ่งยังอยู่ระหว่างการพัฒนา) หนึ่งสามารถตรวจสอบสิ่งนี้ได้โดยการตรวจสอบไฟล์ /etc/apt/sources.list และสังเกตว่า URL ต้นทางทั้งหมดใช้โครงร่าง URL "http:"

หากต้องการกำหนดค่าให้ใช้ HTTPS เราสามารถทำตามคำแนะนำต่อไปนี้:

ก่อนอื่นให้ค้นหากระจกเก็บถาวรอย่างเป็นทางการที่เชื่อถือได้ของ Ubuntu ที่รองรับ HTTPS:

  1. นำทางไปยังหน้าเว็บที่เก็บถาวรอย่างเป็นทางการสำหรับเว็บเพจอูบุนตู
  2. ในตารางบนหน้าเว็บนั้นให้ระบุมิเรอร์ที่ (A) โฮสต์ไว้ในเว็บไซต์ที่คุณพิจารณาว่าเชื่อถือได้ (B) มี "http:" มิเรอร์และตัวเลือก (C) ตรงตามพื้นที่ใกล้เคียงทางภูมิศาสตร์ความเร็วของเซิร์ฟเวอร์และการอัปเดต การตั้งค่าความสด
  3. ในตารางบนหน้าเว็บนั้นให้คลิกลิงก์ "http" ของมิเรอร์ที่ระบุในขั้นตอนที่ (2) เพื่อเยี่ยมชมมิร์เรอร์รุ่น "http:"
  4. ในแถบที่อยู่ของเบราว์เซอร์เปลี่ยน "http:" ใน URL หน้าเว็บเป็น "https:" ด้วยตนเอง
  5. นำทางไปยังมิเรอร์อีกครั้ง (ผ่าน URL "https:") เพื่อดูว่าแก้ไขได้หรือไม่

ตัวอย่างเช่นฉันพิจารณาความน่าเชื่อถือของมูลนิธิ Wikimedia ดังนั้นฉันจึงไปที่http://mirrors.wikimedia.org/ubuntu/ mirror URL และต่อมาเปลี่ยนเป็นhttps://mirrors.wikimedia.org/ubuntu/ซึ่งแก้ไขได้สำเร็จ

หากคุณใช้ Firefox (67.0.4) และติดตั้งส่วนขยายHTTPS ทุกที่ (2019.6.27) พร้อมเปิดใช้งานคุณลักษณะ "เข้ารหัสเว็บไซต์ทั้งหมดที่มีสิทธิ์" (ผ่านแผงปุ่มแถบเครื่องมือ) สามารถข้ามขั้นตอน (4) และ (5) ได้ เนื่องจากส่วนขยายจะแก้ไข URL โดยอัตโนมัติเพื่อใช้ HTTPS ซึ่งจะช่วยให้ผู้ใช้สามารถพิจารณาได้ทันทีว่า URL ของรุ่น "https:" นั้นจะแก้ไขได้หรือไม่

สองอัปเดตรายการแหล่งที่มาของ APT:

  1. ดำเนินการคำสั่งsudo cp /etc/apt/sources.list /etc/apt/sources.list.backupเพื่อสำรองข้อมูลรายการแหล่งที่มาการอัปเดตของคุณ
  2. แทนที่ URL ฐานมิรเรอร์ - แสดงไว้ที่นี่เป็นhttps: //mirrors.wikimedia.org— ในคำสั่งsudo sed --in-place --regexp-extended 's http://(us\.archive\.ubuntu\.com|security\.ubuntu\.com) https://mirrors.wikimedia.org g' /etc/apt/sources.listด้วยURL ฐานมิเรอร์ของมิเรอร์ที่คุณต้องการจากนั้นให้รันคำสั่ง

ประการที่สามคุณควรตรวจสอบเนื้อหาของไดเรกทอรี /etc/apt/sources.list.d/ เพื่อหา "http:" ที่อาจเปลี่ยนเป็น "https:" หลังจากติดตั้งซอฟต์แวร์จากภายนอกคลังข้อมูล Ubuntu

ตัวอย่างเช่นแพ็คเกจ Visual Studio Code ของ Microsoft เพิ่มไฟล์ vscode.list ไปยังไดเรกทอรีนี้ซึ่งระบุ URL "http:" เปลี่ยนแบบแผน URL ได้อย่างง่ายดายจาก "http:" เป็น "https:" อนุญาตการอัปเดตผ่าน HTTPS

พิจารณาการสำรองไฟล์ต้นฉบับดังกล่าวก่อนทำการแก้ไข

สุดท้ายทำการปรับปรุงเพื่อให้แน่ใจว่าการปรับปรุงจะทำงานอย่างถูกต้อง:

  1. ดำเนินการsudo apt-get updateคำสั่ง
  2. หากไม่ได้ผลตามที่คาดไว้ให้เรียกคืนไฟล์รายการสำรองข้อมูลที่คุณทำโดยเรียกใช้sudo cp /etc/apt/sources.list.backup /etc/apt/sources.listคำสั่ง

นอกจากนี้ยังเป็นที่น่าสังเกตว่ามีแพ็คเกจapt-transport-httpsเพื่อเพิ่มการสนับสนุน HTTPS ให้กับ APT แต่แพคเกจนี้ไม่จำเป็นต้องเห็นได้ชัดตามหน้าเว็บhttps://launchpad.net/ubuntu/eoan/+package/apt-transport-httpsและไม่ได้รับความจำเป็นตั้งแต่ APT 1.5 apt-cache show apt-transport-httpsตามข้อมูลที่แสดงให้เห็นหลังจากรันคำสั่ง

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