ClickCease Linux Kernel 라이브 패치 소프트웨어에 대한 궁극의 가이드 - TuxCare

콘텐츠 표

인기 뉴스레터 구독하기

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

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

Linux Kernel 라이브 패치 소프트웨어에 대한 궁극의 가이드

조아오 코레이아

2022년 8월 18일 - 기술 에반젤리스트

패치되지 않은 소프트웨어의 결과를 강조한 Equifax 데이터 유출 사건 이후, 관리자는 특히 대민 서비스 서버에 최신 패치를 적용하는 동시에 잠재적인 충돌과 재부팅으로 인한 다운타임을 줄여야 하는 섬세한 과제를 안고 있습니다. 많은 오픈 소스 패치 도구를 사용할 수 있지만, 대부분의 도구는 서버를 강제로 재부팅해야 합니다. 리소스를 많이 사용하는 오픈소스 패치 방법 대신 재부팅이 필요 없는 라이브 패치를 사용하는 것이 더 나은 선택입니다. 라이브 패치는 시스템을 최신 취약점으로부터 보호하고 업데이트 상태를 유지하면서 중요한 프로덕션 서버의 재부팅으로 인한 다운타임을 줄여줍니다.

이 게시물에서는 Linux Kernel 라이브 패치에 대해 알아야 할 모든 것과 이를 통해 IT 직원의 시간을 절약할 수 있는 방법을 다룹니다. 라이브 패치를 처음 사용하든 전문가든 라이브 패치가 조직에 어떤 도움을 주고 최신 규제 표준을 준수하는지 완벽하게 이해할 수 있도록 도와드릴 것입니다.

라이브 패치의 역사

라이브 패치의 첫 번째 사례는 2008년 MIT의 Jeff Arnold가 재부팅 없이 Kernel 보안 패치를 적용할 수 있는 자동 시스템을 만들었을 때였습니다. 그는 이 시스템을 Ksplice라고 명명했는데, 나중에 Oracle에 인수되었습니다. 아놀드는 MIT에서 학생들에게 영향을 주지 않고 Linux 서버를 업데이트하는 것이 어렵다는 것을 알고 이 솔루션을 만들었습니다. 패치를 업데이트하기 위해 기다리는 동안 아놀드의 Linux 서버 중 하나가 알려진 취약점이 있는 패치되지 않은 Kernel로 인해 손상되었습니다.

결국 Oracle은 2011년에 소스 코드를 폐쇄했고, 관리자는 라이브 패치를 편리하게 사용할 수 없게 되었습니다. Oracle의 조치로 인해 Linux 개발자들은 대안을 찾아야 했고, 그 중 다수가 자체 라이브 패치 소프트웨어를 개발했습니다. 많은 상용 애플리케이션을 사용할 수 있으며, 이 솔루션은 이제 Linux 관리의 핵심 구성 요소로 자리 잡았고 바쁜 IT 직원의 시간을 절약해 주었습니다.

Kernel 패치에는 무엇이 포함되며 어떻게 만들어지나요?

Linux 및 기타 운영 체제를 포함한 모든 소프트웨어의 업데이트는 기본 버전에서 파일을 변경하는 것입니다. 모든 업데이트에는 버전 번호가 부여됩니다. 큰 변경 사항에는 1.x에서 2.x와 같이 전체 증분 정수가 주어지며, 작은 패치 변경 사항에는 1.1에서 1.2와 같이 소수점 값만 변경될 수 있습니다. 이러한 버전 값을 검토하면 관리자가 패치가 큰지 작은지 파악하는 데 도움이 되며, 시스템을 패치하는 데 걸리는 시간에 대한 일반적인 아이디어를 얻을 수 있습니다.

Linux 배포 패치에서 업데이트는 현재 설치된 버전과 새 버전의 파일 변경 사항 사이의 델타 변경 사항을 포함하는 텍스트 파일입니다. Linux는 diff 프로그램을 사용하여 이러한 변경 사항을 식별합니다. 텍스트 파일이 생성되면 패치 프로그램을 사용하여 변경 사항을 적용하고 운영 체제 파일을 업데이트합니다.

간단한 패치 절차의 예로, sample.c라는 파일이 있는 프로그램이 있고 이 프로그램을 최신 samplev20.c 버전으로 패치해야 한다고 가정합니다. 다음 diff 명령은 프로그램의 최신 버전 2.0이 포함된 패치 파일을 생성합니다:

