Linux 커널 보안 패치를 적용하는 방법: 3가지 방법 (2024)
- 건물을 지을 때 튼튼한 기초가 중요하듯, 보안 커널은 안전한 Linux 시스템을 위해 필수적입니다.
- 실시간 패치 를 사용하면 재부팅할 필요 없이 실행 중인 커널에 보안 패치를 적용할 수 있으므로 중요한 시스템의 다운타임을 크게 줄일 수 있습니다.
- 패치되지 않은 커널은 시스템이 알려진 취약점에 노출되어 데이터 유출이나 무단 액세스와 같은 보안 사고의 위험을 증가시킬 수 있습니다.
Linux 커널 업데이트는 생활의 일부입니다. 세금처럼 지루하고 치과에 가는 것만큼이나 재미없는 일입니다. 하지만 시스템 관리자는 패치를 계속해야 합니다. Linux 커널에서 새로 발견된 보안 취약점은 단조로운 규칙을 가지고 나타나는 것 같습니다. 전부는 아니지만 대부분의 경우, 이를 수정하는 데 필요한 패치가 곧바로 뒤따릅니다.
최신 Linux Kernel 보안 패치를 설치하는 데는 많은 작업이 수반되며, 현실적으로 패치가 지연될 수 있습니다. 하지만 패치를 너무 오래 방치하면 위협 행위자가 패치되지 않은 취약점을 악용할 수 있는 기회를 제공하게 됩니다.
그렇기 때문에 가능한 한 빨리 패치를 적용하는 최선의 방법을 찾는 것이 매우 중요합니다.
Linux는 웹 호스팅 서비스, 독립형 웹 서버 및 웹 애플리케이션을 위한 플랫폼으로 인기가 높기 때문에 주요 공격 대상이 됩니다. 해커들은 다음과 같은 기술을 사용합니다. 원격 코드 실행(RCE), 크로스 사이트 스크립팅(XSS), 그리고 서비스 거부(DoS) 공격.
Linux 인스턴스를 최신 운영 체제 및 애플리케이션 소프트웨어 패치로 최신 상태로 유지하는 것은 시스템 보안을 강화하고 이러한 종류의 사이버 위협으로부터 보호하는 가장 효과적인 방법 중 하나입니다.
그러나 Linux의 경우 대부분의 커널 업그레이드 및 보안 패치는 시스템을 재부팅해야 하는 경우가 많기 때문에 이 작업은 혼란스럽고 시간이 많이 소요되는 작업입니다. 이 문서에서는 재부팅하지 않고 Linux 커널을 업데이트하는 방법을 설명합니다. 또한 Linux 커널 보안 패치를 적용하는 세 가지 방법에 대해서도 설명합니다. 이러한 방법은 다음과 같습니다:
- 명령줄을 사용하여
- kexec
- 재부팅이 필요 없는 라이브 커널 패치 도구: Oracle Ksplice Uptrack, Canonical Livepatch, Red Hat의 Kpatch, SUSE Kgraft(SLE 라이브 패칭) 및 KernelCare Enterprise.
1. 기존 명령줄 업데이트
이는 배포 공급업체의 리포지토리를 사용하여 Linux 커널 보안 패치를 적용하는 표준 방법입니다. 공급업체 설명서에서 가장 쉽게 찾을 수 있는 방법입니다. 그러나 현재 많은 배포판에서 업데이트 프로세스를 간소화하는 사용자 친화적인 그래픽 패키지 관리자를 제공합니다.
우분투에서는 터미널에서 이러한 명령을 사용할 수 있습니다.
sudo apt 업데이트 sudo apt 업그레이드 리눅스-이미지-일반 sudo 재부팅
Debian에서 사용 중입니다:
sudo apt 업그레이드 리눅스-이미지 sudo 재부팅
CentOS 및 Red Hat Enterprise Linux(RHEL)를 포함한 모든 RPM 기반 배포의 경우 이 방법을 사용하세요:
sudo yum 업데이트 Kernel
sudo 재부팅
지금까지는 쉬웠습니다. 하지만 재부팅할 때까지 Kernel 패치가 적용되지 않는다는 단점이 있습니다.
재부팅? 예. 사용자를 종료하고, 파일을 저장하고, 프로세스를 종료해야 하므로 많은 사람들이 매우 불쾌해할 수 있습니다. 예를 들어 웹사이트에서 구매를 진행 중이던 사람처럼 말입니다. 그런 다음 Linux 서버가 다시 부팅되고 이전 상태로 복구될 때까지 기다려야 합니다.
서버가 복구되는 데 시간이 얼마나 걸리나요? 고객과 다른 이해관계자가 알아차리나요? 고객이 알아차릴 위험이 낮더라도 Kernel 패치를 설치하기 전에 고객에게 알려야 합니다.
많은 시스템 관리자가 다운타임을 피하기 위해 패치 설치를 미루는 이유 중 하나는 시스템 보안이 손상될 수 있기 때문입니다.
장점: 설치가 필요 없습니다. 간단한 프로세스.
단점: 자동화되지 않음. 재부팅이 필요합니다.
2. kexec: 더 빠른 재부팅
Linux 커널 보안 패치가 적용되면 일반적으로 패치된 새 커널을 로드하기 위해 재부팅해야 합니다. 이 재부팅 프로세스를 더 빠르게 하려면 kexec를 사용하면 부트 로더 및 하드웨어 초기화 단계를 건너뛰고 새 커널로 바로 부팅할 수 있는 Linux 커널 기능을 사용할 수 있습니다.
이를 사용하려면 먼저 kexec-tools를 설치해야 합니다.
Ubuntu/데비안에서:
sudo apt 설치 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
이제 선택한 커널 버전으로 부팅합니다:
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 -재사용-cmdline sudo sync; sudo umount -a; sudo kexec -e
인내심이 부족하다면 다음 명령을 사용할 수 있습니다(하지만 그 전에 아래의 경고를 참조하세요):
sudo kexec -e
참고: kexec은 패치 프로세스 자체에 직접 관여하지는 않지만, 일반적인 부트 로더와 하드웨어 초기화를 우회하여 더 빠른 재부팅을 제공합니다. 하지만 이 속도에는 대가가 따릅니다. 프로세스를 정상적으로 종료하고 캐시를 동기화하고 파일 시스템을 마운트 해제하는 표준 재부팅과 달리, kexec은 새 커널로 바로 이동합니다. 실행 중인 애플리케이션에 저장되지 않은 변경 사항이나 열린 파일 핸들이 있는 경우 데이터 손실 또는 손상이 발생할 수 있습니다.
장점: 더 빠른 부팅. 한 번만 설치하면 됩니다.
단점: 손이 많이 가는 작업(스크립트를 잘 작성하지 않으면 오류가 발생할 가능성이 높음).
3. 재부팅하지 않고 커널 업데이트하기
예, 올바르게 읽으셨습니다. 재부팅하지 않고 Linux 커널을 업데이트하는 방법이 있습니다.
보안 패치가 매우 중요하고 반드시 완료해야 할 때가 있습니다. 동시에 재부팅할 때 중지해야 하는 프로세스도 마찬가지로 중요합니다. '상시 가동' 또는 '고가용성' 시스템을 운영 중이라면 이러한 딜레마에 익숙하실 것입니다.
재부팅 없는 커널 업데이트는 '케이크도 먹고 떡도 먹는다'는 뜻입니다. 재부팅 없는 업데이트는 라이브 커널 패치는 보안 취약점이나 중요한 버그 수정에 대한 패치만 적용하므로 전체 커널 업그레이드를 대체할 수 없습니다.
그러나 재부팅 없는 업데이트는 취약점을 수정하고 Linux 커널 보안을 보장하는 마법의 총알과 같습니다. 정말 긴급한 사항만 고려한다면 보안 취약점 및 버그 수정을 위한 업데이트만 있으면 됩니다. 라이브 패치 방법을 사용하면 서버를 재부팅하지 않고도 수년 동안 서버를 위협으로부터 안전하게 유지할 수 있습니다.
많은 주요 Linux 공급업체에서 재부팅 없이 커널 업데이트를 수행할 수 있는 도구를 제공합니다. 어떤 도구를 선택할지는 실행 중인 배포판과 공급업체와 이미 지원 계약을 체결했는지 여부에 따라 달라집니다. 이 글의 나머지 부분에서는 다음 제품에 대해 설명합니다.
- Oracle의 Ksplice (오라클 리눅스 업데이트의 경우, 엔터프라이즈 사용자용 Ksplice Uptrack)
- 레드햇의 kpatch (RHEL 커널 업데이트 및 CentOS 업데이트용)
- Canonical의 라이브 패치 (우분투 커널 업데이트용)
- SUSE의 kGraft (SUSE 업데이트 전용)
- KernelCare Enterprise (모든 주요 Linux 배포판용)
Oracle 키스플리스
Ksplice 는 재부팅 없이 커널 업데이트를 상용화한 최초의 구현이었습니다. 는 결국 오라클에 인수되었으며, 현재는 당연히 오라클 Linux 배포판에서만 사용할 수 있습니다. Ksplice를 배포하려면 오라클 Linux 프리미어 지원 구독이 필요하며, 이는 상당한 비용 요소가 될 수 있습니다.
배포하려면 실행하세요:
sudo wget -N https://ksplice.oracle.com/uptrack/install-uptrack-oc sudo sh install-uptrack-oc -autoinstall
재부팅 명령이 없으며 서버 수명 기간 동안 설치 스크립트를 한 번만 실행하면 됩니다. 그 후에는 Uptrack 서비스가 자동으로 새 커널 업데이트를 감지하여 배포합니다. 더 이상 예약할 필요도 없고 다운타임도 없습니다.
장점: 재부팅할 필요가 없습니다. 자동 업데이트.
단점: Oracle 배포 버전에만 해당됩니다. 지원 라이선스가 필요합니다.
정식 라이브 패치 서비스
캐노니컬 라이브패치는 우분투 개발사에서 제공하는 도구로, 재부팅할 필요 없이 Linux 커널 보안 패치를 적용할 수 있는 도구입니다. 또한 자체 패치를 만들 수도 있지만, 이는 어렵고 시간이 많이 걸리는 작업입니다. (일부 공급업체에서는 유료로 Ubuntu 업그레이드 커널을 만들어 주기도 합니다.)
라이브패치 서비스는 다음에서 사용할 수 있습니다. 우분투 16.04 이상 및 RHEL 7.x(베타)에서 사용할 수 있습니다. 라이브패치는 다음과 같이 배포됩니다:
sudo 스냅 설치 정식 라이브 패치
sudo 정식-라이브패치 활성화 [토큰]
참고: 우분투 원 회원이라면 최대 5대까지 개인용 컴퓨터에서 Canonical 라이브패치 서비스를 무료로 사용할 수 있습니다. 상업적으로 사용하려면 Ubuntu Pro 구독이 필요합니다.
장점: 재부팅할 필요가 없습니다. 자동 커널 업데이트.
단점: 사소하지 않은 커스텀 커널 패치. 업데이트 가능한 호스트 수에 제한이 있습니다. 추가 호스트 및 상업적 사용에는 수수료가 부과됩니다.
Red Hat k패치
kpatch 는 Red Hat의 자체 커널 패치 도구입니다. 2014년에 발표되었으며, 같은 계열의 다른 배포판(Fedora, CentOS)과 일부 데비안 기반 시스템(Ubuntu, Gentoo)에서 작동하도록 포팅되었습니다.
다음은 RHEL 7에 배포하는 예제입니다:
sudo yum 설치 kpatch sudo yum 설치 kpatch-patch-X.X.X.el7.x86_64.rpm
우분투의 라이브패치 서비스나 오라클의 Ksplice와 달리 자동 라이브 패치 서비스가 아닙니다. 새 패치가 있는지 수동으로 확인하고 각 커널 패치를 사용할 수 있게 되면 설치해야 합니다.
PRO: 재부팅할 필요가 없습니다.
단점: 자동화되지 않음. 제한된 범위의 배포판에서 작동합니다.
SUSE kGraft
레드햇의 솔루션과 거의 동시에 개발 및 발표되었습니다, kGraft 는 SUSE의 라이브 패치 제품입니다(SUSE Linux Enterprise Live Patching으로 알려져 있음). SUSE의 자체 Linux Enterprise Server 12에서만 작동하며 사전 설치되어 제공되므로 비용을 지불하는 것 외에는 실제로 할 일이 없습니다. 대부분의 다른 접근 방식과는 다른 원리로 작동하지만 kpatch와 비슷한 기능 세트를 제공합니다.
장점: 설치가 필요 없습니다. 재부팅할 필요가 없습니다.
단점: 단일 플랫폼 지원. 상업용(단, 60일 무료 평가판이 있습니다).
KernelCare Enterprise
TuxCare의 Linux 커널 라이브 패치 서비스, 커널케어 엔터프라이즈는 두 가지 이유로 지금까지 살펴본 커널 패치 솔루션과 차별화됩니다. 첫째, 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는 '설치 후 잊어버리는' 솔루션입니다. 일단 설치되면 KernelCare는 서버를 재부팅할 필요 없이 자동으로 새로운 Linux 커널 보안 패치를 다운로드하여 적용합니다.
그러나 가장 가까운 경쟁사와는 달리 KernelCare는 유명한 취약점인 멜트다운 (CVE-2017-5754) 및 Spectre (CVE-2017-5753 & CVE-2017-5715) 취약점.
KernelCare는 또한 더티 파이프 취약점(CVE-2022-0847). Linux 커널 취약점(CVE)에 대한 라이브 패치의 릴리스 상태를 추적하려면 다음을 활용할 수 있습니다. TuxCare CVE 추적기.
사용자 지정 패치 구성, 고정 날짜 패치, 지연 패치, 재부팅 없이 패치를 제거할 수 있는 재부팅 없는 롤백을 지원하는 KernelCare의 풍부한 기능도 활용할 수 있습니다.
여기에서 고려한 다른 공급업체와 마찬가지로 KernelCare도 강력한 Linux 혈통에서 비롯되었습니다: KernelCare는 다음에 의해 만들어졌습니다. CloudLinux라는 웹 호스팅 전용 Linux OS의 선도적인 공급업체가 만든 서비스이다.
장점:
- 간편한 설치. 재부팅할 필요가 없습니다.
- 가장 인기 있는 Linux 버전 중 하나인 Ubuntu를 포함한 다양한 OS를 지원합니다.
- 사용자 지정 및 고정 날짜 패치를 지원합니다.
- TuxCare의 전문가 지원 및 업계 노하우.
단점:
- 상업용(하지만 무료 평가판). 또한 비영리 단체를 위한 무료 KernelCare 라이선스 도 있습니다.
KernelCare Enterprise 무료 평가판 받기
최종 생각
Linux 커널 보안을 유지하는 것은 현재 진행형입니다. 정기적으로 업데이트를 확인하고 즉시 적용하는 것은 진화하는 사이버 위협에 앞서 나가기 위해 매우 중요합니다. 커널 업데이트는 표준 명령줄 도구를 사용하면 비교적 쉽게 할 수 있지만, 서버가 중요하지 않고 사용자가 일정 시간 동안 오프라인 상태를 견딜 수 있는 경우에만 가능합니다.
상시 가동 시스템을 실행 중이거나 재부팅할 수 없거나 재부팅하고 싶지 않은 경우 라이브 Kernel 패치 솔루션을 고려해야 합니다. 이 중 세 가지 종류가 있습니다:
- 관리됨: 재부팅 없는 패치를 직접 트리거합니다. 예 kpatch, kGraft
- 완전 자동: 재부팅 없이 패치가 자동으로 적용됩니다. 예시 Livepatch, Ksplice
- 완전 자동 고급 멀티 플랫폼: 사용자를 대신하고, 지능형 위협을 처리하며, 모든 인기 있는 Linux 배포판에서 작동합니다. 예 KernelCare Enterprise
많은 경우, 특히 다른 Linux 배포판에 의존하고 있고 공급업체 지원 계약이 없는 경우, KernelCare Enterprise 를 살펴볼 가치가 있습니다..
라이브 패치 기술과 이를 통해 인프라 보안을 강화하는 방법에 대해 자세히 알아보려면 가장 인기 있는 블로그 게시물을 읽어보세요:
- Linux Kernel 라이브 패치가란 무엇인가요?
- 리눅스 커널 보안 이해하기: Linux 커널 패치의 필요성
- 패치의 다양한 얼굴
- 라이브 패치가 사이버 보안의 판도를 바꾸는 도구인 이유
- Linux 커널 패치에 대한 오해 바로잡기