yum cài đặt http - điều này có an toàn không?


10

Tôi không quen lắm với việc sử dụng yum để cài đặt các gói. Ở kiếp trước tôi đã dùng apt.

Hiện tại, tôi đang xem một số hướng dẫn để chạy

# yum install http://example.com/package.rpm

mà dường như sẽ đăng ký vào một kho lưu trữ cụ thể, từ đó các gói khác có thể được tải xuống. Đây có phải là một điều an toàn để làm?

Để so sánh, tôi biết rằng các gói apt có chữ ký gpg có nghĩa là tải xuống qua http không phải là vấn đề. Theo mô tả ở đây . Và khi tải xuống các gói bên ngoài kho chính bằng apt, bạn có thể tự thêm khóa gpg để apt chấp nhận, để đảm bảo rằng mọi gói không chuẩn đều có cùng nguồn đáng tin cậy.

Nếu tôi chạy lệnh trên, yum sẽ yêu cầu tôi chấp nhận khóa gpg trước khi nó bắt đầu cài đặt mọi thứ, hoặc nó có thể cài đặt bất cứ thứ gì không?

Trong trường hợp có liên quan, /etc/yum.conftập tin của tôi chứa gpgcheck=1bên trong [main]phần.

Câu trả lời:


11

Có một chút để giải thích với câu hỏi của bạn.

Đầu tiên, điều quan trọng là phải hiểu cách thức YUMrpmlàm việc cùng nhau:

  1. RPM là một định dạng gói và có một công cụ dòng lệnh có tên tương tự được đặt tên rpmđể cài đặt các gói RPM riêng lẻ. Bạn có thể nghĩ rpmcông cụ dòng lệnh tương tự như dpkgcông cụ dòng lệnh khi cả hai cài đặt các gói riêng lẻ mà không phụ thuộc vào chúng.
  2. yumlà một chương trình cấp cao hơn, cài đặt gói RPM và các phụ thuộc của nó. Bạn có thể nghĩ yumlệnh tương tự apt-getnhư cả hai có thể cài đặt một gói và tất cả các phụ thuộc của nó.
  3. Khi bạn chạy, yum installbạn nên sử dụng tên gói, không phải URL. Ví dụ : yum install package, tương tự như cách bạn sẽ chạy : apt-get install package.
  4. Nếu bạn có một URL gói, bạn có thể chạy rpm -i https://url, nhưng nếu bạn không cài đặt các phụ thuộc của gói, bạn sẽ cần cài đặt từng cái một với rpm -i(đau đớn) hoặc với yummột kho lưu trữ được định cấu hình.

Bây giờ, theo GPG, có một số điều cần hiểu áp dụng cho cả hệ thống đóng gói Debian và RPM, nhưng điều quan trọng nhất cần hiểu là:

  1. Cả hai hệ thống đều có 2 bộ chữ ký GPG: chữ ký GPG trên chính các gói và chữ ký GPG trên kho.
  2. Các gói Debian không được kiểm tra chữ ký GPG của chúng và các gói chính thức từ cả kho dự án Ubuntu và Debian không được ký GPG.
  3. Cả hai hệ thống đều dễ bị tấn công bởi một loạt các cuộc tấn công phát lại GPG khi được sử dụng trên HTTP văn bản rõ ràng; bạn hoàn toàn nên cài đặt 100% các gói của mình thông qua HTTPS và không phải là văn bản HTTP đơn giản nếu có thể.

