SELinux(보안강화리눅스) (Security-Enhanced Linux)

정보보안학
한 줄 정의: 리눅스 커널에 강제적 접근 통제(MAC) 정책을 추가하여, 프로세스와 파일 등 자원 간의 접근을 세밀하게 제한하는 보안 확장 모듈입니다.

쉽게 풀면

일반적인 회사 출입 카드가 '직원인지 아닌지'만 확인한다면, SELinux는 '이 직원이 이 방에, 이 시간에, 이 목적으로 들어갈 수 있는지'까지 세세하게 규칙으로 정해두는 보안 시스템과 비슷합니다. 리눅스의 기본 권한 체계는 소유자와 그룹 단위로만 접근을 통제하지만, SELinux는 각 프로세스와 파일에 '라벨'을 붙이고, 어떤 라벨을 가진 프로세스가 어떤 라벨의 자원에 접근할 수 있는지를 정책으로 강제합니다. 관리자 권한을 가진 프로세스라도 정책에 없는 접근은 차단될 수 있습니다.

왜 중요한가

기본적인 사용자·그룹 기반 권한 체계만으로는 취약점이 악용되었을 때 피해 범위를 제한하기 어렵기 때문에, SELinux 같은 강제적 접근 통제(MAC)는 침해 발생 시에도 피해를 최소화하는 심층 방어(defense in depth) 전략의 핵심 요소로 다루어집니다. 커널익스플로잇이나 컨테이너 이스케이프 같은 공격에 대한 완화 대책으로도 자주 언급됩니다.

논문에서는 이렇게 쓰입니다

"본 연구에서는 SELinux 정책을 강화하여 웹 서버 프로세스가 취약점을 통해 침해되더라도 시스템 파일에 접근하지 못하도록 접근 범위를 제한하였다."

SELinux가 침해 확산을 막는 완화 수단으로 사용된 사례입니다.

"컨테이너 런타임에 SELinux 정책을 적용함으로써 컨테이너 이스케이프 발생 시 호스트 자원에 대한 접근을 추가적으로 차단할 수 있음을 보였다."

SELinux가 컨테이너 보안 강화에 활용되는 사례를 다루는 문장입니다.

조금 더 깊게 보면

SELinux는 리눅스 보안 모듈(LSM) 프레임워크 위에서 동작하며, 주체(프로세스)와 객체(파일, 소켓 등)에 보안 컨텍스트(라벨)를 부여하고 타입 강제(Type Enforcement) 정책에 따라 접근 여부를 판단합니다. 미국 국가안보국(NSA)이 초기 개발에 참여한 것으로 알려져 있으며, 이후 여러 리눅스 배포판에 통합되어 널리 쓰이고 있습니다.

주의할 점

SELinux는 정책이 복잡하고 설정이 까다로워 실무에서는 오류를 줄이려는 목적으로 비활성화되는 경우가 있는데, 이는 접근 통제의 이점을 포기하는 것이므로 신중히 판단해야 합니다.

관련 용어