ClickCease Linux Kernel 보안 패치를 적용하는 방법: 3가지 방법

콘텐츠 표

인기 뉴스레터 구독하기

4,500명 이상의 Linux 및 오픈소스 전문가와 함께하세요!

한 달에 두 번. 스팸이 없습니다.

Linux Kernel 보안 패치를 적용하는 방법: 3가지 방법 (2023)

2023년 1월 23일 TuxCare 홍보팀

Linux Kernel 업데이트는 생활의 일부입니다. 세금만큼이나 지루하고 치과에 가는 것만큼이나 재미없는 일입니다. 하지만 시스템 관리자는 패치를 계속 적용해야 합니다. Linux Kernel에서 새로 발견된 보안 취약점은 단조로운 규칙을 가지고 나타나는 것 같습니다. 전부는 아니지만 대부분의 경우, 이를 수정하는 데 필요한 패치가 곧바로 뒤따릅니다. 

최신 Linux Kernel 보안 패치를 설치하는 데는 많은 작업이 수반되며, 현실적으로 패치가 지연될 수 있습니다. 하지만 패치를 너무 오래 방치하면 위협 행위자가 패치되지 않은 취약점을 악용할 수 있는 기회를 제공하게 됩니다.

그렇기 때문에 가능한 한 빨리 패치를 적용하는 최선의 방법을 찾는 것이 매우 중요합니다.

Linux는 웹 호스팅 서비스, 독립형 웹 서버, 웹 애플리케이션을 위한 플랫폼으로 인기가 높아 해커들의 주요 표적이 되고 있습니다. 해커들은 원격 코드 실행(RCE), 크로스 사이트 스크립팅(XSS), 서비스 거부(DoS) 공격 등의 기술을 사용합니다. 

Linux 인스턴스를 최신 운영 체제 및 애플리케이션 소프트웨어 패치로 최신 상태로 유지하는 것은 시스템 보안을 강화하고 이러한 종류의 사이버 위협으로부터 보호하는 가장 효과적인 방법 중 하나입니다. 

그러나 Linux의 경우 대부분의 Kernel 업그레이드 및 보안 패치를 적용하려면 시스템을 재부팅해야 하기 때문에 이 작업은 중단이 발생하고 시간이 많이 걸리는 작업입니다. 이 문서에서는 재부팅하지 않고 Linux Kernel을 업데이트하는 방법을 설명합니다. 가장 많이 사용되는 Linux Kernel에 대해 세 가지 방법을 다룹니다. 이 방법은 다음과 같습니다:

  1. 명령줄을 사용하여
  2. kexec으로;
  3. 재부팅이 필요 없는 라이브 Kernel 패치 도구: Oracle Ksplice Uptrack, Canonical Livepatch, Red Hat의 Kpatch, SUSE Kgraft(SLE 라이브 패치) 및 KernelCare Enterprise.
  1. 명령줄

이것은 Linux 배포 공급업체의 리포지토리를 사용하여 Kernel 업데이트를 수행하는 표준 방법입니다. 공급업체 설명서에서 가장 쉽게 찾을 수 있는 방법입니다.

  • Ubuntu에서는 터미널에서 이러한 명령을 사용할 수 있습니다:
sudo apt-get 업그레이드 Linux-이미지-일반

sudo 재부팅
  • Debian에서 사용 중입니다:
sudo apt-get 업그레이드 Kernel

sudo 재부팅
  • CentOS 및 Red Hat Enterprise Linux(RHEL)를 포함한 모든 RPM 기반 배포의 경우 이 방법을 사용하세요:
sudo yum 업데이트 Kernel

sudo 재부팅

지금까지는 쉬웠습니다. 하지만 재부팅할 때까지 Kernel 패치가 적용되지 않는다는 단점이 있습니다.

재부팅하시겠습니까? 예. 사용자를 종료하고, 파일을 저장하고, 프로세스를 종료해야 하므로 많은 사람들이 매우 불쾌해할 수 있습니다. 예를 들어 웹 사이트에서 구매를 진행하던 중이라면 마찬가지입니다. 그런 다음 Linux 서버가 다시 부팅될 때까지 기다렸다가 이전 상태로 복구해야 합니다.

