Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

3장. 시스템을 최신 상태로 유지

이 장에서는 시스템을 최신 상태로 유지하는 프로세스를 설명합니다. 여기에는 보안 업데이트 설치 방식을 계획 및 구성하고, 새로 업데이트된 패키지에서 도입된 변경 사항을 적용하고, Red Hat 고객 포털을 사용하여 보안 권고를 추적할 수 있습니다.

3.1. 설치된 소프트웨어 유지 관리

보안 취약점이 발견되면 잠재적인 보안 위험을 제한하려면 영향을 받는 소프트웨어를 업데이트해야 합니다. Red Hat은 현재 지원되는 Red Hat Enterprise Linux 배포판 내 패키지의 일부인 경우 최대한 빨리 취약점을 수정하는 업데이트된 패키지를 출시하기 위해 최선을 다하고 있습니다.
종종 특정 보안 공격에 대한 발표는 문제를 해결하는 패치(또는 소스 코드)와 함께 제공됩니다. 이 패치는 Red Hat Enterprise Linux 패키지에 적용되며 에라타 업데이트로 테스트 및 릴리스됩니다. 그러나 발표에 패치가 포함되어 있지 않은 경우 Red Hat 개발자는 먼저 문제를 해결하기 위해 소프트웨어의 유지 관리와 협력합니다. 문제가 해결되면 패키지를 테스트하여 에라타 업데이트로 릴리스됩니다.
시스템에서 사용되는 소프트웨어에 대해 에라타 업데이트가 릴리스되는 경우 시스템을 잠재적으로 취약한 시간을 최소화하기 위해 영향을 받는 패키지를 가능한 한 빨리 업데이트하는 것이 좋습니다.

3.1.1. 보안 업데이트 계획 및 구성

모든 소프트웨어에는 버그가 있습니다. 종종 이러한 버그는 악의적인 사용자에게 시스템을 노출할 수 있는 취약점을 유발할 수 있습니다. 업데이트되지 않은 패키지는 컴퓨터 침입의 일반적인 원인입니다. 발견된 취약점을 신속하게 제거하기 위해 보안 패치를 적시에 설치 계획을 구현해 악용할 수 없습니다.
보안 업데이트를 사용할 수 있을 때 테스트하고 설치를 위해 예약합니다. 업데이트 릴리스와 시스템의 설치 사이의 기간 동안 시스템을 보호하려면 추가 컨트롤을 사용해야 합니다. 이러한 제어는 정확한 취약성에 따라 달라지지만 추가 방화벽 규칙, 외부 방화벽 사용 또는 소프트웨어 설정 변경이 포함될 수 있습니다.
지원되는 패키지의 버그는 에라타 메커니즘을 사용하여 해결되었습니다. 에라타는 특정 에라타가 처리하는 문제에 대한 간략한 설명과 함께 하나 이상의 RPM 패키지로 구성됩니다. 모든 에라타는 Red Hat Subscription Management 서비스를 통해 활성 서브스크립션을 통해 고객에게 배포됩니다. 보안 문제를 해결하는 에라타를 Red Hat Security Advisories 라고 합니다.
보안 에라타 사용에 대한 자세한 내용은 3.2.1절. “고객 포털에서 보안 권고 보기” 을 참조하십시오. RHN classic 에서 마이그레이션하는 방법에 대한 지침을 포함하여 Red Hat 서브스크립션 관리 서비스에 대한 자세한 내용은 이 서비스와 관련된 설명서를 참조하십시오. Red Hat 서브스크립션 관리.

3.1.1.1. Yum의 보안 기능 사용

YUM 패키지 관리자에는 보안 에라타를 검색, 나열, 표시 및 설치하는 데 사용할 수 있는 여러 가지 보안 관련 기능이 포함되어 있습니다. 이러한 기능을 통해 Yum을 사용하여 보안 업데이트도 설치할 수 있습니다.
시스템에서 사용 가능한 보안 관련 업데이트를 확인하려면 root 로 다음 명령을 입력합니다.
~]# yum check-update --security
Loaded plugins: langpacks, product-id, subscription-manager
rhel-7-workstation-rpms/x86_64                  | 3.4 kB  00:00:00
No packages needed for security; 0 packages available
위의 명령은 비대화형 모드로 실행되므로 사용 가능한 업데이트가 있는지 자동 검사를 위해 스크립트에서 사용할 수 있습니다. 이 명령은 사용 가능한 보안 업데이트가 있고 0 가 없는 경우 종료 값 100 을 반환합니다. 오류가 발생하면 1을 반환합니다.
이와 유사하게 다음 명령을 사용하여 보안 관련 업데이트만 설치합니다.
~]# yum update --security
updateinfo 하위 명령을 사용하여 사용 가능한 업데이트에 대해 리포지토리에서 제공한 정보를 표시하거나 작동합니다. updateinfo 하위 명령 자체는 여러 명령을 허용하지만 보안 관련 사용과 관련된 몇 가지 명령도 있습니다. 이러한 명령의 개요는 표 3.1. “yum updateinfo에서 사용할 수 있는 보안 관련 명령”을 참조하십시오.

