뒤로
2025/03/13
4. Ksplice를 사용해 보셨나요?
이 기사에서는 오라클 리눅스의 기능 중 하나인 Ksplice를 소개하겠습니다. Ksplice는 OS를 재부팅하지 않고도 커널에 패치를 적용할 수 있는 라이브 패치 시스템입니다. 10년 이상의 역사를 가지고 있으며, 현재로서는 타의 추종을 불허하는 훌륭한 기능입니다. 그러나 오라클 리눅스를 사용하는 사람들 중에서도 Ksplice를 사용하는 사람은 소수에 불과할 수 있습니다. 그래서 이 기사에서는 Ksplice에 대한 이해를 깊게 하는 것을 목표로 하겠습니다.
Ksplice란 무엇인가요?
Ksplice는 OS를 재부팅하지 않고 리눅스 커널 및 일부 사용자 공간 라이브러리에 패치를 적용할 수 있는 기능입니다. 예를 들어, 새로 출시된 커널을 설치하더라도 이를 활성화하려면 OS를 재부팅해야 합니다. 하지만 Ksplice를 사용하면 재부팅 없이 최신 업데이트를 활성화할 수 있습니다.
즉, Ksplice를 통해 다음과 같은 이점을 얻을 수 있습니다:
- 시스템 다운타임 최소화
- 보안 취약점에 신속히 대응
- 패치 적용 시간 최소화
재부팅 없이 업데이트를 활성화할 수 있는 능력은 특히 “외부에서 접근 가능한 서버”와 “많은 가상 머신이 실행 중인 KVM 호스트”에서 중요한 기능입니다. 외부에서 접근 가능한 서버는 보안 취약점에 신속히 대응해야 합니다. 또한 KVM 호스트에서는 여러 가상 서버가 실행되므로, OS 재부팅이 필요할 때 다양한 사전 조정이 필요하며 실제 작업 시간도 요구됩니다.
즉, Ksplice는 기업용으로 특히 효과적인 기능으로, 운영 비용을 줄이고 보안을 강화하는 데 도움이 됩니다.
Ksplice FAQ
Ksplice를 빠르게 이해할 수 있도록 Ksplice FAQ라는 제목으로 개요를 제공하겠습니다.
Ksplice를 어떤 OS에서 사용할 수 있나요?
현재(2022년 9월) 기준으로 다음 리눅스 OS가 지원됩니다. Ksplice는 오라클 리눅스의 Red Hat 호환 커널과 Unbreakable Enterprise 커널을 모두 지원합니다.
- 오라클 리눅스 6
- 오라클 리눅스 7
- 오라클 리눅스 8
- 오라클 리눅스 9
- CentOS 및 RHEL 7
- CentOS 및 RHEL 8
- Ubuntu 18.04
- Ubuntu 20.04
Intel/AMD(x86_64) 외에도 64비트 Arm도 지원합니다. 그러나 Arm에서는 Unbreakable Enterprise 커널만 지원합니다.
Ksplice를 사용하려면 인터넷 연결이 필요한가요?
Ksplice는 온라인 모드와 오프라인 모드가 있습니다. 온라인 모드는 오라클이 제공하는 Unbreakable Linux Network(ULN)에 연결되므로 인터넷에 연결할 수 있어야 합니다(인터넷 프록시를 통해 연결될 수도 있음).
또한 오프라인 모드에서는 Ksplice 미러를 설정하여 인터넷 연결 없이 Ksplice를 사용할 수 있습니다. 그러나 Ksplice 미러로 사용되는 서버는 인터넷에 연결할 수 있어야 합니다.
Ksplice의 라이브 패치는 어떤 구성 요소를 대상으로 하나요?
다음 두 커널 외에도 사용자 공간 패키지인 glibc와 openssl을 지원합니다. 그러나 사용자 공간 패키지는 오라클 리눅스에서만 지원됩니다.
- Red Hat 호환 커널
- Unbreakable Enterprise 커널
- glibc
- openssl
Ksplice 사용에 비용이 드나요?
Ksplice를 사용하려면 유료 오라클 리눅스 프리미어 지원 계약이 필요합니다. 그러나 오라클 클라우드 인프라의 오라클 리눅스에서는 Ksplice를 무료로 사용할 수 있습니다(기본 설정됨). 예외적으로 Ubuntu에서는 무료로 사용할 수 있습니다.
Ksplice에 체험 프로그램이 있나요?
30일 체험 프로그램이 제공됩니다. 또한 Ksplice를 쉽게 체험하고 싶다면 오라클 클라우드 인프라의 Always Free를 추천합니다. 오라클 리눅스 이미지는 Ksplice가 이미 설정되어 있어 바로 사용할 수 있습니다.
Ksplice와 같은 다른 라이브 패치 시스템이 있나요?
다른 리눅스 배포판에서도 다음 라이브 패치 시스템을 제공합니다. 그러나 모두 최근 몇 년간 제공되기 시작한 것으로, 아직 성능이 입증되지 않았습니다.
- RHEL 기반 리눅스 kpatch
- SUSE KLP
- Ubuntu Livepatch Service
또한 Windows에서는 Windows 핫 패치라는 기능이 있습니다. 그러나 이는 Windows Server 2022 Datacenter: Azure Edition으로 제한됩니다.
Ksplice를 사용해 보세요
Ksplice를 이해하려면 실제로 어떻게 작동하는지 보는 것이 좋습니다. 이 기사에서는 쉽게 시도할 수 있는 오라클 클라우드 인프라의 오라클 리눅스 8을 사용하여 설명하겠습니다. 설정 및 세부 사항은 다음 기사에서 설명하겠습니다.
또한 오라클 리눅스 7과 오라클 리눅스 9도 거의 동일하지만, 사용하는 이미지 버전에 따라 약간의 차이가 있을 수 있습니다.
Ksplice 설정 상태 확인
Ksplice를 사용하려면 Ksplice 클라이언트가 필요합니다. 따라서 Ksplice 클라이언트가 설치되어 있는지 확인하세요. 패키지를 검색하면 uptrack 패키지(= Ksplice 클라이언트)가 설치되어 있는 것을 알 수 있습니다.
$ rpm -qa | grep -e ksplice -e uptrack | sort
ksplice-release-el8-1.0-4.el8.x86_64
ksplice-uptrack-release-1-5.noarch
uptrack-1.2.75-0.el8.noarch
다음으로, 설정 파일 /etc/uptrack/uptrack.conf를 확인하세요. 설정 파일이 존재하고 accesskey가 구성되어 있다면 Ksplice를 사용할 수 있습니다.
$ grep -v -e '^\s*#' -e '^\s*$' /etc/uptrack/uptrack.conf
[Auth]
accesskey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(ULN에서 Ksplice Uptrack 키를 가져옴)
[Network]
https_proxy =
gconf_proxy_lookup = no
[Settings]
install_on_reboot = yes
autoinstall = no
Ksplice 기본 배우기
이제 Ksplice가 설정되어 있음을 알았으니, 실제로 Ksplice를 사용해 보겠습니다. 대부분의 작업은 루트 권한이 필요하므로 su를 사용하겠습니다. 또는 매번 sudo를 추가할 수도 있습니다.
$ sudo su -
커널 버전 확인
현재 활성화된 리눅스 커널 버전을 확인하세요. UEK6 “5.4.17-2136.306.1.3”이 활성화되어 있습니다.
# uname -r
5.4.17-2136.306.1.3.el8uek.x86_64
리포지토리의 최신 버전을 확인하면 “5.4.17-2136.310.7.1”입니다. 따라서 새 버전이 출시되었음을 알 수 있습니다.
# yum check-update kernel-uek
kernel-uek.x86_64 5.4.17-2136.310.7.1.el8uek ol8_UEKR6
업데이트 보기
전통적인 방법에서는 커널을 다음과 같이 업데이트하고 재부팅합니다:
# yum update kernel-uek -y
# reboot
Ksplice에서는 uptrack-upgrade 명령어를 사용합니다. 아래와 같이 “uptrack-upgrade -n”을 입력하면 적용 가능한 Ksplice 업데이트를 볼 수 있습니다. 각 행은 별도의 업데이트입니다.
# uptrack-upgrade -n
Effective kernel version is 5.4.17-2136.306.1.3.el8uek
The following steps will be taken:
Install [n9kprcm6] Known exploit detection.
Install [qivpmdlu] Known exploit detection for CVE-2019-9213.
Install [50qj7qw1] Known exploit detection for CVE-2017-1000253.
Install [3iw8b16t] Known exploit detection for CVE-2016-5195.
Install [sgxyx32m] Known exploit detection for CVE-2021-27363.
Install [92k7sosn] Known exploit detection for CVE-2021-27364.
★아래 생략
업데이트 적용
이 모든 업데이트를 적용합니다. 적용 시간은 업데이트 수와 머신 사양에 따라 달라지며, 이번에는 약 1분이 걸렸습니다. 여기서 주목할 핵심은 마지막 줄의 “5.4.17-2136.310.7”입니다. Ksplice 덕분에 최신 버전과 동일한 커널 버전을 갖게 되었습니다.
# uptrack-upgrade -y
The following steps will be taken:
Install [n9kprcm6] Known exploit detection.
Install [qivpmdlu] Known exploit detection for CVE-2019-9213.
Install [50qj7qw1] Known exploit detection for CVE-2017-1000253.
Install [3iw8b16t] Known exploit detection for CVE-2016-5195.
★생략
Installing [dad581dd] CVE-2022-2588: Use-after-free in IP Route Classifier.
Your kernel is fully up to date.
Effective kernel version is 5.4.17-2136.310.7.el8uek
Ksplice 업데이트로 활성화된 유효 커널 버전은 uptrack-uname 명령어로 확인할 수 있습니다.
# uptrack-uname -r
5.4.17-2136.310.7.el8uek.x86_64
일반 uname은 설치된 커널 버전을 표시합니다.
# uname -r
5.4.17-2136.306.1.3.el8uek.x86_64
설치된 UEK 목록은 다음과 같습니다. 최신 “5.4.17-2136.310.7”은 설치되지 않았습니다. 즉, Ksplice 업데이트(패치)만 증가분으로 설치된 것입니다.
# rpm -q kernel-uek | sort -n
kernel-uek-5.4.17-2102.201.3.el8uek.x86_64
kernel-uek-5.4.17-2136.304.4.1.el8uek.x86_64
kernel-uek-5.4.17-2136.306.1.3.el8uek.x86_64
업데이트 보기
적용 중인 Ksplice 업데이트는 uptrack-show 명령어로 확인할 수 있습니다.
# uptrack-show
Installed updates:
[n9kprcm6] Known exploit detection.
[qivpmdlu] Known exploit detection for CVE-2019-9213.
[50qj7qw1] Known exploit detection for CVE-2017-1000253.
★생략
[fza3q2mo] CVE-2022-2153: Denial-of-service in Kernel-based Virtual Machine.
[4eaq3lov] CVE-2022-21505: Lockdown bypass in Integrity Measurement Architecture.
[dad581dd] CVE-2022-2588: Use-after-free in IP Route Classifier.
Effective kernel version is 5.4.17-2136.310.7.el8uek
업데이트 삭제
uptrack-remove 명령어로 적용된 업데이트를 쉽게 삭제할 수 있습니다.
# uptrack-remove --all -y
The following steps will be taken:
Remove [dad581dd] CVE-2022-2588: Use-after-free in IP Route Classifier.
Remove [4eaq3lov] CVE-2022-21505: Lockdown bypass in Integrity Measurement Architecture.
Remove [jjafy1ef] CVE-2022-29582: Use-after-free in asynchronous io_uring API.
★생략
Removing [qivpmdlu] Known exploit detection for CVE-2019-9213.
Removing [n9kprcm6] Known exploit detection.
Effective kernel version is 5.4.17-2136.306.1.3.el8uek
이제 Ksplice 업데이트를 적용하지 않은 원래 상태로 돌아왔습니다. 이번에는 업데이트를 일괄 적용했지만, ID를 지정하여 개별적으로 적용할 수도 있습니다.
# uptrack-uname -r
5.4.17-2136.306.1.3.el8uek.x86_64
# uname -r
5.4.17-2136.306.1.3.el8uek.x86_64
참고로, 적용된 Ksplice 업데이트를 확인하면 아무것도 보이지 않습니다.
# uptrack-show
Installed updates:
None
Effective kernel version is 5.4.17-2136.306.1.3.el8uek
결론
Ksplice가 무엇인지 이해하셨나요? 또한 실제로 사용해 보면 매우 사용하기 쉽다는 것을 알게 될 것입니다. 다음 기사에서는 Ksplice에 대해 더 자세히 다루겠습니다.