콘텐츠로 이동

dnf-automatic으로 서버 패치하기

보안 업데이트의 설치를 관리하는 것은 시스템 관리자에게 중요한 문제입니다. 소프트웨어 업데이트 제공 프로세스는 보통 큰 문제를 일으키지 않습니다. 이러한 이유로 매일 자동으로 띄어쓰기 작업과 업데이트를 자동으로 수행하는 것이 합리적입니다.

정보 시스템의 보안이 강화됩니다. dnf-automatic은 이를 가능하게 하는 추가 도구입니다.

!!! !!!

여러 년 전에 이렇게 자동으로 업데이트를 적용하는 것은 재앙의 레시피였을 수 있습니다. 때때로 업데이트가 문제를 일으킬 수도 있었습니다. 지금은 이러한 경우가 드물게 발생하지만 패키지 업데이트로 인해 서버에서 사용 중인 더 이상 사용되지 않는 기능이 제거될 경우에는 가끔 문제가 발생할 수 있습니다. 그러나 대부분의 경우 현재 이는 문제가 아닙니다. 그래도 아직도 `dnf-automatic`에 업데이트를 처리하는 것에 불편함을 느낀다면 업데이트를 다운로드하거나 업데이트가 가능하다는 알림을 받도록 설정해볼 수 있습니다. 그렇게 하면 서버가 오랫동안 패치되지 않은 상태로 유지되지 않습니다. 이러한 기능은 `dnf-automatic-notifyonly` 및 `dnf-automatic-download`입니다. 이러한 기능에 대한 자세한 내용은 [공식 문서](https://dnf.readthedocs.io/en/latest/automatic.html)를 참조하세요.

설치

dnf-automatic은 Rocky 레포지토리에서 설치할 수 있습니다:

sudo dnf install dnf-automatic

구성

기본적으로 업데이트 프로세스는 오전 6시에 시작하며, 모든 시스템이 동일한 시간에 업데이트되는 것을 피하기 위해 임의의 추가 시간 간격을 가집니다. 이 동작을 변경하려면 응용 프로그램 서비스와 관련된 타이머 구성을 덮어써야 합니다:

sudo systemctl edit dnf-automatic.timer

[Unit]
Description=dnf-automatic timer
# See comment in dnf-makecache.service
ConditionPathExists=!/run/ostree-booted
Wants=network-online.target

[Timer]
OnCalendar=*-*-* 6:00
RandomizedDelaySec=10m
Persistent=true

[Install]
WantedBy=timers.target

이 구성은 오전 6시부터 6시 10분까지 시작 지연을 줄입니다. (이 시간에 종료된 서버는 자동으로 재시작 후 패치됩니다.)

그런 다음 서비스와 관련된 타이머를 활성화합니다(서비스 자체가 아님):

$ sudo systemctl enable --now dnf-automatic.timer

CentOS 7 서버는 어떻습니까?

!!! !!!

예, 이것은 Rocky Linux 문서이지만, 시스템 또는 네트워크 관리자이므로 아직도 CentOS 7 머신이 남아 있을 수 있습니다. 그래서 이 부분을 포함하고 있습니다.

CentOS 7에서의 프로세스는 유사하지만 yum-cron을 사용합니다.

$ sudo yum install yum-cron

이번에는 서비스 구성을 /etc/yum/yum-cron.conf 파일에 설정합니다.

필요한 대로 구성하세요:

[commands]
# 사용할 업데이트 종류:
# default                            = yum upgrade
# security                           = yum --security upgrade
# security-severity:Critical         = yum --sec-severity=Critical upgrade
# minimal                            = yum --bugfix update-minimal
# minimal-security                   = yum --security update-minimal
# minimal-security-severity:Critical =  --sec-severity=Critical update-minimal
update_cmd = default

# 업데이트가 가능하거나 다운로드 또는 적용되었을 때 메시지를 내보낼지 여부.
update_messages = yes

# 업데이트가 있을 때 다운로드할지 여부.
download_updates = yes

# 업데이트가 있을 때 적용해야 하는지 여부.  #업데이트를 적용하려면 download_updates도 yes여야 합니다.
apply_updates = yes

# 무작위로 잠자기 위한 최대 시간(분).  #프로그램은 실행되기 전에 0분에서 random_sleep분 사이의 임의의 시간 동안 휴면 상태가 됩니다.  # 이 기능은 여러 시스템이 업데이트 서버에 액세스하는 시간을 지연시키는 데 유용합니다.  #random_sleep이 0 또는 음수이면 프로그램이 즉시 실행됩니다.
# 6*60 = 360
random_sleep = 30

구성 파일의 주석은 스스로 설명합니다.

이제 서비스를 활성화하고 시작할 수 있습니다:

$ sudo systemctl enable --now yum-cron

결론

패키지의 자동 업데이트는 간단히 활성화되며 정보 시스템의 보안을 크게 향상시킵니다.

Author: Antoine Le Morvan

Contributors: Steven Spencer