표 3.1. yum updateinfo에서 사용할 수 있는 보안 관련 명령

명령 설명  
advisory [advisories] 하나 이상의 권고에 대한 정보를 표시합니다. advisories를 권고 번호 또는 숫자로 바꿉니다.  
cves CVE (Common Vulnerabilities and Exposures)와 관련된 정보의 하위 집합을 표시합니다.  
보안 또는 모든 보안 관련 정보를 표시합니다.  
심각도 [심각도_level] 또는 sev [severity_level] 제공된 severity_level 의 보안 관련 패키지에 대한 정보를 표시합니다.  

3.1.2. 패키지 업데이트 및 설치

시스템에서 소프트웨어를 업데이트할 때는 신뢰할 수 있는 소스에서 업데이트를 다운로드해야 합니다. 공격자는 문제를 해결하려는 것과 동일한 버전 번호가 있는 패키지를 쉽게 다시 빌드할 수 있지만, 다른 보안 취약점을 악용하여 인터넷에서 릴리스할 수 있습니다. 이 경우 원래 RPM 에 대한 파일 확인과 같은 보안 수단을 사용하면 이 취약점을 탐지하지 않습니다. 따라서 Red Hat과 같은 신뢰할 수 있는 소스에서 RPM만 다운로드하고 패키지 서명을 확인하여 무결성을 확인하는 것이 매우 중요합니다.
YUM 패키지 관리자 사용 방법에 대한 자세한 내용은 Red Hat Enterprise Linux 7 시스템 관리자 가이드의 YUM 장을 참조하십시오. https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system_administrators_guide/ch-yum

3.1.2.1. 서명된 패키지 확인

모든 Red Hat Enterprise Linux 패키지는 Red Hat GPG 키를 사용하여 서명합니다. GPG 는 분산 파일의 진위 여부를 확인하는 데 사용되는 무료 소프트웨어 패키지인 GNU Privacy Guard 또는 GnuPG 를 나타냅니다. 패키지 서명 확인이 실패하면 패키지가 변경되어 신뢰할 수 없습니다.
YUM 패키지 관리자는 설치 또는 업그레이드에 사용되는 모든 패키지를 자동으로 확인할 수 있습니다. 이 기능은 기본적으로 활성화되어 있습니다. 시스템에서 이 옵션을 구성하려면 /etc/yum.conf 설정 파일에서 gpgcheck 설정 지시문이 1로 설정되어 있는지 확인합니다.
다음 명령을 사용하여 파일 시스템에서 패키지 파일을 수동으로 확인합니다.
rpmkeys --checksig package_file.rpm

3.1.2.2. 서명된 패키지 설치

