Tại sao không có vận chuyển https cho công cụ apt debian?


45

Với tất cả sự hoang tưởng đi kèm với những tiết lộ của NSA và mọi thứ, tôi tự hỏi tại sao cơ chế cài đặt gói debian không hỗ trợ HTTPS cho việc vận chuyển của nó, mặc định sử dụng nó theo mặc định.

Tôi biết các gói debian có một số loại xác nhận chữ ký bằng GPG, nhưng tôi vẫn không nghĩ sử dụng truyền tải HTTPS thay vì HTTP sẽ quá khó, xem xét điều này quan trọng như thế nào về bảo mật.

Chỉnh sửa: Tôi chủ yếu muốn bảo vệ bản thân khỏi các cuộc tấn công MitM (bao gồm cả việc đánh hơi giao thông), chứ không phải các quản trị viên nhân bản. Các kho lưu trữ HTTP đặt toàn bộ thiết lập hệ thống trên bàn, nếu có ai rình mò lưu lượng truy cập của tôi sẽ đến các máy nhân bản.



không cần thiết ... đó là nội dung công khai ... các gói đã ký
séc

ok vì vậy bạn muốn không cho quản trị viên mạng biết gói nào bạn cài đặt / nâng cấp.
Skaperen 7/03/2015

quản trị viên, hoặc bất kỳ kẻ nghe trộm nào khác.
zaadeh

Câu trả lời:


49

Có. Bạn cần cài đặt gói apt-transport-https. Sau đó, bạn có thể sử dụng các dòng như

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

trong sources.listtập tin của bạn Nhưng thường thì điều đó là không cần thiết, vì dù sao toàn bộ nội dung là công khai và nó bổ sung thêm chi phí mã hóa và độ trễ. Vì bạn không tin tưởng khóa công khai của kẻ tấn công, ngay cả lưu lượng truy cập http cũng an toàn trước các cuộc tấn công của MitM. aptsẽ cảnh báo bạn và không cài đặt các gói khi kẻ tấn công tiêm các gói bị thao túng.

EDIT: Như đã đề cập trong các bình luận, thực sự an toàn hơn khi sử dụng kho TLS . Nghiên cứu cho thấy rằng việc sử dụng apt trên các kho lưu trữ không được mã hóa thực sự có thể gây ra rủi ro bảo mật vì việc vận chuyển HTTP dễ bị tấn công lại.


7
Không, hầu hết các gương không hỗ trợ https. Đơn giản là vì nó không có ý nghĩa gì khi mã hóa loại lưu lượng này. Các gói đang được xác minh bằng mọi cách và thông tin là công khai.
Marco

4
Tôi có thể nghĩ ra một vài lý do tôi vẫn có thể thích tải xuống qua TLS: 1) Tôi có thể quan tâm đến quyền riêng tư của mình khi cài đặt các gói và 2) có thể có lỗi trong mã kiểm tra chữ ký gói mà MITM có thể khai thác.
Jack O'Connor

2
@ JackO'Connor, trong khi sự phản đối đầu tiên về quyền riêng tư là điều dễ hiểu, thì điều thứ hai giống như tôi nói rằng tôi thích các trang web ký nội dung của họ bằng khóa PGP vì có thể có lỗi trong mã TLS. Cả PGP và TLS đều thiết lập niềm tin; bạn không cần cả hai cho điều đó.
Paul Draper

7
@Marco câu trả lời của bạn không chính xác; nhiều tài liệu nghiên cứu đã chỉ ra rằng các kho lưu trữ APT và YUM dễ bị tấn công khi phát lại các kho lưu trữ thông qua HTTP, ngay cả với chữ ký GPG. Các kho lưu trữ chỉ nên được truy cập qua TLS, 100% thời gian.
Joe Damato

6
Đây là bài báo @Joe Damato đề cập - cũng xem câu trả lời của anh ấy ở đây
SauceCode

17

Giả định của bạn là sai: bạn có thể sử dụng tải xuống HTTPS. Bạn chỉ cần tìm một tấm gương hỗ trợ nó và đặt URL của nó vào danh sách các nguồn của bạn. Bạn sẽ cần phải cài đặt apt-transport-httpsgói.

