Làm cách nào để tải xuống an toàn và gpg xác minh gói nguồn Debian?


13

Tôi cần các gói cụ thể (nguồn hoặc nhị phân) từ Debian.

Tôi có thể tải xuống gói bằng apt-get không?

Làm cách nào tôi có thể thêm kho lưu trữ Debian vào nguồn.list của mình để nó chỉ được sử dụng trên cơ sở từng trường hợp? Không làm rối hệ thống của tôi bằng cách sử dụng toàn bộ kho lưu trữ Debian?

Làm cách nào tôi có thể lấy khóa gpg cho kho lưu trữ Debian để đảm bảo gói được ký bởi kho lưu trữ Debian?

(Xin đừng nói với tôi rằng hệ thống có thể bị hỏng. Tôi biết điều đó và không thể quan tâm hơn, vì tôi có thể dễ dàng khôi phục ảnh chụp nhanh VM.)


Một phần của giải pháp có thể là gói debian-archive-keyring bao gồm /usr/share/keyrings/debian-archive-keyring.gpg.
James Mitch

Một phần khác của giải pháp có thể là Apt-Pinning: jaqque.sbih.org/kplug/apt-pinning.html
James Mitch

Câu trả lời này của tôi giúp bạn? Askubfox.com/questions/263705/ trộm
andol

Câu trả lời:


14

Có một số câu hỏi mà tôi sẽ trả lời riêng:

Làm thế nào để tải xuống (và không cài đặt) gói nhị phân riêng lẻ?

apt-get có một tùy chọn chỉ tải xuống gói:

-d  Download only - do NOT install or unpack archives

Bạn sẽ tìm thấy gói tải về /var/cache/apt/archives/. Trong trường hợp này, bạn sẽ phải thêm một cấu hình danh sách nguồn mới vào apt.

Làm thế nào để tải gói nguồn cá nhân?

apt-get source <package>

hoặc khi bạn biết vị trí của tệp .dsc:

dget http://http.debian.net/debian/pool/main/k/knot/knot_1.2.0~rc3-1.dsc

Cả hai phương pháp đều xác minh chữ ký trên các tập tin

Làm cách nào để ghim các nguồn.list aka làm thế nào để tôi không làm hỏng cài đặt của mình?

Bạn đã chỉ đến trang mô tả cơ bản cho Ghim APT và tôi chỉ nói thêm rằng bạn có thể muốn đọc apt_preferences cũng có các ví dụ hay để thực hiện những điều bạn cần. Đặc biệt hãy xem phần 'Theo dõi ổn định' trong EXAMPLES, vì nó mô tả một cái gì đó rất gần với nhu cầu của bạn:

Có một lệnh hữu ích khi chơi với nhiều nguồn và Ghim APT:

# apt-cache policy knot
knot:
  Installed: 1.1.3-1~bpo60+1
  Candidate: 1.2.0~rc3-1~bpo60+1
  Version table:
     1.2.0~rc3-1~bpo60+1 0
        500 http://deb.knot-dns.cz/debian/ squeeze/main amd64 Packages
 *** 1.1.3-1~bpo60+1 0
        100 /var/lib/dpkg/status
     1.0.5-1~bpo60+1 0
        500 http://ppa.sury.org/debian/ squeeze/main amd64 Packages

Điều này cho thấy phiên bản đã cài đặt là 1.1.3-1 ~ bpo60 + 1 và ứng cử viên là 1.2.0 ~ rc3-1 ~ bpo60 + 1, sẽ được cài đặt vào lần tiếp theo apt-get upgrade . Ngoài ra có một số phiên bản cũ hơn có sẵn từ một kho lưu trữ khác.

Làm cách nào để tải khóa lưu trữ Debian?

Khóa lưu trữ Debian được xuất bản trên ftp-master . Bạn sẽ cần nhập khóa vào khóa gpg của mình:

$ gpg --import archive-key-6.0.asc 
gpg: key 473041FA: public key "Debian Archive Automatic Signing Key (6.0/squeeze) <ftpmaster@debian.org>" imported
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0  valid:   9  signed:  31  trust: 0-, 0q, 0n, 0m, 0f, 9u
gpg: depth: 1  valid:  31  signed:  38  trust: 25-, 0q, 0n, 1m, 5f, 0u
gpg: depth: 2  valid:  21  signed:  31  trust: 19-, 0q, 0n, 0m, 2f, 0u
gpg: depth: 3  valid:   3  signed:  12  trust: 2-, 0q, 0n, 0m, 1f, 0u
gpg: depth: 4  valid:   1  signed:   8  trust: 1-, 0q, 0n, 0m, 0f, 0u
gpg: next trustdb check due at 2013-09-22

Sau đó, bạn sẽ phải kiểm tra chữ ký của nó:

