เหตุใดจึงไม่มีการส่งผ่าน https สำหรับเครื่องมือเดเบียน apt


45

ด้วยความหวาดระแวงทั้งหมดที่มาพร้อมกับการเปิดเผยของ NSA และทุกอย่างฉันสงสัยว่าทำไมกลไกการติดตั้งแพคเกจเดเบียนไม่รองรับ HTTPS สำหรับการขนส่ง

ฉันรู้ว่าแพ็คเกจ debian มีการตรวจสอบลายเซ็นบางอย่างโดยใช้ GPG แต่ฉันก็ยังไม่คิดว่าการใช้ HTTPS transport แทน HTTP จะยากเกินไปพิจารณาว่าการรักษาความปลอดภัยนั้นสำคัญขนาดไหน

แก้ไข: ส่วนใหญ่ฉันต้องการป้องกันตัวเองจากการโจมตีของ MitM (รวมถึงการสูดดมการจราจร) ไม่ใช่ผู้ดูแลระบบมิรเรอร์เดเบียน ที่เก็บ HTTP วางการตั้งค่าระบบทั้งหมดไว้บนโต๊ะหากใครก็ตามที่สอดส่องการรับส่งข้อมูลของฉันจะไปยังเดเบียนมิเรอร์



ไม่จำเป็นต้องใช้ ... มันเป็นเนื้อหาสาธารณะ ... แพ็คเกจได้ลงนามใน checksums แล้ว
Skaperen

ตกลงดังนั้นคุณจึงไม่ต้องการให้ผู้ดูแลระบบเครือข่ายทราบว่าคุณติดตั้ง / อัพเกรดแพ็คเกจใด
Skaperen

ผู้ดูแลระบบหรือผู้ดักฟังอื่น ๆ
zaadeh

คำตอบ:


49

นั่นคือ apt-transport-httpsคุณต้องติดตั้งแพคเกจ จากนั้นคุณสามารถใช้บรรทัดเช่น

 deb https://some.server.com/debian stable main

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

แก้ไข: ตามที่กล่าวไว้ในความคิดเห็นแน่นอนว่าปลอดภัยกว่าการใช้ที่เก็บTLS การวิจัยแสดงให้เห็นว่าการใช้ apt ในที่เก็บที่ไม่ได้เข้ารหัสสามารถสร้างความเสี่ยงด้านความปลอดภัยได้อย่างแท้จริงเนื่องจากการส่งผ่าน HTTP นั้นมีความเสี่ยงต่อการโจมตีซ้ำ


7
ไม่มิเรอร์ส่วนใหญ่ไม่สนับสนุน https เพียงเพราะมันไม่สมเหตุสมผลที่จะเข้ารหัสการรับส่งข้อมูลประเภทนี้ แพคเกจจะถูกตรวจสอบต่อไปและข้อมูลที่เป็นสาธารณะ
Marco

4
ฉันคิดว่ามีเหตุผลสองสามข้อที่ฉันยังอาจต้องการดาวน์โหลดผ่าน TLS: 1) ฉันอาจสนใจความเป็นส่วนตัวของฉันเมื่อติดตั้งแพ็คเกจและ 2) อาจมีข้อบกพร่องในรหัสตรวจสอบลายเซ็นของแพคเกจซึ่ง MITM สามารถใช้ประโยชน์ได้
Jack O'Connor

2
@ JackO'Connor ในขณะที่การคัดค้านครั้งแรกเกี่ยวกับความเป็นส่วนตัวนั้นเป็นเรื่องที่เข้าใจได้อย่างที่สองก็คือการพูดว่าฉันชอบเว็บไซต์ที่เซ็นชื่อเนื้อหาด้วยคีย์ PGP เพราะอาจมีข้อบกพร่องในรหัส TLS ทั้ง PGP และ TLS สร้างความเชื่อถือ คุณไม่ต้องการทั้งสองอย่าง
พอลเดรเปอร์

7
@Marco คำตอบของคุณไม่ถูกต้อง; งานวิจัยจำนวนมากแสดงให้เห็นว่าทั้งที่เก็บ APT และ YUM มีความเสี่ยงที่จะถูกโจมตีซ้ำเมื่อเข้าถึงที่เก็บข้อมูลผ่าน HTTP แม้ว่าจะมีลายเซ็นของ GPG ก็ตาม ควรเข้าถึงที่เก็บข้อมูลผ่าน TLS เท่านั้น 100% ของเวลา
Joe Damato

6
นี่คือกระดาษ @Joe Damato ที่อ้างถึง - ดูคำตอบของเขาที่นี่ด้วย
SauceCode

17

สมมติฐานของคุณผิด: คุณสามารถใช้การดาวน์โหลด HTTPS คุณเพียงแค่ต้องค้นหามิเรอร์ที่รองรับและใส่ URL ในรายการแหล่งที่มาของคุณ คุณจะต้องติดตั้งapt-transport-httpsแพ็คเกจ

