Jak bezpiecznie pobrać i zweryfikować gpg pakiet źródłowy Debiana?


13

Potrzebuję określonych pakietów (źródłowych lub binarnych) z Debiana.

Czy mogę pobrać pakiet za pomocą apt-get?

Jak mogę dodać repozytorium Debian do mojej strony sources.list, aby można było z niego korzystać tylko na podstawie poszczególnych przypadków? Bez zepsucia mojego systemu przy użyciu całego repozytorium Debiana?

Jak mogę uzyskać klucz gpg do repozytorium Debiana, aby mieć pewność, że pakiet został podpisany przez archiwum Debiana?

(Nie mów mi, że system może się zepsuć. Jestem tego świadomy i nie obchodzi mnie to, ponieważ mogę łatwo przywrócić migawkę maszyny wirtualnej.)


Częścią rozwiązania może być pakiet debian-archive-keyring, który zawiera /usr/share/keyrings/debian-archive-keyring.gpg.
James Mitch

Inną częścią rozwiązania może być Apt-Pinning: jaqque.sbih.org/kplug/apt-pinning.html
James Mitch

Moja odpowiedź ci pomoże? askubuntu.com/questions/263705/…
andol

Odpowiedzi:


14

Na kilka pytań odpowiem indywidualnie:

Jak pobrać (a nie zainstalować) indywidualny pakiet binarny?

apt-get ma opcję pobrania tylko pakietu:

-d  Download only - do NOT install or unpack archives

Pobrany pakiet znajdziesz w /var/cache/apt/archives/. W takim przypadku będziesz musiał dodać nową konfigurację listy źródeł do apt.

Jak pobrać indywidualny pakiet źródłowy?

apt-get source <package>

lub gdy znasz lokalizację pliku .dsc:

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

Oba podejścia weryfikują podpis na plikach

Jak przypiąć source.list aka, jak nie zepsuć mojej instalacji?

Wskazałeś już na stronę podstawowego opisu przypinania APT , a chciałbym tylko dodać, że prawdopodobnie chcesz przeczytać stronę apt_preferences, która zawiera również ładne przykłady do osiągnięcia potrzebnych rzeczy. Szczególnie zobacz sekcję „Śledzenie stabilne” w PRZYKŁADACH, ponieważ opisuje ona coś bardzo zbliżonego do twoich potrzeb:

Przy odtwarzaniu z wieloma źródłami i przypinaniu APT przydatne jest przydatne polecenie:

# 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

To pokazuje, że zainstalowana wersja to 1.1.3-1 ~ bpo60 + 1, a kandydat to 1.2.0 ~ rc3-1 ~ bpo60 + 1, która zostanie zainstalowana w następnym apt-get upgrade. Dostępna jest także starsza wersja z innego repozytorium.

Jak pobrać klucz archiwum Debiana?

Klucz archiwum Debiana jest opublikowany na ftp-master . Musisz zaimportować klucz do breloka gpg:

$ 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

Następnie będziesz musiał sprawdzić jego podpisy:

$ 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]

Śledź poszczególne klucze GPG deweloperom Debiana, śledząc je ręcznie lub sprawdzając np . W projekcie PGP Key Statistics . I dopóki nie będzie łańcucha od twojego klucza PGP / GPG do archiwum kluczy Debiana, w pewnym momencie będziesz musiał dokonać skoku wiary.

Jak ręcznie pobierać i weryfikować poszczególne pakiety

Zatem drugie podejście jest bardziej skomplikowane, ponieważ pakiety deb nie są podpisywane indywidualnie, ale Releasepodpisywany jest tylko plik. Dlatego musisz pobrać i zweryfikować podpis Releasei Packagespliki wraz z indywidualnym pakietem.

Dodam przykład, który będzie jaśniejszy.

Wyobraź sobie, że chcesz pobrać pakiet Debian dla Knot DNS z oficjalnego PPA dla Ubuntu precyzyjnie na architekturze amd64.

Będziesz musiał kliknąć katalogi i znaleźć te pliki:

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

Następnym krokiem byłoby zweryfikowanie podpisu w Releasepliku:

$ 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

Oczywiście musisz zweryfikować klucz w inny sposób (np. Klucz opiekunów Debiana / Ubuntu, sprawdzanie go ze startera itp.)

Po zweryfikowaniu poprawnego podpisu w Releasepliku możesz przejść do następnego kroku - weryfikacja pliku Packages.

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

Jak widać, podpis można znaleźć w podpisanym Releasepliku, dlatego zweryfikowaliśmy integralność Packagespliku, obliczając i porównując jego odcisk palca SHA-256.

Ostatni krok jest podobny. Musisz obliczyć i porównać odcisk palca pojedynczego opakowania:

$ 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

W tym momencie bezpiecznie przywiązaliśmy pakiet do podpisanego Releasepliku. Więc jeśli uważasz, że podpis w Releasepliku, możesz być pewien, że pakiet został pobrany w nienaruszonym stanie.

Możesz przeczytać więcej w artykule Bezpieczny APT na Debian Wiki.


Czy mógłbyś wyjaśnić, dlaczego gpgpolecenie nie powinno wymagać uprawnień roota? Ma to być narzędzie administracyjne.
Sopalajo de Arrierez,

1
@SopalajodeArrierez To nie jest narzędzie administracyjne; więcej o GnuPG można przeczytać tutaj: gnupg.org
oerdnj
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.