침해당하는 서버 대부분은 교묘한 수법 때문에 무너지지 않습니다. 이미 알려지고 수정까지 된 결함이 있는 소프트웨어를 돌리고 있었는데, 아무도 수정본을 설치하지 않았을 뿐입니다. 보안 업데이트 자동화는 로그인을 기억할 필요 없이 그 구멍을 막아 줍니다. 새 서버에 쓸 수 있는 가장 효과적인 5분 중 하나입니다.
Ubuntu와 Debian: unattended-upgrades
Ubuntu 이미지에는 보통 기본으로 들어 있지만 Debian에는 없을 수 있습니다. 설치하고 활성화합니다.
apt update
apt install -y unattended-upgrades apt-listchanges
dpkg-reconfigure -plow unattended-upgrades # answer "Yes"
그러면 /etc/apt/apt.conf.d/20auto-upgrades가 만들어집니다.
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
두 개의 1은 매일 패키지 목록을 새로 고치고 보안 업데이트를 설치한다는 뜻입니다.
재부팅 여부 정하기
커널 패치는 재부팅해야 적용됩니다. 한가한 시간에 자동으로 재부팅하려면 /etc/apt/apt.conf.d/50unattended-upgrades를 편집해 다음을 설정하세요.
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "04:00";
Unattended-Upgrade::Remove-Unused-Dependencies "true";
서버는 업데이트가 정말 필요로 할 때만(/var/run/reboot-required가 있을 때만) 재부팅합니다.
테스트하기
unattended-upgrade --dry-run --debug
로그는 /var/log/unattended-upgrades/에 있습니다.
Rocky Linux와 AlmaLinux: dnf-automatic
dnf install -y dnf-automatic
/etc/dnf/automatic.conf를 편집합니다.
[commands]
upgrade_type = security
apply_updates = yes
타이머를 켭니다.
systemctl enable --now dnf-automatic.timer
systemctl list-timers dnf-automatic.timer
업데이트 후 재부팅이 필요한지 알아보려면 dnf-utils를 설치하고 needs-restarting -r을 실행하세요.
어떤 재부팅 정책이 맞을까요?
- 밤에 1분쯤 끊겨도 되는 단일 앱(봇, 개인 서비스, 작은 사이트): 자동 재부팅 켜기.
- 사람들이 24시간 쓰는 것이나 직접 재부팅하고 싶은 데이터베이스: 자동 재부팅은 끄고,
/var/run/reboot-required가 나타나면 재부팅하도록 알림을 설정하기.
다루지 않는 것
시스템 패키지만 대상입니다. Docker 이미지, 언어 의존성(pip, npm), 수동으로 설치한 바이너리는 저절로 업데이트되지 않으니 따로 일정을 잡으세요. 버전 안의 업데이트는 자동이지만, 새 버전으로 옮기는 일(Ubuntu 22.04 → 24.04)은 여전히 의도적으로 하는 수동 작업입니다.
혹시 잘못된 업데이트로 부팅이 되지 않더라도, EQVPS 패널의 웹 콘솔로 SSH 없이 들어갈 수 있고, Managed Backups에는 변경 전의 복원 지점이 있습니다.
댓글
아직 댓글이 없습니다. 첫 번째가 되세요.