검증된 패키지를 설치하려면( 3.1.2.1절. “서명된 패키지 확인” 파일 시스템에서 패키지를 확인하는 방법에 대한 자세한 내용은 다음과 같이 yum install 명령을 root 사용자로 사용합니다.
yum install package_file.rpm
쉘 글을 사용하여 한 번에 여러 패키지를 설치합니다. 예를 들어 다음 명령은 현재 디렉터리에 모든 .rpm 패키지를 설치합니다.
yum install *.rpm
중요
보안 에라타를 설치하기 전에 에라타 보고서에 포함된 특수 지침을 읽고 적절하게 실행하십시오. 에라타 업데이트로 인한 변경 사항 적용에 대한 일반적인 지침은 3.1.3절. “설치된 업데이트를 통해 변경 사항 적용”를 참조하십시오.

3.1.3. 설치된 업데이트를 통해 변경 사항 적용

보안 에라타 및 업데이트를 다운로드하여 설치한 후에는 이전 소프트웨어의 사용을 중단하고 새 소프트웨어 사용을 시작하는 것이 중요합니다. 이 작업을 수행하는 방법은 업데이트된 소프트웨어 유형에 따라 다릅니다. 다음 목록은 일반적인 소프트웨어 카테고리를 나열하고 패키지 업그레이드 후 업데이트된 버전을 사용하는 방법에 대한 지침을 제공합니다.
참고
일반적으로 시스템을 재부팅하는 것은 최신 버전의 소프트웨어 패키지가 사용되는지 확인하는 가장 좋은 방법입니다. 그러나 이 옵션은 항상 필수는 아니며 시스템 관리자가 항상 사용할 수 있는 것은 아닙니다.
애플리케이션
사용자 공간 애플리케이션은 사용자가 시작할 수 있는 모든 프로그램입니다. 일반적으로 이러한 애플리케이션은 사용자, 스크립트 또는 자동화된 작업 유틸리티가 이를 시작할 때만 사용됩니다.
이러한 사용자 공간 애플리케이션이 업데이트되면 시스템에서 애플리케이션의 인스턴스를 중지한 후 프로그램을 다시 시작하여 업데이트된 버전을 사용합니다.
커널
커널은 Red Hat Enterprise Linux 7 운영 체제의 핵심 소프트웨어 구성 요소입니다. 메모리, 프로세서 및 주변 장치에 대한 액세스를 관리하고 모든 작업을 예약합니다.
중앙 역할 때문에 컴퓨터를 재부팅하지 않고 커널을 다시 시작할 수 없습니다. 따라서 시스템을 재부팅할 때까지 업데이트된 커널 버전을 사용할 수 없습니다.
KVM
qemu-kvmlibvirt 패키지가 업데이트되면 모든 게스트 가상 머신을 중지하고 관련 가상화 모듈을 다시 로드하거나(또는 호스트 시스템을 재부팅) 가상 시스템을 다시 시작해야 합니다.
lsmod 명령을 사용하여 로드되는 모듈( kvm , kvm -intel 또는 kvm-amd )을 확인합니다. 그런 다음 modprobe -r 명령을 사용하여 modprobe -a 명령을 제거한 후 영향을 받는 모듈을 다시 로드합니다. 예:
~]# lsmod | grep kvm
kvm_intel             143031  0
kvm                   460181  1 kvm_intel
~]# modprobe -r kvm-intel
~]# modprobe -r kvm
~]# modprobe -a kvm kvm-intel
공유 라이브러리
공유 라이브러리는 여러 애플리케이션 및 서비스에서 사용하는 glibc와 같은 코드 단위입니다. 공유 라이브러리를 사용하는 애플리케이션은 일반적으로 애플리케이션이 초기화될 때 공유 코드를 로드하므로 업데이트된 라이브러리를 사용하는 모든 애플리케이션을 중단하고 다시 시작해야 합니다.
특정 라이브러리에 대해 어떤 애플리케이션 링크를 실행 중인지 확인하려면 lsof 명령을 사용합니다.
lsof library
예를 들어 libwrap.so.0 라이브러리에 대해 어떤 애플리케이션이 링크되는지 확인하려면 다음을 입력합니다.
~]# lsof /lib64/libwrap.so.0
COMMAND     PID USER  FD   TYPE DEVICE SIZE/OFF     NODE NAME
pulseaudi 12363 test mem    REG  253,0    42520 34121785 /usr/lib64/libwrap.so.0.7.6
gnome-set 12365 test mem    REG  253,0    42520 34121785 /usr/lib64/libwrap.so.0.7.6
gnome-she 12454 test mem    REG  253,0    42520 34121785 /usr/lib64/libwrap.so.0.7.6
이 명령은 host-access 컨트롤에 TCP 래퍼를 사용하는 실행 중인 모든 프로그램 목록을 반환합니다. 따라서 tcp_wrappers 패키지가 업데이트될 때 나열된 모든 프로그램을 중단하고 다시 시작해야 합니다.
systemd 서비스
systemd 서비스는 일반적으로 부팅 프로세스 중에 시작되는 영구 서버 프로그램입니다. systemd 서비스의 예로는 sshd 또는 vsftpd가 있습니다.
이러한 프로그램은 일반적으로 시스템이 실행되는 동안 메모리에 유지되므로 패키지를 업그레이드한 후 업데이트된 systemd 서비스를 중단하고 다시 시작해야 합니다. 이 작업은 systemctl 명령을 사용하여 root 사용자로 수행할 수 있습니다.
systemctl restart service_name
service_name을 재시작할 서비스 이름으로 교체합니다 (예: sshd).
기타 소프트웨어
아래 링크된 리소스에서 설명하는 지침에 따라 다음 애플리케이션을 올바르게 업데이트합니다.