데비안 소스 패키지를 안전하게 다운로드하고 gpg 확인하는 방법은 무엇입니까?


13

데비안의 특정 (소스 또는 바이너리) 패키지가 필요합니다.

apt-get을 사용하여 패키지를 다운로드 할 수 있습니까?

소스별로 데비안 리포지토리를 추가하려면 어떻게해야합니까? 전체 데비안 저장소를 사용하여 시스템을 망가 뜨리지 않고?

패키지가 데비안 아카이브에 의해 서명되었는지 확인하기 위해 데비안 저장소의 gpg 키를 어떻게 얻을 수 있습니까?

(시스템이 손상 될 수 있음을 알려주지 마십시오. VM 스냅 샷을 쉽게 복원 할 수 있기 때문에이를 알고 덜 신경 쓰지 못했습니다.)


해결책의 일부는 /usr/share/keyrings/debian-archive-keyring.gpg를 포함하는 debian-archive-keyring 패키지 일 수 있습니다.
James Mitch

해결책의 또 다른 부분은 Apt-Pinning 일 수 있습니다. jaqque.sbih.org/kplug/apt-pinning.html
James Mitch

이 답변이 도움이 되셨습니까? askubuntu.com/questions/263705/…
andol

답변:


14

개별적으로 답변 할 몇 가지 질문이 있습니다.

개별 바이너리 패키지를 다운로드하고 설치하지 않는 방법은 무엇입니까?

apt-get 패키지 만 다운로드 할 수있는 옵션이 있습니다.

-d  Download only - do NOT install or unpack archives

다운로드 한 패키지는에서 찾을 수 /var/cache/apt/archives/있습니다. 이 경우 apt에 새 소스 목록 구성을 추가해야합니다.

개별 소스 패키지를 다운로드하는 방법은 무엇입니까?

apt-get source <package>

또는 .dsc 파일의 위치를 ​​알고있는 경우 :

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

두 방법 모두 파일의 서명을 확인합니다

sources.list를 고정하는 방법 일명 어떻게 설치를 망칠 수 있습니까?

이미 APT Pinning에 대한 기본 설명 페이지를 가리키고 있으며 apt_preferences 맨 페이지 를 읽고 필요한 작업을 수행하는 데 유용한 예제가 있다고 덧붙일 것입니다 . 특히 사용자의 요구에 매우 가까운 것을 설명하기 때문에 예의 '안정적 추적'섹션을 참조하십시오.

여러 소스와 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

설치된 버전은 1.1.3-1 ~ bpo60 + 1이고 후보는 1.2.0 ~ rc3-1 ~ bpo60 + 1이며 다음에 설치됩니다 apt-get upgrade. 또한 다른 저장소에서 구할 수있는 구 버전도 있습니다.

데비안 아카이브 키를 다운로드하는 방법?

데비안 아카이브 키는 ftp-master 에 게시되어 있습니다. 키를 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

그런 다음 서명을 확인해야합니다.

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

또한 수동으로 추적하거나 PGP Key Statistics 프로젝트 에서 확인하여 데비안 개발자에게 개별 GPG 키를 추적하십시오 . 그리고 PGP / GPG 키에서 데비안 키 아카이브까지 체인이 없다면, 어느 시점에서 믿음의 도약을해야합니다.

개별 패키지를 직접 다운로드하고 확인하는 방법

따라서 deb 패키지는 개별적으로 서명되지 않고 Release파일 만 서명되므로 다른 접근 방식은 더 복잡 합니다. 따라서 개별 패키지와 함께 서명 ReleasePackages파일 을 다운로드하여 확인해야 합니다.

더 명확한 예를 추가하겠습니다.

amd64 아키텍처에서 Ubuntu 의 공식 PPA 에서 Knot DNS 용 데비안 패키지를 다운로드한다고 상상해보십시오 .

디렉토리를 클릭하여 다음 파일을 찾아야합니다.

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

다음 단계는 Release파일 에서 서명을 확인하는 것입니다 .

$ 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

물론 데비안 / 우분투 관리자 키, 런치 패드에서 확인 등과 같은 다른 방법으로 키를 확인해야합니다.

Release파일 에서 올바른 서명을 확인 했으면 다음 단계 – 패키지 파일 확인으로 이동하십시오.

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

보다시피 서명 된 Release파일 에서 서명을 찾을 수 있으므로 PackagesSHA-256 지문을 계산하고 비교하여 파일 의 무결성을 확인했습니다 .

마지막 단계는 비슷합니다. 개별 패키지의 지문을 계산하고 비교해야합니다.

$ 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

이제 패키지를 서명 된 Release파일에 안전하게 연결했습니다 . 따라서 Release파일에 서명이 있다고 생각 되면 패키지가 그대로 다운로드되었는지 확인할 수 있습니다.

Debian Wiki의 Secure APT 기사에서 더 많은 내용을 읽을 수 있습니다 .


gpg명령에 루트 권한이 필요하지 않은 이유를 설명해 주 시겠습니까? 관리 도구 여야합니다.
Sopalajo de Arrierez

1
@SopalajodeArrierez 관리 도구가 아닙니다. GnuPG에 대한 자세한 내용은 여기를 참조하십시오 : gnupg.org
oerdnj
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.