Ubuntu 24.04 자동 보안 업데이트 설정 및 활성화 방법
Ubuntu 24.04에서 unattended-upgrades를 활성화하는 법을 설명합니다. 20auto-upgrades 설정과 자동 재부팅 옵션, 보안 패치만 선별적으로 적용하는 기본 정책의 동작 방식을 확인하십시오.
자동 보안 업데이트 설정이 필요한 이유
패치되지 않은 서버는 인터넷에서 가장 공격하기 쉬운 대상입니다. 소규모 서버에 발생하는 대부분의 침해 사고는 정교한 공격이 아닙니다. 관리자가 업데이트하지 않은 오래된 패키지의 알려진 버그를 이용하는 경우가 대부분입니다. Ubuntu는 이러한 취약점을 스스로 해결하는 도구를 제공합니다. unattended-upgrades은 사용자가 로그인하지 않아도 일정에 따라 보안 업데이트를 자동으로 설치합니다. 이는 VPS에서 가장 저렴하게 보안을 강화하는 방법이며, Ubuntu에서는 몇 분이면 설정을 마칠 수 있습니다.
이 도구는 의도적으로 보수적으로 설계되었습니다. 기본적으로 모든 패키지 업그레이드가 아닌 보안 업데이트만 적용합니다. 보안 패치는 위험 부담이 낮아 검토 없이 적용할 가치가 있지만, 기능 업그레이드는 기존에 의존하던 동작을 변경할 수 있기 때문입니다. 대부분의 서버에는 이러한 기본 설정이 적절하며, 이 가이드에서는 변경할 가치가 있는 몇 가지 설정만 다룹니다.
1단계: 설치 및 활성화
Ubuntu 24.04에는 패키지가 포함되어 있지만 항상 활성화되어 있지는 않습니다. 설치하고 활성화하십시오.
sudo apt update
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgradesdpkg-reconfigure 프롬프트는 안정적인 업데이트를 자동으로 다운로드하고 설치할지 묻는 예/아니오 질문을 표시합니다. 예(yes)를 선택하십시오. 그러면 일일 작업을 활성화하는 파일이 작성됩니다.
cat /etc/apt/apt.conf.d/20auto-upgradesAPT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";첫 번째 줄은 매일 패키지 목록을 새로 고치고, 두 번째 줄은 매일 자동 업그레이드를 실행합니다. 둘 다 1로 설정되어 있으면 시스템이 systemd 타이머를 통해 매일 보안 업데이트를 확인하고 적용하며, 사용자가 추가로 조치할 필요가 없습니다.
2단계: 자동 적용 대상 결정
정책은 /etc/apt/apt.conf.d/50unattended-upgrades에 있습니다. 파일을 열고 상단 근처의 Allowed-Origins 블록을 확인하십시오.
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}";
"${distro_id}:${distro_codename}-security";
"${distro_id}ESMApps:${distro_codename}-apps-security";
"${distro_id}ESM:${distro_codename}-infra-security";
};중요한 것은 -security 줄이며, 기본적으로 활성화되어 있습니다. 이것이 보수적인 정책입니다. 보안 업데이트는 자동으로 적용하고, 일반적인 기능 업데이트는 사용자가 직접 선택하여 적용하도록 남겨둡니다. "${distro_id}:${distro_codename}-updates" origin 줄을 추가하여 모든 업데이트를 자동 적용할 수도 있지만, 중요한 서비스를 호스팅하는 서버라면 보안 패치만 자동으로 적용하는 것이 더 안전한 기본값입니다. 특별한 이유가 없다면 기본 설정 그대로 두십시오.
3단계: 재부팅 처리
커널이나 핵심 라이브러리 같은 일부 업데이트는 재부팅 후에야 완전히 적용됩니다. unattended-upgrades는 사용자가 지시하지 않는 한 서버를 재부팅하지 않으므로, 패치된 커널이 재시작 전까지 사용되지 않은 상태로 남아 있을 수 있습니다. 이를 어떻게 처리할지 결정하고 50unattended-upgrades에 명시적으로 설정하십시오.
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "04:00";이렇게 설정하면 업데이트로 인해 재부팅이 필요한 경우에만 새벽 4시에 서버가 재부팅됩니다. 장애 조치(failover)를 위한 클러스터가 없는 단일 VPS 환경에서는 커널 수정 사항을 최신으로 유지하기 위해 새벽에 짧게 재부팅하는 것이 보통 적절한 선택입니다. 예기치 않게 재시작되어서는 안 되는 서비스를 운영 중이라면 재부팅 설정을 끄고, /var/run/reboot-required을 확인한 후 직접 재부팅하는 습관을 들이십시오.
4단계: 작동 확인
작업이 실행되는지 하루를 기다릴 필요가 없습니다. 아무것도 변경하지 않고 무엇이 적용될지 정확히 보여주는 모의 실행(dry run)을 트리거하십시오.
sudo unattended-upgrade --dry-run --debug출력 결과에는 고려 중인 패키지와 해당 패키지의 출처가 나열되므로 정책이 어떻게 작동하는지 확인할 수 있습니다. 실제 작업이 최소 한 번 실행된 후에는 기록이 여기에 남습니다.
cat /var/log/unattended-upgrades/unattended-upgrades.log이 로그는 "내 서버가 실제로 스스로 패치하고 있는가"라는 질문에 대한 답입니다. 일정에 따라 보안 패키지가 설치되는 모습이 보인다면 작업이 정상적으로 작동하는 것입니다.
이 도구의 위치
자동 업데이트는 서버 보안 강화의 한 계층일 뿐, 전부가 아닙니다. 알려진 버그가 방치되는 것을 막아주지만, 누가 로그인할 수 있는지나 무엇이 노출되는지는 제어하지 못합니다. 무차별 대입 공격을 방지하기 위해 키 기반 SSH 보안 강화를 함께 사용하고, 선택한 항목만 접근 가능하도록 기본 거부(default-deny) UFW 방화벽을 설정하며, 침해된 앱이 전체 시스템을 장악하지 못하도록 권한이 없는 서비스 사용자를 사용하십시오. 호스팅하는 앱은 그 자체로 고유한 보안 요소를 가집니다. 만약 이 서버에서 자체 호스팅 비밀번호 저장소를 운영한다면, apt 패치만으로는 보호할 수 없는 관리자 토큰과 백업 파일을 보호하기 위해 Vaultwarden 보안 강화를 적용해야 합니다. 패치는 알고 있는 구멍을 막아주며, 다른 계층들은 알지 못하는 구멍으로 인한 피해를 제한합니다.
FAQ
unattended-upgrades는 모든 업데이트를 적용합니까, 아니면 보안 업데이트만 적용합니까?
기본적으로 보안 업데이트만 적용합니다. /etc/apt/apt.conf.d/50unattended-upgrades의 Allowed-Origins 블록은 -security 출처를 활성화하고 일반적인 기능 업데이트는 사용자가 직접 적용하도록 남겨둡니다. 이는 의도적인 설정입니다. 보안 패치는 위험 부담이 낮아 자동으로 적용할 가치가 있지만, 기능 업그레이드는 동작을 변경할 수 있으므로 대부분의 서버는 보수적인 기본값을 유지하는 것이 좋습니다.
자동 업데이트가 서버를 재부팅합니까?
사용자가 지시한 경우에만 재부팅합니다. 설정 파일에 Unattended-Upgrade::Automatic-Reboot "true"과 Automatic-Reboot-Time을 설정하면 업데이트로 인해 필요한 경우(예: 커널 패치 후) 해당 시간에 서버가 재부팅됩니다. 설정을 끄면 패치된 커널은 사용자가 직접 재부팅할 때까지 대기합니다. 재부팅이 필요한지 확인하려면 /var/run/reboot-required를 확인하십시오.
자동 업데이트가 실제로 실행되고 있는지 어떻게 확인합니까?
sudo unattended-upgrade --dry-run --debug을 실행하여 아무것도 변경하지 않고 현재 적용될 항목을 확인하고, /var/log/unattended-upgrades/unattended-upgrades.log를 읽어 과거 실행 기록을 확인하십시오. 모든 자동 설치 기록은 /var/log/apt/history.log에도 남습니다. 로그에 보안 패키지가 매일 일정에 따라 설치된 것으로 나타나면 타이머가 정상 작동하는 것입니다. 모의 실행 결과에 No packages found that can be upgraded unattended이 출력된다면, 모든 항목이 최신 상태이거나 허용된 출처가 보안 저장소와 일치하지 않는 것입니다.
unattended-upgrades만으로 서버를 안전하게 유지할 수 있습니까?
아니요, 하지만 필수적인 계층입니다. 알려진 취약점이 패치되지 않은 채 방치되는 것을 막아 가장 흔한 유형의 침해를 차단하지만, 접근 권한이나 노출 범위를 제어하지는 않습니다. SSH 보안 강화, 기본 거부 방화벽, 최소 권한 서비스 사용자와 결합하여 침입하기 어려운 서버를 구축하십시오.