[Linux] Selinux audit 에러 해결

이번 포스트에서는 실제 SELinux 정책을 위반했을 때 나오는 에러를 해결해볼건데요
SELinux가 뭔지 잘 모르겠는 분들은 이전 포스트에서 간략하게 설명해뒀으니 참고부탁드려요~
[Linux] SELinux 및 SEPolicy 개념 정리
[Linux] SELinux 및 SEPolicy 개념 정리🎯 SELinux란? 강제접근제어(MAC : Mandatory Access Control)과 같은 접근 제어 정책을 제공하는 리눅스 커널 보안 모듈( → 설정한 정책에 따라 필요한 기능에 대해서만
rootformula.tistory.com
🎯 문제상황
type=1400 audit(637.951:24): avc: denied { search } for pid=3250 comm="pkill" name="3"
dev="proc" ino=15555 scontext=system_u:system_r:bin_t
tcontext=system_u:system_r:kernel_t tclass=dir permissive=0
해당 audit 에러 메시지를 해석해 봅시당
avc: denied { search } : SELinux가 특정 작업을 거부했음을 나타냅니다. 여기서 { search }는 거부된 작업 유형으로, 디렉토리 내 검색 작업을 시도했으나 거부되었다는 것을 의미합니다
for pid=3250 comm="pkill" : 이 작업을 시도한 프로세스의 ID(pid)는 3250이고, 명령어(command)는 pkill
--> 즉 PID가 3250인 프로세스에서 pkill이란 작업을 시도했으나 search 작업이 거부당해 실패했다는 얘기입니다.
계속 해석해보죠!
name="3" dev="proc" ino=15555 : 작업이 거부된 대상 객체의 이름은 "3", 장치 이름은 "proc"(프로세스 정보를 제공하는 가상 파일 시스템), inode 번호는 15555 입니다.
scontext=system_u:system_r:bin_t : 소스 컨텍스트(source context)로, 작업을 시도한 주체의 보안 컨텍스트입니다. 여기서 system_u는 사용자 유형, system_r는 역할, bin_t는 SELinux 타입(도메인)입니다.
tcontext=system_u:system_r:kernel_t : 타겟 컨텍스트(target context)로, 접근을 시도한 대상의 보안 컨텍스트입니다. 여기서 kernel_t는 커널 관련 타입을 의미합니다.
--> (즉 scontext ----접근-----> tcontext)
tclass=dir : target class로 접근 시도 대상의 종류가 디렉토리란 얘기입니다.
permissive=0: SELinux가 강제 모드(enforcing mode)에서 작동 중임을 나타냅니다.
🎯 해결 방법
--> .te 파일에서 수정하고 다시 빌드!
(.te 파일은 "Type Enforcement" 파일의 약자로 사용됩니다. 이 파일은 SELinux의 보안 정책을 정의하는 데 사용되며, 주로 SELinux 정책 모듈을 작성할 때 사용됩니다)
gen_require(`
type bin_t;
type kernel_t;
class dir { search };
`)
allow bin_t kernel_t:dir { search };
'Linux' 카테고리의 다른 글
| [Linux] SELinux 및 SEPolicy 개념 정리 (0) | 2024.05.23 |
|---|---|
| [Linux] Temporary failure in name resolution 에러 (0) | 2024.05.22 |
| [Linux] tar 분할 압축, 분할 압축 해제 명령어 (0) | 2024.05.18 |
| [Linux] tar 압축/압축 해제 명령어 정리 (0) | 2024.05.17 |
| [Linux] 특수 권한 : SetUID, SetGID, 스티키비트 (1) | 2024.05.16 |