핵심 인사이트
- OS에서 보호(Protection)는 "합법적인 사용자가 리소스에 올바르게 접근하도록 제어"하는 메커니즘이고, 보안(Security)은 "외부 위협으로부터 시스템을 방어"하는 정책 — 두 개념은 목적과 대상이 다르며 계층적으로 보안이 보호를 포함한다.
- 보호 도메인(Protection Domain)과 접근 행렬(Access Matrix)은 OS 보호의 이론적 기반으로, 주체(Subject)-객체(Object)-권한(Right)의 삼각 관계를 체계적으로 모델링하며 ACL(Access Control List)과 Capability List로 구현된다.
- 링 구조(Ring Architecture)는 x86 CPU의 권한 레벨(Ring 0~3)을 통해 OS 커널(Ring 0)과 사용자 프로그램(Ring 3)을 분리하는 하드웨어 보호 메커니즘으로, 특권 명령어 실행, 메모리 접근, I/O 제어를 계층적으로 제어한다.
Ⅰ. 보호 vs 보안 개념 구분
보호 (Protection):
목적: 프로세스/사용자 간 리소스 격리 및 접근 제어
대상: 내부 위협 (프로그램 오류, 권한 오남용)
메커니즘: 하드웨어 + OS 커널 기능
예: 프로세스 A가 프로세스 B의 메모리 접근 방지
보안 (Security):
목적: 시스템 전체를 외부 위협으로부터 방어
대상: 외부 위협 (해커, 악성코드, DoS)
메커니즘: 인증, 암호화, 방화벽, 감사
예: 네트워크 침입 탐지, 악성코드 차단
계층 관계:
보안 (Security) ⊃ 보호 (Protection)
외부 위협 방어 (보안)
↓
내부 접근 제어 (보호)
↓
하드웨어 격리 (링 구조, MMU)
OS 보안 요구사항 (CIA):
C - Confidentiality (기밀성): 인가된 자만 읽기
I - Integrity (무결성): 인가된 방식으로만 수정
A - Availability (가용성): 서비스 지속 제공
📢 섹션 요약 비유: 보호 vs 보안은 건물 내부 잠금 vs 외벽 보안 — 보호는 내부 회의실 문 잠금(내부 격리), 보안은 외부 침입자 방어(외벽, CCTV).
Ⅱ. 보호 도메인과 접근 행렬
보호 도메인 (Protection Domain):
주체(Subject)가 가진 권한 집합
도메인 D = { (객체, 권한) 쌍의 집합 }
예:
Domain 1 (root): { (file1, rw), (file2, rwx), (mem, rw) }
Domain 2 (user): { (file1, r), (file3, rw) }
접근 행렬 (Access Matrix):
행: 도메인 (주체)
열: 객체 (파일, 포트, 메모리 세그먼트)
셀: 허용 권한 집합
| 파일A | 파일B | 프린터 | 세그먼트1
---------+-------+-------+--------+----------
도메인1 | rw | rwx | print | rw
도메인2 | r | | | r
도메인3 | | rx | print |
구현 방법:
1. ACL (Access Control List) — 열 기준:
파일A: { (도메인1, rw), (도메인2, r) }
장점: 객체별 접근자 목록 관리 쉬움
단점: 특정 주체의 모든 권한 확인 어려움
2. Capability List — 행 기준:
도메인1: { (파일A, rw), (파일B, rwx), (프린터, print) }
장점: 주체 관점에서 권한 관리
단점: 권한 취소(revoke) 어려움
📢 섹션 요약 비유: 접근 행렬은 학교 열쇠 관리 장부 — ACL은 "이 강의실에 들어갈 수 있는 사람" 목록, Capability는 "이 사람이 열 수 있는 강의실" 목록.
Ⅲ. 링 구조 (Ring Architecture)
x86 CPU 링 구조 (Privilege Levels):
Ring 0 — 커널 모드 (Kernel Mode):
최고 권한
모든 명령어 실행 가능
하드웨어 직접 접근
OS 커널, 디바이스 드라이버 핵심 부분
Ring 1, 2 — (현재 대부분 미사용):
원래 OS 서비스, 드라이버용
현대 OS: Ring 0/3 양분 구조
Ring 3 — 사용자 모드 (User Mode):
최소 권한
특권 명령어 실행 불가
I/O 직접 접근 불가
일반 응용 프로그램
권한 이동:
Ring 3 → Ring 0:
시스템 콜 (INT, SYSCALL 명령어)
예외 처리 (Exception Handler)
인터럽트 (Interrupt)
Ring 0 → Ring 3:
IRET, SYSRET 명령어
스케줄러에 의한 사용자 프로세스 복귀
보호 메커니즘:
특권 명령어: Ring 0에서만 실행
(LGDT, LIDT, IN/OUT, HLT, MOV CR0 등)
메모리: 페이지 테이블로 Ring 3 접근 격리
I/O: IOPL(I/O Protection Level) 비트로 제어
가상화와 Ring:
VMware/VirtualBox: Ring -1 (Hypervisor)
Intel VT-x: VMX root/non-root 모드
📢 섹션 요약 비유: 링 구조는 군대 계급 — Ring 0은 사령관(모든 명령 가능), Ring 3은 일반 병사(기본 임무만). 계급 외 명령 실행 → 즉시 처벌(예외 발생).
Ⅳ. 보안 위협 유형과 대응
OS 보안 위협 분류:
악성코드 (Malware):
바이러스: 다른 프로그램에 기생, 자기 복제
웜: 독립 실행, 네트워크 전파
트로이 목마: 정상 프로그램으로 위장
랜섬웨어: 파일 암호화 후 몸값 요구
권한 상승 공격:
버퍼 오버플로우: 스택 리턴 주소 덮어쓰기
→ 셸코드 실행 → Root 권한 탈취
대응: ASLR(주소 공간 레이아웃 랜덤화), DEP(데이터 실행 방지), Stack Canary
레이스 컨디션 (Race Condition):
TOCTOU(Time-Of-Check-To-Time-Of-Use)
권한 확인과 실제 사용 사이의 시간차 악용
대응: 원자적 연산, 잠금(Lock) 사용
사이드 채널 공격:
Spectre, Meltdown (2018):
CPU 투기적 실행 → 캐시 타이밍 측정 → 비밀 데이터 추출
대응: OS 패치, KPTI(Kernel Page Table Isolation)
보안 메커니즘:
인증 (Authentication): 비밀번호, 생체인식, 2FA
인가 (Authorization): DAC/MAC/RBAC
감사 (Auditing): 접근 로그, SIEM
암호화: 파일 시스템 암호화 (BitLocker, LUKS)
📢 섹션 요약 비유: OS 보안 위협은 건물 침입 방법 — 정문 뚫기(인증 우회), 창문 깨기(버퍼 오버플로우), 청소부 위장(트로이 목마), 열쇠 복사(자격증명 도용).
Ⅴ. 실무 시나리오 — Linux SELinux/AppArmor
Linux 강제 접근 제어 (MAC) 구현:
DAC (Discretionary Access Control) 한계:
파일 소유자가 권한 부여 결정
root 계정 탈취 시 모든 파일 접근 가능
→ Linux 전통 rwx 권한의 한계
MAC (Mandatory Access Control):
시스템 정책이 모든 접근 제어
소유자도 정책 외 권한 부여 불가
SELinux (Security-Enhanced Linux):
NSA 개발, Red Hat/CentOS/Fedora 기본 탑재
레이블 기반: 모든 파일/프로세스에 보안 컨텍스트
컨텍스트 형식: user:role:type:level
예: system_u:system_r:httpd_t:s0
정책 유형:
Enforcing: 정책 위반 = 차단 + 로그
Permissive: 차단 없음 + 로그만 (개발/디버깅)
Disabled: 비활성화
AppArmor (Ubuntu/SUSE):
경로 기반 프로파일
더 간단, 관리 편이
/etc/apparmor.d/usr.sbin.nginx 예시:
/var/www/html/** r,
/var/log/nginx/** w,
network tcp,
실무 적용:
웹서버(Apache/Nginx)에 SELinux 프로파일 적용
→ 웹 디렉토리 외 파일 접근 자동 차단
→ 명령 실행(system()) 차단
→ 취약점 악용 시 피해 최소화 (컨테인먼트)
📢 섹션 요약 비유: SELinux는 회사 보안 시스템 — 팀장(root)도 다른 팀 서버실에 못 들어가는 것처럼, 역할(Role)과 유형(Type)으로 최소 권한 강제.
📌 관련 개념 맵
OS 보호 & 보안
+-- 보호 (Protection)
| +-- 보호 도메인
| +-- 접근 행렬 (ACL, Capability)
| +-- 링 구조 (Ring 0~3)
+-- 보안 (Security)
| +-- CIA (기밀성, 무결성, 가용성)
| +-- 위협: 버퍼 오버플로우, TOCTOU, 사이드채널
| +-- 메커니즘: ASLR, DEP, KPTI
+-- MAC 구현
| +-- SELinux (Red Hat 계열)
| +-- AppArmor (Ubuntu 계열)
📈 관련 키워드 및 발전 흐름도
[초기 OS 보호 (1960s~)]
IBM System/360: 특권 모드 도입
멀틱스: 링 구조 최초 구현
|
v
[Unix 권한 모델 (1970s)]
DAC: rwx + 소유자/그룹/기타
|
v
[보안 확장 (1980s~90s)]
Orange Book (TCSEC): 보안 등급화
NSA: B3급 OS 연구 → SELinux 기반
|
v
[Linux 보안 (2000s)]
SELinux (2000, 2003 커널 통합)
AppArmor (2006, Ubuntu 통합)
|
v
[현재: 컨테이너 보안]
seccomp: 시스템 콜 필터링
cgroups + namespace: 컨테이너 격리
eBPF: 커널 내 보안 프로그램 실행
👶 어린이를 위한 3줄 비유 설명
- 보호는 내부 자물쇠, 보안은 외벽 경비원 — 집 안에서 방마다 잠금(보호), 집 전체를 지키는 경비원(보안)처럼 서로 역할이 달라요!
- 링 구조는 군대 계급 — Ring 0은 사령관(모든 명령 가능), Ring 3은 일반 병사. 사령관 명령을 병사가 내리면 즉시 경고!
- SELinux는 초엄격 출입증 시스템 — root 계정을 가져도 출입증(SELinux 컨텍스트)이 없으면 들어갈 수 없어요.