서버가 복구되는 데 시간이 얼마나 걸리나요? 고객과 다른 이해관계자가 알아차리나요? 고객이 알아차릴 위험이 낮더라도 Kernel 패치를 설치하기 전에 고객에게 알려야 합니다.

많은 시스템 관리자가 다운타임을 피하기 위해 패치 설치를 미루는 이유 중 하나는 시스템 보안이 손상될 수 있기 때문입니다.

PRO: 설치가 필요 없습니다.

단점: 자동화되지 않음. 재부팅이 필요합니다.

  1. kexec: 더 빠른 재부팅

다음을 사용하여 재부팅 단계를 더 빠르게 만들 수 있습니다. kexec. 이 Linux Kernel 시스템 호출을 사용하면 부트 로더 및 하드웨어 초기화 단계를 건너뛰고 새 Kernel로 바로 부팅하여 재부팅 시간을 크게 단축할 수 있습니다.

이를 사용하려면 먼저 kexec-tools.

  • Ubuntu/데비안에서:
sudo apt-get 설치 kexec-tools

다음과 같은 구성 창이 표시됩니다:

  • CentOS/RHEL에서:
sudo yum 설치 kexec-tools

다음으로 새 Kernel을 설치합니다. Kernel을 나열한 다음 사용하려는 Kernel을 선택합니다:

sudo yum 업데이트 Kernel

또는

sudo rpm -qa Kernel

출력은 다음과 같아야 합니다.

kernel-3.10.0-514.26.1.el7.x86_64 

kernel-3.10.0-862.3.2.el7.x86_64

이제 선택한 Kernel 버전으로 부팅합니다:

sudo kexec -l /boot/vmlinuz-3.10.0-862.3.2.el7.x86_64  

-initrd=/boot/initramfs-3.10.0-862.3.2.el7.x86_64.img  

-reuse-cmdline 

sudo sync; sudo umount -a; sudo kexec -e

인내심이 전혀 없다면 다음 명령을 사용할 수 있습니다(단, 그 전에 아래 경고를 참조하세요):

sudo kexec -e

경고: 위 명령을 사용하면 재부팅 명령이 프로세스를 제대로 종료하고 파일 캐시를 동기화하며 파일 시스템을 마운트 해제할 시간을 주지 않고 서버의 전원을 껐다 켜는 것과 같습니다. 이 명령을 사용하면 데이터가 손실되거나 손상될 수 있습니다.

더 빠른 부팅. 한 번의 설치.

손이 많이 가는 작업(스크립트를 잘 작성하지 않으면 오류가 발생할 가능성도 높아집니다).

  1. 재부팅하지 않고 Kernel 업데이트하기

예, 올바르게 읽었습니다. 거기 있다 재부팅하지 않고 Linux Kernel을 업데이트하는 방법이 있습니다.

보안 패치가 매우 중요하고 반드시 완료해야 하는 경우가 있습니다. 동시에 재부팅할 때 중지해야 하는 프로세스도 마찬가지로 중요합니다. '상시 가동' 또는 '고가용성' 시스템을 운영 중이라면 이러한 딜레마에 대해 잘 알고 계실 것입니다.

재부팅 없는 Kernel 업데이트는 '케이크도 먹고 떡도 먹을 수 있다'는 뜻입니다. 재부팅 없는 업데이트, 라이브 Kernel 패치가라고도 함로도 알려진 재부팅 없는 업데이트는 보안 취약점이나 중요한 버그 수정에 대한 패치만 적용하므로 전체 Kernel 업그레이드를 대체할 수 없습니다.

하지만 재부팅이 필요 없는 업데이트는 취약점을 수정하는 마법의 총알과 같습니다. 정말 긴급한 사항만 고려한다면 보안 취약점 및 버그 수정에 대한 업데이트만 있으면 됩니다. 라이브 패치 방법을 사용하면 서버를 재부팅하지 않고도 수년 동안 서버를 위협으로부터 안전하게 보호할 수 있습니다.

많은 주요 Linux 공급업체에서 재부팅 없이 Kernel 업데이트를 수행할 수 있는 도구를 제공합니다. 어떤 도구를 선택할지는 실행 중인 배포판과 공급업체와 이미 지원 계약을 체결했는지 여부에 따라 달라집니다. 이 글의 나머지 부분에서는 다음 제품에 대해 설명합니다:

  • Ksplice by Oracle (Oracle Linux 업데이트의 경우, 엔터프라이즈 사용자를 위한 Ksplice Uptrack)
  • kpatch Red Hat (RHEL Kernel 업데이트 및 CentOS 업데이트용)
  • 라이브 패치 by Canonical (Ubuntu Kernel 업데이트용)
  • kG래프트 by SUSE (SUSE 업데이트만 해당)
  • KernelCare 엔터프라이즈 (모든 주요 Linux 배포판용)