diff -u sample.c samplev20.c > sampleupdate.patch

패치 파일이 생성되었으므로 이제 프로그램을 패치할 수 있습니다. 다음 패치 명령은 업데이트를 적용합니다:

patch < sampleupdate.patch

대규모 Linux 패치의 경우 중앙 저장소의 코드 브랜치를 기반으로 변경이 이루어집니다. "최고의 라이브 패치 소프트웨어 찾기" 섹션에서 언급한 많은 타사 패치 도구는 위의 예와 같은 수동 패치 명령이 필요하지 않지만 기본 단계는 동일합니다.Linux Kernel에 보안 패치를 적용하는 방법

Linux 보안 패치는 관리자의 생활 방식입니다. 보안 패치는 다른 패치보다 빈도는 약간 낮지만 모든 업데이트 중에서 가장 중요합니다. 취약점이 해커에게 공개되면 해커는 즉시 패치가 적용되지 않은 시스템에 대한 익스플로잇을 개발할 수 있으므로 관리자는 가능한 한 빨리 운영 체제를 패치해야 합니다. 동시에 패치는 완벽하게 수행해야 하는 섬세한 절차이며, 실수로 인해 다운타임이 발생할 수 있습니다.

Linux 시스템을 패치하는 방법에는 3가지가 있으며, 그 중 하나는 시스템을 재부팅하지 않고도 수행할 수 있습니다. 세 가지 방법 모두에 대한 자세한 내용은 이미 다루었지만, 여기서는 그 과정을 간략하게 정리해 보겠습니다.

 

명령줄을 사용하여 Linux Kernel에 보안 패치 적용하기

명령줄을 사용하는 것이 가장 간단한 방법입니다. 다음 데비안 명령 구문은 Kernel을 업데이트합니다:

sudo apt-get 업그레이드 Kernel
sudo 재부팅

다음 명령은 Ubuntu를 업데이트합니다:

sudo apt-get 업그레이드 Linux-이미지-일반
sudo 재부팅

또한 다음 명령은 CentOS 또는 Red Hat Enterprise Linux(RHEL)를 업데이트합니다:

sudo yum 업데이트 Kernel
sudo 재부팅

이 방법의 장점은 타사 설치가 필요 없는 간단한 두 줄 명령이라는 점입니다. 단점은 명령어에서 볼 수 있듯이 재부팅이 필요하다는 것입니다. 이 방법을 사용하면 중요한 Linux 서버가 일정 시간 동안 다운되므로 일정을 예약하고 사용자에게 다운타임에 대한 알림을 보내야 합니다.

 

kexec을 사용하여 부트 로더 건너뛰기

Linux에는 부트 로더와 하드웨어 초기화 단계를 건너뛸 수 있는 기능이 있어 재부팅하는 데 걸리는 시간을 크게 단축할 수 있습니다. 먼저 kexec을 설치한 다음 서버에서 이 도구를 실행해야 합니다. 다음 명령은 Ubuntu와 데비안에서 kexec을 설치합니다:

sudo apt-get 설치 kexec-tools

다음 명령은 CentOS/RHEL에서 사용할 수 있습니다:

sudo yum 설치 kexec-tools

이제 kexec을 설치한 상태에서 도구를 실행하여 패치를 설치할 수 있습니다:

sudo yum 업데이트 Kernel
또는
sudo rpm -qa Kernel

 

kexec 도구는 최신 버전을 출력으로 표시합니다. 다음 명령은 패치를 설치합니다:

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

패치를 설치한 후에도 재부팅해야 합니다. 이 옵션의 장점은 재부팅 시간이 더 빠르다는 것이지만, kexec은 훨씬 더 많은 타이핑을 필요로 합니다. 대부분의 관리자가 알다시피, 명령줄 옵션 하나만 실수해도 몇 시간 동안 다운타임이 발생할 수 있습니다. 이 옵션의 단점은 인적 오류의 가능성이 증가한다는 것입니다.

Linux Kernel에 보안 패치 적용 타사 재부팅 없는 도구 사용