$ gpg --list-sig 473041FA
pub   4096R/473041FA 2010-08-27 [expires: 2018-03-05]
uid                  Debian Archive Automatic Signing Key (6.0/squeeze) <ftpmaster@debian.org>
sig 3        473041FA 2010-08-27  Debian Archive Automatic Signing Key (6.0/squeeze) <ftpmaster@debian.org>
sig          7E7B8AC9 2010-08-27  Joerg Jaspert <joerg@debian.org>
sig     P    B12525C4 2010-08-27  [User ID not found]
sig          D0EC0723 2010-08-27  [User ID not found]
sig          8AEA8FEE 2010-08-27  [User ID not found]
sig          A3AE44A4 2010-08-28  [User ID not found]
sig          00D8CD16 2010-08-28  Alexander Reichle-Schmehl <alexander@reichle.schmehl.info>
sig          CD15A883 2010-08-28  [User ID not found]
sig          672C8B12 2010-08-28  [User ID not found]
sig 2        C4CF8EC3 2010-08-28  [User ID not found]
sig 2        D628A5CA 2010-08-28  [User ID not found]

Và theo dõi các khóa GPG riêng lẻ cho các nhà phát triển Debian bằng cách theo dõi thủ công hoặc kiểm tra tại dự án Thống kê khóa PGP . Và trừ khi có một chuỗi từ khóa PGP / GPG của bạn đến kho lưu trữ khóa Debian, đôi khi bạn sẽ phải thực hiện một bước nhảy vọt về niềm tin.

Cách tải xuống và xác minh các gói riêng lẻ bằng tay

Vì vậy, cách tiếp cận khác phức tạp hơn, bởi vì các gói deb không được ký riêng lẻ mà chỉ có Releasetệp được ký. Do đó, bạn sẽ cần phải tải xuống và xác minh chữ ký trên ReleasePackagescác tệp cùng với gói riêng lẻ.

Tôi sẽ thêm một ví dụ sẽ rõ ràng hơn.

Hãy tưởng tượng bạn muốn tải xuống gói Debian cho DNS DNS từ PPA chính thức của nó cho Ubuntu chính xác trên kiến ​​trúc amd64.

Bạn sẽ phải nhấp qua các thư mục và tìm các tệp này:

wget http://ppa.launchpad.net/cz.nic-labs/knot-dns/ubuntu/dists/precise/Release
wget http://ppa.launchpad.net/cz.nic-labs/knot-dns/ubuntu/dists/precise/Release.gpg
wget http://ppa.launchpad.net/cz.nic-labs/knot-dns/ubuntu/dists/precise/main/binary-amd64/Packages
wget http://ppa.launchpad.net/cz.nic-labs/knot-dns/ubuntu/pool/main/k/knot/knot_1.2.0~rc3-1~precise+1_amd64.deb

Bước tiếp theo sẽ là xác minh chữ ký trên Releasetệp:

$ gpg --verify Release.gpg Release
gpg: Signature made Fri 01 Mar 2013 07:14:38 PM CET using RSA key ID F9C59A45
gpg: Good signature from "Launchpad Datové schránky"
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 5246 3488 670E 69A0 9200  7C24 F233 1238 F9C5 9A45

Tất nhiên, bạn sẽ cần xác minh khóa theo một số phương tiện khác (như khóa bảo trì Debian / Ubuntu, kiểm tra nó từ launchpad, v.v.)

Khi bạn đã xác minh chữ ký chính xác trong Releasetệp, bạn có thể chuyển sang bước tiếp theo - xác minh tệp Gói.

sha256sum Packages
c96a524398cf6e9db033c8299974fe324eba47cc8190efec6495c74e251330ad  Packages
$ grep c96a524398cf6e9db033c8299974fe324eba47cc8190efec6495c74e251330ad Release
 c96a524398cf6e9db033c8299974fe324eba47cc8190efec6495c74e251330ad             3379 main/binary-amd64/Packages

Như bạn có thể thấy, chữ ký có thể được tìm thấy trong Releasetệp đã ký , do đó chúng tôi đã xác minh tính toàn vẹn củaPackages tệp bằng cách tính toán và so sánh dấu vân tay SHA-256 của nó.

Bước cuối cùng là tương tự. Bạn cần tính toán và so sánh dấu vân tay của gói riêng lẻ:

$ sha1sum knot_1.2.0~rc3-1~precise+1_amd64.deb 
8b34078e9bfef7aa818b2f926a28838b0ede9f43  knot_1.2.0~rc3-1~precise+1_amd64.deb
$ grep -A 13 "Package: knot$" Packages | grep "^SHA1: "
SHA1: 8b34078e9bfef7aa818b2f926a28838b0ede9f43

Tại thời điểm này, chúng tôi đã xâu chuỗi an toàn gói vào Releasetệp đã ký . Vì vậy, nếu bạn tin rằng chữ ký trên Releasetệp, bạn có thể chắc chắn rằng gói đã được tải xuống nguyên vẹn.

Bạn có thể đọc thêm trong bài viết APT bảo mật tại Debian Wiki.


Bạn có thể vui lòng giải thích lý do tại sao gpglệnh không cần root private? Nó được coi là một công cụ hành chính.
Sopalajo de Arrierez

1
@SopalajodeArrierez Nó không phải là một công cụ quản trị; bạn có thể đọc thêm về GnuPG tại đây: gnupg.org
oerdnj
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.