Oracle 키스플리스

Ksplice는 재부팅 없이 Kernel 업데이트를 상용화한 최초의 구현이었습니다. 는 결국 Oracle에 인수되었으며, 현재는 (당연하게도) Oracle Linux 및 RedHat Enterprise Linux 배포판에서만 사용할 수 있습니다. Ksplice를 배포하려면 Oracle의 라이선스가 필요하며, 이는 비용이 많이 들 수 있습니다.

배포하려면 실행하세요:

sudo wget -N https://ksplice.oracle.com/uptrack/install-uptrack-oc

sudo sh 설치-업트랙-oc -자동 설치

재부팅 명령이 없으며 서버 Lifecycle 기간 동안 설치 스크립트를 한 번만 실행하면 된다는 것을 알 수 있습니다. 그 후에는 Uptrack 서비스가 자동으로 새 Kernel 업데이트를 감지하고 업데이트를 배포합니다. 더 이상 예약할 필요도 없고 다운타임도 없습니다.

재부팅할 필요가 없습니다. 자동 업데이트.

Oracle 배포에만 해당됩니다. 지원 라이선스가 필요합니다.

정식 라이브 패치 서비스

라이브패치는 Kernel을 실시간으로 패치하기 위한 Canonical의 기술입니다. (Canonical은 인기 있는 Ubuntu Linux 배포판의 개발사이다.) 이 도구를 사용하면 직접 패치를 생성할 수도 있지만, 이는 어렵고 시간이 많이 걸리는 작업이다. (일부 공급업체는 유료로 Ubuntu 업그레이드 Kernel을 생성해 줍니다.)

라이브패치 서비스는 Ubuntu 16.04 이상 및 RHEL 7.x(베타)에서 사용할 수 있습니다. 라이브패치는 다음과 같이 배포됩니다:

sudo 스냅 설치 정식 라이브 패치

sudo 정식-라이브패치 활성화 [토큰]

참고: Ubuntu 원 회원이라면 최대 3대까지 개인용 컴퓨터에서 캐노니컬 라이브패치 서비스를 무료로 사용할 수 있습니다. 상업적으로 사용하려면 Ubuntu 프로 구독이 필요합니다.

재부팅할 필요가 없습니다. 자동 Kernel 업데이트.

사소하지 않은 커스텀 Kernel 패치. 업데이트 가능한 호스트 수에 제한이 있습니다. 추가 호스트 및 상업적 사용에는 수수료가 부과됩니다.

Red Hat Kpatch

kpatch는 Red Hat의 자체 Kernel 패치 도구입니다. 2014년에 발표되었으며 포팅 하여 같은 계열의 다른 배포판(Fedora, CentOS)은 물론 일부 데비안 기반 시스템(Ubuntu, Gentoo)에서도 작동합니다.

다음은 RHEL 7에 배포하는 예제입니다:

sudo yum 설치 kpatch

sudo yum 설치 kpatch-patch-X.X.X.el7.x86_64.rpm

Ubuntu의 라이브패치 서비스나 Oracle의 키스플리스와 달리 자동 라이브 패치 서비스가 아닙니다. 새 패치를 수동으로 확인하고 Kernel 패치가 제공될 때마다 설치해야 합니다.

재부팅할 필요가 없습니다.

자동화되지 않았습니다. 제한된 범위의 배포판에서 작동합니다.

SUSE kGraft

Red Hat의 솔루션과 거의 동시에 개발 및 발표된 kGraft는 SUSE의 라이브 패치 제품(SUSE Linux Enterprise Live Patching으로 알려져 있음)입니다. 이 솔루션은 SUSE의 자체 Linux Enterprise Server 12에서만 작동하며 사전 설치되어 제공되므로 비용을 지불하는 것 외에는 할 일이 없습니다. 대부분의 다른 접근 방식과는 다른 원리로 작동하지만 kpatch와 비슷한 기능 세트를 제공합니다.