재부팅이 필요 없는 Linux 패치 도구는 앞의 두 가지 옵션의 단점을 모두 제거합니다. 시중에 나와 있는 많은 오픈 소스 옵션의 유일한 문제점은 패치가 특정 배포판으로 제한된다는 것입니다. 이 섹션으로 이동하여 최고의 라이브 패치 소프트웨어 목록과 각각의 장단점을 살펴보세요.

 

라이브 패치가란 무엇이고 패치 소프트웨어란 무엇인가요?

패치 파일을 수동으로 생성하는 대신 패치 소프트웨어가 모든 오버헤드 작업을 대신 수행합니다. 이러한 프로그램은 소프트웨어를 패치하는 데 걸리는 시간을 줄여주며 인적 오류로 이어질 수 있는 모든 입력 작업을 제거합니다. 라이브 패치는 이 모든 것을 한 단계 더 발전시켜 Linux 관리자의 일반적인 과제인 재부팅이 필요하지 않습니다.

관리자가 적절한 패치 적용 시기를 결정하는 것은 항상 어려운 일입니다. 보안 업데이트는 즉시 적용하는 것이 중요하지만, 운영 환경에 대한 업데이트는 아무렇게나 부주의하게 설치할 수 없습니다. 일반적으로 업데이트를 적용하려면 시스템을 재부팅해야 합니다. 이는 서버에서 실행 중인 애플리케이션을 사용해야 하는 고객과 직원에게 다운타임을 의미합니다. 서비스형 소프트웨어(SaaS)를 사용하면 클라우드 애플리케이션이 전 세계 사용자에게 제공되므로 많은 관리자가 업무 외 시간에 업무를 볼 수 없습니다. 이 문제는 많은 퍼블릭 대면 웹 애플리케이션에 해당됩니다.

실시간 패치를 사용하면 관리자가 재부팅하지 않고도 중요한 Linux 서버에 패치를 적용할 수 있으므로 다운타임이 더 이상 발생하지 않습니다. 라이브 패치의 예시를 보려면 Oracle 엔터프라이즈 Linux 7용 라이브 패치 자습서를 읽어보세요.

 

최고의 라이브 패치 소프트웨어 찾기

직접 라이브 패치 소프트웨어를 개발할 수도 있지만, 재부팅 없는 프로세스로 빠르게 이동하는 가장 좋은 방법은 타사 도구를 사용하는 것입니다. 아래는 라이브 패치 소프트웨어 목록과 각 소프트웨어의 장단점입니다.

 

재부팅 없이 패치를 적용하는 데 사용할 수 있는 도구는 다음과 같습니다:

  • Ksplice by Oracle (Oracle Linux 업데이트의 경우, 엔터프라이즈용 Ksplice Uptrack)
  • Kpatch Red Hat (RHEL Kernel 업데이트 및 CentOS 업데이트용)
  • 라이브 패치 by Canonical (Ubuntu Kernel 업데이트용)
  • Kgraft by SUSE (SUSE 업데이트 전용)
  • KernelCare 엔터프라이즈 (모든 주요 Linux 배포판용)

위 목록의 마지막 항목은 모든 Linux 배포판에서 사용할 수 있으므로 프로덕션 환경에서 여러 배포판이 실행되는 환경에서 재부팅 없이 Linux 업데이트를 수행하는 데 가장 적합한 옵션입니다.

KernelCare Enterprise 무료 체험판 받기 

 

 

Kspliceksplice_logo

앞서 언급했듯이 Ksplice는 재부팅 없이 패치를 적용할 수 있는 최초의 애플리케이션입니다. 지금은 Oracle 및 Red Hat 배포판으로만 제한되며 사용하려면 라이선스가 필요합니다. 이 소프트웨어의 유일한 장점은 Linux를 자동으로 업데이트한다는 것입니다. 다음 명령은 Linux 시스템에 배포합니다:

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

 

 

Kpatcheb5c4d17e2b04c612fba7bae31a08c59

2014년에 출시된 Kpatch는 Red Hat 배포판 전용입니다. CentOS와 Fedora, Ubuntu와 같은 일부 데비안 시스템에서 작동하도록 포팅되었습니다. 이 애플리케이션의 단점은 패치가 자동으로 적용되지 않는다는 것입니다. 즉, 패치 소프트웨어는 여전히 관리자가 업데이트를 트리거해야 하므로 관리해야 할 서버가 수십 대인 엔터프라이즈급 시스템에서는 그 가치가 떨어집니다.

 