Debian không giúp tải xuống HTTPS dễ dàng vì có rất ít lợi ích. Phân phối gói Debian đã bao gồm một cơ chế để xác minh các gói: tất cả các gói được ký với Gpg . Nếu một người trung gian tích cực chuyển hướng lưu lượng truy cập của bạn đến một máy chủ có các gói bị hỏng, tham nhũng sẽ được phát hiện vì chữ ký GPG sẽ không hợp lệ. Sử dụng GPG chứ không phải HTTPS có lợi thế là nó bảo vệ chống lại nhiều mối đe dọa hơn: không chỉ chống lại người trung gian tích cực trên kết nối người dùng cuối, mà còn chống lại một kẻ lừa đảo hoặc gương bị nhiễm bệnh hoặc các vấn đề khác ở bất kỳ đâu trong chuỗi phân phối gói .

HTTPS cung cấp một lợi thế riêng tư nhỏ ở chỗ nó che khuất các gói bạn tải xuống. Tuy nhiên, người quan sát thụ động vẫn có thể phát hiện lưu lượng giữa máy tính của bạn và máy chủ gói, vì vậy họ sẽ biết rằng bạn đang tải xuống các gói Debian. Họ cũng có thể biết được gói nào bạn đang tải xuống từ kích thước tệp.

Một nơi mà HTTPS sẽ trợ giúp là để tin tưởng bootstrapping, để có được hình ảnh cài đặt hợp lệ. Debian dường như không cung cấp rằng: có tổng kiểm tra phương tiện cài đặt , nhưng chỉ qua HTTP.


Có phiên bản HTTPS của phương tiện cài đặt: cdimage.debian.org/debian-cd
Fedir RYKHTIK

2
Lợi ích rất ít? Còn justi.cz/security/2019/01/22/apt-rce.html thì sao?
Aaron Franke

@AaronFranke Một lỗi cụ thể dễ khai thác với HTTP hơn là với HTTPS có một lợi ích rất nhỏ, vâng. Không như thể HTTP có bề mặt tấn công lớn hơn HTTPS: trên thực tế, chính HTTPS có bề mặt tấn công lớn hơn vì nó liên quan đến nhiều mã hơn. Vì vậy, nó thậm chí không phải là một lợi ích ròng: đó là sự đánh đổi giữa hai rủi ro cận biên.
Gilles 'SO- ngừng trở nên xấu xa'

9

Gần đây tôi đã gặp vấn đề với kho apt của công ty tôi. Vấn đề là nếu chúng ta sử dụng vận chuyển http tiêu chuẩn thì bất kỳ ai khác cũng có thể nhận được gói dễ dàng. Vì Công ty đang đóng gói phần mềm độc quyền của riêng mình và không muốn chia sẻ nó với mọi người, nên việc vận chuyển http trở thành một vấn đề. Không phải là một bi kịch mà là một vấn đề. Có một số cách để giới hạn quyền truy cập vào gói - tường lửa, hạn chế quyền truy cập ở cấp máy chủ web, sử dụng ssh làm phương tiện vận chuyển. Khá dễ dàng để đọc về chủ đề này có thể được tìm thấy ở đây: Hạn chế quyền truy cập vào Kho lưu trữ Debian riêng của bạn

Trong trường hợp của chúng tôi, chúng tôi đã quyết định sử dụng https xác thực + xác thực chứng chỉ ứng dụng khách. Tóm lại, tất cả những gì nó cần là:

  1. Chuẩn bị chứng chỉ tự ký, máy khách và máy chủ (sử dụng easy-rsa);
  2. Định cấu hình máy chủ web phía trước kho lưu trữ chỉ chấp nhận https; Trong trường hợp nginx, nó có thể trông giống như:

    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. Đặt chứng chỉ ứng dụng khách, khóa máy khách và chứng chỉ ca vào / etc / apt / ssl và, trong trường hợp với Ubuntu, hãy thêm tệp 00https vào /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"; };

Hãy nhớ rằng, nếu bạn đang sử dụng chứng chỉ tự ký, điều quan trọng là tắt xác minh máy chủ: Verify-Host "false";Nếu bạn không làm điều này, bạn sẽ gặp lỗi: SSL: certificate subject name (blah-blah-blah) does not match target host name 'example.com'