Debian ไม่ทำให้การดาวน์โหลด HTTPS เป็นเรื่องง่ายเพราะมีประโยชน์น้อยมาก แพคเกจการกระจาย Debian อยู่แล้วรวมถึงกลไกในการตรวจสอบแพคเกจ: แพคเกจทั้งหมดจะเซ็นสัญญากับจีพีจี หากมีการใช้งาน man-in-the-middle เปลี่ยนเส้นทางการรับส่งข้อมูลของคุณไปยังเซิร์ฟเวอร์ที่มีแพคเกจที่เสียหายการตรวจสอบความเสียหายจะเกิดขึ้นเนื่องจากลายเซ็น GPG ไม่ถูกต้อง การใช้ GPG แทนที่จะเป็น HTTPS มีข้อได้เปรียบที่จะช่วยป้องกันภัยคุกคามอื่น ๆ : ไม่เพียง แต่ใช้งานกับคนที่อยู่ตรงกลางในการเชื่อมต่อผู้ใช้ปลายทาง แต่ยังต่อต้านกระจกเงาที่ติดเชื้อหรือปัญหาอื่น ๆ ในห่วงโซ่การกระจายแพ็คเกจ .

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

ที่เดียวที่ HTTPS ช่วยได้คือการไว้วางใจในการ bootstrapping เพื่อให้ได้อิมเมจการติดตั้งที่ใช้ได้จริง Debian ดูเหมือนจะไม่ได้ให้สิ่งนั้น: มี checksums ของสื่อการติดตั้งแต่ใช้ผ่าน HTTP เท่านั้น


มีสื่อการติดตั้งเวอร์ชัน HTTPS: cdimage.debian.org/debian-cd
Fedir RYKHTIK

2
ประโยชน์น้อยมาก? สิ่งที่เกี่ยวกับjusti.cz/security/2019/01/22/apt-rce.html ?
Aaron Franke

@AaronFranke ข้อผิดพลาดเฉพาะอย่างหนึ่งซึ่งง่ายต่อการใช้ประโยชน์จาก HTTP มากกว่าด้วย HTTPS นับเป็นประโยชน์น้อยมากใช่ ไม่ใช่ว่า HTTP มีพื้นผิวการโจมตีที่ใหญ่กว่า HTTPS: อันที่จริง HTTPS นั้นมีพื้นผิวการโจมตีที่ใหญ่กว่าเนื่องจากมันเกี่ยวข้องกับรหัสมากกว่า ดังนั้นมันจึงไม่ได้เป็นประโยชน์สุทธิเลย: เป็นการแลกเปลี่ยนระหว่างความเสี่ยงเล็กน้อย
Gilles 'หยุดความชั่วร้าย' ใน

9

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

ในกรณีของเราเราตัดสินใจที่จะใช้การขนส่ง https + การตรวจสอบใบรับรองลูกค้า สั้น ๆ ก็คือ:

  1. เตรียมใบรับรองที่ลงนามด้วยตนเองไคลเอนต์และเซิร์ฟเวอร์ (โดยใช้ easy-rsa)
  2. กำหนดค่าเว็บเซิร์ฟเวอร์ที่พื้นที่เก็บข้อมูลด้านหน้ายอมรับเฉพาะ https; ในกรณีของ nginx อาจมีลักษณะดังนี้:

    server {
    
      listen 443;
    
      root /path/to/public;
      server_name secure_repo;
    
      ssl on;
      ssl_certificate /etc/nginx/ssl/server.crt;
      ssl_certificate_key /etc/nginx/ssl/server.key;
    
      ssl_session_timeout 5m;
    
      ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
      ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:;
    
      ssl_prefer_server_ciphers on;
      ssl_client_certificate /etc/nginx/ssl/ca.crt;
      ssl_verify_client on;
    
      location / {
         autoindex on;
      }
    }
    
  3. ใส่ใบรับรองไคลเอ็นต์รหัสลูกค้าและใบรับรอง ca ไปยัง / etc / apt / ssl และในกรณีที่ใช้ Ubuntu ให้เพิ่มไฟล์ 00https ไปที่ /etc/apt/apt.conf.d:

    Debug::Acquire::https "true"; Acquire::https::example.com { Verify-Peer "true"; Verify-Host "false"; CaInfo "/etc/apt/ssl/ca.crt"; SslCert "/etc/apt/ssl/client.crt"; SslKey "/etc/apt/ssl/client.key"; };

โปรดทราบว่าหากคุณใช้ใบรับรองที่ลงนามเองเป็นสิ่งสำคัญที่จะต้องปิดการตรวจสอบโฮสต์: Verify-Host "false";หากคุณไม่ทำเช่นนี้คุณจะพบข้อผิดพลาด: SSL: certificate subject name (blah-blah-blah) does not match target host name 'example.com'

