안녕하세요 컴퓨터의 접근 통제 방식에 대해서 적어보려고 합니다.
우리는 컴퓨터에서 접근 권한에 대해서 자주 접하게 됩니다. 예를 들어 파일과 폴더의 퍼미션을 통해서요.
여러 접근 통제 방식이 있다고 하는데, 어떠한 것이 있는지 정리해보겠습니다.
— 개발보다는 보안쪽에 가까운 내용이긴합니다... ㅎ;;
용어 설명
출처 : devage@tistory
먼저, 접근 제어 모델에서 사용하는 용어에 대해 알 필요가 있습니다.
간단하게 프로세스 또는 사용자를 주체(Subject) 라고 생각하면 되고, 객체(Object)는 자원, 정보와 같은 파일이나 폴더라고 생각하면 됩니다.
접근 통제 방식
1. 임의 접근 통제 - DAC(Discretionary Access Control)
퍼미션 설정
간단하게 우리가 잘 알고 있는 파일과 폴더의 Permission이 DAC 방식이라고 이해하면 쉽습니다.
대부분의 운영체제의 기본 접근 통제 모델로 시용되고 있고, 객체에 대한 접근을 사용자나 또는 그룹의 신분을 기준으로 제한하는 방법입니다.
임의 접근 통제 방식의 경우 보안 취약점으로 프로세스나 사용자의 권한이 탈취되면 시스템을 자유롭게 조종이 가능하게 되기에, 피해가 커집니다.
2. 강제 접근 통제 - MAC (Mandatory Access Control)
SELinux 권한 설정 예시
MAC 방식은 미리 정해진 정책과 보안 등급에 의거하여 주체에게 허용된 접근 권한과 객체에게 부여된 허용 등급을 비교하여 접근을 통제하는 모델입니다.
SELinux, AppArmor 등 여러 보안 모듈은 MAC 방식을 사용하고 있습니다.
MAC 방식은 구현이 복잡하고 어려우며 모든 주체와 객체에 대해서 보안 등급과 허용 등급을 부여하여야 하므로 설정이 복잡하고 시스템 관리자가 접근 통제 모델에 대해 잘 이해하고 있어야 합니다.
MAC 통제 방식인 SELinux의 경우 프로세스마다 접근할 수 있는 파일, 사용할 수 있는 포트, 권한이 미리 설정되어 있습니다. 그러하기에, 취약점으로 프로세스의 권한이 탈취되어도 피해가 최소화 됩니다.
MAC 방식의 대표적인 예로 네이버나 다음 카페에서는 회원 등급에 따라 접근할 수 있는 게시판과 접근할 수 없는 게시판이 있는 것이다. 각 회원(주체)마다 부여된 보안 등급이 있고, 각 게시판(객체)마다 접근할 수 있는 허용 등급이 정해져 있기 때문에 객체와 주체 사이의 권한 등급을 직접 비교하여 접근 허용 여부를 결정하는 것이다.
출처 : Luniverse, 접근 제어의 종류와 구현 방법
권한 탈취시 DAC, MAC 차이점
예를들어 http, smtp, ftp, telnet 등 주요 프로그램들은 모두 루트 사용자가 구동해야 하며 프로세스들도 루트 권한을 갖고 실행된다.
만약 보안 취약점으로 공격자가 해당 프로그램의 권한을 탈취하게 된다면 어떻게 될까?
DAC 방식을 사용하는 시스템은 공격자가 루트 권한을 획득할 수 있게 되므로 심각한 결과를 가져올 수 있다.
MAC 방식의 경우 보안 취약점을 통해 권한을 획득했어도 설정한 프로그램으로의 낮은 등급의 권한을 부여 받으므로 공격자는 일반 사용자의 홈 디렉터리를 읽을 수 없고, /tmp 임시 디렉터리에 파일을 쓸 수도 없으며, 권한 내의 파일들만 접근이 가능하다.
결론
DAC, MAC 통제 방식 이외에도 RBAC, ABAC 등 여러가지의 접근 통제 방식이 있습니다.
보편적으로 접하게 되는 통제 방식은 DAC, MAC 이라서 두개만 작성하게 되었습니다.
대부분의 보안 모듈의 경우 MAC 통제 방식을 사용하기에, MAC 통제 방식을 잘 이해하셨으면 좋겠습니다.
이어서, MAC 통제 방식의 SELinux를 한번 다뤄보겠습니다!!
참고 문헌