다음 명령은 Kpatch를 설치합니다:

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

 

 

라이브 패치1200px-Canonical_logo.svg

라이브패치는 Linux Kernel을 자동으로 업데이트하며 재부팅할 필요가 없습니다. 또한 관리자가 직접 패치 지침을 만들 수 있도록 사용자 정의할 수 있습니다. 이 라이브 패치 소프트웨어의 단점은 복잡하지 않은 패치만 작동하고 제한된 수의 호스트만 지원하므로 기업 관리자에게는 그다지 매력적이지 않다는 것입니다.

 

다음 명령은 Livepatch를 설치합니다:

sudo 스냅 설치 정식-라이브패치
sudo canonical-livepatch 활성화 [토큰]

토큰] 인수에는 등록 시 제공한 값이 필요합니다. 여기에서 등록 토큰을 얻을 수 있습니다.

 

 

Kgraftsuse_logo_color

SUSE의 Linux Enterprise Server 12에는 Kgraft 라이브 패치 구성 요소가 기본으로 포함되어 있습니다. 별도의 설치가 필요하지 않으므로 관리자는 프로덕션 서버를 변경하지 않고도 소프트웨어를 사용할 수 있습니다. 하지만 이 소프트웨어는 SUSE Linux만 지원하며, 상용 제품이기 때문에 60일 평가판 이후에는 라이선스 비용이 부과됩니다.

 

 

KernelCare회사 로고 사본 (1)

CloudLinux KernelCare는 관리자가 원하는 모든 장점을 갖춘 라이브 패치 애플리케이션으로, 다양한 Linux 배포를 지원합니다. KernelCare는 CentOS, Red Hat, Oracle, Debian, Ubuntu 및 기타 여러 배포판을 지원합니다. 라이브 패치는 자동이며 운영 체제에 대한 간단하고 복잡한 업데이트를 처리할 수 있습니다. 관리자는 조직에 영향을 미치지 않는 덜 심각한 문제는 지연시키면서 특정 중요 취약성을 즉시 타겟팅하도록 자체 패치 업데이트를 사용자 지정할 수 있습니다.

 

다른 솔루션에 비해 KernelCare를 사용하면 다음과 같은 이점이 있습니다:

 

  • 야생에서 가장 복잡한 최신 취약점에 대해 재부팅 없이 패치를 적용합니다.
  • 여러 호스트가 있는 전사적 서버를 지원합니다.
  • 재부팅하지 않고 롤백할 수 있는 옵션.
  • 날짜 및 버전 관리를 사용하여 패치를 사용자 지정하세요.
  • 특정 패치는 지연하고 중요한 취약점은 즉시 패치합니다.
  • 특정 패치를 제거합니다.

 

KernelCare를 설치하려면 다음 명령을 사용합니다:

wget -qq -O -- https://kernelcare.com/installer | bash
sudo /usr/bin/kcarectl --register <your key>

30일 평가판 사용 후 CloudLinux 대시보드에 인증하고 소프트웨어를 등록하면 키를 얻을 수 있습니다.

 

결론

수십 대의 엔터프라이즈 서버를 관리하는 바쁜 Linux 관리자는 패치를 설치하는 데 몇 시간을 소비할 수 있습니다. 이 작업은 풀타임으로 해야 하지만 반드시 그럴 필요는 없습니다. 실시간 패치는 Linux 업데이트와 관련된 많은 수고를 덜어주므로 관리자의 시간을 절약하고 조직의 비용을 절감할 수 있습니다.

바로 솔루션에 뛰어들 필요는 없지만, CloudLinux KernelCare는 다른 솔루션에 비해 대부분의 장점을 가지고 있습니다. 실시간 패치에 대해 자세히 알아보려면 당사에 문의하여 자세한 정보를 확인하세요.

Kernel 재부팅, 시스템 다운타임 또는 예정된 유지 보수 기간 없이 취약성 패치를 자동화하고 싶으신가요?

TuxCare로 라이브 패치에 대해 알아보기

TuxCare 게스트 작가 되기

시작하기

메일

가입

4,500

Linux & 오픈 소스
전문가!


뉴스레터 구독하기