HOW to Oracle Linux Kernel Hardening
테크넷 마스터 김재벌 입니다.
오라클 리눅스는 자체적으로 보유하고 있는 강력한 보안 기능이 이미 많이 내장되어 있습니다.
오라클 리눅스(Oracle Linux) 를 사용하는 사용자들이 오라클 리눅스를 설치 후 커널을 보면 RHCK(레드햇 기반 커널)과 UEK(Unbreakable Enterprise Linux 커널)이 같이 설치되는데요.
일반적으로 오라클 관련 애플리케이션 , 예를 들어 오라클 DB를 설치하여 사용하는 환경에서는 UEK 커널을 선택하면 된다, 그것이 최적화 되어 있다고 알고 있습니다.
네, 맞습니다. 그런데, UEK 커널을 사용하면 오라클 관련 애플리케이션에 대한 안정성과 최적화된 커널 파라미터를 반영하여 최적의 환경을 제공하는 것은 맞지만, UEK를 사용함으로써 보안이 더 강화된다는 사실은 잘 모르시더라고요.
UEK 커널에는 커널 락다운(Kernel Lockdown) 모드를 제공하는 기능이 있는데,
이는 root 권한 조차도 커널 공간의 접근을 차단하여 커널의 무결성을 보장 받을 수 있도록 하는 것입니다.
보안 분야에서 이야기 하는 커널 루트킷(Kernel Rootkit)에 의해 시스템이 해킹 되는 것을 막는 기능이죠.
커널 Lockdown은 root(uid 0) 사용자도 커널 코드·데이터 수정을 할 수 없도록 차단하는 보안 기능입니다.
/dev/mem, /dev/kmem, IOPORT 직접 접근, kexec 로드 제한 등을 포함합니다.
Secure Boot 환경에서 자동 활성화되며, 커널 모듈도 서명된 것만 로드됩니다.
정리하면 ,
오라클 리눅스 커널 록다운 (Kernel Lockdown)
커널 록다운(Kernel Lockdown)은 루트(root) 사용자라 할 수 있을지라도 커널 코드의 직접적인 수정이나 접근을 원천 차단하는 리눅스 커널의 강력한 보안 기능입니다. 오라클 리눅스(Oracle Linux)를 비롯한 최신 엔터프라이즈 리눅스에 탑재되어 커널 루트킷의 주입 경로를 물리적으로 막아버립니다.
🔒 핵심 철학: "최고 관리자(root) 계정이 탈취당하더라도, 커널만큼은 절대 건드릴 수 없게 하겠다."
주요 방어 메커니즘
1) 서명되지 않은 커널 모듈 로드 차단: 인증서로 디지털 서명이 되지 않은 커널 모듈(LKM)은 아예 로드할 수 없습니다.
공격자가 루트킷 모듈을 만들어 삽입하는 것을 원천 봉쇄합니다.
2) 커널 메모리 접근 차단: /dev/mem, /dev/kmem 등 커널 메모리에 직접 접근할 수 있는 디바이스 파일을 비활성화하여 커널 코드를 실시간으로 조작(Patching)하는 행위를 막습니다.
3) 보안에 취약한 하드웨어 접근 제한: MSR(Model-Specific Registers) 쓰기나 direct PCI 접근 등 하드웨어를 통해 커널을 우회 공격할 수 있는 통로를 차단합니다.
이러한 Lockdown 모드를 확인하고 구성하는 방법은 아래와 같습니다.
| # 현재 Lockdown 상태 확인 cat /sys/kernel/security/lockdown # 출력 예: # none [integrity] confidentiality # [integrity] → integrity 모드 활성화 중 # Lockdown 모드 종류: # none → 비활성 (기본, Secure Boot 미사용 시) # integrity → 커널 수정 차단 (서명 검증) # confidentiality → integrity + 커널 데이터 읽기 차단 # GRUB에서 Lockdown 강제 활성화 sudo grubby --update-kernel=ALL \ --args="lockdown=integrity" # Secure Boot 상태 확인 (활성화 시 자동 Lockdown) mokutil --sb-state # → SecureBoot enabled # 커널 서명 모듈만 로드되도록 강제 sudo grubby --update-kernel=ALL \ --args="module.sig_enforce=1" # 현재 서명 강제 여부 확인 cat /proc/sys/kernel/modules_disabled |
오라클 리눅스 락다운(LockDown) 의 2가지 모드 (Modes)
커널 록다운은 보안 강도에 따라 두 가지 모드로 운영됩니다.
- Integrity (무결성 모드): 커널의 실행 이미지를 변경할 수 있는 사용자 공간의 시도를 차단합니다. (예: 서명되지 않은 모듈 차단)
- Confidentiality (기밀성 모드): 무결성 모드의 모든 제약 사항에 더해, 커널 메모리 구조를 엿보거나 추출하는 행위(덤프 등)까지 완전히 차단하여 중요 데이터 유출을 막습니다.
** confidentiality 모드는 hibernation, kexec, BPF 일부 기능을 제한합니다.
** 설정 전 워크로드 영향을 반드시 검토해야 합니다.
| 노 트 리눅스 커널 루트킷(Kernel Rootkit)은 시스템의 가장 깊은 레벨인 커널(Kernel) 권한을 장악하여 작동하는 최악의 악성코드 중 하나입니다. 보안 탐지 도구를 속이고 시스템을 완전히 통제할 수 있어 매우 위험합니다. 리눅스 커널 루트킷(Kernel Rootkit)이란? 일반적인 악성코드가 사용자 영역(User Space)에서 실행되는 것과 달리, 커널 루트킷은 운영체제의 핵심인 커널 영역(Kernel Space)에 기생합니다. 주로 로드 가능 커널 모듈(LKM, Loadable Kernel Module) 형태로 악성 코드를 삽입하는 방식을 사용합니다. 주요 특징 및 위험성 완벽한 은폐 (Stealth): 커널을 장악했기 때문에 파일, 프로세스, 네트워크 연결, 로그 등을 변조할 수 있습니다. 예를 들어 ps 명령어를 입력해도 악성 프로세스가 보이지 않도록 커널 수준에서 결과를 조작합니다. 무한 권한 (Absolute Control): 백도어를 열어두어 공격자가 언제든 최고 관리자(root) 권한으로 원격 접속할 수 있도록 합니다. 탐지 불가능성: 일반적인 보안 솔루션(백신 등)은 사용자 영역에서 동작하기 때문에, 커널에서 거짓말을 하면 탐지 불가능합니다. |
이렇게 강력한 내장된 커널 보안 기능이 있으니 한번 정도 활용해 보셔도 좋겠죠?
:-)