Cho đến nay, chữ ký RPM và YUM GPG:

  1. Trước tiên, bạn có thể chỉ định đường dẫn hoặc URL tới khóa GPG trong tệp cấu hình bằng: gpgkey=https://example/gpg.keyhoặc gpgkey=/usr/share/example/gpg.key. Bạn có thể chỉ định nhiều khóa GPG, nếu cần nhiều hơn 1.
  2. Thứ hai, có hai lựa chọn: gpgcheck=1repo_gpgcheck=1. Tùy chọn đầu tiên gây ra yum installđể xác minh chữ ký GPG trên chính gói, tùy chọn thứ hai xác minh chữ ký GPG của kho lưu trữ. Tốt nhất, bạn nên sử dụng cả hai, nhưng nhiều kho lưu trữ không được cấu hình đúng để hỗ trợ cả hai.
  3. Lần đầu tiên bạn chạy yum install, yumsẽ cố gắng nhập các khóa GPG được liệt kê tại gpgkeynếu chúng chưa được nhập. Bạn sẽ được nhắc nhở và yêu cầu chấp nhận hoặc từ chối.
  4. Bạn phải pygpgmecài đặt gói trên hệ thống của mình để chữ ký GPG được xác minh. Trên hầu hết các phiên bản gần đây của RHEL và CentOS pygpgmeđều được cài đặt tự động phụ thuộc yum, nhưng bạn nên xác minh rằng nó đã được cài đặt trên hệ thống của bạn.
  5. Không có tương đương apt-transport-https, yumcó thể nói qua HTTPS, nhưng bạn nên đảm bảo rằng phiên bản yumbạn đang sử dụng có sslverifytùy chọn mặc định được bật; một số phiên bản yumkhông. Nếu phiên bản của bạn không có, bạn nên đặt nó thành kích hoạt. Điều quan trọng là phải xác minh chứng chỉ SSL.

Ngay cả với chữ ký GPG trên cả gói và kho, kho vẫn dễ bị tấn công; bạn nên truy cập kho của bạn qua HTTPS nếu có thể. Giải thích ngắn gọn về một cuộc tấn công là kẻ tấn công độc hại có thể chụp nhanh siêu dữ liệu của kho lưu trữ và chữ ký GPG được liên kết tại một thời điểm cụ thể và phát lại siêu dữ liệu và chữ ký đó cho máy khách yêu cầu nó, ngăn máy khách nhìn thấy các gói cập nhật. Vì siêu dữ liệu không được chạm vào, chữ ký GPG sẽ hợp lệ. Kẻ tấn công sau đó có thể sử dụng khai thác chống lại một lỗi đã biết trong phần mềm chưa được cập nhật để tấn công máy. Bạn có thể đọc thêm về các cuộc tấn công vào các trình quản lý gói trong bài viết này .

Tôi đã viết hai bài đăng trên blog về GPG và YUM / vòng / phút cũng như GPG và APT .

Vui lòng để lại một bình luận nếu bạn có thêm câu hỏi mà tôi có thể trả lời; quản lý gói là cực kỳ khó để làm chính xác.


Đẹp. Có rất nhiều thứ để hấp thụ ở đây. Một câu hỏi cụ thể: "Khi bạn chạy, yum installbạn nên sử dụng tên gói, không phải URL." - Đồng ý, đây là những gì tôi thường làm với apt. Nhưng được cung cấp URL, bạn sẽ làm gì? Có lẽ điều này là hiển nhiên, nhưng bạn có thể chỉ cần thêm repo thủ công http://example.comvà sau đó làm gì yum install package?
SauceCode

"Cả hai hệ thống đều dễ bị tấn công bởi một loạt các cuộc tấn công phát lại GPG khi được sử dụng trên HTTP văn bản rõ ràng". Thú vị - bạn có thể chỉ ra bất kỳ đọc thêm ở đây? Và có một yum tương đương apt-transport-https?
SauceCode

@SauceCode Tôi đã cập nhật câu trả lời của mình để trả lời các câu hỏi của bạn và liên kết đến một bài báo có thêm thông tin bảo mật của người quản lý gói.
Joe Damato

Lưu ý rằng các aptkho lưu trữ hiện có ngày hợp lệ trong các Releasetệp của chúng , điều này giới hạn thời gian tấn công phát lại thời gian vẫn còn hiệu lực. (Nếu tôi nhớ chính xác thì điều này đã được thực hiện do kết quả của bài báo được liên kết trong câu trả lời.) Nhưng sử dụng TLS là một giải pháp tốt hơn!
Stephen Kitt

@StephenKitt Có, Valid-Untilđã được thêm vào để ngăn chặn các cuộc tấn công phát lại. tuy nhiên, thật vô lý khi yêu cầu người dùng kho lưu trữ tải xuống siêu dữ liệu cho một repo mới và kiểm tra thủ công để đảm bảo rằng tiêu đề có mặt. Dễ dàng hơn nhiều để chỉ bảo mọi người luôn sử dụng TLS.
Joe Damato
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.