설치가 필요 없습니다. 재부팅할 필요가 없습니다.

단일 플랫폼 지원. 상업용(단, 60일 무료 평가판이 있습니다).

KernelCare

또한 2020년에 출시된 TuxCare의 Linux Kernel 라이브 패치 서비스인 KernelCare는 두 가지 이유로 지금까지 살펴본 Kernel 패치 솔루션과 차별화됩니다. 첫째, KernelCare는 CentOS, RHEL(초기 RHEL 6), Oracle Linux, Debian, Ubuntu 등 광범위한 Linux 배포판을 지원합니다. 둘째, 위에 나열된 것과 같은 공급업체별 지원 계약에 가입하는 것에 비해 KernelCare가 더 저렴합니다.

KernelCare를 설치하는 방법은 다음과 같습니다:

wget -qq -O -- https://kernelcare.com/installer | bash

sudo /usr/bin/kcarectl --register <your key>

KernelCare는 '설치 후 잊어버리는' 솔루션입니다. 설치가 완료되면 서버를 재부팅할 필요 없이 자동으로 새로운 Kernel 보안 패치를 다운로드하여 적용합니다.

그러나 가장 가까운 경쟁사와는 달리 KernelCare는 유명한 멜트다운 (CVE-2017-5754) 및 Spectre (CVE-2017-5753 & CVE-2017-5715) 취약점.

KernelCare는 다음과 같은 최근의 복잡한 취약성에 대해서도 보호합니다. 더티 파이프 취약점(CVE-2022-0847).

KernelCare는 사용자 지정 패치 구성, 고정 날짜 패치, 지연 패치, 재부팅 없이 패치를 제거할 수 있는 재부팅 없는 롤백을 지원하므로 다양한 기능도 활용할 수 있습니다.

여기에서 고려한 다른 공급업체와 마찬가지로 KernelCare도 강력한 Linux 혈통에서 비롯되었습니다: KernelCare는 다음에 의해 만들어졌습니다. CloudLinux라는 웹 호스팅 전용 Linux OS의 선도적인 공급업체가 만든 서비스이다.

간편한 설치. 재부팅할 필요가 없습니다. 광범위한 OS 지원(가장 인기 있는 Linux 버전 중 하나인 Ubuntu 포함). 사용자 지정 및 고정 날짜 패치를 지원합니다. TuxCare의 우수한 지원 및 업계 노하우.

상업용(하지만 무료 평가판). 또한 무료 KernelCare 라이선스 도 있습니다.

KernelCare Enterprise 무료 체험판 받기 

결론

Kernel 업데이트는 표준 명령줄 도구를 사용하여 비교적 쉽게 할 수 있지만, 서버가 중요하지 않고 사용자가 일정 기간 오프라인 상태를 견딜 수 있는 경우에만 가능합니다.

상시 가동 시스템을 실행 중이거나 재부팅할 수 없거나 재부팅하고 싶지 않은 경우 라이브 Kernel 패치 솔루션을 고려해야 합니다. 이 중 세 가지 종류가 있습니다:

  1. 관리: 재부팅 없는 패치를 직접 트리거합니다. 예: kpatch, kGraft
  2. 완전 자동재부팅 없이 패치가 자동으로 적용됩니다. 예 라이브 패치, Ksplice
  3. 완전 자동, 고급 멀티 플랫폼: 사용자를 대신하여 지능형 위협을 처리하고 모든 인기 있는 Linux 배포판에서 작동합니다. 예 KernelCare Enterprise

많은 경우, 특히 다른 Linux 배포판에 의존하고 있고 공급업체 지원 계약이 없는 경우, KernelCare Enterprise 를 살펴볼 가치가 있습니다..

라이브 패치 기술과 이를 통해 인프라 보안을 강화하는 방법에 대해 자세히 알아보려면 가장 인기 있는 블로그 게시물을 읽어보세요:

 

요약

KernelCare Enterprise의 자동화된 무중단 라이브 패치로 취약성 패치 접근 방식을 현대화할 준비가 되셨나요? Linux 보안 전문가와 채팅을 예약하세요!

전문가와 상담하기

TuxCare 게스트 작가 되기

시작하기

메일

가입

4,500

Linux & 오픈 소스
전문가!


뉴스레터 구독하기