Và ở đây chúng tôi đi, không có quyền truy cập trái phép vào kho lưu trữ. Vì vậy, đây là điều khá hữu ích và mạnh mẽ.


3
Cảm ơn câu trả lời tuyệt vời. Nhưng tôi nghĩ vấn đề chính vẫn còn đó. HTTPS thực sự nên trở thành giao thức mặc định để chuyển qua các gói web và gói debian nói riêng. Đối số không nên là tại sao HTTPS, nó nên là tại sao không?
zaadeh

1
@aalizadeh, tôi đồng ý với bạn, có phí sử dụng khi sử dụng https, nhưng không có chi phí lớn. Tôi nghĩ, lý do chính tại sao https không phải là vận chuyển mặc định là do một số tổ chức nghiêm cấm mọi lưu lượng được mã hóa (vì họ muốn có thể dính mũi vào những gì nhân viên đang làm trên Internet), điều đó có nghĩa là các kho lưu trữ phải hỗ trợ cả vận chuyển http và https. Có thể có những cân nhắc khác
at0S

1
Sử dụng »Xác minh-Máy chủ" sai ";« là sai, ngay cả với các chứng chỉ tự ký. Bạn cần phải làm cho khách hàng của bạn biết về chứng chỉ máy chủ (chính xác) thay thế.
Axel Beckert

1
Thật vậy, nhưng ở đây khách hàng của tôi chỉ là hệ thống nội bộ. Vì vậy, thay vì tạo ra tất cả các cơ sở hạ tầng pki thích hợp, tôi cắt góc. Và vâng, sau này pki đã được giải quyết đúng đắn và Xác minh-Máy chủ sai; đã được gỡ bỏ. Và vâng, điểm này là hợp lệ.
at0S

1
với ubfox xenial, các gói apt được tìm nạp dưới dạng người dùng không có quyền _apt, bạn có thể vui lòng cập nhật chủ đề này với các chi tiết về cách bạn quản lý hoặc giải quyết các vấn đề về quyền của tệp.
David

7

Lưu ý rằng vì các lỗ hổng như

https://bugs.launchpad.net/ubfox/+source/apt/+orms/1647467

... Việc cắt ngang ký hiệu InRelease, có lẽ nên cấu hình HTTPS bằng mọi cách.


1
Và bây giờ cũng là cái này: mirror.fail AKA usn.ub Ubuntu.com/3746-1 AKA CVE-2018-0501. Ký InRelease là không đủ . "Nhưng việc chuyển tất cả các gương sang HTTPS sẽ mất thời gian và sự phối hợp!". Đúng. Bắt đầu bây giờ. Đây sẽ không phải là thất bại InRelease cuối cùng.
Royce Williams

1
Đây là một ví dụ khác, từ một hệ sinh thái khác - Alps. Hệ thống quản lý gói của nó không sử dụng HTTPS theo mặc định và chỉ dựa vào việc ký để xác minh tính toàn vẹn của gói ... và xác minh đó có lỗi khai thác từ xa vào tháng 9 năm 2018: justi.cz/security/2018/09/13/alpine- apk-rce.html Alpine nên bắt đầu di chuyển hiện nay việc sử dụng HTTPS theo mặc định.
Royce Williams

4

Đối với trường hợp sử dụng "ẩn danh", cũng có trường hợp này apt-transport-torcho phép bạn đặt các URI như tor+http://trong các tệp nguồn.list. Điều này bảo vệ ẩn danh tốt hơn nhiều so với việc mã hóa kết nối đến máy nhân bản của bạn.

Ví dụ, một người quan sát cục bộ vẫn biết rằng bạn đang cập nhật hoặc cài đặt phần mềm ngay cả với HTTPS và có thể đưa ra một số dự đoán chính xác về những gì bạn đang làm (và thậm chí cả gói nào, dựa trên kích thước).

Debian cung cấp kho lưu trữ APT thông qua Tor "Dịch vụ hành tây" để bạn có thể nhận được mã hóa đầu cuối (tương tự TLS) mà không cần phải tin vào hệ thống tên miền. Xem hành tây.debian.org cho tất cả các dịch vụ Debian có sẵn theo cách này. Kho lưu trữ FTP Debian chính là tạivwakviie2ienjx6t.onion

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.