반응형
Ubuntu 패키지를 설치할 때,
오픈소스 패키지의 경우 GPG Key를 curl 명령어로 미리 받아놓는데, 이유는 무엇일까?
예시)
# GPG Key 받기
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.33/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
# Repository에 GPG Key 등록하기
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
결론부터 말하면
패키지에 대한 위변조(Tampering)를 방지하기 위해서다.
서버는 리포지토리의 패키지를 신뢰할 수 없다.
해커에 의해 위변조 되었을 가능성을 검증해야 하므로 서버는 패키지를 install 하기 전, 공급자가 제공하는 공식 GPG Key(PublicKey)를 미리 가지고 있어야 한다. 패키지는 패키지의 해시값을 공급자의 PrivateKey로 암호화시킨 서명을 갖고 있는데, 서버는 GPG Key(PublicKey)로 서명을 복호화해서 해당 해시값을 얻을 수 있다.
GPG Key로 얻은 해시값과 설치 받으려는 패키지의 해시값을 비교하면 위변조 여부를 알 수 있다.
해시값이 동일하다면 변조되지 않은 것이고 다르다면 변조된 것이다.
n3n@test-server:/etc/apt$ ls -rlt
total 40
drwxr-xr-x 2 root root 4096 Jul 7 06:18 trusted.gpg.d
-rw-r--r-- 1 root root 1129 Jul 7 06:18 trusted.gpg
//....
Ubuntu 공식 레포지토리 패키지에 대한 GPG 키는 /etc/apt/trusted.gpg 로 내장되어 있다. 그 외 패키지의 경우, gpg가 내장되어 있지 않으므로, 아래와 같이 gpg key를 받고 키지를 가져올때 검증할 수 있도록 등록 설정을 해놓아야 한다.
# GPG Key 받기
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.33/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
# Repository에 GPG Key 등록하기
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
반응형
'DevOps > Linux' 카테고리의 다른 글
DMZ망에 APT Mirror 서버 구축하기 (2) | 2025.07.23 |
---|---|
파일시스템에 볼륨 추가하기 (1) | 2025.07.18 |
Linux 환경에서 간단한 컨테이너 직접 만들어 보기 (0) | 2025.06.12 |
[Linux] CLI로 Disk의 파티션 및 파일시스템 생성하기 (0) | 2025.03.13 |
[Linux] 좀비 프로세스란? ( Zombie Process, Defunct Process ) (0) | 2025.03.11 |