소개
이 문서에서는 Secure Endpoint Linux 커넥터에서 결함 11을 식별, 해결 및 확인하는 방법에 대해 설명합니다.
배경 정보
커넥터는 시스템 활동 및 이벤트를 모니터링하는 데 필요한 eBPF 모듈을 로드할 수 없을 때마다 fault 11을 제기합니다.
Linux 커넥터 릴리스 1.25부터 이 커넥터는 커널 헤더를 설치할 필요 없이 BTF를 지원하는 커널에서 시스템 이벤트를 모니터링하기 위해 eBPF CO-RE(Compile Once - Run Everywhere)의 우선 순위를 지정합니다. 시스템 관찰 가능성의 이러한 방법은 더 효율적이며, 선호되는 옵션이다.
커넥터는 1.25 이전 버전의 Linux 커넥터 릴리스를 사용하거나 BTF를 지원하지 않는 커널에서 실행 중인 경우 커널 헤더를 설치해야 하는 기존 eBPF 로딩 방법으로 돌아갑니다. 이러한 헤더는 일반적으로 표준 배포 설치에 포함되지 않으므로 별도로 설치해야 합니다.
커넥터가 접근 방식 중 하나를 사용하여 eBPF 모듈을 로드하지 못하면 결함 11이 제기됩니다. 이는 시스템이 보호되지 않은 상태임을 나타냅니다. 이 문서에서는 이 문제를 해결하는 데 필요한 단계에 대해 자세히 설명합니다.
BTF 지원 결정
커넥터에는 파일 시스템 및 네트워크 활동 모니터링에 필요한 eBPF 모듈을 로드하기 위해 다음 중 하나가 참이어야 합니다.
1. 현재 커널에서 CONFIG_DEBUG_INFO_BTF를 사용하도록
설정했습니다. (이 옵션이 기본 설정입니다.)
2. 현재 실행 중인 커널 버전의 커널 헤더가 시스템에 설치되어 있습니다.
현재 실행 중인 커널에서 CONFIG_DEBUG_INFO_BTF가 활성화되었는지
확인하려면 다음 명령을 실행합니다.
cat /boot/config-$(uname -r) | grep CONFIG_DEBUG_INFO_BTF
CONFIG_DEBUG_INFO_BTF=y가
표시되면 커널은 BTF를 지원하고 커넥터는 eBPF를 사용하여 파일 시스템 및 네트워크 이벤트를 모니터링할 수 있습니다.
BTF는 지원되지 않습니다.
커넥터 버전 1.25 이상을 실행하는 경우 커널을 BTF를 지원하는 버전으로 업그레이드하는 것이 좋습니다. 기본적으로 BTF가 활성화된 배포 목록은 이 문서의 뒷부분에서 확인할 수 있습니다.
현재 커널이 BTF를 지원하지 않는 경우 커넥터를 사용하려면 커널 헤더 파일을 설치해야 합니다. 커넥터에서 이러한 필수 파일을 찾을 수 없는 경우 결함 11이 제기됩니다. 이 문제를 해결하려면 누락된 커널 헤더 설치에 설명된 단계를 사용합니다.
BTF 지원 배포
이러한 배포는 최신 커널 버전
에서 기본적으로 CONFIG_DEBUG_INFO_BTF가 활성화되어 있습니다.
- Centos/RHEL 8.2 이상
- Ubuntu 20.04 이상
- Oracle Linux 8.5 이상
- 데비안 11 이상
- Alma Linux 8.3 이상
- Rocky Linux 8.3 이상
- SUSE Enterprise 15 SP4 / openSUSE Leap 15.4 이상
BTF 지원 커널로 업그레이드
최신 커널 버전에서 BTF를 지원하는 배포에 있는 경우 결함 11을 해결하기 위해 커널을 업데이트하는 것이 좋습니다.
커널 업데이트를 진행하기 전에 먼저 Linux 커넥터를 버전 1.25.0 이상으로 업그레이드하여 커넥터가 BTF를 지원하는지 확인하십시오.
RPM 기반 배포
이 섹션은 다음 항목에 적용됩니다.
- 알마 리눅스
- 아마존 리눅스
- CentOS Linux
- Oracle Linux Red Hat Compatible Kernel(RHCK)
- Red Hat Enterprise Linux
- 로키 리눅스
최신 커널 버전으로 업그레이드하려면
- 커널에 대해 사용 가능한 업데이트가 있는지 확인합니다.
yum check-update
출력에서 kernel.x86_64
가 표시되면 커널 업그레이드를 사용할 수 있습니다.
- 커널 패키지를 업데이트합니다.
sudo yum update kernel
- 시스템을 재부팅합니다.
sudo reboot
- 새 커널이 BTF를 지원하고 결함 11이 커넥터에서 제거되었는지 확인합니다.
Oracle Linux UEK(Unbreakable Enterprise Kernel)
최신 커널 버전으로 업그레이드하려면
- 커널에 대해 사용 가능한 업데이트가 있는지 확인합니다.
yum check-update
출력에서 kernel-uek.x86_64
가 표시되면 커널 업그레이드를 사용할 수 있습니다.
- 커널 패키지를 업데이트합니다.
sudo yum update kernel-uek
- 시스템을 재부팅합니다.
sudo reboot
- 새 커널이 BTF를 지원하고 결함 11이 커넥터에서 제거되었는지 확인합니다.
SUSE Linux Enterprise 및 openSUSE Leap
최신 커널 버전으로 업그레이드하려면
- 현재 커널 버전 확인:
uname -r
- 사용 가능한
커널 기본 패키지를
나열합니다. zypper search -s --match-exact kernel-default
출력은 다음과 같이 표시됩니다.
| kernel-default | package |
|
|
1단계에서 확인된
현재 커널 버전보다 더 큰 버전을 찾습니다.
- 다음 명령을 사용하여 새
버전의 kernel-
default를 설치합니다. sudo zypper install kernel-default=
- 시스템을 재부팅합니다.
sudo reboot
- 새 커널이 BTF를 지원하고 결함 11이 커넥터에서 제거되었는지 확인합니다.
데비안 기반 배포
최신 커널 버전으로 업그레이드하려면
- 최신 패키지 목록 검색:
sudo apt update
- 최신 패키지를 설치합니다.
sudo apt upgrade
- 시스템을 재부팅합니다.
sudo reboot
- 새 커널이 BTF를 지원하고 결함 11이 커넥터에서 제거되었는지 확인합니다.
누락된 커널 헤더 설치
누락된 커널 헤더를 설치하기 전에 시스템을 BTF 지원 버전으로 업그레이드하십시오. 이렇게 해도 결함 11이 해결되지 않거나 배포에서 최신 버전의 BTF를 아직 지원하지 않는 경우 누락된 커널 헤더를 계속 설치합니다.
RPM 기반 배포
이 섹션은 다음 항목에 적용됩니다.
- 알마 리눅스
- 아마존 리눅스
- CentOS Linux
- Oracle Linux Red Hat Compatible Kernel(RHCK)
- Red Hat Enterprise Linux
- 로키 리눅스
다음을 확인합니다.
RPM 기반 배포에서는 현재 실행 중인 커널에
대한 커널 레벨
패키지가 설치되어 있어야 합니다. 현재 실행 중인 커널에
대해 커널 레벨
패키지가 설치되어 있는지 확인하려면 다음을 실행합니다.
rpm -qa | grep kernel-devel-$(uname -r)
결과가 없는 경우 필요한 커널 레벨 패키지
가 없으므로 설치해야 합니다.
올바른 커널
개발 패키지가 설치되어 있고 커넥터가 결함 11을 계속 제기하는 경우 필요한 파일 중 일부가 변조되었을 수 있습니다. 이 명령은 파일이 수정되었거나 누락되었는지 확인합니다.
rpm --verify --nomtime --noghost kernel-default-devel
파일이 누락되거나 수정된 경우 커널
개발 패키지를 제거하고 다시 설치하여 필요한 파일을 사용할 수 있도록 해야 합니다. 이 명령은 모든 패키지 파일이 손상되지 않고 수정되지 않은 경우 출력을 제공하지 않습니다.
해결
필요한 커널
레벨 패키지를
설치하려면 다음 명령을 실행합니다.
sudo dnf install -y kernel-devel-$(uname -r)
다시 확인합니다. 결함 11은 약 1분 후에 커넥터에서 해결됩니다.
Oracle Linux UEK(Unbreakable Enterprise Kernel)
다음을 확인합니다.
Oracle Linux UEK를 사용하려면 현재 실행 중인 커널에
대해 kernel-uek-
dev 패키지가 설치되어 있어야 합니다. 현재 실행 중인 커널에 대해 kernel-uek-
dev 패키지가 설치되어 있는지 확인하려면 다음을 실행합니다.
rpm -qa | grep kernel-uek-devel-$(uname -r)
결과가 없는 경우 필요한 kernel-uek-devel
패키지가 없으므로 설치해야 합니다.
해결
필요한 kernel-uek-devel 패키지를
설치하려면 다음 명령을 실행합니다.
sudo dnf install -y kernel-uek-devel-$(uname -r)
다시 확인합니다. 결함 11은 약 1분 후에 커넥터에서 해결됩니다.
SUSE Linux Enterprise 및 openSUSE Leap
다음을 확인합니다.
SUSE 및 openSUSE에서는 현재 실행 중인 커널에
대해 kernel-default-
devel 패키지를 설치해야 합니다. 현재 실행 중인 커널에 대해 kernel-default-
level 패키지가 설치되어 있는지 확인하려면 다음을 실행합니다.
zypper search -si kernel-default-devel | grep $(uname -r | sed "s/-default//")
결과가 없는 경우 필요한 kernel-default-level
패키지가 없으므로 설치해야 합니다.
해결
커널 헤더 설치
- 커널 버전에 대한 올바른
커널-기본-
레벨 패키지를 설치할 수 있는지 확인하려면 다음 명령을 실행합니다. zypper search -s kernel-default-devel | grep $(uname -r | sed "s/-default//")
출력에는 다음과 같은 구문이 포함됩니다.
| kernel-default-devel |
|
|
|
유사한 출력이 표시되면 출력에 지정된 버전
을 기록해 두고 2단계로 진행합니다. 그렇지 않으면 이 섹션을 건너뛰고 대신 단계를 사용하여 커널을 업데이트하고 일치하는 커널 헤더를 설치합니다.
- 이 명령을 사용하여
kernel-default-devel
패키지를 설치하고 <version>
을 이전 단계에서 식별된 사용 가능한 버전으로 바꿉니다. sudo zypper install --oldpackage kernel-default-devel=
kernel-default-level 패키지
가 설치되었는지 확인합니다. 결함 11은 약 1분 후에 커넥터에서 해결됩니다.
커널 업데이트 및 일치하는 커널 헤더 설치
필요한 kernel-default-level 패키지를
사용할 수 없는 경우 커널을 지원되는 버전으로 업데이트하고 일치하는 커널 헤더를 설치합니다.
- 사용 가능한
kernel-default
및 kernel-default-
level 패키지를 명령과 함께 나열합니다. zypper search -s --match-exact kernel-default kernel-default-devel
kernel-
default 및 kernel-default
-level 패키지의 일치하는 버전을
찾습니다. 예를 들면 다음과 같습니다.
| kernel-default | package |
|
|
| kernel-default-devel | package |
|
|
출력에 지정된 새 버전
을 확인합니다.
참고: 업그레이드할 최신 커널을 찾을 수 없는 경우 최신 배포 릴리스 버전으로 업그레이드해야 합니다.
- 다음 명령을 사용하여 새
버전의 kernel-default
및 kernel-default-
default를 설치합니다. sudo zypper install kernel-default=
kernel-default-devel=
- 시스템을 재부팅합니다.
sudo reboot
- 다시 확인합니다. 결함 11이 커넥터에 의해 지워집니다.
데비안 기반 배포
다음을 확인합니다.
데비안 기반 배포에서는 현재 실행 중인 커널에
대해 linux 헤더
패키지를 설치해야 합니다. 현재 실행 중인 커널에 대해 linux-
headers 패키지가 설치되어 있는지 확인하려면 다음을 실행합니다.
apt list linux-headers-$(uname -r)
결과가 없으면 필요한 linux-headers 패키지
가 없으므로 설치해야 합니다.
해결
필요한 linux-headers 패키지를
설치하려면 다음 명령을 실행합니다.
sudo apt install linux-headers-$(uname -r)
다시 확인합니다. 결함 11은 약 1분 후에 커넥터에서 해결됩니다.