리눅스 보안 모듈

리눅스에서 다양한 컴퓨터 보안 모델을 지원하는 프레임워크

리눅스 보안 모듈 (LSM : Linux Security Modules)은 프레임워크로서 리눅스 커널이 단일한 보안 구현을 피하면서 다양한 컴퓨터 보안 모델을 지원하게 해준다. 이 프레임워크는 GNU 일반 공중 사용 허가서 하에 배포되며 2.6 이후 리눅스 커널 버전부터는 표준이 되었다. AppArmor, SELinux, Smack (소프트웨어) 그리고 TOMOYO 리눅스가 현재 공식 커널에서 받아들여진 모듈이다.

설계 편집

LSM은 리눅스 커널에 가능한 최소의 변화를 주면서 강제적 접근 통제 모듈의 성공적인 구현이라는 특정한 필요성을 제공하기 위해 설계되었다. LSM은 Systrace에서 사용되는 시스템 호출 조정의 접근을 회피하는데, 이것은 다중 처리 커널에 맞지 않고 TOCTTOU 공격의 대상이기 때문이다. 대신 LSM은 커널에서 사용자 수준 시스템 호출이 아이노드나 태스크 컨트롤 블록 같은 중요한 내부 커널 객체에 접근을 야기하려고 하는 모든 지점에 "훅"을 삽입한다.

이 프로젝트는 커널의 주요 부분에 크고 복잡한 패치를 하지 않는 정도까지 제한적으로 접근 제어의 문제를 푼다. 이것은 일반적인 "훅"이나 "upcall" 메커니즘을 위한 것이 아니며 또한 운영체제 수준 가상화를 지원하는 것도 아니다.

LSM의 접근 제어 목표는 시스템 감사와 매우 관련되어 있지만 약간의 차이점이 있다. 감사는 모든 접근 시도가 기록되기를 요구한다. LSM은 그것을 지킬 수 없는 것이, 중요 객체에 접근하기 전에 발생하는 커널 "단락" 실패 시스템 호출의 오류 코드 리턴을 탐지하기 위해서 더 수많은 훅을 요구하기 때문이다.

LSM 설계는 Linux Security Modules: General Security Support for the Linux Kernel[1]에 나와 있으며, USENIX Security 2002[2]에서 발표되었다.

채택 편집

비판 편집

몇몇 리눅스 커널 개발자들은 LSM을 몇가지 이유로 싫어한다. LSM은 최소의 오버헤드를 부과하기 위해 노력하지만 이 비용은 0이 될 수 없으며, 몇몇 리눅스 개발자들은 이것을 싫어하는 경향이 있다. LSM은 단지 접근 제어를 위해 만들어졌지만 사람들이 LSM을 다른 목적으로 사용하는 것을 막지 못한다. 개발자들이 싫어하는 것이 이러한 다른 용도로의 남용이다.

몇몇 보안 개발자들 또한 LSM을 싫어한다. grsecurity의 개발자도 LSM을 싫어하는데,[3] 이것의 역사와 보안 모듈들 외에도 악의적인 모듈(루트킷)의 삽입을 가능케 했기 때문이다. RSBAC 개발자들도 LSM을 싫어하는데,[4] RSBAC의 필요성에 비해서 불완전하기 때문이다.

각주 편집

  1. “Linux Security Modules: General Security Support for the Linux Kernel”. 2002. 2017년 8월 6일에 확인함. 
  2. “11th USENIX Security Symposium”. 2002. 2016년 2월 12일에 확인함. 
  3. “grsecurity”. grsecurity. 2016년 2월 12일에 확인함. 
  4. “RSBAC and LSM”. RSBAC. 2016년 2월 12일에 확인함. 

외부 링크 편집