และที่นี่เราไปไม่มีการเข้าถึงพื้นที่เก็บข้อมูลอีกต่อไปโดยไม่ได้รับอนุญาต ดังนั้นสิ่งนี้ค่อนข้างมีประโยชน์และทรงพลัง


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

1
@aalizadeh ฉันเห็นด้วยกับคุณมีค่าใช้จ่ายเมื่อใช้ https แต่ไม่มีค่าใช้จ่ายมาก ฉันคิดว่าสาเหตุหลักที่ทำให้ https ไม่ใช่การขนส่งเริ่มต้นคือบางองค์กรห้ามการรับส่งข้อมูลที่เข้ารหัสไว้อย่างชัดเจน (เนื่องจากพวกเขาต้องการติดจมูกในสิ่งที่พนักงานทำบนอินเทอร์เน็ต) ซึ่งหมายความว่าที่เก็บต้องสนับสนุน ทั้ง HTTP และ https transports อาจมีข้อควรพิจารณาอื่น ๆ
at0S

1
การใช้» Verify-Host "false"; «ผิดแม้จะมีใบรับรองที่ลงชื่อเอง คุณต้องทำให้ลูกค้าของคุณตระหนักถึงใบรับรองเซิร์ฟเวอร์ (ถูกต้อง) แทน
Axel Beckert

1
แน่นอน แต่ที่นี่ลูกค้าของฉันเป็นเพียงระบบภายใน ดังนั้นแทนที่จะสร้างโครงสร้างพื้นฐาน pki ที่เหมาะสมทั้งหมดฉันตัดมุม และใช่ในภายหลังใน pki ได้รับการตัดสินอย่างถูกต้องและ Verify-Host เป็นเท็จ ถูกลบ และใช่ประเด็นนั้นถูกต้อง
at0S

1
ด้วย ubuntu xenial แพ็คเกจ apt จะถูกเรียกใช้ในฐานะผู้ใช้ที่ไม่ได้รับสิทธิพิเศษ _apt คุณสามารถอัปเดตเธรดนี้พร้อมรายละเอียดเกี่ยวกับวิธีจัดการหรือแก้ไขปัญหาการอนุญาตไฟล์
David

7

โปรดทราบว่าเนื่องจากช่องโหว่เช่น

https://bugs.launchpad.net/ubuntu/+source/apt/+bug/1647467

... ซึ่งหลีกเลี่ยงการลงชื่อเข้าใช้อย่างไม่ถูกต้องอาจเป็นการดีที่จะกำหนดค่า HTTPS


1
และตอนนี้อันนี้ก็เช่นกัน: mirror.fail AKA usn.ubuntu.com/3746-1 AKA CVE-2018-0501 InRelease ลงนามไม่เพียงพอ "แต่การย้ายมิเรอร์ทั้งหมดไปยัง HTTPS จะต้องใช้เวลาและการประสานงาน!" ใช่. เริ่มเลย นี่จะไม่ใช่ความล้มเหลวครั้งสุดท้ายที่เกิดขึ้น
Royce Williams

1
นี่เป็นอีกตัวอย่างหนึ่งจากระบบนิเวศที่แตกต่าง - อัลไพน์ ระบบการจัดการแพ็คเกจไม่ได้ใช้ HTTPS เป็นค่าเริ่มต้นและอาศัย แต่เพียงผู้เดียวในการลงนามเพื่อยืนยันความถูกต้องของแพคเกจ ... และการตรวจสอบนั้นมีข้อผิดพลาดที่หาประโยชน์ได้จากระยะไกลในเดือนกันยายน 2561: justi.cz/security/2018/09/13/alpine- apk-rce.htmlอัลไพน์ควรเริ่มเคลื่อนที่ในขณะนี้เพื่อใช้ HTTPS ตามค่าเริ่มต้น
Royce Williams

4

สำหรับกรณีใช้งาน "anonymity" นอกจากนี้ยังมีกรณีapt-transport-torที่อนุญาตให้คุณใส่ URIs เหมือนtor+http://ในไฟล์ source.list นี่เป็นการป้องกันตัวตนที่ดีกว่าการเข้ารหัสการเชื่อมต่อกับมิเรอร์ของคุณ

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

Debian ให้บริการที่เก็บ APT ผ่าน Tor "บริการ Onion" เพื่อให้คุณได้รับการเข้ารหัสจากต้นทางถึงปลายทาง (คล้ายกับ TLS) โดยไม่ต้องเชื่อถือระบบชื่อโดเมน ดูonion.debian.orgสำหรับบริการ Debian ทั้งหมดที่มีให้ในลักษณะนี้ ที่เก็บหลัก Debian FTP อยู่ที่vwakviie2ienjx6t.onion

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